Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CGeoCanvas.hpp
Go to the documentation of this file.
1#ifndef LIBS_GRAPHICS_CGEOCANVAS_HPP_
2#define LIBS_GRAPHICS_CGEOCANVAS_HPP_
3
4#include "IRcpDraw.hpp"
5
6#include <cmath>
7#include <vector>
8
9class CLimits;
10class CMatrix4x4;
11
13{
14public:
15 CGeoCanvas();
17 CGeoCanvas(const CGeoCanvas &other) = delete;
18 CGeoCanvas(CGeoCanvas &&other) = default;
19 CGeoCanvas &operator=(const CGeoCanvas &other) = delete;
20 CGeoCanvas &operator=(CGeoCanvas &&other) = default;
21
22 bool operator==(const CGeoCanvas &b) const
23 {
25 }
26
27 void addDraw(IRcpDraw **rcpDraw);
28 void addDynamicView(IRcpDraw **rcpDraw, double xMinPerc, double yMinPerc, double xMaxPerc, double yMaxPerc,
29 bool isProportional);
30 void calculateLimits();
31 bool getPixelToWorld(double xLocalInCenterPixel, double yLocalInCenterPixel, double sizeXPixel, double sizeYPixel,
32 double *xWorld, double *yWorld) const;
33 CMatrix4x4 matrixTransformation(double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel);
34 void removeObjects(IGraphics *graphics);
35 void runDraw(IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp);
36 void update();
37
38 void setMargin(double percentByOne);
39 void setNonProportional();
40 void setOriginZero();
41
42 bool hasDataTransformation(double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel,
43 double *xCenterPixel, double *yCenterPixel, double *fx, double *fy, double *xCenterWorld,
44 double *yCenterWorld);
45
46private:
47 enum class EPrvOriginType
48 {
49 Center,
50 Zero
51 };
52
54 {
55 public:
58 SPrvCanvasView(const SPrvCanvasView &other) = delete;
59 SPrvCanvasView(SPrvCanvasView &&other) noexcept;
60 SPrvCanvasView &operator=(const SPrvCanvasView &other) = delete;
61 SPrvCanvasView &operator=(SPrvCanvasView &&other) noexcept;
62
63 bool operator==(const SPrvCanvasView &b) const;
64
67 double m_margin {};
68 std::vector<IRcpDraw *> m_rcpsDraw {};
69
70 private:
71 static void prvSetDefaultValues(SPrvCanvasView &canvasViewData);
72 void prvMoveValues(SPrvCanvasView &canvasViewData);
73 void prvDelete();
74 };
75
77 {
78 bool operator==(const SPrvDynamicView &b) const
79 {
80 auto epsilon = static_cast<float>(0.000001);
81
82 return (m_view == b.m_view) && fabs(m_xMinPerc - b.m_xMinPerc) < epsilon &&
83 fabs(m_yMinPerc - b.m_yMinPerc) < epsilon && fabs(m_xMaxPerc - b.m_xMaxPerc) < epsilon &&
84 fabs(m_yMaxPerc - b.m_yMaxPerc) < epsilon;
85 }
86
88 double m_xMinPerc;
89 double m_yMinPerc;
90 double m_xMaxPerc;
91 double m_yMaxPerc;
92 };
93
94 static void prvRunDraw(CGeoCanvas::EPrvOriginType typeOrigin, double xMinComp, double yMinComp, double xMaxComp,
95 double yMaxComp, IGraphics *graphics, CGeoCanvas::SPrvCanvasView *view);
96 static void prvDrawScene(bool isProportional, double margin, CGeoCanvas::EPrvOriginType typeOrigin,
97 const std::vector<IRcpDraw *> &rcpsDraw, IGraphics *graphics, double xMinComp,
98 double yMinComp, double xMaxComp, double yMaxComp, CLimits *limits);
99 static bool prvHasDataTransformation(const CLimits *limits, CGeoCanvas::EPrvOriginType typeOrigin, double margin,
100 bool isProportional, double xMinPixel, double yMinPixel, double xMaxPixel,
101 double yMaxPixel, double *xOriginPixel, double *yOriginPixel, double *fX,
102 double *fY, double *xOriginWorld, double *yOriginWorld);
103 static void prvRemoveObjects(CGeoCanvas::SPrvCanvasView *view, IGraphics *graphics);
104
107 std::vector<SPrvDynamicView> m_dynamicViews;
108};
109
110#endif /* LIBS_GRAPHICS_CGEOCANVAS_HPP_ */
Definition CGeoCanvas.hpp:13
bool operator==(const CGeoCanvas &b) const
Definition CGeoCanvas.hpp:22
void setOriginZero()
Definition CGeoCanvas.cpp:504
bool hasDataTransformation(double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel, double *xCenterPixel, double *yCenterPixel, double *fx, double *fy, double *xCenterWorld, double *yCenterWorld)
Definition CGeoCanvas.cpp:509
void addDraw(IRcpDraw **rcpDraw)
Definition CGeoCanvas.cpp:346
static void prvRunDraw(CGeoCanvas::EPrvOriginType typeOrigin, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp, IGraphics *graphics, CGeoCanvas::SPrvCanvasView *view)
Definition CGeoCanvas.cpp:241
~CGeoCanvas()
Definition CGeoCanvas.cpp:337
static void prvDrawScene(bool isProportional, double margin, CGeoCanvas::EPrvOriginType typeOrigin, const std::vector< IRcpDraw * > &rcpsDraw, IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp, CLimits *limits)
Definition CGeoCanvas.cpp:214
void removeObjects(IGraphics *graphics)
Definition CGeoCanvas.cpp:439
CGeoCanvas()
Definition CGeoCanvas.cpp:328
CGeoCanvas & operator=(CGeoCanvas &&other)=default
SPrvCanvasView m_mainView
Definition CGeoCanvas.hpp:106
void addDynamicView(IRcpDraw **rcpDraw, double xMinPerc, double yMinPerc, double xMaxPerc, double yMaxPerc, bool isProportional)
Definition CGeoCanvas.cpp:355
bool getPixelToWorld(double xLocalInCenterPixel, double yLocalInCenterPixel, double sizeXPixel, double sizeYPixel, double *xWorld, double *yWorld) const
Definition CGeoCanvas.cpp:390
CGeoCanvas & operator=(const CGeoCanvas &other)=delete
CGeoCanvas(CGeoCanvas &&other)=default
CMatrix4x4 matrixTransformation(double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel)
Definition CGeoCanvas.cpp:411
std::vector< SPrvDynamicView > m_dynamicViews
Definition CGeoCanvas.hpp:107
CGeoCanvas::EPrvOriginType m_typeOrigin
Definition CGeoCanvas.hpp:105
void setNonProportional()
Definition CGeoCanvas.cpp:499
CGeoCanvas(const CGeoCanvas &other)=delete
EPrvOriginType
Definition CGeoCanvas.hpp:48
void calculateLimits()
Definition CGeoCanvas.cpp:380
static void prvRemoveObjects(CGeoCanvas::SPrvCanvasView *view, IGraphics *graphics)
Definition CGeoCanvas.cpp:256
void setMargin(double percentByOne)
Definition CGeoCanvas.cpp:494
void update()
Definition CGeoCanvas.cpp:476
static bool prvHasDataTransformation(const CLimits *limits, CGeoCanvas::EPrvOriginType typeOrigin, double margin, bool isProportional, double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel, double *xOriginPixel, double *yOriginPixel, double *fX, double *fY, double *xOriginWorld, double *yOriginWorld)
Definition CGeoCanvas.cpp:111
void runDraw(IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp)
Definition CGeoCanvas.cpp:449
Definition CLimits.hpp:5
Definition CMatrix4x4.hpp:23
Definition IGraphics.hpp:20
Definition IRcpDraw.hpp:9
Definition CGeoCanvas.hpp:54
bool m_isProportional
Definition CGeoCanvas.hpp:65
bool operator==(const SPrvCanvasView &b) const
Definition CGeoCanvas.cpp:35
CLimits * m_limitsOpt
Definition CGeoCanvas.hpp:66
static void prvSetDefaultValues(SPrvCanvasView &canvasViewData)
Definition CGeoCanvas.cpp:43
~SPrvCanvasView()
Definition CGeoCanvas.cpp:17
void prvDelete()
Definition CGeoCanvas.cpp:61
double m_margin
Definition CGeoCanvas.hpp:67
SPrvCanvasView(const SPrvCanvasView &other)=delete
SPrvCanvasView & operator=(const SPrvCanvasView &other)=delete
void prvMoveValues(SPrvCanvasView &canvasViewData)
Definition CGeoCanvas.cpp:51
std::vector< IRcpDraw * > m_rcpsDraw
Definition CGeoCanvas.hpp:68
SPrvCanvasView()
Definition CGeoCanvas.cpp:12
Definition CGeoCanvas.hpp:77
bool operator==(const SPrvDynamicView &b) const
Definition CGeoCanvas.hpp:78
double m_yMaxPerc
Definition CGeoCanvas.hpp:91
double m_xMaxPerc
Definition CGeoCanvas.hpp:90
double m_yMinPerc
Definition CGeoCanvas.hpp:89
double m_xMinPerc
Definition CGeoCanvas.hpp:88
SPrvCanvasView m_view
Definition CGeoCanvas.hpp:87