Engauge Digitizer  2
GridLineFactory.h
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 
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
Factory class for generating the points, composed of QGraphicsItem objects, along a GridLine...
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
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.
Affine transformation between screen and graph coordinates, based on digitized axis points...
Model for DlgSettingsMainWindow.
Container class for GridLine objects.
Definition: GridLines.h:18
Model for DlgSettingsCoords and CmdSettingsCoords.
Storage of one imported image and the data attached to that image.
Definition: Document.h:41
Single grid line drawn a straight or curved line.
Definition: GridLine.h:20
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.