Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CGeoGooCanvas.hpp
Go to the documentation of this file.
1#ifndef LIBS_GRAPHICS_CGEOGOOCANVAS_HPP_
2#define LIBS_GRAPHICS_CGEOGOOCANVAS_HPP_
3
4#include <cstdlib>
5#include <map>
6#include <memory>
7#include <set>
8
10
12
13class CLimits;
14class CMatrix4x4;
15class IGraphics;
16
17// TODO: aag. Estudiar si se debería fusionar con CGooCanvas en una sola clase
19{
20public:
22 ~CGeoGooCanvas() = default;
23 CGeoGooCanvas(const CGeoGooCanvas &other) = delete;
24 CGeoGooCanvas(CGeoGooCanvas &&other) = default;
25 CGeoGooCanvas &operator=(const CGeoGooCanvas &other) = delete;
27
28 bool operator==(const CGeoGooCanvas &b) const
29 {
31 }
32
33 void addDraw(std::unique_ptr<AbstractRcpDrawGooCanvas> rcpDraw);
34 // void addDynamicView(IRcpDraw *rcpDraw, double xMinPerc, double yMinPerc,
35 // double xMaxPerc, double yMaxPerc, bool isProportional);
36 // void calculateLimits();
37 // bool getPixelToWorld(double xLocalInCenterPixel, double yLocalInCenterPixel,
38 // double sizeXPixel, double sizeYPixel, double *xWorld, double *yWorld);
39 // CMatrix4x4 matrixTransformation(double xMinPixel, double yMinPixel, double xMaxPixel,
40 // double yMaxPixel);
41 // void removeObjects(IGraphics *graphics);
42 void runDraw(IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp);
43 // void update();
44 //
45 // void setMargin(double percentegePerOne);
46 // void setNonProportional();
47 // void setOriginZero();
48 //
49 // bool hasDataTransformation(double xMinPixel, double yMinPixel, double xMaxPixel,
50 // double yMaxPixel, double *xCenterPixel, double *yCenterPixel, double *fx,
51 // double *fy, double *xCenterWorld, double *yCenterWorld);
52
54
55private:
56 enum class EPrvOriginType
57 {
58 Center,
59 Zero
60 };
61
63 {
64 public:
67 SPrvCanvasView(const SPrvCanvasView &other) = delete;
68 SPrvCanvasView(SPrvCanvasView &&other) noexcept;
69 SPrvCanvasView &operator=(const SPrvCanvasView &other) = delete;
70 SPrvCanvasView &operator=(SPrvCanvasView &&other) noexcept;
71
72 bool operator==(const SPrvCanvasView &b) const;
73
76 double m_margin {};
77 std::map<AbstractCanvasItem::TId, std::unique_ptr<AbstractRcpDrawGooCanvas>> m_mapIdRcpDraw;
78
79 private:
80 static void prvSetDefaultValues(SPrvCanvasView &canvasViewData);
81 void prvMoveValues(SPrvCanvasView &canvasViewData);
82 void prvDelete();
83 };
84
86 {
87 bool operator==(const SPrvDynamicView &b) const
88 {
89 auto epsilon = static_cast<float>(0.000001);
90
91 return (m_view == b.m_view) &&
92 static_cast<float>(abs(static_cast<int>(m_xMinPerc - b.m_xMinPerc))) < epsilon &&
93 static_cast<float>(abs(static_cast<int>(m_yMinPerc - b.m_yMinPerc))) < epsilon &&
94 static_cast<float>(abs(static_cast<int>(m_xMaxPerc - b.m_xMaxPerc))) < epsilon &&
95 static_cast<float>(abs(static_cast<int>(m_yMaxPerc - b.m_yMaxPerc))) < epsilon;
96 }
97
99 double m_xMinPerc;
103 };
104
105 void prvRunDraw(CGeoGooCanvas::EPrvOriginType typeOrigin, double xMinComp, double yMinComp, double xMaxComp,
106 double yMaxComp, IGraphics *graphics, CGeoGooCanvas::SPrvCanvasView *view);
107 void prvDrawScene(bool isProportional, double margin, CGeoGooCanvas::EPrvOriginType typeOrigin,
108 std::map<AbstractCanvasItem::TId, std::unique_ptr<AbstractRcpDrawGooCanvas>> &mapIdRcpDraw,
109 IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp,
110 CLimits *limits);
111 // bool prvHasDataTransformation(const CLimits *limits,
112 // CGeoGooCanvas::EPrvOriginType typeOrigin, double margin, bool isProportional,
113 // double xMinPixel, double yMinPixel, double xMaxPixel, double yMaxPixel,
114 // double *xOriginPixel, double *yOriginPixel, double *fX, double *fY,
115 // double *xOriginWorld, double *yOriginWorld);
116 // void prvRemoveObjects(CGeoGooCanvas::SPrvCanvasView *view, IGraphics *graphics);
117
120 std::vector<SPrvDynamicView> m_dynamicViews;
121 std::set<AbstractCanvasItem::TId> m_rcpsDrawToDeleteOnNextRedraw;
122};
123
124#endif /* LIBS_GRAPHICS_CGEOGOOCANVAS_HPP_ */
uint32_t TId
Definition AbstractCanvasItem.hpp:47
Definition AbstractRcpDrawGooCanvas.hpp:15
Definition CGeoGooCanvas.hpp:19
void prvRunDraw(CGeoGooCanvas::EPrvOriginType typeOrigin, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp, IGraphics *graphics, CGeoGooCanvas::SPrvCanvasView *view)
Definition CGeoGooCanvas.cpp:243
~CGeoGooCanvas()=default
void addDraw(std::unique_ptr< AbstractRcpDrawGooCanvas > rcpDraw)
Definition CGeoGooCanvas.cpp:347
CGeoGooCanvas()
Definition CGeoGooCanvas.cpp:338
std::vector< SPrvDynamicView > m_dynamicViews
Definition CGeoGooCanvas.hpp:120
CGeoGooCanvas(const CGeoGooCanvas &other)=delete
EPrvOriginType
Definition CGeoGooCanvas.hpp:57
void eraseOnNextRedraw(AbstractCanvasItem::TId id)
Definition CGeoGooCanvas.cpp:530
CGeoGooCanvas & operator=(CGeoGooCanvas &&other)=default
void runDraw(IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp)
Definition CGeoGooCanvas.cpp:450
CGeoGooCanvas::EPrvOriginType m_typeOrigin
Definition CGeoGooCanvas.hpp:118
bool operator==(const CGeoGooCanvas &b) const
Definition CGeoGooCanvas.hpp:28
SPrvCanvasView m_mainView
Definition CGeoGooCanvas.hpp:119
std::set< AbstractCanvasItem::TId > m_rcpsDrawToDeleteOnNextRedraw
Definition CGeoGooCanvas.hpp:121
void prvDrawScene(bool isProportional, double margin, CGeoGooCanvas::EPrvOriginType typeOrigin, std::map< AbstractCanvasItem::TId, std::unique_ptr< AbstractRcpDrawGooCanvas > > &mapIdRcpDraw, IGraphics *graphics, double xMinComp, double yMinComp, double xMaxComp, double yMaxComp, CLimits *limits)
Definition CGeoGooCanvas.cpp:213
CGeoGooCanvas & operator=(const CGeoGooCanvas &other)=delete
CGeoGooCanvas(CGeoGooCanvas &&other)=default
Definition CLimits.hpp:5
Definition CMatrix4x4.hpp:23
Definition IGraphics.hpp:20
Definition CGeoGooCanvas.hpp:63
bool operator==(const SPrvCanvasView &b) const
Definition CGeoGooCanvas.cpp:33
SPrvCanvasView & operator=(const SPrvCanvasView &other)=delete
~SPrvCanvasView()
Definition CGeoGooCanvas.cpp:15
void prvMoveValues(SPrvCanvasView &canvasViewData)
Definition CGeoGooCanvas.cpp:49
std::map< AbstractCanvasItem::TId, std::unique_ptr< AbstractRcpDrawGooCanvas > > m_mapIdRcpDraw
Definition CGeoGooCanvas.hpp:77
void prvDelete()
Definition CGeoGooCanvas.cpp:59
SPrvCanvasView(const SPrvCanvasView &other)=delete
CLimits * m_limitsOpt
Definition CGeoGooCanvas.hpp:75
static void prvSetDefaultValues(SPrvCanvasView &canvasViewData)
Definition CGeoGooCanvas.cpp:41
SPrvCanvasView()
Definition CGeoGooCanvas.cpp:10
double m_margin
Definition CGeoGooCanvas.hpp:76
bool m_isProportional
Definition CGeoGooCanvas.hpp:74
Definition CGeoGooCanvas.hpp:86
SPrvCanvasView m_view
Definition CGeoGooCanvas.hpp:98
bool operator==(const SPrvDynamicView &b) const
Definition CGeoGooCanvas.hpp:87
double m_xMinPerc
Definition CGeoGooCanvas.hpp:99
double m_yMaxPerc
Definition CGeoGooCanvas.hpp:102
double m_xMaxPerc
Definition CGeoGooCanvas.hpp:101
double m_yMinPerc
Definition CGeoGooCanvas.hpp:100