Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
IGraphics.hpp
Go to the documentation of this file.
1#ifndef LIBS_GRAPHICS_IGRAPHICS_HPP_
2#define LIBS_GRAPHICS_IGRAPHICS_HPP_
3
4#include "math/structs.hpp"
7#include "ui/modifiers.hpp"
9
10#include <bits/stdint-uintn.h>
11#include <climits>
12#include <memory>
13#include <string>
14#include <vector>
15
16class CMatrix4x4;
17class IImageManager;
18
20{
21public:
22 enum class EDashedLineType
23 {
26 };
27
28 enum class EDetailLevel
29 {
30 Low,
31 Normal,
32 High,
34 };
35
36 enum class EDrawSolidType
37 {
38 Smooth,
39 Solid,
40 Wire
41 };
42
43 enum class ELight
44 {
45 General,
46 Light0
47 };
48
49 enum class ELightType
50 {
51 Ambient,
52 Diffuse,
54 };
55
56 enum class EMatrixModel
57 {
60 };
61
62 static constexpr uint32_t BlockNull = UINT_MAX;
63
64 virtual ~IGraphics() = default;
65
66 virtual void initDevice() = 0;
67 virtual void initLight() = 0;
68
69 virtual void clear() = 0;
70
71 virtual void defineMaterial(const iv::ui::graphics::Material *material, const bool &isChanged) = 0;
72 virtual bool isDefinedMaterial(const std::string &materialName) = 0;
73 virtual void pushMaterial() = 0;
74 virtual void setMaterial(const std::string &layerName) = 0;//[IV_THEME] ¿cambiar por std::string_view?
75 virtual void popMaterial() = 0;
76
77 virtual void setBackGroundColor(iv::types::color rgb) = 0;
78 virtual void setClearColor() = 0;
79 virtual void setColorRGB(iv::types::color rgb) = 0;
80 virtual void setColorARGB(iv::types::color argb) = 0;
81 virtual void setLineWidth(float width) = 0;
82 virtual void setAlpha(float alpha) = 0;
83 virtual void resetAlpha() = 0;
84 virtual void setOnTexture(bool enableTexture) = 0;
85
86 virtual std::shared_ptr<iv::ui::graphics::Image> loadImage(const iv::ui::resources::ImageResource &resource) = 0;
87
88 virtual void appendMatrix(const CMatrix4x4 &matrix) = 0;
89 virtual void setModelMatrix(IGraphics::EMatrixModel matrixModel) = 0;
90 virtual void popTransformation() = 0;
91 virtual void pushTransformation() = 0;
92 virtual void resetTransformation() = 0;
93
94 virtual void defineLight(IGraphics::ELight light, IGraphics::ELightType lightType, double rColor, double gColor,
95 double bColor) = 0;
96 virtual void positionLight(IGraphics::ELight light, double x, double y, double z) = 0;
97
98 virtual void viewport(int32_t x, int32_t y, uint64_t sizeX, uint64_t sizeY) = 0;
99
100 virtual void definePerspective(double fovy, double ratioXForY, double zNear, double zFar) = 0;
101 virtual void defineOrthogonal(double xOrg, double yOrg, double zOrg, double xMin, double yMin, double zMin,
102 double xMax, double yMax, double zMax) = 0;
103 virtual void positionCamera(double eyeX, double eyeY, double eyeZ, double pointReferenceX, double pointReferenceY,
104 double pointReferenceZ, double upX, double upY, double upZ) = 0;
105
106 virtual void rotation(double angleDegrees, double Ux, double Uy, double Uz) = 0;
107 virtual void scale(double sx, double sy, double sz) = 0;
108 virtual void setNormal(double Nx, double Ny, double Nz) = 0;
109 virtual void translation(double tx, double ty, double tz) = 0;
110
111 virtual void
112 drawContours(const std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point3d>>> &contours) = 0;
113 virtual void drawFanTriangles(const float *points, const float *normals, const float *textureOpt,
114 const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex,
115 uint64_t numVertex) = 0;
116 virtual void drawImage(double x, double y, double width, double height,
117 const iv::ui::resources::ImageResource &resource) = 0;
118 virtual void drawImageRawSize(double x, double y, const iv::ui::resources::ImageResource &resource) = 0;
119 virtual void drawImageWithColor(double x, double y, iv::types::color colorRgb, double width, double height,
120 const iv::ui::resources::ImageResource &resource) = 0;
121 virtual void drawLine(double x1, double y1, double z1, double x2, double y2, double z2) = 0;
122 virtual void drawLineWithStyle(double x1, double y1, double z1, double x2, double y2, double z2,
123 IGraphics::EDashedLineType dashedLineType) = 0;
124 virtual void drawArc(double radiusMark, iv::types::radian angleInitial, iv::types::radian angleFinal,
125 float thickness, uint64_t kPrvNumPoints) = 0;
126 virtual void drawPolyline(const float *vertex, uint64_t numVertex) = 0;
127 virtual void drawPolylineFilled(const float *vertex, uint64_t numVertex) = 0;
128 virtual void drawPolylinesWithColors(const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &points,
129 const std::vector<iv::math::geometry::Point3d> &rgb) = 0;
130 virtual void drawQuads(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3,
131 double z3, double x4, double y4, double z4) = 0;
132 virtual void drawRect(double x1, double y1, double x2, double y2) = 0;
133 virtual void drawRectFilled(double x1, double y1, double x2, double y2) = 0;
134 virtual void drawStripTriangles(const float *points, const float *normals, const float *textureOpt,
135 const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex,
136 uint64_t numVertex) = 0;
137
138 virtual void drawText(const std::string &text, double x, double y, double height, unsigned char justify) = 0;
139 virtual void drawTextWithDeviceHeight(const std::string &text, double x, double y, double height,
140 unsigned char justify) = 0;
141
142 virtual void drawTriangle(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3,
143 double z3) = 0;
144 virtual void drawTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt,
145 uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex) = 0;
146 virtual void drawUnitCone(IGraphics::EDetailLevel detailLevel) = 0;
147 virtual void drawUnitCube() = 0;
148 virtual void drawUnitCylinder(IGraphics::EDetailLevel detailLevel) = 0;
149 virtual void drawUnitDisk(IGraphics::EDetailLevel detailLevel) = 0;
150 virtual void drawUnitSphere(IGraphics::EDetailLevel detailLevel) = 0;
151
152 [[nodiscard]] virtual bool hasDrawPolylineFilled() const = 0;
153
154 virtual void setModeDraw(IGraphics::EDrawSolidType drawSolidType) = 0;
155
156 virtual uint32_t blockTextWithModifiers(const std::string &text, const iv::ui::TextModifier &textModifier,
157 double *widthText, double *heightTextOut) = 0;
158 virtual void drawBlockText(uint32_t idBlockText, double x, double y, double widthText, double heightText,
159 unsigned char justify) = 0;
160 virtual void endBlockText(uint32_t *idBlockText) = 0;
161
162 [[nodiscard]] virtual bool hasBlockText() const = 0;
163
164 virtual uint32_t beginBlock() = 0;
165 virtual void drawBlock(uint32_t idBlock) = 0;
166 virtual void endBlock(uint32_t idBlock) = 0;
167
168 [[nodiscard]] virtual bool hasManagerBlocks() const = 0;
169
170 virtual void removeBlock(uint32_t *idBlock) = 0;
171
172 virtual void beginStencilBuffer() = 0;
173 virtual void endStencilBuffer() = 0;
174 virtual void offStencilBuffer() = 0;
175 virtual void onStencilBuffer() = 0;
176
177 virtual void getCoordTextCornerLeftDown(const std::string &text, double x, double y, double heightCharacter,
178 unsigned char justify, double *xCornerLeftDown, double *yCornerLeftDown,
179 double *widthTextOpt, double *heightTextOpt) = 0;
180 virtual void getSizePixelToWorld(double sizePixelX, double sizePixelY, double *sizeWorldXOpt,
181 double *sizeWorldYOpt) = 0;
182 virtual void getSizeText(const std::string &text, double heightCharacter, double *widthText,
183 double *heightText) = 0;
184
185 virtual void setBlend(bool isEnable) = 0;
186 virtual void setTestDepth(bool isEnable) = 0;
187};
188
189#endif /* LIBS_GRAPHICS_IGRAPHICS_HPP_ */
static constexpr uint64_t kPrvNumPoints
Definition CDrawShapes.cpp:16
Definition CMatrix4x4.hpp:23
Definition IGraphics.hpp:20
virtual void onStencilBuffer()=0
virtual void initLight()=0
virtual void drawUnitCylinder(IGraphics::EDetailLevel detailLevel)=0
virtual void setModelMatrix(IGraphics::EMatrixModel matrixModel)=0
virtual void clear()=0
virtual void drawArc(double radiusMark, iv::types::radian angleInitial, iv::types::radian angleFinal, float thickness, uint64_t kPrvNumPoints)=0
virtual void getSizePixelToWorld(double sizePixelX, double sizePixelY, double *sizeWorldXOpt, double *sizeWorldYOpt)=0
virtual void drawBlockText(uint32_t idBlockText, double x, double y, double widthText, double heightText, unsigned char justify)=0
virtual void popTransformation()=0
virtual void definePerspective(double fovy, double ratioXForY, double zNear, double zFar)=0
virtual void pushTransformation()=0
virtual bool isDefinedMaterial(const std::string &materialName)=0
virtual void getSizeText(const std::string &text, double heightCharacter, double *widthText, double *heightText)=0
virtual void setColorRGB(iv::types::color rgb)=0
virtual void drawPolylineFilled(const float *vertex, uint64_t numVertex)=0
virtual void setMaterial(const std::string &layerName)=0
virtual void setTestDepth(bool isEnable)=0
virtual void drawImageRawSize(double x, double y, const iv::ui::resources::ImageResource &resource)=0
virtual void removeBlock(uint32_t *idBlock)=0
virtual void drawUnitCube()=0
virtual std::shared_ptr< iv::ui::graphics::Image > loadImage(const iv::ui::resources::ImageResource &resource)=0
virtual void viewport(int32_t x, int32_t y, uint64_t sizeX, uint64_t sizeY)=0
virtual void endBlock(uint32_t idBlock)=0
virtual void drawContours(const std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point3d > > > &contours)=0
virtual uint32_t beginBlock()=0
virtual void endBlockText(uint32_t *idBlockText)=0
EDetailLevel
Definition IGraphics.hpp:29
virtual void drawUnitSphere(IGraphics::EDetailLevel detailLevel)=0
ELight
Definition IGraphics.hpp:44
EDashedLineType
Definition IGraphics.hpp:23
virtual void setAlpha(float alpha)=0
virtual void setOnTexture(bool enableTexture)=0
virtual void setLineWidth(float width)=0
virtual void drawRect(double x1, double y1, double x2, double y2)=0
virtual void appendMatrix(const CMatrix4x4 &matrix)=0
virtual void drawQuads(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4)=0
virtual void popMaterial()=0
virtual void scale(double sx, double sy, double sz)=0
virtual void translation(double tx, double ty, double tz)=0
virtual void drawTextWithDeviceHeight(const std::string &text, double x, double y, double height, unsigned char justify)=0
virtual void defineOrthogonal(double xOrg, double yOrg, double zOrg, double xMin, double yMin, double zMin, double xMax, double yMax, double zMax)=0
virtual void setModeDraw(IGraphics::EDrawSolidType drawSolidType)=0
virtual void drawTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex)=0
virtual void drawImage(double x, double y, double width, double height, const iv::ui::resources::ImageResource &resource)=0
EMatrixModel
Definition IGraphics.hpp:57
virtual void drawStripTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex)=0
virtual void drawImageWithColor(double x, double y, iv::types::color colorRgb, double width, double height, const iv::ui::resources::ImageResource &resource)=0
ELightType
Definition IGraphics.hpp:50
static constexpr uint32_t BlockNull
Definition IGraphics.hpp:62
virtual bool hasBlockText() const =0
virtual void beginStencilBuffer()=0
virtual void resetTransformation()=0
virtual void setNormal(double Nx, double Ny, double Nz)=0
virtual bool hasDrawPolylineFilled() const =0
EDrawSolidType
Definition IGraphics.hpp:37
virtual void drawText(const std::string &text, double x, double y, double height, unsigned char justify)=0
virtual void pushMaterial()=0
virtual void drawPolyline(const float *vertex, uint64_t numVertex)=0
virtual ~IGraphics()=default
virtual void drawBlock(uint32_t idBlock)=0
virtual void drawUnitCone(IGraphics::EDetailLevel detailLevel)=0
virtual void setBackGroundColor(iv::types::color rgb)=0
virtual void drawFanTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex)=0
virtual uint32_t blockTextWithModifiers(const std::string &text, const iv::ui::TextModifier &textModifier, double *widthText, double *heightTextOut)=0
virtual void endStencilBuffer()=0
virtual void offStencilBuffer()=0
virtual void drawTriangle(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)=0
virtual void setClearColor()=0
virtual void defineLight(IGraphics::ELight light, IGraphics::ELightType lightType, double rColor, double gColor, double bColor)=0
virtual void drawPolylinesWithColors(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &points, const std::vector< iv::math::geometry::Point3d > &rgb)=0
virtual void setBlend(bool isEnable)=0
virtual void drawLineWithStyle(double x1, double y1, double z1, double x2, double y2, double z2, IGraphics::EDashedLineType dashedLineType)=0
virtual void drawLine(double x1, double y1, double z1, double x2, double y2, double z2)=0
virtual bool hasManagerBlocks() const =0
virtual void positionLight(IGraphics::ELight light, double x, double y, double z)=0
virtual void resetAlpha()=0
virtual void defineMaterial(const iv::ui::graphics::Material *material, const bool &isChanged)=0
virtual void setColorARGB(iv::types::color argb)=0
virtual void initDevice()=0
virtual void drawRectFilled(double x1, double y1, double x2, double y2)=0
virtual void getCoordTextCornerLeftDown(const std::string &text, double x, double y, double heightCharacter, unsigned char justify, double *xCornerLeftDown, double *yCornerLeftDown, double *widthTextOpt, double *heightTextOpt)=0
virtual void drawUnitDisk(IGraphics::EDetailLevel detailLevel)=0
virtual void rotation(double angleDegrees, double Ux, double Uy, double Uz)=0
virtual void positionCamera(double eyeX, double eyeY, double eyeZ, double pointReferenceX, double pointReferenceY, double pointReferenceZ, double upX, double upY, double upZ)=0
Definition IImageManager.hpp:8
Definition Material.hpp:49
Definition ImageResource.hpp:15
double radian
Definition types.hpp:19
uint32_t color
Definition types.hpp:12
Definition modifiers.hpp:15