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 
16 class GridLines;
17 class QGraphicsScene;
18 class QTransform;
19 class Transformation;
20 
28 {
29 public:
31  GridLineFactory(QGraphicsScene &scene,
32  const DocumentModelCoords &modelCoords,
33  const Transformation &transformation);
34 
36  GridLineFactory(QGraphicsScene &scene,
37  int pointRadius,
38  const QList<Point> &pointsToIsolate,
39  const DocumentModelCoords &modelCoords,
40  const Transformation &transformation);
41 
44  GridLine *createGridLine (double xFrom,
45  double yFrom,
46  double xTo,
47  double yTo);
48 
51  GridLines &gridLines);
52 
53 private:
55 
56  void bindItemToScene(QGraphicsItem *item) const;
57  void createTransformAlign (const Transformation &transformation,
58  double radiusLinearCartesian,
59  const QPointF &posOriginScreen,
60  QTransform &transformAlign,
61  double &ellipseXAxis,
62  double &ellipseYAxis) const;
63  QGraphicsItem *ellipseItem (const Transformation &transformation,
64  double radiusLinearCartesian,
65  const QPointF &posStartScreen,
66  const QPointF &posEndScreen) const;
67  void finishActiveGridLine (const QPointF &posStartScreen,
68  const QPointF &posEndScreen,
69  double yFrom,
70  double yTo,
71  GridLine &gridLine) const;
72  QGraphicsItem *lineItem (const QPointF &posStartScreen,
73  const QPointF &posEndScreen) const;
74  double minScreenDistanceFromPoints (const QPointF &posScreen);
75 
76  QGraphicsScene &m_scene;
77  const int m_pointRadius;
78  const QList<Point> m_pointsToIsolate;
79  const DocumentModelCoords m_modelCoords;
80  const Transformation &m_transformation;
81  bool m_isChecker;
82 };
83 
84 #endif // GRID_LINE_FACTORY_H
Factory class for generating the points, composed of QGraphicsItem objects, along a GridLine...
Model for DlgSettingsGridDisplay and CmdSettingsGridDisplay.
GridLine * createGridLine(double xFrom, double yFrom, double xTo, double yTo)
Create grid line, either along constant X/theta or constant Y/radius side.
void createGridLinesForEvenlySpacedGrid(const DocumentModelGridDisplay &modelGridDisplay, 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...
Container class for GridLine objects.
Definition: GridLines.h:12
Model for DlgSettingsCoords and CmdSettingsCoords.
Single grid line drawn a straight or curved line.
Definition: GridLine.h:14