Engauge Digitizer 2
Loading...
Searching...
No Matches
GuidelineFactory.cpp
Go to the documentation of this file.
1/******************************************************************************************************
2 * (C) 2019 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7#include "GraphicsScene.h"
8#include "GuidelineAbstract.h"
9#include "GuidelineEllipse.h"
10#include "GuidelineFactory.h"
11#include "GuidelineLine.h"
12#include "Guidelines.h"
13#include "Logger.h"
14#include "MainWindow.h"
15#include <QGraphicsScene>
16
18 m_sceneMain (sceneMain)
19{
20 createEllipseMap ();
21}
22
26
28 GuidelineState stateInitial,
29 MainWindow &mainWindow,
30 const QString &identifier)
31{
32 LOG4CPP_DEBUG_S ((*mainCat)) << "GuidelineFactory::createGuideline identifier="
33 << identifier.toLatin1().data();
34
35 // Main scene or one of the guideline scenes?
36 QGraphicsScene *scene = m_sceneMain;
37
38 // Line or ellipse?
39 GuidelineAbstract *guideline = nullptr;
40
41 if (m_mapStatesWithEllipse.contains (stateInitial)) {
42
43 guideline = new GuidelineEllipse (*scene,
44 mainWindow,
45 guidelines,
46 stateInitial,
47 identifier);
48
49 } else {
50
51 guideline = new GuidelineLine (*scene,
52 mainWindow,
53 guidelines,
54 stateInitial,
55 identifier);
56 }
57
58 QObject::connect (guideline, SIGNAL (signalGuidelineDragged (QString, double, bool, GuidelineState)),
59 &mainWindow, SLOT (slotGuidelineDragged (QString, double, bool, GuidelineState)));
60
61 return guideline;
62}
63
64void GuidelineFactory::createEllipseMap ()
65{
66 // All other states get a line instead of an ellipse
67 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT] = true;
69 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT_HOVER] = true;
70 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_HIDE] = true;
71 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_LOCK] = true;
72 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_EDIT] = true;
73 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_HIDE] = true;
74 m_mapStatesWithEllipse [GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_LOCK] = true;
75}
GuidelineState
Set of possible Guideline states. See class Guideline for more information.
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT_APPEARING
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_EDIT_HOVER
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_LOCK
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_HIDE
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_SELECT_LOCK
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_HIDE
@ GUIDELINE_STATE_DEPLOYED_CONSTANT_R_UNSELECT_EDIT
log4cpp::Category * mainCat
Definition Logger.cpp:14
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...
Ellipse version of GuidelineAbstract.
GuidelineAbstract * createGuideline(Guidelines &guidelines, GuidelineState stateInitial, MainWindow &mainWindow, const QString &identifier)
GuidelineFactory(GraphicsScene *sceneMain)
Single constructor.
Line version of GuidelineAbstract.
This class contains all Guideline objects.
Definition Guidelines.h:28
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:95
#define LOG4CPP_DEBUG_S(logger)
Definition convenience.h:20