ACF $AcfVersion:0$
CConsoleBase.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QString>
7#if QT_VERSION >= 0x050000
8#include <QtWidgets/QWidget>
9#else
10#include <QtGui/QWidget>
11#endif
12
13
14// ACF includes
15#include <i2d/CRectangle.h>
16
20
21
22namespace iview
23{
24
25
26class CViewport;
27
28
29class CConsoleBase: public QWidget, virtual public IEditModeButtons
30{
31public:
67
69 {
72 BF_ALL = 0xffff
73 };
74
75 explicit CConsoleBase(QWidget* parent);
76
77 // console visibility
78 bool IsZoomToFit() const;
79 void SetZoomToFit(bool state = true);
81 void SetFitMode(FitMode mode);
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);
122
123 // fullscreen
125 void SetFullScreenAllowed(bool allow = true);
126
130 bool IsBackgroundActive() const;
131
133
134 void SetUpdateBlocked(bool isBlocked, int flags = BF_ALL);
135
136 // abstract methods
137
141 virtual const CViewport& GetView() const = 0;
142
146 virtual CViewport& GetViewRef() = 0;
147
151 virtual void UpdateButtonsState() = 0;
152
156 virtual void UpdateComponentsPosition() = 0;
157
161 virtual void UpdateCommands() = 0;
162
163 virtual void UpdateCursorInfo(const QString& infoText) = 0;
164
165protected:
166 // events
167 virtual bool OnSelectChange(const iview::IShapeView& view, const istd::CIndex2d& position, const iview::IInteractiveShape& shape, bool state) = 0;
168 virtual bool OnViewMouseButton(const iview::IShapeView& view, const istd::CIndex2d& position, Qt::MouseButton buttonType, bool state, const iview::IInteractiveShape* shapePtr) = 0;
169 virtual void OnBoundingBoxChanged() = 0;
170
171private:
172 void Init();
173
174 FitMode m_fitMode;
175 bool m_isRulerVisible;
176
177 bool m_areScollbarsVisible;
178 bool m_isButtonsPanelVisible;
179 bool m_isButtonsPanelVertical;
180
181 bool m_areZoomsVisible;
182 bool m_isZoomToFitVisible;
183 bool m_arePolylineButtonsVisible;
184 bool m_areUserModeButtonsVisible;
185 bool m_isScrollbarsButtonVisible;
186 bool m_isGridButtonVisible;
187 bool m_isRulerButtonVisible;
188 bool m_isMmButtonVisible;
189 bool m_isDistanceMeasureButtonVisible;
190 bool m_isPointMeasureButtonVisible;
191
192 iview::CScreenTransform m_storedFitTransform;
193
194 bool m_isZoomToFit;
195 bool m_isBkActive;
196 bool m_isFullScreenAllowed;
197
198 friend class CViewport;
199
200 int m_updateBlockFlags;
201};
202
203
204} // namespace iview
205
206
207
Index implementation for addressing elements in 2D-space.
Definition CIndex2d.h:21
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
virtual void UpdateComponentsPosition()=0
Recalculates position of all components.
void SetZoomsVisible(bool state=true)
void SetRulerButtonVisible(bool state=true)
bool IsDistanceMeasureButtonVisible() const
FitMode
Control fitting mode, to fit area of interest (AOI) to display.
@ FM_VERTICAL
Only vertical size of AOI will be consider.
@ FM_HORIZONTAL
Only horizontal size of AOI will be consider.
@ FM_COVER
Scale both axes proportional to display smallest AOI, which fully covers display.
@ FM_RESET
No fitting, frame use always identity transformation.
@ FM_BOTH
Scale both axes proportional to display biggest, but full visible AOI.
@ FM_UNPROP
Both axes will be scaled separately.
bool AreScrollbarsVisible() const
void SetScrollbarsButtonVisible(bool state=true)
void SetPolylineButtonsVisible(bool state=true)
bool IsDistanceMeasureToolActive() const
bool IsPointMeasureButtonVisible() const
bool IsZoomToFit() const
void SetRulerVisible(bool state=true)
void SetUserModeButtonsVisible(bool state=true)
bool IsGridInMm() const
bool IsGridVisible() const
bool ArePolylineButtonsVisible() const
bool IsFullScreenAllowed() 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 SetGridVisible(bool state=true)
bool IsRulerVisible() const
void SetGridButtonVisible(bool state=true)
void SetMmButtonVisible(bool state=true)
FitMode GetFitMode() const
bool IsButtonsPanelVisible() const
bool IsPointMeasureToolActive() const
void SetFitMode(FitMode mode)
virtual CViewport & GetViewRef()=0
Get access to internal view implementation.
bool IsZoomToFitVisible() const
void SetZoomToFit(bool state=true)
void SetUpdateBlocked(bool isBlocked, int flags=BF_ALL)
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
virtual void OnBoundingBoxChanged()=0
void SetZoomToFitVisible(bool state=true)
void SetFullScreenAllowed(bool allow=true)
void SetScrollbarsVisible(bool state=true)
bool IsBackgroundActive() const
Check if background object is present and active.
Update state of edit mode buttons.
Common interface for all display console shapes which can interacts with user.
Common interface for a general shape view implementations.
Definition IShapeView.h:30
In this library is defined 2D view concept and standard visualisation objects.