21#include <QGraphicsItem>
22#include <QGraphicsScene>
28 m_mainWindow (mainWindow),
36 delete m_guidelineFactory;
41 GuidelineContainerPrivate::iterator
itr;
43 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
47 QGraphicsScene *scene = &guideline->
scene();
49 if (scene !=
nullptr) {
56 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
60 QGraphicsScene *scene = &guideline->
scene();
62 if (scene !=
nullptr) {
69 m_guidelineContainerXT.clear ();
70 m_guidelineContainerYR.clear ();
87 <<
" identifier=" << identifier.toLatin1().data()
107 m_guidelineContainerYR.append (guideline);
119 m_guidelineContainerYR.append (guideline);
131 m_guidelineContainerXT.append (guideline);
143 m_guidelineContainerXT.append (guideline);
155 m_guidelineContainerXT.append (guideline);
167 m_guidelineContainerXT.append (guideline);
179 m_guidelineContainerYR.append (guideline);
191 m_guidelineContainerYR.append (guideline);
232GuidelineContainerPrivate::iterator Guidelines::findIdentifierXT (
const QString &identifier)
234 GuidelineContainerPrivate::iterator
itr;
237 for (
itr = m_guidelineContainerXT.begin ();
itr != m_guidelineContainerXT.end ();
itr++) {
244 LOG4CPP_DEBUG_S ((*
mainCat)) <<
"Guidelines::findIdentifierXT could not find " << identifier.toLatin1().data();
246 return m_guidelineContainerXT.end();
249GuidelineContainerPrivate::iterator Guidelines::findIdentifierYR (
const QString &identifier)
251 GuidelineContainerPrivate::iterator
itr;
254 for (
itr = m_guidelineContainerYR.begin ();
itr != m_guidelineContainerYR.end ();
itr++) {
261 LOG4CPP_DEBUG_S ((*
mainCat)) <<
"Guidelines::findIdentifierYR could not find " << identifier.toLatin1().data();
263 return m_guidelineContainerYR.end();
268 return m_guidelineContainerXT;
273 return m_guidelineContainerYR;
278 GuidelineContainerPrivate::iterator
itr;
280 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
286 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
296 GuidelineContainerPrivate::iterator
itr;
298 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
305 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
322 GuidelineContainerPrivate::const_iterator
itr;
324 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
331 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
348 <<
" identifier=" << identifier.toLatin1().data()
351 GuidelineContainerPrivate::iterator
itr = findIdentifierXT (identifier);
353 if (
itr== m_guidelineContainerXT.end ()) {
366 <<
" identifier=" << identifier.toLatin1().data()
369 GuidelineContainerPrivate::iterator
itr = findIdentifierYR (identifier);
371 if (
itr == m_guidelineContainerYR.end ()) {
382 m_guidelineContainerXT.push_back (guideline);
387 m_guidelineContainerYR.push_back (guideline);
393 <<
" identifier=" << identifier.toLatin1().data();
397 if (guideline !=
nullptr) {
410 GuidelineValues::const_iterator
itr;
443 GuidelineContainerPrivate::const_iterator
itrSort;
464 str <<
"Guidelines::stateDump:\n";
466 QStringList::const_iterator
itrOut;
489 <<
" identifier=" << identifier.toLatin1().data();
492 GuidelineContainerPrivate::iterator
itrXT = findIdentifierXT (identifier);
493 if (
itrXT != m_guidelineContainerXT.end ()) {
494 m_guidelineContainerXT.erase (
itrXT);
500 GuidelineContainerPrivate::iterator
itrYR = findIdentifierYR (identifier);
501 if (
itrYR != m_guidelineContainerYR.end ()) {
502 m_guidelineContainerYR.erase (
itrYR);
508 << identifier.toLatin1().data();
514 GuidelineContainerPrivate::const_iterator
itr;
516 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
521 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
529 GuidelineContainerPrivate::iterator
itr;
531 for (
itr = m_guidelineContainerXT.begin();
itr != m_guidelineContainerXT.end();
itr++) {
536 for (
itr = m_guidelineContainerYR.begin();
itr != m_guidelineContainerYR.end();
itr++) {
const int INNER_RADIUS_MIN
QString guidelineStateAsString(GuidelineState state)
GuidelineState
Set of possible Guideline states. See class Guideline for more information.
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_X_SELECT_EDIT_APPEARING
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_T_SELECT_EDIT
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_Y_SELECT_EDIT_APPEARING
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT_APPEARING
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_Y_SELECT_EDIT
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_T_SELECT_EDIT_APPEARING
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_X_SELECT_EDIT
QMap< QString, double > GuidelineValues
QList< GuidelineAbstract * > GuidelineContainerPrivate
log4cpp::Category * mainCat
CoordsType coordsType() const
Get method for coordinates type.
Model for managing the coordinate values corresponding Guidelines.
GuidelineValues valuesX() const
Get method for x/t values.
GuidelineValues valuesY() const
Get method for y/r values.
DocumentModelCoords modelCoords() const
Get method for DocumentModelCoords.
Add point and line handling to generic QGraphicsScene.
This class is a special case of the standard QGraphicsLineItem for guidelines, and serves as the base...
virtual QString identifier() const =0
Unique identifier from QGraphicsItem.
QGraphicsScene & scene()
GraphicsScene that owns this class.
QPointF posCursorGraph() const
Get position in graph coordinates.
virtual void updateGeometry(double valueGraph)=0
Update the geometry so it passes through the specified coordinate value in graph coordinates.
void updateWithLatestTransformation()
Update given Transformation in GuidelineStateContext. This is called after a command has been execute...
void handleGuidelineMode(bool visible, bool locked)
User toggled Guideline visibility and/or locked mode.
virtual void removeFromScene(QGraphicsScene *scene)=0
Make graphics item remove itself from the scene.
void handleActiveChange(bool active)
DigitizeState change so active status may (or may not) be toggled.
QString stateDump() const
Dump of state as a string for debugging only. Context like the QGraphicsItem flags is included.
virtual void updateColor()=0
Force a color update.
Factory for generating Guideline objects.
GuidelineAbstract * createGuideline(Guidelines &guidelines, GuidelineState stateInitial, MainWindow &mainWindow, const QString &identifier)
void createGuidelineY(const QString &identifier, double y)
Factory method for creating a new GUIDELINE_STATE_DEPLOYED_CONSTANT_Y_ACTIVE.
void createGuidelineR(const QString &identifier, double r)
Factory method for creating a new GUIDELINE_STATE_DEPLOYED_CONSTANT_R_ACTIVE.
void createReplacementGuideline(const QString &identifierReplaced, double newValue, GuidelineState guidelineStateForReplacement)
Factory method for creating a new replacement Guideline, which replaces one handle and one visible Gu...
void setModelGuidelines(CoordsType coordsType, const DocumentModelGuidelines &modelGuidelines)
Load Guidelines from Document.
void clear()
Remove guidelines since the current Document is about to be closed.
CoordsType coordsType() const
Return cartesian or polar.
void createGuidelineT(const QString &identifier, double t)
Factory method for creating a new GUIDELINE_STATE_DEPLOYED_CONSTANT_T_ACTIVE.
GuidelineAbstract * createGuideline(const QString &identifier, GuidelineState stateInitial)
Factory method for creating a new Guideline.
void moveGuidelineYR(const QString &identifier, double valueAfter)
Move an Y/R guideline from one value to another. Closest value wins.
ColorPalette color() const
Color to be used for guidelines.
Transformation transformation() const
Return copy of transformation owned by MainWindow.
Guidelines(MainWindow &mainWindow)
Single constructor.
void handleGuidelineMode(bool visible, bool locked)
User toggled guideline mode.
void removeGuideline(const QString &identifier)
Remove an X/T or Y/R guideline.
DocumentModelGuidelines modelGuidelines() const
Return complete set of guidelines information for Document.
void updateWithLatestTransformation()
Update transformation. This is called after a command has been executed.
void moveGuidelineXT(const QString &identifier, double valueAfter)
Move an X/T guideline from one value to another. Closest value wins.
void initialize(GraphicsScene &scene)
Initialize Guideline factory.
void createGuidelineX(const QString &identifier, double x)
Factory method for creating a new GUIDELINE_STATE_DEPLOYED_CONSTANT_X_ACTIVE.
void handleActiveChange(bool active)
DigitizeState change so active status may (or may not) be toggled.
QString stateDump() const
States listed as a string for debugging only.
void updateColor()
Force a color update.
ColorPalette guidelineColor() const
Get method for guideline color.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
CmdMediator * cmdMediator()
Accessor for commands to process the Document.
MainWindowModel modelMainWindow() const
Get method for main window model.
Transformation transformation() const
Return read-only copy of transformation.
#define LOG4CPP_DEBUG_S(logger)
#define LOG4CPP_ERROR_S(logger)