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 Document;
00015 class DocumentModelCoords;
00016 class DocumentModelGridDisplay;
00017 class GridLines;
00018 class MainWindowModel;
00019 class QGraphicsScene;
00020 class QTransform;
00021 class Transformation;
00022
00029 class GridLineFactory
00030 {
00031 public:
00033 GridLineFactory(QGraphicsScene &scene,
00034 const DocumentModelCoords &modelCoords);
00035
00037 GridLineFactory(QGraphicsScene &scene,
00038 int pointRadius,
00039 const QList<Point> &pointsToIsolate,
00040 const DocumentModelCoords &modelCoords);
00041
00044 GridLine *createGridLine (double xFrom,
00045 double yFrom,
00046 double xTo,
00047 double yTo,
00048 const Transformation &transformation);
00049
00051 void createGridLinesForEvenlySpacedGrid (const DocumentModelGridDisplay &modelGridDisplay,
00052 const Document &document,
00053 const MainWindowModel &modelMainWindow,
00054 const Transformation &transformation,
00055 GridLines &gridLines);
00056
00057 private:
00058 GridLineFactory();
00059
00060 void bindItemToScene(QGraphicsItem *item) const;
00061 void createTransformAlign (const Transformation &transformation,
00062 double radiusLinearCartesian,
00063 const QPointF &posOriginScreen,
00064 QTransform &transformAlign,
00065 double &ellipseXAxis,
00066 double &ellipseYAxis) const;
00067 QGraphicsItem *ellipseItem (const Transformation &transformation,
00068 double radiusLinearCartesian,
00069 const QPointF &posStartScreen,
00070 const QPointF &posEndScreen) const;
00071 void finishActiveGridLine (const QPointF &posStartScreen,
00072 const QPointF &posEndScreen,
00073 double yFrom,
00074 double yTo,
00075 const Transformation &transformation,
00076 GridLine &gridLine) const;
00077 QGraphicsItem *lineItem (const QPointF &posStartScreen,
00078 const QPointF &posEndScreen) const;
00079 double minScreenDistanceFromPoints (const QPointF &posScreen);
00080
00081 QGraphicsScene &m_scene;
00082 const int m_pointRadius;
00083 const QList<Point> m_pointsToIsolate;
00084 const DocumentModelCoords m_modelCoords;
00085 bool m_isChecker;
00086 };
00087
00088 #endif // GRID_LINE_FACTORY_H