ICF 3.0.5.47
Technical documentation of ICF Libraries
CConsoleBase.h
Go to the documentation of this file.
1/********************************************************************************
2** This file is part of the ICF Framework. Copyright (C) Witold Gantzke & Kirill Lepskiy
3** ICF Framework may be used under the terms of the LGPL License v. 2.1 by the Free Software Foundation.
4********************************************************************************/
5
6#ifndef iview_CConsoleBase_included
7#define iview_CConsoleBase_included
8
9
10// Qt includes
11#include <QtCore/QString>
12#include <QtWidgets/QWidget>
13
14
15// ICF includes
16#include <i2d/CRectangle.h>
17
20
21
22namespace iview
23{
24
25
26class CViewport;
27
28
29class CConsoleBase: public QWidget
30{
31public:
35 enum class FittingMode
36 {
40 Reset,
41
46
51
56
60 Stretch,
61
66 };
67
68 enum class ExtraMode
69 {
70 None,
73 };
74
75 explicit CConsoleBase(QWidget* parent);
76
77 // console visibility
78 bool IsZoomToFit() const;
79 void SetZoomToFit(bool state = true);
82 bool IsGridVisible() const;
83 void SetGridVisible(bool state = true);
84 bool IsRulerVisible() const;
85 void SetRulerVisible(bool state = true);
87 void SetDistanceMeasureToolActive(bool state = true);
89 void SetPointMeasureToolActive(bool state = true);
90 bool IsGridInMm() const;
91 void SetGridInMm(bool state = true);
92
93 // GUI visibility
95 void SetButtonsPanelVisible(bool state = true);
97 void SetButtonsPanelVertical(bool state = true);
99 void SetScrollbarsVisible(bool state = true);
100
101 // Buttons visibility
102 bool AreZoomsVisible() const;
103 void SetZoomsVisible(bool state = true);
104 bool IsZoomToFitVisible() const;
105 void SetZoomToFitVisible(bool state = true);
107 void SetPolylineButtonsVisible(bool state = true);
109 void SetUserModeButtonsVisible(bool state = true);
111 void SetScrollbarsButtonVisible(bool state = true);
113 void SetGridButtonVisible(bool state = true);
115 void SetRulerButtonVisible(bool state = true);
116 bool IsMmButtonVisible() const;
117 void SetMmButtonVisible(bool state = true);
119 void SetDistanceMeasureButtonVisible(bool state = true);
121 void SetPointMeasureButtonVisible(bool state = true);
125 void SetFitReleaseAllowed(bool state = true);
126
130 bool IsBackgroundActive() const;
131
133
134 // abstract methods
135
139 virtual const CViewport& GetView() const = 0;
140
144 virtual CViewport& GetViewRef() = 0;
145
152 virtual void UpdateEditModeButtons() = 0;
153
157 virtual void UpdateButtonsState() = 0;
158
162 virtual void UpdateComponentsPosition() = 0;
163
167 virtual void UpdateCommands() = 0;
168
169 // abstract methods
170 virtual void UpdateCursorInfo(const QString& infoText) = 0;
171
172protected:
173 // events
174 virtual bool OnSelectChange(const iview::IShapeView& view, const istd::CIndex2d& position, const iview::IInteractiveShape& shape, bool state) = 0;
175 virtual bool OnViewMouseButton(const iview::IShapeView& view, const istd::CIndex2d& position, Qt::MouseButton buttonType, bool state, const iview::IInteractiveShape* shapePtr) = 0;
176 virtual void OnBoundingBoxChanged() = 0;
177
178private:
179 void Init();
180
181 FittingMode m_fitMode;
182 bool m_isRulerVisible;
183
184 bool m_areScollbarsVisible;
185 bool m_isButtonsPanelVisible;
186 bool m_isButtonsPanelVertical;
187
188 bool m_areZoomsVisible;
189 bool m_isZoomToFitVisible;
190 bool m_arePolylineButtonsVisible;
191 bool m_areUserModeButtonsVisible;
192 bool m_isScrollbarsButtonVisible;
193 bool m_isGridButtonVisible;
194 bool m_isRulerButtonVisible;
195 bool m_isMmButtonVisible;
196 bool m_isDistanceMeasureButtonVisible;
197 bool m_isPointMeasureButtonVisible;
198
199 iview::CScreenTransform m_storedFitTransform;
200
201 bool m_isZoomToFit;
202 bool m_isBkActive;
203 ExtraMode m_doubleClickMode;
204 bool m_fitReleaseAllowed;
205
206 friend class CViewport;
207};
208
209
210} // namespace iview
211
212
213#endif // !iview_CConsoleBase_included
214
Index implementation for addressing elements in 2D-space.
Definition CIndex2d.h:25
void SetFitMode(FittingMode mode)
bool IsRulerButtonVisible() const
virtual bool OnSelectChange(const iview::IShapeView &view, const istd::CIndex2d &position, const iview::IInteractiveShape &shape, bool state)=0
bool AreUserModeButtonsVisible() const
bool IsScrollbarsButtonVisible() const
virtual const CViewport & GetView() const =0
Get access to internal view implementation.
void SetButtonsPanelVertical(bool state=true)
bool AreZoomsVisible() const
FittingMode
Control fitting mode, to fit area of interest (AOI) to display.
@ ScaleToFit
Scale both axes proportional to display biggest, but full visible AOI.
@ ScaleToFitV
Only vertical size of AOI will be consider.
@ Reset
No fitting, frame use always identity transformation.
@ PropFill
Scale both axes proportional to display smallest AOI, which fully covers display.
@ ScaleToFitH
Only horizontal size of AOI will be consider.
@ Stretch
Both axes will be scaled separately.
virtual void UpdateComponentsPosition()=0
Recalculates position of all components.
void SetZoomsVisible(bool state=true)
void SetRulerButtonVisible(bool state=true)
bool IsDistanceMeasureButtonVisible() const
FittingMode GetFitMode() const
bool AreScrollbarsVisible() const
void SetScrollbarsButtonVisible(bool state=true)
void SetPolylineButtonsVisible(bool state=true)
bool IsDistanceMeasureToolActive() const
void SetFitReleaseAllowed(bool state=true)
bool IsPointMeasureButtonVisible() const
virtual void UpdateEditModeButtons()=0
Update state of edit mode buttons.
bool IsZoomToFit() const
void SetRulerVisible(bool state=true)
bool IsFitReleaseAllowed() const
void SetUserModeButtonsVisible(bool state=true)
bool IsGridInMm() const
bool IsGridVisible() const
bool ArePolylineButtonsVisible() const
bool IsButtonsPanelVertical() const
void SetGridInMm(bool state=true)
void SetPointMeasureButtonVisible(bool state=true)
virtual void UpdateCursorInfo(const QString &infoText)=0
virtual void UpdateCommands()=0
Recalculate menu commands.
void SetDistanceMeasureButtonVisible(bool state=true)
void SetDoubleClickMode(ExtraMode mode)
void SetGridVisible(bool state=true)
bool IsRulerVisible() const
void SetGridButtonVisible(bool state=true)
void SetMmButtonVisible(bool state=true)
bool IsButtonsPanelVisible() const
bool IsPointMeasureToolActive() const
virtual CViewport & GetViewRef()=0
Get access to internal view implementation.
bool IsZoomToFitVisible() const
void SetZoomToFit(bool state=true)
bool IsMmButtonVisible() const
virtual void UpdateButtonsState()=0
Recalculates enabling flags for buttons.
void SetPointMeasureToolActive(bool state=true)
CConsoleBase(QWidget *parent)
virtual bool OnViewMouseButton(const iview::IShapeView &view, const istd::CIndex2d &position, Qt::MouseButton buttonType, bool state, const iview::IInteractiveShape *shapePtr)=0
void SetDistanceMeasureToolActive(bool state=true)
void SetButtonsPanelVisible(bool state=true)
bool IsGridButtonVisible() const
ExtraMode GetDoubleClickMode() const
virtual void OnBoundingBoxChanged()=0
void SetZoomToFitVisible(bool state=true)
void SetScrollbarsVisible(bool state=true)
bool IsBackgroundActive() const
Check if background object is present and active.
Common interface for all display console shapes which can interacts with user.
Common interface for a general shape view implementations.
Definition IShapeView.h:32
In this library is defined 2D view concept and standard visualisation objects.

© Witold Gantzke and Kirill Lepskiy