10#ifndef __LIBPAGEMAKER_GEOMETRY_H__
11#define __LIBPAGEMAKER_GEOMETRY_H__
15#include <librevenge/librevenge.h>
24template <
typename Unit>
struct Point
53 virtual std::vector<PMDShapePoint>
getPoints()
const = 0;
68 virtual librevenge::RVNGBinaryData
getBitmap()
const = 0;
130 std::vector<PMDShapePoint> points;
169 return std::vector<PMDCharProperties>(1);
174 return std::vector<PMDParaProperties>(1);
179 librevenge::RVNGBinaryData temp;
207 return (-1 * (
double)temp/1000 * (
M_PI/180));
213 return (-1 * (
double)temp/1000 * (
M_PI/180));
273 return std::vector<PMDCharProperties>(1);
278 return std::vector<PMDParaProperties>(1);
283 librevenge::RVNGBinaryData temp;
302 PMDTextBox(
const PMDShapePoint &bboxTopLeft,
const PMDShapePoint &bboxBotRight,
const PMDXForm &xFormContainer,
const std::string text,
const std::vector<PMDCharProperties> charProps,
const std::vector<PMDParaProperties> paraProps)
309 return (-1 * (
double)temp/1000 * (
M_PI/180));
315 return (-1 * (
double)temp/1000 * (
M_PI/180));
350 std::vector<PMDShapePoint> points;
389 librevenge::RVNGBinaryData temp;
414 return (-1 * (
double)temp/1000 * (
M_PI/180));
420 return (-1 * (
double)temp/1000 * (
M_PI/180));
455 std::vector<PMDShapePoint> points;
487 return std::vector<PMDCharProperties>(1);
492 return std::vector<PMDParaProperties>(1);
497 librevenge::RVNGBinaryData temp;
522 return (-1 * (
double)temp/1000 * (
M_PI/180));
528 return (-1 * (
double)temp/1000 * (
M_PI/180));
553 std::vector<PMDShapePoint> points;
593 return std::vector<PMDCharProperties>(1);
598 return std::vector<PMDParaProperties>(1);
603 librevenge::RVNGBinaryData temp;
627 return (-1 * (
double)temp/1000 * (
M_PI/180));
633 return (-1 * (
double)temp/1000 * (
M_PI/180));
668 std::vector<PMDShapePoint> points;
700 return std::vector<PMDCharProperties>(1);
705 return std::vector<PMDParaProperties>(1);
729 double xInches = point.
m_x.toInches(),
730 yInches = point.
m_y.toInches();
731 double newX =
m_tl * xInches +
m_tr * yInches,
732 newY =
m_bl * xInches +
m_br * yInches;
736std::pair<InchPoint, InchPoint>
737getBoundingBox(
const PMDLineSet &lineSet,
const TransformationMatrix &matrix);
Definition geometry.h:613
PMDFillProperties getFillProperties() const override
Definition geometry.h:683
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:698
PMDShapePoint getXformBotRight() const override
Definition geometry.h:641
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:703
bool getIsClosed() const override
Definition geometry.h:661
PMDXForm m_xFormContainer
Definition geometry.h:616
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:666
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:651
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:636
librevenge::RVNGBinaryData m_bitmap
Definition geometry.h:617
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:688
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:708
PMDShapePoint m_bboxTopLeft
Definition geometry.h:614
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:646
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:656
uint8_t shapeType() const override
Definition geometry.h:678
double getRotation() const override
Definition geometry.h:624
std::string getText() const override
Definition geometry.h:693
double getSkew() const override
Definition geometry.h:630
PMDShapePoint m_bboxBotRight
Definition geometry.h:615
PMDBitmap(const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const PMDXForm &xFormContainer, const librevenge::RVNGBinaryData &bitmap)
Definition geometry.h:620
~PMDBitmap() override
Definition geometry.h:713
Definition geometry.h:507
~PMDEllipse() override
Definition geometry.h:607
PMDEllipse(const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const PMDXForm &xFormContainer, const PMDFillProperties fillProps, const PMDStrokeProperties strokeProps)
Definition geometry.h:515
double getRotation() const override
Definition geometry.h:519
PMDFillProperties getFillProperties() const override
Definition geometry.h:576
PMDShapePoint m_bboxTopLeft
Definition geometry.h:508
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:531
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:551
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:566
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:541
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:561
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:591
PMDShapePoint m_bboxBotRight
Definition geometry.h:509
PMDFillProperties m_fillProps
Definition geometry.h:511
PMDShapePoint getXformBotRight() const override
Definition geometry.h:536
PMDXForm m_xFormContainer
Definition geometry.h:510
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:581
uint8_t shapeType() const override
Definition geometry.h:571
bool getIsClosed() const override
Definition geometry.h:546
double getSkew() const override
Definition geometry.h:525
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:596
PMDStrokeProperties m_strokeProps
Definition geometry.h:512
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:601
std::string getText() const override
Definition geometry.h:586
virtual PMDShapePoint getRotatingPoint() const =0
virtual std::vector< PMDShapePoint > getPoints() const =0
virtual ~PMDLineSet()
Definition geometry.h:71
virtual PMDShapePoint getXformBotRight() const =0
virtual PMDShapePoint getBboxTopLeft() const =0
virtual PMDFillProperties getFillProperties() const =0
virtual PMDShapePoint getXformTopLeft() const =0
virtual librevenge::RVNGBinaryData getBitmap() const =0
virtual uint8_t shapeType() const =0
virtual double getRotation() const =0
virtual std::vector< PMDCharProperties > getCharProperties() const =0
virtual std::vector< PMDParaProperties > getParaProperties() const =0
virtual bool getIsClosed() const =0
virtual double getSkew() const =0
virtual PMDShapePoint getBboxBotRight() const =0
virtual std::string getText() const =0
virtual PMDStrokeProperties getStrokeProperties() const =0
PMDLine(const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const bool mirrored, const PMDStrokeProperties strokeProps)
Definition geometry.h:84
double getRotation() const override
Definition geometry.h:88
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:128
PMDStrokeProperties m_strokeProps
Definition geometry.h:81
double getSkew() const override
Definition geometry.h:93
bool getIsClosed() const override
Definition geometry.h:113
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:98
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:177
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:123
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:172
PMDShapePoint getXformBotRight() const override
Definition geometry.h:103
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:118
PMDFillProperties getFillProperties() const override
Definition geometry.h:150
PMDShapePoint m_bboxBotRight
Definition geometry.h:79
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:167
~PMDLine() override
Definition geometry.h:183
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:157
uint8_t shapeType() const override
Definition geometry.h:145
bool m_mirrored
Definition geometry.h:80
std::string getText() const override
Definition geometry.h:162
PMDShapePoint m_bboxTopLeft
Definition geometry.h:78
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:108
Definition geometry.h:190
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:236
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:281
double getRotation() const override
Definition geometry.h:204
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:276
PMDXForm m_xFormContainer
Definition geometry.h:195
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:231
uint8_t shapeType() const override
Definition geometry.h:251
PMDShapePoint m_bboxTopLeft
Definition geometry.h:193
bool m_isClosed
Definition geometry.h:192
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:261
PMDShapePoint m_bboxBotRight
Definition geometry.h:194
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:246
PMDShapePoint getXformBotRight() const override
Definition geometry.h:221
PMDFillProperties getFillProperties() const override
Definition geometry.h:256
std::string getText() const override
Definition geometry.h:266
double getSkew() const override
Definition geometry.h:210
~PMDPolygon() override
Definition geometry.h:287
PMDPolygon(std::vector< PMDShapePoint > points, bool isClosed, const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const PMDXForm &xFormContainer, const PMDFillProperties fillProps, const PMDStrokeProperties strokeProps)
Definition geometry.h:200
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:226
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:216
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:271
bool getIsClosed() const override
Definition geometry.h:241
PMDFillProperties m_fillProps
Definition geometry.h:196
PMDStrokeProperties m_strokeProps
Definition geometry.h:197
std::vector< PMDShapePoint > m_points
Definition geometry.h:191
Definition geometry.h:399
PMDRectangle(const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const PMDXForm &xFormContainer, const PMDFillProperties fillProps, const PMDStrokeProperties strokeProps)
Definition geometry.h:407
PMDShapePoint getXformBotRight() const override
Definition geometry.h:428
~PMDRectangle() override
Definition geometry.h:501
PMDXForm m_xFormContainer
Definition geometry.h:402
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:453
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:495
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:433
uint8_t shapeType() const override
Definition geometry.h:465
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:485
PMDShapePoint m_bboxBotRight
Definition geometry.h:401
double getRotation() const override
Definition geometry.h:411
PMDFillProperties getFillProperties() const override
Definition geometry.h:470
bool getIsClosed() const override
Definition geometry.h:448
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:443
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:423
PMDFillProperties m_fillProps
Definition geometry.h:403
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:475
double getSkew() const override
Definition geometry.h:417
std::string getText() const override
Definition geometry.h:480
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:490
PMDStrokeProperties m_strokeProps
Definition geometry.h:404
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:438
PMDShapePoint m_bboxTopLeft
Definition geometry.h:400
Definition geometry.h:293
PMDShapePoint getBboxTopLeft() const override
Definition geometry.h:333
PMDTextBox(const PMDShapePoint &bboxTopLeft, const PMDShapePoint &bboxBotRight, const PMDXForm &xFormContainer, const std::string text, const std::vector< PMDCharProperties > charProps, const std::vector< PMDParaProperties > paraProps)
Definition geometry.h:302
PMDFillProperties getFillProperties() const override
Definition geometry.h:362
double getRotation() const override
Definition geometry.h:306
std::vector< PMDCharProperties > getCharProperties() const override
Definition geometry.h:377
std::vector< PMDShapePoint > getPoints() const override
Definition geometry.h:348
librevenge::RVNGBinaryData getBitmap() const override
Definition geometry.h:387
uint8_t shapeType() const override
Definition geometry.h:357
PMDShapePoint m_bboxBotRight
Definition geometry.h:295
std::vector< PMDCharProperties > m_charProps
Definition geometry.h:298
PMDShapePoint getRotatingPoint() const override
Definition geometry.h:328
std::string m_text
Definition geometry.h:297
PMDShapePoint getXformBotRight() const override
Definition geometry.h:323
PMDShapePoint getBboxBotRight() const override
Definition geometry.h:338
std::vector< PMDParaProperties > m_paraProps
Definition geometry.h:299
double getSkew() const override
Definition geometry.h:312
PMDXForm m_xFormContainer
Definition geometry.h:296
bool getIsClosed() const override
Definition geometry.h:343
PMDStrokeProperties getStrokeProperties() const override
Definition geometry.h:367
PMDShapePoint getXformTopLeft() const override
Definition geometry.h:318
PMDShapePoint m_bboxTopLeft
Definition geometry.h:294
std::string getText() const override
Definition geometry.h:372
std::vector< PMDParaProperties > getParaProperties() const override
Definition geometry.h:382
~PMDTextBox() override
Definition geometry.h:393
Definition geometry.h:719
double m_bl
Definition geometry.h:720
double m_br
Definition geometry.h:720
InchPoint transform(const Point< Unit > &point) const
Definition geometry.h:727
double m_tr
Definition geometry.h:720
double m_tl
Definition geometry.h:720
TransformationMatrix(double bboxTopLeft, double topRight, double bottomLeft, double bottomRight)
Definition geometry.h:723
const uint8_t FILL_SOLID
Definition constants.h:62
const uint8_t SHAPE_TYPE_ELLIPSE
Definition constants.h:55
const uint8_t SHAPE_TYPE_TEXTBOX
Definition constants.h:56
const uint8_t SHAPE_TYPE_POLY
Definition constants.h:53
const uint8_t SHAPE_TYPE_LINE
Definition constants.h:52
const uint8_t SHAPE_TYPE_RECT
Definition constants.h:54
const uint8_t SHAPE_TYPE_BITMAP
Definition constants.h:57
#define M_PI
Definition libpagemaker_utils.h:28
Point< double > InchPoint
Definition geometry.h:34
std::pair< InchPoint, InchPoint > getBoundingBox(const PMDLineSet &lineSet, const TransformationMatrix &matrix)
Definition geometry.cpp:16
Point< PMDShapeUnit > PMDShapePoint
Definition geometry.h:33
uint8_t m_fillType
Definition PMDTypes.h:45
uint32_t m_rotationDegree
Definition geometry.h:38
PMDXForm(const uint32_t rotationDegree, const uint32_t skewDegree, const PMDShapePoint xformTopLeft, const PMDShapePoint xformBotRight, const PMDShapePoint rotatingPoint, const uint32_t xformId)
Definition geometry.h:45
PMDShapePoint m_rotatingPoint
Definition geometry.h:42
uint32_t m_xformId
Definition geometry.h:43
uint32_t m_skewDegree
Definition geometry.h:39
PMDShapePoint m_xformBotRight
Definition geometry.h:41
PMDShapePoint m_xformTopLeft
Definition geometry.h:40
Unit m_y
Definition geometry.h:27
Unit m_x
Definition geometry.h:26
Point(Unit x, Unit y)
Definition geometry.h:29