4#ifndef MRIOEXTRAS_NO_PDF
106 MRIOEXTRAS_API
void addText(
const std::string& text,
bool isTitle =
false );
117 MRIOEXTRAS_API
void addTable(
const std::vector<std::pair<std::string, float>>& table );
167 MRIOEXTRAS_API
void saveToFile(
const std::filesystem::path& documentPath );
178 MRIOEXTRAS_API
operator bool()
const;
185 using Value = std::variant<int, float, bool, std::string, Empty>;
195 MRIOEXTRAS_API std::string
toString(
const std::string& fmtStr =
"{}" )
const;
215 std::optional<std::string>
text;
245 std::vector<float> calcTextLineWidths_(
const std::string& text,
float width,
const TextParams& params );
247 struct HPDF_Image_Wraper;
249 void addImage_(
const HPDF_Image_Wraper& image,
const ImageParams& params );
252 std::unique_ptr<State> state_;
256 std::function<void(
Pdf& )> newPageAction_;
261 bool checkDocument_(
const std::string& logAction );
262 void moveCursorToNewLine_();
263 void checkAndCreateNewPageIfNeed_(
float height );
272 std::vector<ColumnInfo> columnsInfo_;
274 struct TableGeneralParams
auto width(const Box< V > &box)
returns size along x axis
Definition MRBox.h:354
auto height(const Box< V > &box)
returns size along y axis
Definition MRBox.h:361
std::string caption
caption if not empty - add caption under marks (if exist) or image.
Definition MRPdf.h:136
AlignmentHorizontal
Definition MRPdf.h:81
static constexpr Color transparent() noexcept
Definition MRColor.h:37
std::string rangeMin
Definition MRPdf.h:122
std::variant< int, float, bool, std::string, Empty > Value
Definition MRPdf.h:185
float fontSize
Definition MRPdf.h:92
float getCursorPosY() const
Definition MRPdf.h:172
void addPaletteStatsTable(const std::vector< PaletteRowStats > &paletteStats)
Color colorBackground
Definition MRPdf.h:233
std::string valueFormat
Definition MRPdf.h:270
PdfBuildinFont
Definition MRPdf.h:27
Cell(const T &value)
Definition MRPdf.h:191
std::string rangeMax
Definition MRPdf.h:123
float getCursorPosX() const
Definition MRPdf.h:171
void setCursorPosX(float posX)
Definition MRPdf.h:169
enum MR::Pdf::ImageParams::UniformScale uniformScale
float fontSize
Definition MRPdf.h:285
void addText(const std::string &text, bool isTitle=false)
void addTable(const std::vector< std::pair< std::string, float > > &table)
void setTableCustomRule(TableCustomRule rule)
add rule to customize table cells
Definition MRPdf.h:219
float getTableTextWidth(const std::string &text)
Color colorCellBg2
Definition MRPdf.h:281
std::variant< PdfBuildinFont, std::filesystem::path > PdfGeneralFont
Definition MRPdf.h:45
float getTextWidth(const std::string &text, const TextParams ¶ms)
return text width
enum MR::Pdf::ImageParams::AlignmentVertical alignmentVertical
void addText(const std::string &text, const TextParams ¶ms)
Value data
Definition MRPdf.h:186
Color colorText
Definition MRPdf.h:95
Vector2f getPageSize() const
Pdf & operator=(Pdf other) noexcept
Color colorCellText
Definition MRPdf.h:279
static constexpr Color black() noexcept
Definition MRColor.h:29
Pdf(const PdfParameters ¶ms=PdfParameters())
Ctor. Create a document, but not a page. To create a new page use newPage() method.
float titleSize
Definition MRPdf.h:52
Expected< void > addTableTitles(const std::vector< std::string > &titles)
add in pdf table row with titles
Vector2f size
Definition MRPdf.h:134
Color colorTitleText
Definition MRPdf.h:276
tl::expected< T, E > Expected
Definition MRExpected.h:31
std::function< CellCustomParams(int row, int column, const std::string &cellValueText)> TableCustomRule
Definition MRPdf.h:217
std::optional< Color > colorCellBg
Definition MRPdf.h:213
Expected< void > setTableColumnWidths(const std::vector< float > &widths)
set table column widths
Cell()
Definition MRPdf.h:188
Color colorCellBg1
Definition MRPdf.h:280
bool underline
Definition MRPdf.h:96
float textSize
Definition MRPdf.h:53
PdfGeneralFont defaultFont
Font name.
Definition MRPdf.h:58
PdfGeneralFont defaultFontBold
Definition MRPdf.h:59
AlignmentHorizontal alignmentHorizontal
Definition MRPdf.h:151
Color colorLines
Definition MRPdf.h:283
Box2f getPageWorkArea() const
std::optional< Color > colorText
Definition MRPdf.h:212
Expected< void > addRow(const std::vector< Cell > &cells)
add in pdf table row with values
void addImage(const Image &image, const ImageParams ¶ms)
std::string toString(const std::string &fmtStr="{}") const
void addImageFromFile(const std::filesystem::path &imagePath, const ImageParams ¶ms)
Add image from file in current cursor position. If image bigger than page size, autoscale image to pa...
std::optional< Color > colorCellBorder
Definition MRPdf.h:214
void drawTextCell(const std::string &text, const TextCellParams ¶ms)
PdfGeneralFont tableFont
Definition MRPdf.h:63
float width
Definition MRPdf.h:269
Color colorBorder
Definition MRPdf.h:232
std::optional< std::string > text
Definition MRPdf.h:215
PdfGeneralFont tableFontBold
Definition MRPdf.h:64
void setCursorPosY(float posY)
Definition MRPdf.h:170
UniformScale
set height to keep same scale as width scale
Definition MRPdf.h:139
Box2f rect
Definition MRPdf.h:231
void drawTextInRect(const std::string &text, const Box2f &rect, const TextParams ¶ms)
basic drawing methods without automatic cursor position control
void newPage()
Add new pageand move cursor on it.
AlignmentVertical
Definition MRPdf.h:146
Color color
Definition MRPdf.h:121
Expected< void > setColumnValuesFormat(const std::vector< std::string > &formats)
set format for conversion values to string for each column
void saveToFile(const std::filesystem::path &documentPath)
Save document to file.
Color colorTitleBg
Definition MRPdf.h:277
Pdf(Pdf &&other) noexcept
AlignmentHorizontal alignment
Definition MRPdf.h:94
TextParams textParams
Definition MRPdf.h:229
PdfGeneralFont fontName
Definition MRPdf.h:90
void setNewPageAction(std::function< void(Pdf &)> action)
set function to customize new page after creation
Definition MRPdf.h:164
void drawRect(const Box2f &rect, const Color &fillColor, const Color &strokeColor)
draw rect (filled with border)
std::string percent
Definition MRPdf.h:124
void newTable(int columnCount)
set up new table (clear table customization, reset parameters to default values)
static constexpr Color white() noexcept
Definition MRColor.h:28
@ Center
Definition MRPdf.h:83
@ Right
Definition MRPdf.h:84
@ Left
Definition MRPdf.h:82
@ Symbol
Definition MRPdf.h:40
@ TimesItalic
Definition MRPdf.h:38
@ HelveticaOblique
Definition MRPdf.h:34
@ Courier
Definition MRPdf.h:28
@ TimesBoldItalic
Definition MRPdf.h:39
@ TimesBold
Definition MRPdf.h:37
@ Helvetica
Definition MRPdf.h:32
@ CourierOblique
Definition MRPdf.h:30
@ HelveticaBoldOblique
Definition MRPdf.h:35
@ ZapfDingbats
Definition MRPdf.h:41
@ HelveticaBold
Definition MRPdf.h:33
@ Count
Definition MRPdf.h:42
@ CourierBoldOblique
Definition MRPdf.h:31
@ CourierBold
Definition MRPdf.h:29
@ TimesRoman
Definition MRPdf.h:36
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
@ Auto
Definition MRPdf.h:143
@ None
Definition MRPdf.h:140
@ FromHeight
Definition MRPdf.h:142
@ FromWidth
Definition MRPdf.h:141
@ Bottom
Definition MRPdf.h:149
@ Center
Definition MRPdf.h:148
@ Top
Definition MRPdf.h:147
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Parameters of document style.
Definition MRPdf.h:51
Parameters to adding image from file.
Definition MRPdf.h:130
parameters to drawing text
Definition MRPdf.h:89