1#ifndef LIBS_CAIRO_CGRAPHICSCAIRO_HPP_
2#define LIBS_CAIRO_CGRAPHICSCAIRO_HPP_
7#include <cairo/cairo.h>
9#include <pango/pango-layout.h>
10#include <unordered_map>
34 float epsilon =
static_cast<float>(0.000001);
36 void beginDraw(
double sizeX,
double sizeY);
60 cairo_t *cairoOpt, cairo_surface_t *cairoSurfaceOpt);
66 void clear()
override;
72 void setMaterial(
const std::string &materialName)
override;
91 double bColor)
override;
93 void viewport(int32_t x, int32_t y, uint64_t sizeX, uint64_t sizeY)
override;
94 void definePerspective(
double fovY,
double ratioXForY,
double zNear,
double zFar)
override;
95 void defineOrthogonal(
double xOrg,
double yOrg,
double zOrg,
double xMin,
double yMin,
double zMin,
double xMax,
96 double yMax,
double zMax)
override;
97 void positionCamera(
double eyeX,
double eyeY,
double eyeZ,
double pointReferenceX,
double pointReferenceY,
98 double pointReferenceZ,
double upX,
double upY,
double upZ)
override;
99 void rotation(
double angleDegrees,
double Ux,
double Uy,
double Uz)
override;
100 void scale(
double sx,
double sy,
double sz)
override;
101 void setNormal(
double Nx,
double Ny,
double Nz)
override;
102 void translation(
double tx,
double ty,
double tz)
override;
103 void drawContours(
const std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point3d>>> &contours)
override;
105 void drawFanTriangles(
const float *points,
const float *normals,
const float *textureOpt,
const float *rgbaOpt,
106 uint64_t numPoints,
const uint32_t *indVertex, uint64_t numVertex)
override;
107 void drawImage(
double x,
double y,
double width,
double height,
112 void drawLine(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2)
override;
113 void drawLineWithStyle(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
117 void drawPolyline(
const float *vertex, uint64_t numVertex)
override;
120 const std::vector<iv::math::geometry::Point3d> &rgb)
override;
121 void drawQuads(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
double z3,
122 double x4,
double y4,
double z4)
override;
123 void drawRect(
double x1,
double y1,
double x2,
double y2)
override;
124 void drawRectFilled(
double x1,
double y1,
double x2,
double y2)
override;
125 void drawStripTriangles(
const float *points,
const float *normals,
const float *textureOpt,
const float *rgbaOpt,
126 uint64_t numPoints,
const uint32_t *indVertex, uint64_t numVertex)
override;
127 void drawText(
const std::string &text,
double x,
double y,
double height,
unsigned char justify)
override;
129 unsigned char justify)
override;
130 void drawTriangle(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double x3,
double y3,
132 void drawTriangles(
const float *points,
const float *normals,
const float *textureOpt,
const float *rgbaOpt,
133 uint64_t numPoints,
const uint32_t *indVertex, uint64_t numVertex)
override;
144 double *widthText,
double *heightTextOut)
override;
145 void drawBlockText(uint32_t idBlockText,
double x,
double y,
double widthText,
double heightText,
146 unsigned char justify)
override;
150 void drawBlock(uint32_t idBlock)
override;
151 void endBlock(uint32_t idBlock)
override;
161 unsigned char justify,
double *xCornerLeftDown,
double *yCornerLeftDown,
162 double *widthTextOpt,
double *heightTextOpt)
override;
164 double *sizeWorldYOpt)
override;
165 void getSizeText(
const std::string &text,
double heightCharacter,
double *widthText,
double *heightText)
override;
167 void setBlend(
bool isEnable)
override;
static constexpr uint64_t kPrvNumPoints
Definition CDrawShapes.cpp:16
Definition CFontManagerCairo.hpp:12
Definition CGraphicsCairo.hpp:16
void drawFanTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex) override
Definition CGraphicsCairo.cpp:1015
void setBackGroundColor(iv::types::color rgb) override
Definition CGraphicsCairo.cpp:1511
void positionCamera(double eyeX, double eyeY, double eyeZ, double pointReferenceX, double pointReferenceY, double pointReferenceZ, double upX, double upY, double upZ) override
Definition CGraphicsCairo.cpp:973
void resetTransformation() override
Definition CGraphicsCairo.cpp:940
static CGraphicsCairo * createImageData(uint64_t sizeX, uint64_t sizeY)
Definition CGraphicsCairo.cpp:541
void initLight() override
Definition CGraphicsCairo.cpp:752
void drawText(const std::string &text, double x, double y, double height, unsigned char justify) override
Definition CGraphicsCairo.cpp:1208
void setClearColor() override
Definition CGraphicsCairo.cpp:1515
static CGraphicsCairo * createImageForMotion()
Definition CGraphicsCairo.cpp:557
bool operator==(const CGraphicsCairo &b) const
Definition CGraphicsCairo.cpp:1499
void endStencilBuffer() override
Definition CGraphicsCairo.cpp:1416
double m_bBackground
Definition CGraphicsCairo.hpp:176
void setModelMatrix(IGraphics::EMatrixModel matrixModel) override
Definition CGraphicsCairo.hpp:83
void drawUnitCone(IGraphics::EDetailLevel detailLevel) override
Definition CGraphicsCairo.cpp:1262
void getSizeText(const std::string &text, double heightCharacter, double *widthText, double *heightText) override
Definition CGraphicsCairo.cpp:1481
std::vector< SPrvCairoLayer > m_layers
Definition CGraphicsCairo.hpp:178
void endBlockText(uint32_t *idBlockText) override
Definition CGraphicsCairo.cpp:1346
CGraphicsCairo & operator=(CGraphicsCairo &&other)=delete
void setLineWidth(float width) override
Definition CGraphicsCairo.cpp:876
bool m_isUpdated
Definition CGraphicsCairo.hpp:191
double m_rBackground
Definition CGraphicsCairo.hpp:174
void drawImage(double x, double y, double width, double height, const iv::ui::resources::ImageResource &resource) override
Definition CGraphicsCairo.cpp:1032
double m_alpha
Definition CGraphicsCairo.hpp:180
void setColorARGB(iv::types::color argb) override
Definition CGraphicsCairo.cpp:858
void offStencilBuffer() override
Definition CGraphicsCairo.cpp:1423
void setAlpha(float alpha) override
Definition CGraphicsCairo.cpp:883
void drawPolylineFilled(const float *vertex, uint64_t numVertex) override
Definition CGraphicsCairo.cpp:1119
bool hasDrawPolylineFilled() const override
Definition CGraphicsCairo.cpp:1287
void beginDraw(double sizeX, double sizeY)
Definition CGraphicsCairo.cpp:600
CGraphicsCairo & operator=(const CGraphicsCairo &other)=delete
bool hasManagerBlocks() const override
Definition CGraphicsCairo.cpp:1399
cairo_t * m_cairoOpt
Definition CGraphicsCairo.hpp:186
void pushTransformation() override
Definition CGraphicsCairo.cpp:934
cairo_surface_t * m_cairoSurfaceOpt
Definition CGraphicsCairo.hpp:192
float epsilon
Definition CGraphicsCairo.hpp:34
void setTestDepth(bool isEnable) override
Definition CGraphicsCairo.cpp:1494
void viewport(int32_t x, int32_t y, uint64_t sizeX, uint64_t sizeY) override
Definition CGraphicsCairo.cpp:957
std::shared_ptr< iv::ui::graphics::Image > loadImage(const iv::ui::resources::ImageResource &resource) override
Definition CGraphicsCairo.cpp:917
void beginStencilBuffer() override
Definition CGraphicsCairo.cpp:1409
void getSizePixelToWorld(double sizePixelX, double sizePixelY, double *sizeWorldXOpt, double *sizeWorldYOpt) override
Definition CGraphicsCairo.cpp:1465
void drawPolyline(const float *vertex, uint64_t numVertex) override
Definition CGraphicsCairo.cpp:1113
void update()
Definition CGraphicsCairo.cpp:665
uint32_t blockTextWithModifiers(const std::string &text, const iv::ui::TextModifier &textModifier, double *widthText, double *heightTextOut) override
Definition CGraphicsCairo.cpp:1302
void initDevice() override
Definition CGraphicsCairo.cpp:744
void pushMaterial() override
Definition CGraphicsCairo.cpp:808
void removeBlock(uint32_t *idBlock) override
Definition CGraphicsCairo.cpp:1404
void setNormal(double Nx, double Ny, double Nz) override
Definition CGraphicsCairo.cpp:990
bool isDefinedMaterial(const std::string &materialName) override
Definition CGraphicsCairo.cpp:791
void drawImageWithColor(double x, double y, iv::types::color colorRGB, double width, double height, const iv::ui::resources::ImageResource &resourceName) override
Definition CGraphicsCairo.cpp:1049
void scale(double sx, double sy, double sz) override
Definition CGraphicsCairo.cpp:984
void definePerspective(double fovY, double ratioXForY, double zNear, double zFar) override
Definition CGraphicsCairo.cpp:962
void drawArc(double radiusMark, iv::types::radian angleInitial, iv::types::radian angleFinal, float thickness, uint64_t kPrvNumPoints) override
Definition CGraphicsCairo.cpp:1099
void defineOrthogonal(double xOrg, double yOrg, double zOrg, double xMin, double yMin, double zMin, double xMax, double yMax, double zMax) override
Definition CGraphicsCairo.cpp:967
void drawTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex) override
Definition CGraphicsCairo.cpp:1245
void drawTextWithDeviceHeight(const std::string &text, double x, double y, double height, unsigned char justify) override
Definition CGraphicsCairo.cpp:1217
void drawRect(double x1, double y1, double x2, double y2) override
Definition CGraphicsCairo.cpp:1177
void drawPolylinesWithColors(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &points, const std::vector< iv::math::geometry::Point3d > &rgb) override
Definition CGraphicsCairo.cpp:1125
void drawContours(const std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point3d > > > &contours) override
Definition CGraphicsCairo.cpp:1002
uint64_t m_idNewBlock
Definition CGraphicsCairo.hpp:182
double m_gBackground
Definition CGraphicsCairo.hpp:175
void prvIntegrityGraphicsCairoWithSurface() const
Definition CGraphicsCairo.cpp:489
void setOnTexture(bool enableTexture) override
Definition CGraphicsCairo.cpp:913
void drawUnitCube() override
Definition CGraphicsCairo.cpp:1267
void drawImageRawSize(double x, double y, const iv::ui::resources::ImageResource &resource) override
Definition CGraphicsCairo.cpp:1041
_cairo_surface * getSurface() const
Definition CGraphicsCairo.cpp:694
static CGraphicsCairo * createImageForScreen(iv::types::color colorRGBBackground)
Definition CGraphicsCairo.cpp:562
std::unordered_map< std::string, SCairoImageLoaded > m_imageLoaded
Definition CGraphicsCairo.hpp:179
CStackTransformation * m_transformation
Definition CGraphicsCairo.hpp:193
CFontManagerCairo * m_managerFontOpt
Definition CGraphicsCairo.hpp:189
void drawStripTriangles(const float *points, const float *normals, const float *textureOpt, const float *rgbaOpt, uint64_t numPoints, const uint32_t *indVertex, uint64_t numVertex) override
Definition CGraphicsCairo.cpp:1191
bool m_isStencilBufferActive
Definition CGraphicsCairo.hpp:188
bool m_isCairoRef
Definition CGraphicsCairo.hpp:185
void translation(double tx, double ty, double tz) override
Definition CGraphicsCairo.cpp:996
void drawBlock(uint32_t idBlock) override
Definition CGraphicsCairo.cpp:1389
void popMaterial() override
Definition CGraphicsCairo.cpp:844
uint32_t beginBlock() override
Definition CGraphicsCairo.cpp:1384
void onStencilBuffer() override
Definition CGraphicsCairo.cpp:1429
void appendMatrix(const CMatrix4x4 &matrix) override
Definition CGraphicsCairo.cpp:923
void endDraw()
Definition CGraphicsCairo.cpp:659
void drawUnitCylinder(IGraphics::EDetailLevel detailLevel) override
Definition CGraphicsCairo.cpp:1272
PangoLayout * m_pangoLayoutOpt
Definition CGraphicsCairo.hpp:187
void setModeDraw(IGraphics::EDrawSolidType drawSolidType) override
Definition CGraphicsCairo.cpp:1297
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) override
Definition CGraphicsCairo.cpp:1149
bool isUpdate() const
Definition CGraphicsCairo.cpp:713
void popTransformation() override
Definition CGraphicsCairo.cpp:928
void setMaterial(const std::string &materialName) override
Definition CGraphicsCairo.cpp:814
void drawRectFilled(double x1, double y1, double x2, double y2) override
Definition CGraphicsCairo.cpp:1184
void prvIntegrityGraphicsCairo() const
Definition CGraphicsCairo.cpp:484
CGraphicsCairo()
Definition CGraphicsCairo.cpp:523
void drawBlockText(uint32_t idBlockText, double x, double y, double widthText, double heightText, unsigned char justify) override
Definition CGraphicsCairo.cpp:1323
void getCoordTextCornerLeftDown(const std::string &text, double x, double y, double heightCharacter, unsigned char justify, double *xCornerLeftDown, double *yCornerLeftDown, double *widthTextOpt, double *heightTextOpt) override
Definition CGraphicsCairo.cpp:1436
void defineMaterial(const iv::ui::graphics::Material *material, const bool &isChanged) override
Definition CGraphicsCairo.cpp:762
void setBlend(bool isEnable) override
Definition CGraphicsCairo.cpp:1489
bool hasBlockText() const override
Definition CGraphicsCairo.cpp:1379
EPrvCairoType
Definition CGraphicsCairo.hpp:196
static CGraphicsCairo * createWithSurface(_cairo_surface *surface, _cairo *cairo, iv::types::color colorBackground)
Definition CGraphicsCairo.cpp:567
void drawLine(double x1, double y1, double z1, double x2, double y2, double z2) override
Definition CGraphicsCairo.cpp:1058
void clear() override
Definition CGraphicsCairo.cpp:757
~CGraphicsCairo() override
Definition CGraphicsCairo.cpp:573
void drawUnitDisk(IGraphics::EDetailLevel detailLevel) override
Definition CGraphicsCairo.cpp:1277
void rotation(double angleDegrees, double Ux, double Uy, double Uz) override
Definition CGraphicsCairo.cpp:979
void drawLineWithStyle(double x1, double y1, double z1, double x2, double y2, double z2, IGraphics::EDashedLineType dashedLineType) override
Definition CGraphicsCairo.cpp:1076
void setColorRGB(iv::types::color rgb) override
Definition CGraphicsCairo.cpp:850
void drawTriangle(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) override
Definition CGraphicsCairo.cpp:1226
void defineLight(IGraphics::ELight light, IGraphics::ELightType lightType, double rColor, double gColor, double bColor) override
Definition CGraphicsCairo.cpp:946
CGraphicsCairo(CGraphicsCairo &&other)=delete
std::vector< SPrvBlockText > m_blockTexts
Definition CGraphicsCairo.hpp:183
void resetAlpha() override
Definition CGraphicsCairo.cpp:898
CGraphicsCairo(const CGraphicsCairo &other)=delete
void endBlock(uint32_t idBlock) override
Definition CGraphicsCairo.cpp:1394
EPrvCairoType m_cairoType
Definition CGraphicsCairo.hpp:173
void drawUnitSphere(IGraphics::EDetailLevel detailLevel) override
Definition CGraphicsCairo.cpp:1282
iv::ui::graphics::Image * getImage()
Definition CGraphicsCairo.cpp:671
void positionLight(IGraphics::ELight light, double x, double y, double z) override
Definition CGraphicsCairo.cpp:952
Definition CMatrix4x4.hpp:23
Definition IGraphics.hpp:20
EDetailLevel
Definition IGraphics.hpp:29
ELight
Definition IGraphics.hpp:44
EDashedLineType
Definition IGraphics.hpp:23
EMatrixModel
Definition IGraphics.hpp:57
ELightType
Definition IGraphics.hpp:50
EDrawSolidType
Definition IGraphics.hpp:37
Definition Material.hpp:49
Definition ImageResource.hpp:15
double radian
Definition types.hpp:19
uint32_t color
Definition types.hpp:12
Definition CGraphicsCairo.hpp:46
cairo_surface_t * m_surfaceRef
Definition CGraphicsCairo.hpp:50
std::string m_nameResource
Definition CGraphicsCairo.hpp:49
bool operator==(const SCairoImageLoaded &b) const
Definition CGraphicsCairo.cpp:719
Definition CGraphicsCairo.hpp:217
bool operator==(const SPrvBlockText &b) const
Definition CGraphicsCairo.cpp:739
float epsilon
Definition CGraphicsCairo.hpp:221
std::string m_text
Definition CGraphicsCairo.hpp:222
uint32_t m_idBlock
Definition CGraphicsCairo.hpp:220
double m_heightText
Definition CGraphicsCairo.hpp:223
Definition CGraphicsCairo.hpp:203
SPrvCairoLayer(SPrvCairoLayer &&other)=delete
iv::ui::graphics::Material * m_material
Definition CGraphicsCairo.hpp:213
SPrvCairoLayer()
Definition CGraphicsCairo.cpp:724
~SPrvCairoLayer()=default
bool operator==(const SPrvCairoLayer &b) const
Definition CGraphicsCairo.cpp:734
SPrvCairoLayer & operator=(SPrvCairoLayer &&other)=delete
SPrvCairoLayer & operator=(const SPrvCairoLayer &other)=delete
Definition modifiers.hpp:15