Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CLayoutBoxGraphics.hpp
Go to the documentation of this file.
1#ifndef LIBS_GRAPHICSCOMP_CLAYOUTBOXGRAPHICS_HPP_
2#define LIBS_GRAPHICSCOMP_CLAYOUTBOXGRAPHICS_HPP_
3
4#include "math/structs.hpp"
6
7#include <cstdint>
8#include <optional>
9#include <vector>
10
11class AbstractLayout;
12
14{
15public:
16 static CLayoutBoxGraphics *createHorizontalLayout(bool hasDestroyComponents,
17 std::optional<AbstractLayout *> layout = std::nullopt);
18 static CLayoutBoxGraphics *createVerticalLayout(bool hasDestroyComponents,
19 std::optional<AbstractLayout *> layout = std::nullopt);
20
21 CLayoutBoxGraphics(const CLayoutBoxGraphics &layoutBoxGraphics) = delete;
22 CLayoutBoxGraphics(CLayoutBoxGraphics &&layoutBoxGraphics) = delete;
23 ~CLayoutBoxGraphics() override;
24
25 CLayoutBoxGraphics &operator=(const CLayoutBoxGraphics &layoutBoxGraphics) = delete;
26 CLayoutBoxGraphics &operator=(CLayoutBoxGraphics &&layoutBoxGraphics) = delete;
27 bool operator==(const CLayoutBoxGraphics &b) const;
28 bool operator!=(const CLayoutBoxGraphics &b) const;
29
30 void addEnd(AbstractComponentGraphics *component, bool isExpand, bool isFill, iv::types::padding padding);
31 void addStart(AbstractComponentGraphics *component, bool isExpand, bool isFill, iv::types::padding padding);
32 bool sizeChanged() override;
33 void update(IGraphics *graphics, CLibraryImages *libraryImage) override;
34
35private:
36 enum class EPrvBoxType
37 {
40 };
41
43 {
45 {
46 m_compRef = nullptr;
47 m_isExpand = false;
48 m_isFill = false;
49 m_padding = 0;
50 }
51
53 {
54 m_compRef = other.m_compRef;
55 m_isExpand = other.m_isExpand;
56 m_isFill = other.m_isFill;
57 m_padding = other.m_padding;
58 }
59
62
64
66
67 bool operator==(const SPrvComponentLayout &b) const
68 {
69 return (m_compRef == b.m_compRef) && (m_isExpand == b.m_isExpand) && (m_isFill == b.m_isFill) &&
70 (m_padding == b.m_padding);
71 }
72
73 bool operator!=(const SPrvComponentLayout &b) const
74 {
75 return (m_compRef != b.m_compRef) || (m_isExpand != b.m_isExpand) || (m_isFill != b.m_isFill) ||
76 (m_padding != b.m_padding);
77 }
78
83 };
84
86
87 //TODO: revisar refactorizacion de los métodos privados para añadir prefijo prv
88 void calculatePosGlobal(double xFather, double yFather) override;
89 void calculateSizeMin(IGraphics *graphics, const CTheme *theme, CLibraryImages *libraryImage, double *sizeXComp,
90 double *sizeYComp) override;
91 void closing() override;
92 void distribute(IGraphics *graphics, double sizeXComp, double sizeYComp) override;
93 void drawComponent(IGraphics *graphics, const CTheme *theme) override;
94 void handleEvent(CEventGraphics *event, double xOrg, double yOrg) override;
95 void nextFrameChildren() override;
96 void removeObjectDraw(IGraphics *graphics) override;
97
98 bool hasLongClick() const override;
99
100 static void prvAddComponent(std::vector<SPrvComponentLayout> &components, AbstractComponentGraphics *component,
101 bool isExpand, bool isFill, iv::types::padding padding);
102 static void prvCalculateComponent(IGraphics *graphics, const CTheme *theme, CLibraryImages *libraryImage,
103 std::vector<SPrvComponentLayout> &childrens);
104 static void prvCalculatePosGlobalComponent(std::vector<SPrvComponentLayout> &childrens, double xFather,
105 double yFather);
106 static std::vector<iv::math::geometry::Point2d>
108 const std::vector<SPrvComponentLayout> &components, double sizeXArea, double sizeYArea);
110 const std::vector<SPrvComponentLayout> &childrens, double *sizeXLayout,
111 double *sizeYLayout);
112 static void prvClosingComponent(std::vector<SPrvComponentLayout> &childrens);
115 const std::vector<iv::math::geometry::Point2d> &sizeCells,
116 std::vector<SPrvComponentLayout> &components, bool isStart, double xOrg,
117 double yOrg, class IGraphics *graphics);
118 static void prvDrawComponents(const std::vector<SPrvComponentLayout> &components, IGraphics *graphics,
119 const CTheme *theme);
120 static void prvGetSizeComp(const SPrvComponentLayout &comp, double *sizeXOpt, double *sizeYOpt);
121 static void prvHandleComponent(std::vector<SPrvComponentLayout> childrens, CEventGraphics *event, double xOrg,
122 double yOrg);
123 static void prvMovePoint(CLayoutBoxGraphics::EPrvBoxType typeBox, double dx, double dy, double *xOrg, double *yOrg);
124 static void prvNextFrameComponent(std::vector<SPrvComponentLayout> &childrens);
125 static uint64_t prvNumSizeToDistribute(std::vector<SPrvComponentLayout> &component);
126 static void prvRecalculateCells(CLayoutBoxGraphics::EPrvBoxType typeBox, double sizeX, double sizeY,
127 std::vector<SPrvComponentLayout> &start,
128 std::vector<iv::math::geometry::Point2d> &cellsStart,
129 std::vector<SPrvComponentLayout> &end,
130 std::vector<iv::math::geometry::Point2d> &cellsEnd);
131 static void prvRemoveObjectDraw(std::vector<SPrvComponentLayout> &components, IGraphics *graphics);
132 static void prvSizeCells(CLayoutBoxGraphics::EPrvBoxType typeBox, std::vector<SPrvComponentLayout> &components,
133 std::vector<iv::math::geometry::Point2d> &cells, double sizeTotalComponent, double rest);
134 [[nodiscard]] static bool prvSizeChangedComponents(const std::vector<SPrvComponentLayout> &components);
136 const std::vector<iv::math::geometry::Point2d> &cells, double *sizeTotal);
137 static void prvUpdateComponent(std::vector<SPrvComponentLayout> &childrens, IGraphics *graphics,
138 CLibraryImages *libraryImage);
139
142 std::optional<AbstractLayout *> m_layoutComponent;
143
144 std::vector<SPrvComponentLayout> m_start;
145 std::vector<SPrvComponentLayout> m_end;
146};
147
148#endif /* LIBS_GRAPHICSCOMP_CLAYOUTBOXGRAPHICS_HPP_ */
Definition AbstractComponentGraphics.hpp:21
Definition AbstractLayout.hpp:11
Definition CEventGraphics.hpp:9
Definition CLayoutBoxGraphics.hpp:14
void drawComponent(IGraphics *graphics, const CTheme *theme) override
Definition CLayoutBoxGraphics.cpp:166
void calculatePosGlobal(double xFather, double yFather) override
Definition CLayoutBoxGraphics.cpp:96
static void prvRemoveObjectDraw(std::vector< SPrvComponentLayout > &components, IGraphics *graphics)
Definition CLayoutBoxGraphics.cpp:552
~CLayoutBoxGraphics() override
Definition CLayoutBoxGraphics.cpp:35
std::optional< AbstractLayout * > m_layoutComponent
Definition CLayoutBoxGraphics.hpp:142
bool operator!=(const CLayoutBoxGraphics &b) const
Definition CLayoutBoxGraphics.cpp:49
static void prvRecalculateCells(CLayoutBoxGraphics::EPrvBoxType typeBox, double sizeX, double sizeY, std::vector< SPrvComponentLayout > &start, std::vector< iv::math::geometry::Point2d > &cellsStart, std::vector< SPrvComponentLayout > &end, std::vector< iv::math::geometry::Point2d > &cellsEnd)
Definition CLayoutBoxGraphics.cpp:481
void addEnd(AbstractComponentGraphics *component, bool isExpand, bool isFill, iv::types::padding padding)
Definition CLayoutBoxGraphics.cpp:55
static void prvAddComponent(std::vector< SPrvComponentLayout > &components, AbstractComponentGraphics *component, bool isExpand, bool isFill, iv::types::padding padding)
Definition CLayoutBoxGraphics.cpp:218
bool operator==(const CLayoutBoxGraphics &b) const
Definition CLayoutBoxGraphics.cpp:43
void update(IGraphics *graphics, CLibraryImages *libraryImage) override
Definition CLayoutBoxGraphics.cpp:82
void closing() override
Definition CLayoutBoxGraphics.cpp:124
static void prvCalculateSizeLayout(CLayoutBoxGraphics::EPrvBoxType typeBox, const std::vector< SPrvComponentLayout > &childrens, double *sizeXLayout, double *sizeYLayout)
Definition CLayoutBoxGraphics.cpp:295
bool m_hasDestroyComponents
Definition CLayoutBoxGraphics.hpp:141
static void prvNextFrameComponent(std::vector< SPrvComponentLayout > &childrens)
Definition CLayoutBoxGraphics.cpp:456
static void prvCalculateComponent(IGraphics *graphics, const CTheme *theme, CLibraryImages *libraryImage, std::vector< SPrvComponentLayout > &childrens)
Definition CLayoutBoxGraphics.cpp:237
void removeObjectDraw(IGraphics *graphics) override
Definition CLayoutBoxGraphics.cpp:202
void handleEvent(CEventGraphics *event, double xOrg, double yOrg) override
Definition CLayoutBoxGraphics.cpp:172
static void prvMovePoint(CLayoutBoxGraphics::EPrvBoxType typeBox, double dx, double dy, double *xOrg, double *yOrg)
Definition CLayoutBoxGraphics.cpp:434
std::vector< SPrvComponentLayout > m_start
Definition CLayoutBoxGraphics.hpp:144
static CLayoutBoxGraphics * createVerticalLayout(bool hasDestroyComponents, std::optional< AbstractLayout * > layout=std::nullopt)
Definition CLayoutBoxGraphics.cpp:22
CLayoutBoxGraphics & operator=(CLayoutBoxGraphics &&layoutBoxGraphics)=delete
void prvDestroyComponents()
Definition CLayoutBoxGraphics.cpp:337
static void prvClosingComponent(std::vector< SPrvComponentLayout > &childrens)
Definition CLayoutBoxGraphics.cpp:329
bool hasLongClick() const override
Definition CLayoutBoxGraphics.cpp:208
void nextFrameChildren() override
Definition CLayoutBoxGraphics.cpp:196
static void prvDistributeComponent(CLayoutBoxGraphics::EPrvBoxType typeBox, const std::vector< iv::math::geometry::Point2d > &sizeCells, std::vector< SPrvComponentLayout > &components, bool isStart, double xOrg, double yOrg, class IGraphics *graphics)
Definition CLayoutBoxGraphics.cpp:359
static void prvDrawComponents(const std::vector< SPrvComponentLayout > &components, IGraphics *graphics, const CTheme *theme)
Definition CLayoutBoxGraphics.cpp:398
bool sizeChanged() override
Definition CLayoutBoxGraphics.cpp:67
static uint64_t prvNumSizeToDistribute(std::vector< SPrvComponentLayout > &component)
Definition CLayoutBoxGraphics.cpp:464
static void prvHandleComponent(std::vector< SPrvComponentLayout > childrens, CEventGraphics *event, double xOrg, double yOrg)
Definition CLayoutBoxGraphics.cpp:425
static std::vector< iv::math::geometry::Point2d > prvCalculateSizeComponents(CLayoutBoxGraphics::EPrvBoxType typeBox, const std::vector< SPrvComponentLayout > &components, double sizeXArea, double sizeYArea)
Definition CLayoutBoxGraphics.cpp:256
void addStart(AbstractComponentGraphics *component, bool isExpand, bool isFill, iv::types::padding padding)
Definition CLayoutBoxGraphics.cpp:61
CLayoutBoxGraphics & operator=(const CLayoutBoxGraphics &layoutBoxGraphics)=delete
static CLayoutBoxGraphics * createHorizontalLayout(bool hasDestroyComponents, std::optional< AbstractLayout * > layout=std::nullopt)
Definition CLayoutBoxGraphics.cpp:9
static void prvCalculatePosGlobalComponent(std::vector< SPrvComponentLayout > &childrens, double xFather, double yFather)
Definition CLayoutBoxGraphics.cpp:246
static void prvUpdateComponent(std::vector< SPrvComponentLayout > &childrens, IGraphics *graphics, CLibraryImages *libraryImage)
Definition CLayoutBoxGraphics.cpp:647
static bool prvSizeChangedComponents(const std::vector< SPrvComponentLayout > &components)
Definition CLayoutBoxGraphics.cpp:603
void distribute(IGraphics *graphics, double sizeXComp, double sizeYComp) override
Definition CLayoutBoxGraphics.cpp:130
static void prvGetSizeComp(const SPrvComponentLayout &comp, double *sizeXOpt, double *sizeYOpt)
Definition CLayoutBoxGraphics.cpp:407
CLayoutBoxGraphics::EPrvBoxType m_boxType
Definition CLayoutBoxGraphics.hpp:140
void calculateSizeMin(IGraphics *graphics, const CTheme *theme, CLibraryImages *libraryImage, double *sizeXComp, double *sizeYComp) override
Definition CLayoutBoxGraphics.cpp:102
static void prvSizeCells(CLayoutBoxGraphics::EPrvBoxType typeBox, std::vector< SPrvComponentLayout > &components, std::vector< iv::math::geometry::Point2d > &cells, double sizeTotalComponent, double rest)
Definition CLayoutBoxGraphics.cpp:560
std::vector< SPrvComponentLayout > m_end
Definition CLayoutBoxGraphics.hpp:145
CLayoutBoxGraphics(const CLayoutBoxGraphics &layoutBoxGraphics)=delete
CLayoutBoxGraphics()
Definition CLayoutBoxGraphics.cpp:88
EPrvBoxType
Definition CLayoutBoxGraphics.hpp:37
static void prvTotalSizeComponents(CLayoutBoxGraphics::EPrvBoxType typeBox, const std::vector< iv::math::geometry::Point2d > &cells, double *sizeTotal)
Definition CLayoutBoxGraphics.cpp:616
CLayoutBoxGraphics(CLayoutBoxGraphics &&layoutBoxGraphics)=delete
Definition CLibraryImages.hpp:11
Definition CTheme.hpp:10
Definition IGraphics.hpp:20
double padding
Definition types.hpp:16
Definition CLayoutBoxGraphics.hpp:43
SPrvComponentLayout()
Definition CLayoutBoxGraphics.hpp:44
bool m_isExpand
Definition CLayoutBoxGraphics.hpp:80
bool operator==(const SPrvComponentLayout &b) const
Definition CLayoutBoxGraphics.hpp:67
SPrvComponentLayout & operator=(SPrvComponentLayout &&other)=delete
bool m_isFill
Definition CLayoutBoxGraphics.hpp:81
iv::types::padding m_padding
Definition CLayoutBoxGraphics.hpp:82
SPrvComponentLayout & operator=(const SPrvComponentLayout &other)=default
bool operator!=(const SPrvComponentLayout &b) const
Definition CLayoutBoxGraphics.hpp:73
SPrvComponentLayout(const SPrvComponentLayout &other)
Definition CLayoutBoxGraphics.hpp:52
AbstractComponentGraphics * m_compRef
Definition CLayoutBoxGraphics.hpp:79
SPrvComponentLayout(SPrvComponentLayout &&other)=delete