00001 /****************************************************************************************************** 00002 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released * 00003 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file * 00004 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. * 00005 ******************************************************************************************************/ 00006 00007 #ifndef GRAPHICS_SCENE_H 00008 #define GRAPHICS_SCENE_H 00009 00010 #include "CmdMediator.h" 00011 #include "GraphicsLinesForCurves.h" 00012 #include <QGraphicsScene> 00013 #include <QStringList> 00014 00015 class CmdMediator; 00016 class Curve; 00017 class CurvesGraphs; 00018 class CurveStyles; 00019 class GraphicsPoint; 00020 class MainWindow; 00021 class PointStyle; 00022 class QTextStream; 00023 class Transformation; 00024 00031 class GraphicsScene : public QGraphicsScene 00032 { 00033 public: 00035 GraphicsScene(MainWindow *mainWindow); 00036 00038 void addTemporaryPoint (const QString &identifier, 00039 GraphicsPoint *point); 00040 00042 GraphicsPoint *createPoint (const QString &identifier, 00043 const PointStyle &pointStyle, 00044 const QPointF &posScreen); 00045 00047 void hideAllItemsExceptImage(); 00048 00050 QStringList positionHasChangedPointIdentifiers () const; 00051 00053 void printStream (QString indentation, 00054 QTextStream &str); 00055 00057 void removePoint (const QString &identifier); 00058 00061 void removeTemporaryPointIfExists (); 00062 00064 void resetOnLoad(); 00065 00067 void resetPositionHasChangedFlags(); 00068 00070 QStringList selectedPointIdentifiers () const; 00071 00073 void showCurves (bool show, 00074 bool showAll = false, 00075 const QString &curveName = ""); 00076 00079 void updateAfterCommand (CmdMediator &cmdMediator); 00080 00082 void updateCurveStyles(const CurveStyles &modelCurveStyles); 00083 00086 void updateGraphicsLinesToMatchGraphicsPoints (const CurveStyles &modelCurveStyles, 00087 const Transformation &transformation); 00088 00089 private: 00090 00092 QString dumpCursors () const; 00093 00094 const QGraphicsPixmapItem *image () const; 00095 00097 void updateCurves (CmdMediator &cmdMediator); 00098 00100 void updatePointMembership (CmdMediator &cmdMediator); 00101 00103 GraphicsLinesForCurves m_graphicsLinesForCurves; 00104 }; 00105 00106 #endif // GRAPHICS_SCENE_H