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.cmdMediator()->document().modelGuideline ().lineColor();
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;
343 return modelGuidelineNew;
350 <<
" identifier=" << identifier.toLatin1().data()
351 <<
" value=" << valueAfter;
353 GuidelineContainerPrivate::iterator itr = findIdentifierXT (identifier);
355 if (itr== m_guidelineContainerXT.end ()) {
368 <<
" identifier=" << identifier.toLatin1().data()
369 <<
" value=" << valueAfter;
371 GuidelineContainerPrivate::iterator itr = findIdentifierYR (identifier);
373 if (itr == m_guidelineContainerYR.end ()) {
384 m_guidelineContainerXT.push_back (guideline);
389 m_guidelineContainerYR.push_back (guideline);
395 <<
" identifier=" << identifier.toLatin1().data();
399 if (guideline !=
nullptr) {
412 GuidelineValues::const_iterator itr;
414 for (itr = valuesXT.begin(); itr != valuesXT.end(); itr++) {
415 QString identifier = itr.key();
416 double value = itr.value();
427 for (itr = valuesYR.begin(); itr != valuesYR.end(); itr++) {
428 QString identifier = itr.key();
429 double value = itr.value();
444 QStringList sortedXT, sortedYR;
445 GuidelineContainerPrivate::const_iterator itrSort;
447 for (itrSort = m_guidelineContainerXT.begin(); itrSort != m_guidelineContainerXT.end(); itrSort++) {
452 for (itrSort = m_guidelineContainerYR.begin(); itrSort != m_guidelineContainerYR.end(); itrSort++) {
457 std::sort (sortedXT.begin(),
459 std::sort (sortedYR.begin(),
464 QTextStream str (&out);
466 str <<
"Guidelines::stateDump:\n";
468 QStringList::const_iterator itrOut;
470 for (itrOut = sortedXT.begin(); itrOut != sortedXT.end(); itrOut++) {
471 QString entry = *itrOut;
472 str <<
" " << entry <<
"\n";
475 for (itrOut = sortedYR.begin(); itrOut != sortedYR.end(); itrOut++) {
476 QString entry = *itrOut;
477 str <<
" " << entry <<
"\n";
485 return m_mainWindow.transformation ();
491 <<
" identifier=" << identifier.toLatin1().data();
494 GuidelineContainerPrivate::iterator itrXT = findIdentifierXT (identifier);
495 if (itrXT != m_guidelineContainerXT.end ()) {
496 m_guidelineContainerXT.erase (itrXT);
502 GuidelineContainerPrivate::iterator itrYR = findIdentifierYR (identifier);
503 if (itrYR != m_guidelineContainerYR.end ()) {
504 m_guidelineContainerYR.erase (itrYR);
510 << identifier.toLatin1().data();
516 GuidelineContainerPrivate::const_iterator itr;
518 for (itr = m_guidelineContainerXT.begin(); itr != m_guidelineContainerXT.end(); itr++) {
523 for (itr = m_guidelineContainerYR.begin(); itr != m_guidelineContainerYR.end(); itr++) {
531 GuidelineContainerPrivate::iterator itr;
533 for (itr = m_guidelineContainerXT.begin(); itr != m_guidelineContainerXT.end(); itr++) {
538 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.
GuidelineValues valuesY() const
Get method for y/r values.
GuidelineValues valuesX() const
Get method for x/t values.
void setValuesY(const GuidelineValues &valuesY)
Set method for y/r values.
void setValuesX(const GuidelineValues &valuesX)
Set method for x/t values.
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 setModelGuideline(CoordsType coordsType, const DocumentModelGuideline &modelGuideline)
Load Guidelines from Document.
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 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.
DocumentModelGuideline updateValues(const DocumentModelGuideline &modelGuidelineOld) const
Updates the guideline values for later storing in Document. Only the values are updated.
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.
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)