21#include <QGraphicsItem>
22#include <QGraphicsScene>
28 m_mainWindow (mainWindow),
29 m_guidelineFactory (nullptr)
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 ();
75 return m_mainWindow.modelMainWindow().guidelineColor();
80 return m_mainWindow.cmdMediator()->document().modelCoords().coordsType();
87 <<
" identifier=" << identifier.toLatin1().data()
107 m_guidelineContainerYR.append (guideline);
111 const QPointF &posScreen)
119 m_guidelineContainerYR.append (guideline);
131 m_guidelineContainerXT.append (guideline);
135 const QPointF &posScreen)
143 m_guidelineContainerXT.append (guideline);
155 m_guidelineContainerXT.append (guideline);
159 const QPointF &posScreen)
167 m_guidelineContainerXT.append (guideline);
179 m_guidelineContainerYR.append (guideline);
183 const QPointF &posScreen)
191 m_guidelineContainerYR.append (guideline);
201 unregisterGuideline (identifierReplaced);
204 switch (guidelineStateForReplacement) {
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++) {
255 GuidelineAbstract *guideline = *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++) {
328 valuesXT [identifier] = value;
331 for (itr = m_guidelineContainerYR.begin(); itr != m_guidelineContainerYR.end(); itr++) {
335 valuesYR [identifier] = value;
348 <<
" identifier=" << identifier.toLatin1().data()
349 <<
" value=" << valueAfter;
351 GuidelineContainerPrivate::iterator itr = findIdentifierXT (identifier);
353 if (itr== m_guidelineContainerXT.end ()) {
366 <<
" identifier=" << identifier.toLatin1().data()
367 <<
" value=" << valueAfter;
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;
412 for (itr = valuesXT.begin(); itr != valuesXT.end(); itr++) {
413 QString identifier = itr.key();
414 double value = itr.value();
425 for (itr = valuesYR.begin(); itr != valuesYR.end(); itr++) {
426 QString identifier = itr.key();
427 double value = itr.value();
442 QStringList sortedXT, sortedYR;
443 GuidelineContainerPrivate::const_iterator itrSort;
445 for (itrSort = m_guidelineContainerXT.begin(); itrSort != m_guidelineContainerXT.end(); itrSort++) {
450 for (itrSort = m_guidelineContainerYR.begin(); itrSort != m_guidelineContainerYR.end(); itrSort++) {
455 std::sort (sortedXT.begin(),
457 std::sort (sortedYR.begin(),
462 QTextStream str (&out);
464 str <<
"Guidelines::stateDump:\n";
466 QStringList::const_iterator itrOut;
468 for (itrOut = sortedXT.begin(); itrOut != sortedXT.end(); itrOut++) {
469 QString entry = *itrOut;
470 str <<
" " << entry <<
"\n";
473 for (itrOut = sortedYR.begin(); itrOut != sortedYR.end(); itrOut++) {
474 QString entry = *itrOut;
475 str <<
" " << entry <<
"\n";
483 return m_mainWindow.transformation ();
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++) {
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
Model for managing the coordinate values corresponding Guidelines.
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.
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.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
#define LOG4CPP_DEBUG_S(logger)
#define LOG4CPP_ERROR_S(logger)