ACF $AcfVersion:0$
CCalibratedViewBase.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 <QtGui/QPainter>
7
8// ACF includes
9#include <istd/TOptDelPtr.h>
10#include <i2d/CRect.h>
11#include <i2d/ICalibration2d.h>
14#include <iview/CViewBase.h>
15#include <iview/CDrawBuffer.h>
16#include <iview/CColorSchema.h>
18
19
20namespace iview
21{
22
23
30 public CViewBase,
31 virtual public i2d::ICalibrationProvider,
32 virtual public IVisualCalibrationInfo,
33 virtual public IToolsLayerInfo
34{
35public:
37
39
43 void SetDisplayCalibration(const i2d::ICalibration2d* calibrationPtr);
44
48 virtual void SetGridVisible(bool state = true);
49
53 virtual void ConnectCalibrationShape(iview::IShape* shapePtr);
54
58 virtual void SetDistanceMeasureToolActive(bool state = true);
59
63 virtual void SetPointMeasureToolActive(bool state = true);
64
65
69 virtual void ConnectToolShape(iview::IShape* shapePtr);
70
75 void SetMinGridDistance(double gridDistance);
76
80 void SetGridInMm(bool state = true);
81
86
90 const iview::IViewLayer& GetToolsLayer() const;
91
97 void SetDefaultColorSchema(const IColorSchema* colorSchemaPtr, bool releaseFlag = false);
98
100 void SetBackgroundBufferActive(bool state = true);
102 void SetDoubleBufferActive(bool state = true);
103
108
112 virtual void OnResize();
113
118
119 // reimplemented (iview::CViewBase)
120 virtual const iview::IColorSchema& GetDefaultColorSchema() const override;
121 virtual void UpdateAllShapes(const istd::IChangeable::ChangeSet& changeSet) override;
122 virtual void InsertDefaultLayers() override;
123
124 // reimplemented (iview::IShapeView)
125 virtual int InsertLayer(iview::IViewLayer* layerPtr, int index = -1, int layerType = IViewLayer::LT_NONE) override;
126 virtual void RemoveLayer(int index) override;
127
128 // reimplemented (iview::IVisualCalibrationInfo)
129 virtual bool IsGridVisible() const override;
130 virtual double GetMinGridDistance() const override;
131 virtual bool IsGridInMm() const override;
132
133 // reimplemented (iview::IToolsLayerInfo)
134 virtual bool IsDistanceMeasureToolActive() const override;
135 virtual bool IsPointMeasureToolActive() const override;
136
137 // reimplemented (i2d::ICalibrationProvider)
138 virtual const i2d::ICalibration2d* GetCalibration() const override;
139
141
142protected:
143 virtual void DrawBuffers(QPaintDevice& nativeContext, const i2d::CRect& clipRect);
144 virtual void DrawToContext(QPaintDevice& nativeContext, QPainter& context, const i2d::CRect& invalidatedBox);
145
146private:
147 mutable istd::TOptDelPtr<const IColorSchema> m_defaultColorSchemaPtr;
148
149 iview::CDrawBuffer m_backgroundBuffer;
150 iview::CDrawBuffer m_doubleBuffer;
151
152 bool m_isBackgroundBufferActive;
153 bool m_isDoubleBufferActive;
154
155 i2d::CRect m_lastClientArea;
156
157 const i2d::ICalibration2d* m_calibrationPtr = nullptr;
158 bool m_isGridVisible;
159 bool m_isGridInMm;
160 double m_minGridDistance;
161 bool m_isDistanceMeasureToolActive;
162 bool m_isPointMeasureToolActive;
163
164 int m_calibrationLayerIndex;
165 int m_toolsLayerIndex;
166
167 // default layers
168 iview::CViewLayer m_calibrationLayer;
169 iview::CToolsViewLayer m_toolsLayer;
170};
171
172
173// inline methods
174
176{
177 if (m_isGridVisible != state){
178 m_isGridVisible = state;
180 }
181}
182
183
184inline void CCalibratedViewBase::SetMinGridDistance(double gridDistance)
185{
186 if (m_minGridDistance != gridDistance){
187 m_minGridDistance = gridDistance;
188 if (m_isGridVisible){
190 }
191 }
192}
193
194
195inline void CCalibratedViewBase::SetGridInMm(bool state)
196{
197 if (m_isGridInMm != state){
198 m_isGridInMm = state;
200 }
201}
202
203
205{
206 return m_calibrationLayer;
207}
208
209
211{
212 return m_toolsLayer;
213}
214
215
217{
218 return m_isGridVisible;
219}
220
221
223{
224 return m_minGridDistance;
225}
226
227
229{
230 return m_isGridInMm;
231}
232
233
235{
236 return m_isDistanceMeasureToolActive;
237}
238
239
241{
242 if (state){
243 m_isPointMeasureToolActive = false;
244 }
245
246 if (m_isDistanceMeasureToolActive != state){
247 m_isDistanceMeasureToolActive = state;
248
250 }
251}
252
253
255{
256 return m_isPointMeasureToolActive;
257}
258
259
261{
262 if (state){
263 m_isDistanceMeasureToolActive = false;
264 }
265
266 if (m_isPointMeasureToolActive != state){
267 m_isPointMeasureToolActive = state;
268
270 }
271}
272
273
274// reimplemented (i2d::ICalibrationProvider)
275
277{
278 return m_calibrationPtr;
279}
280
281
282} // namespace iview
283
284
285
286
287
288
Simple rectangle with integer bounds.
Definition CRect.h:22
Interface for 2D calibration and coordinate transformation with unit information.
Common interface for an object, which delivers a 2D-calibration.
Set of change flags (its IDs).
Definition IChangeable.h:36
Pointer wrapper providing activatable deleting pointed object during destruction.
Definition TOptDelPtr.h:21
Abstract base class for all calibrated view.
void SetBackgroundBufferActive(bool state=true)
virtual const i2d::ICalibration2d * GetCalibration() const override
Get access to transformation object, which transforms a local logical coordinate system to global one...
iview::CDrawBuffer & GetDoubleBuffer()
virtual void UpdateAllShapes(const istd::IChangeable::ChangeSet &changeSet) override
virtual double GetMinGridDistance() const override
Get minimal distance between grid lines.
const iview::IViewLayer & GetToolsLayer() const
Get default tools layer.
virtual void DrawToContext(QPaintDevice &nativeContext, QPainter &context, const i2d::CRect &invalidatedBox)
virtual void SetPointMeasureToolActive(bool state=true)
Set point measure tool active.
void SetDefaultColorSchema(const IColorSchema *colorSchemaPtr, bool releaseFlag=false)
Set default color schema object.
virtual const iview::IColorSchema & GetDefaultColorSchema() const override
const iview::CDrawBuffer & GetDoubleBuffer() const
virtual void ConnectToolShape(iview::IShape *shapePtr)
Connect visualisation shape for ruler object.
virtual void DrawBuffers(QPaintDevice &nativeContext, const i2d::CRect &clipRect)
void SetDisplayCalibration(const i2d::ICalibration2d *calibrationPtr)
Set calibration using to display logical coordinates.
virtual void ConnectCalibrationShape(iview::IShape *shapePtr)
Connect visualisation shape for calibration object.
virtual void InsertDefaultLayers() override
bool IsBackgroundBufferActive() const
void SetDoubleBufferActive(bool state=true)
void CheckResize()
Check if size size was changed and invalidation and OnResize() should be done.
virtual void SetGridVisible(bool state=true)
Set grid visibility state.
virtual int InsertLayer(iview::IViewLayer *layerPtr, int index=-1, int layerType=IViewLayer::LT_NONE) override
Insert layer to view.
const iview::IViewLayer & GetCalibrationLayer() const
Get default calibration layer.
bool IsDoubleBufferActive() const
virtual void OnResize()
Called if found that display area was resized.
virtual void InvalidateBackground()
Invalidate whole background buffer.
virtual bool IsPointMeasureToolActive() const override
Check if the point measuring is active.
virtual void SetDistanceMeasureToolActive(bool state=true)
Set distance measure tool active.
void SetGridInMm(bool state=true)
Set if grid should be shown in milimeter.
virtual bool IsGridInMm() const override
Check if grid should be shown in milimeter.
virtual void RemoveLayer(int index) override
Remove layer from view.
virtual bool IsDistanceMeasureToolActive() const override
Check if the distance measuring is active.
virtual bool IsGridVisible() const override
Check if grid is visible.
iview::CDrawBuffer & GetBackgroundBuffer()
void SetMinGridDistance(double gridDistance)
Set minimal grid size.
const iview::CDrawBuffer & GetBackgroundBuffer() const
virtual void SetBackgroundBufferValid(bool state=true)
Set validate flag of background buffer.
Definition CViewBase.h:470
virtual void InvalidateBackground()
Invalidate whole background buffer.
Standard implementation of view layer.
Definition CViewLayer.h:22
Defines set of standard pens, brushes and simple management of unions.
Common interface for all display console shapes.
Definition IShape.h:32
Interface for accessing informations about the tool layer in the shape view.
Interface for a logical layer in the console view.
Definition IViewLayer.h:27
@ LT_NONE
Layer type is not set.
Definition IViewLayer.h:34
Common interface for all objects which allow access to calibration info.
In this library is defined 2D view concept and standard visualisation objects.