Engauge Digitizer 2
Loading...
Searching...
No Matches
Public Member Functions | List of all members
Ghosts Class Reference

Class for showing points and lines for all coordinate systems simultaneously, even though the code normally only allows graphical items for once coordinate system to be visible at a time. More...

#include <Ghosts.h>

Collaboration diagram for Ghosts:
Collaboration graph

Public Member Functions

 Ghosts (unsigned int coordSystemIndexToBeRestored)
 Single constructor.
 
 ~Ghosts ()
 
unsigned int coordSystemIndexToBeRestored () const
 Coordinate system index that was active before the ghosts.
 
void captureGraphicsItems (QGraphicsScene &scene)
 Take a snapshot of the graphics items.
 
void createGhosts (QGraphicsScene &scene)
 Create ghosts from the path/rect/polygon lists.
 
void destroyGhosts (QGraphicsScene &scene)
 Destory ghosts. Called at end of algorithm.
 

Detailed Description

Class for showing points and lines for all coordinate systems simultaneously, even though the code normally only allows graphical items for once coordinate system to be visible at a time.

QGraphicsLineItems are ignored since those are just used for the AxesChecker, and QGraphicsPixmapItems are ignored since those are just used for the background. The other QGraphicsItem subclasses are captured and converted into ghosts.

Definition at line 26 of file Ghosts.h.

Constructor & Destructor Documentation

◆ Ghosts()

Ghosts::Ghosts ( unsigned int coordSystemIndexToBeRestored)

Single constructor.

Definition at line 17 of file Ghosts.cpp.

17 :
18 m_coordSystemIndexToBeRestored (coordSystemIndexToBeRestored)
19{
20}
unsigned int coordSystemIndexToBeRestored() const
Coordinate system index that was active before the ghosts.
Definition Ghosts.cpp:73

◆ ~Ghosts()

Ghosts::~Ghosts ( )

Definition at line 22 of file Ghosts.cpp.

23{
24}

Member Function Documentation

◆ captureGraphicsItems()

void Ghosts::captureGraphicsItems ( QGraphicsScene & scene)

Take a snapshot of the graphics items.

Definition at line 26 of file Ghosts.cpp.

27{
28 QList<QGraphicsItem*> items = scene.items();
29
30 QList<QGraphicsItem*>::iterator itr;
31 for (itr = items.begin(); itr != items.end(); itr++) {
32
33 QGraphicsItem *item = *itr;
34
35 QGraphicsEllipseItem *itemEllipse = dynamic_cast<QGraphicsEllipseItem*> (item);
36 if (itemEllipse != nullptr) {
37
38 GhostEllipse ghost (itemEllipse->boundingRect(),
39 itemEllipse->pen(),
40 itemEllipse->brush());
41 m_ellipses.push_back (ghost);
42
43 } else {
44
45 QGraphicsPathItem *itemPath = dynamic_cast<QGraphicsPathItem*> (item);
46 if (itemPath != nullptr) {
47
48 GhostPath ghost (itemPath->path (),
49 itemPath->pen(),
50 itemPath->brush());
51 m_paths.push_back (ghost);
52
53 } else {
54
55 QGraphicsPolygonItem *itemPolygon = dynamic_cast<QGraphicsPolygonItem*> (item);
56 if (itemPolygon != nullptr) {
57
58 // Polygon is centered at origin so we have to add offset
59 QPolygonF polygon = itemPolygon->polygon();
60 polygon.translate (itemPolygon->pos ());
61
62 GhostPolygon ghost (polygon,
63 itemPolygon->pen(),
64 itemPolygon->brush());
65 m_polygons.push_back (ghost);
66
67 }
68 }
69 }
70 }
71}
const int INNER_RADIUS_MIN
Ghost for a QGraphicsEllipseItem.
Ghost for a QGraphicsPathItem.
Definition GhostPath.h:16
Ghost for a QGraphicsPolygonItem.

◆ coordSystemIndexToBeRestored()

unsigned int Ghosts::coordSystemIndexToBeRestored ( ) const

Coordinate system index that was active before the ghosts.

Definition at line 73 of file Ghosts.cpp.

74{
75 return m_coordSystemIndexToBeRestored;
76}

◆ createGhosts()

void Ghosts::createGhosts ( QGraphicsScene & scene)

Create ghosts from the path/rect/polygon lists.

Definition at line 78 of file Ghosts.cpp.

79{
80 int i;
81
82 for (i = 0; i < m_ellipses.count(); i++) {
83 GhostEllipse ghost = m_ellipses.at(i);
84
85 QGraphicsEllipseItem *item = scene.addEllipse (ghost.rect());
86
87 item->setData (DATA_KEY_GHOST, QVariant (true));
88 item->setPen (ghost.pen());
89 item->setBrush (ghost.brush());
90 item->setZValue (Z_VALUE);
91 item->setVisible (true);
92 }
93
94 for (i = 0; i < m_paths.count(); i++) {
95 GhostPath ghost = m_paths.at(i);
96
97 QGraphicsPathItem *item = scene.addPath (ghost.path(),
98 ghost.pen(),
99 ghost.brush());
100
101 item->setData (DATA_KEY_GHOST, QVariant (true));
102 item->setZValue (Z_VALUE);
103 item->setVisible (true);
104 }
105
106 for (i = 0; i < m_polygons.count(); i++) {
107 GhostPolygon ghost = m_polygons.at(i);
108
109 QGraphicsPolygonItem *item = scene.addPolygon (ghost.polygon(),
110 ghost.pen(),
111 ghost.brush());
112
113 item->setData (DATA_KEY_GHOST, QVariant (true));
114 item->setZValue (Z_VALUE);
115 item->setVisible (true);
116 }
117}
@ DATA_KEY_GHOST
‍True if item has changed since last mousePressEvent
Definition DataKey.h:17
const double Z_VALUE

◆ destroyGhosts()

void Ghosts::destroyGhosts ( QGraphicsScene & scene)

Destory ghosts. Called at end of algorithm.

Definition at line 119 of file Ghosts.cpp.

120{
121 QList<QGraphicsItem*> items = scene.items();
122 QList<QGraphicsItem*>::iterator itr;
123 for (itr = items.begin(); itr != items.end(); itr++) {
124
125 QGraphicsItem *item = *itr;
126 QVariant data = item->data (DATA_KEY_GHOST);
127 if (!data.isNull()) {
128 if (data.toBool()) {
129 scene.removeItem (item);
130 }
131 }
132 }
133}

The documentation for this class was generated from the following files: