Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
graphicsviewadapterforqt.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 #ifndef GRAPHICSVIEWADAPTERFORQT_H
21 #define GRAPHICSVIEWADAPTERFORQT_H
22 
23 #include <QGraphicsView>
24 #include <QGraphicsScene>
25 #include "../core/adapters/graphicsviewadapter.h"
26 
27 class DrawerBase;
28 
39 
40 class GraphicsViewAdapterForQt : public QGraphicsView, public GraphicsViewAdapter
41 {
42 public:
43  GraphicsViewAdapterForQt(QWidget *parent, DrawerBase *drawer, QRectF sceneRect);
45 
46  void setSceneRect(const QRectF &rect);
47 
48 protected:
50  void showEvent(QShowEvent *event) override; // Show the scene
51  void resizeEvent(QResizeEvent *event) override; // Resize the scene
52  virtual void clear() override; // Clear the scene
54 
55 
57  virtual GraphicsItem* drawLine(double x1, double y1, double x2, double y2, PenType pen) override;
58  virtual GraphicsItem* drawChart(const std::vector<Point> &points, PenType pen) override;
59  virtual GraphicsItem* drawFilledRect(double x, double y, double w, double h, PenType pen, FillTypes fill) override;
60  virtual void drawStroboscope (const ComplexVector &data) override { if (data.size()) {}} // not implemented
62 
63 private:
71  QPen getPen(PenType penType, bool cosmetic = true) const;
72 
79  QBrush getFill(FillTypes fill) const;
80 
81 public:
88  QPointF convertRelToAbs(const QPointF &p) const;
89 
96  QSizeF convertRelToAbs(const QSizeF &s) const;
97 
107  QLineF convertRelToAbsLine(qreal x1, qreal y1, qreal x2, qreal y2) const;
108 
115  QPointF convertAbsToRel(const QPointF &p) const;
116 
117 protected:
118 
120  QGraphicsScene mScene;
121  QRectF mSceneRect;
122 };
123 
124 #endif // GRAPHICSVIEWADAPTERFORQT_H
Implementation of the GraphicsViewAdapter in Qt using QGraphicsView.
QBrush getFill(FillTypes fill) const
Create a QBrush for the given value of FillTypes.
QGraphicsScene mScene
The QGraphicsScene.
virtual GraphicsItem * drawFilledRect(double x, double y, double w, double h, PenType pen, FillTypes fill) override
Abstract function: Draw a filled rectangle.
virtual void clear() override
Clear the scene.
QPen getPen(PenType penType, bool cosmetic=true) const
Get a QPen for the given value of PenTypes.
QPointF convertRelToAbs(const QPointF &p) const
Converting from relative to absolute coordinates.
virtual GraphicsItem * drawChart(const std::vector< Point > &points, PenType pen) override
Abstract function: Draw a chart (polygon).
FillTypes
Available filling colors (e.g. to fill rectangles)
virtual void drawStroboscope(const ComplexVector &data) override
GraphicsViewAdapterForQt(QWidget *parent, DrawerBase *drawer, QRectF sceneRect)
Constructor.
std::vector< std::complex< double >> ComplexVector
Abstract function: Draw stroboscope.
virtual GraphicsItem * drawLine(double x1, double y1, double x2, double y2, PenType pen) override
Abstract function: Draw a line.
void setSceneRect(const QRectF &rect)
Setter function for the scene rectangle.
void resizeEvent(QResizeEvent *event) override
Resize the scene (reimplemented resize event).
QPointF convertAbsToRel(const QPointF &p) const
Converting from absolute to relative coordinates.
PenType
Available pen types for drawing.
void showEvent(QShowEvent *event) override
Show the scene (reimplemented show event).
Abstract base class for implementations rendering graphics.
Class for a single item in a graphics view.
Definition: graphicsitem.h:55
QLineF convertRelToAbsLine(qreal x1, qreal y1, qreal x2, qreal y2) const
Converting of a line from relative to absolute coordinates.
QRectF mSceneRect
The scene rect.
DrawerBase * mDrawer
The drawer of this GraphicsViewAdapterForQt.
Abstract base class for drawing 2d graphics.
Definition: drawerbase.h:40
~GraphicsViewAdapterForQt()
Destructor, removing all graphics items from the list.