Engauge Digitizer  2
GridLineFactory.h
Go to the documentation of this file.
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #ifndef GRID_LINE_FACTORY_H
8 #define GRID_LINE_FACTORY_H
9 
10 #include "GridLine.h"
11 #include "Point.h"
12 #include <QList>
13 
14 class Document;
17 class GridLines;
18 class MainWindowModel;
19 class QGraphicsScene;
20 class QTransform;
21 class Transformation;
22 
29 class GridLineFactory
30 {
31 public:
33  GridLineFactory(QGraphicsScene &scene,
34  const DocumentModelCoords &modelCoords);
35 
37  GridLineFactory(QGraphicsScene &scene,
38  int pointRadius,
39  const QList<Point> &pointsToIsolate,
40  const DocumentModelCoords &modelCoords);
41 
44  GridLine *createGridLine (double xFrom,
45  double yFrom,
46  double xTo,
47  double yTo,
48  const Transformation &transformation);
49 
52  const Document &document,
53  const MainWindowModel &modelMainWindow,
54  const Transformation &transformation,
55  GridLines &gridLines);
56 
57 private:
59 
60  void bindItemToScene(QGraphicsItem *item) const;
61  void createTransformAlign (const Transformation &transformation,
62  double radiusLinearCartesian,
63  const QPointF &posOriginScreen,
64  QTransform &transformAlign,
65  double &ellipseXAxis,
66  double &ellipseYAxis) const;
67  QGraphicsItem *ellipseItem (const Transformation &transformation,
68  double radiusLinearCartesian,
69  const QPointF &posStartScreen,
70  const QPointF &posEndScreen) const;
71  void finishActiveGridLine (const QPointF &posStartScreen,
72  const QPointF &posEndScreen,
73  double yFrom,
74  double yTo,
75  const Transformation &transformation,
76  GridLine &gridLine) const;
77  QGraphicsItem *lineItem (const QPointF &posStartScreen,
78  const QPointF &posEndScreen) const;
79  double minScreenDistanceFromPoints (const QPointF &posScreen);
80 
81  QGraphicsScene &m_scene;
82  const int m_pointRadius;
83  const QList<Point> m_pointsToIsolate;
84  const DocumentModelCoords m_modelCoords;
85  bool m_isChecker;
86 };
87 
88 #endif // GRID_LINE_FACTORY_H
Point.h
DocumentModelGridDisplay
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
Definition: DocumentModelGridDisplay.h:17
GridLineFactory::createGridLine
GridLine * createGridLine(double xFrom, double yFrom, double xTo, double yTo, const Transformation &transformation)
Create grid line, either along constant X/theta or constant Y/radius side.
Definition: GridLineFactory.cpp:73
Document
Storage of one imported image and the data attached to that image.
Definition: Document.h:40
GridLineFactory::createGridLinesForEvenlySpacedGrid
void createGridLinesForEvenlySpacedGrid(const DocumentModelGridDisplay &modelGridDisplay, const Document &document, const MainWindowModel &modelMainWindow, const Transformation &transformation, GridLines &gridLines)
Create a rectangular (cartesian) or annular (polar) grid of evenly spaced grid lines.
Definition: GridLineFactory.cpp:155
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
MainWindowModel
Model for DlgSettingsMainWindow.
Definition: MainWindowModel.h:29
GridLine
Single grid line drawn a straight or curved line.
Definition: GridLine.h:19
GridLines
Container class for GridLine objects.
Definition: GridLines.h:17
GridLine.h
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition: DocumentModelCoords.h:19
GridLineFactory
Factory class for generating the points, composed of QGraphicsItem objects, along a GridLine.
Definition: GridLineFactory.h:28