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
tuningcurvegraph.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 //=============================================================================
21 // Qt implementation of the tuning curve graph drawer
22 //=============================================================================
23 
24 #ifndef TUNINGCURVEGRAPH_H
25 #define TUNINGCURVEGRAPH_H
26 
27 #include <QGraphicsPathItem>
28 
30 #include "../core/drawers/tuningcurvegraphdrawer.h"
31 
47 
50 {
51 public:
52  explicit TuningCurveGraph (QWidget *parent);
53  virtual ~TuningCurveGraph() {}
54 
55 protected:
56  virtual QSize sizeHint() const override final {return QSize(0, 400);}
57  virtual QSize minimumSizeHint() const override final {return QSize(0, 100);}
58 
59  void mousePressEvent(QMouseEvent *event) override;
60 
61  void mouseMoveEvent(QMouseEvent *event) override;
62 
63  void mouseReleaseEvent(QMouseEvent *event) override;
64 
65  void handleMouseInteraction(double relX, double relY);
66 
67 private:
69  bool mPressed;
70 
72  float mPressedX;
73 };
74 
75 #endif // TUNINGCURVEGRAPH_H
float mPressedX
The x coordinate where the mouse was pressed in first instance.
TuningCurveGraph(QWidget *parent)
Constructor, linking AutoScaledToKeyboardGraphicsView with the TuningCurveGraphDrawer.
The QGraphicsView to display the tuning curve and the inharmonicity.
void mouseMoveEvent(QMouseEvent *event) override
Function for handling mouse moves. Moving the mouse will continuously change the tuning curve by drag...
void handleMouseInteraction(double relX, double relY)
TuningCurveGraph::handleMouseInteraction.
void mouseReleaseEvent(QMouseEvent *event) override
Mouse release event to stop the change of the tuning curve.
virtual QSize minimumSizeHint() const overridefinal
virtual QSize sizeHint() const overridefinal
virtual ~TuningCurveGraph()
Empty virtual destructor.
bool mPressed
Is the mouse pressed?
An GraphicsViewAdaptorForQt keeping the same size as a KeyboardGraphicsView.
Class for drawing various tuning curves.
void mousePressEvent(QMouseEvent *event) override
Function handling a mouse click. The mouse press event is used to manually edit the tuning curve...