00001
00002
00003
00004
00005
00006
00007 #ifndef GRID_LINE_FACTORY_H
00008 #define GRID_LINE_FACTORY_H
00009
00010 #include "GridLine.h"
00011 #include "Point.h"
00012 #include <QList>
00013
00014 class DocumentModelCoords;
00015 class DocumentModelGridDisplay;
00016 class GridLines;
00017 class QGraphicsScene;
00018 class QTransform;
00019 class Transformation;
00020
00027 class GridLineFactory
00028 {
00029 public:
00031 GridLineFactory(QGraphicsScene &scene,
00032 const DocumentModelCoords &modelCoords,
00033 const Transformation &transformation);
00034
00036 GridLineFactory(QGraphicsScene &scene,
00037 int pointRadius,
00038 const QList<Point> &pointsToIsolate,
00039 const DocumentModelCoords &modelCoords,
00040 const Transformation &transformation);
00041
00044 GridLine *createGridLine (double xFrom,
00045 double yFrom,
00046 double xTo,
00047 double yTo);
00048
00050 void createGridLinesForEvenlySpacedGrid (const DocumentModelGridDisplay &modelGridDisplay,
00051 GridLines &gridLines);
00052
00053 private:
00054 GridLineFactory();
00055
00056 void bindItemToScene(QGraphicsItem *item) const;
00057 void createTransformAlign (const Transformation &transformation,
00058 double radiusLinearCartesian,
00059 const QPointF &posOriginScreen,
00060 QTransform &transformAlign,
00061 double &ellipseXAxis,
00062 double &ellipseYAxis) const;
00063 QGraphicsItem *ellipseItem (const Transformation &transformation,
00064 double radiusLinearCartesian,
00065 const QPointF &posStartScreen,
00066 const QPointF &posEndScreen) const;
00067 void finishActiveGridLine (const QPointF &posStartScreen,
00068 const QPointF &posEndScreen,
00069 double yFrom,
00070 double yTo,
00071 GridLine &gridLine) const;
00072 QGraphicsItem *lineItem (const QPointF &posStartScreen,
00073 const QPointF &posEndScreen) const;
00074 double minScreenDistanceFromPoints (const QPointF &posScreen);
00075
00076 QGraphicsScene &m_scene;
00077 const int m_pointRadius;
00078 const QList<Point> m_pointsToIsolate;
00079 const DocumentModelCoords m_modelCoords;
00080 const Transformation &m_transformation;
00081 bool m_isChecker;
00082 };
00083
00084 #endif // GRID_LINE_FACTORY_H