4#ifndef MRIOEXTRAS_NO_PDF
42using PdfGeneralFont = std::variant<PdfBuildinFont, std::filesystem::path>;
49 float titleSize = 18.f;
50 float textSize = 14.f;
71 MRIOEXTRAS_API
Pdf(
const PdfParameters& params = PdfParameters() );
72 MRIOEXTRAS_API
Pdf(
Pdf&& other )
noexcept;
73 MRIOEXTRAS_API
Pdf& operator=(
Pdf other )
noexcept;
75 MRIOEXTRAS_API ~Pdf();
77 enum class AlignmentHorizontal
87 PdfGeneralFont
fontName = PdfBuildinFont::Helvetica;
91 AlignmentHorizontal
alignment = AlignmentHorizontal::Left;
103 MRIOEXTRAS_API
void addText(
const std::string& text,
bool isTitle =
false );
104 MRIOEXTRAS_API
void addText(
const std::string& text,
const TextParams& params );
114 MRIOEXTRAS_API
void addTable(
const std::vector<std::pair<std::string, float>>& table );
164 MRIOEXTRAS_API
void saveToFile(
const std::filesystem::path& documentPath );
168 float getCursorPosX()
const {
return cursorX_; }
169 float getCursorPosY()
const {
return cursorY_; }
171 MRIOEXTRAS_API Vector2f getPageSize()
const;
172 MRIOEXTRAS_API Box2f getPageWorkArea()
const;
175 MRIOEXTRAS_API
operator bool()
const;
182 using Value = std::variant<int, float, bool, std::string, Empty>;
192 MRIOEXTRAS_API std::string
toString(
const std::string& fmtStr =
"{}" )
const;
195 MRIOEXTRAS_API
void newTable(
int columnCount );
199 MRIOEXTRAS_API Expected<void>
addTableTitles(
const std::vector<std::string>& titles );
203 MRIOEXTRAS_API Expected<void>
addRow(
const std::vector<Cell>& cells );
212 std::optional<std::string>
text;
214 using TableCustomRule = std::function<
CellCustomParams(
int row,
int column,
const std::string& cellValueText)>;
222 MRIOEXTRAS_API
void drawTextInRect(
const std::string& text,
const Box2f& rect,
const TextParams& params );
242 std::vector<float> calcTextLineWidths_(
const std::string& text,
float width,
const TextParams& params );
244 struct HPDF_Image_Wraper;
246 void addImage_(
const HPDF_Image_Wraper& image,
const ImageParams& params );
249 std::unique_ptr<State> state_;
253 std::function<void(
Pdf& )> newPageAction_;
258 bool checkDocument_(
const std::string& logAction );
259 void moveCursorToNewLine_();
260 void checkAndCreateNewPageIfNeed_(
float height );
267 std::string valueFormat =
"{}";
269 std::vector<ColumnInfo> columnsInfo_;
270 TableCustomRule tableCustomRule_;
271 struct TableGeneralParams
274 Color colorTitleBg{ 42, 102, 246 };
277 Color colorCellBg1{ 170, 194, 251 };
278 Color colorCellBg2{ 212, 224, 253 };
282 float fontSize = 12.f;
new unsafe MR.Std.Variant_MRPdfBuildinFont_StdFilesystemPath defaultFont
new unsafe MR.Std.Variant_MRPdfBuildinFont_StdFilesystemPath tableFont
unsafe void setTableCustomRule(MR.Std._ByValue_Function_MRPdfCellCustomParamsFuncFromIntIntConstStdStringRef rule)
unsafe void addRow(MR.Std.Const_Vector_MRPdfCell cells)
unsafe void saveToFile(string documentPath)
unsafe float getTableTextWidth(string text)
unsafe void setCursorPosY(float posY)
unsafe void setCursorPosX(float posX)
unsafe float getTextWidth(string text, MR.Pdf.Const_TextParams params_)
unsafe void addPaletteStatsTable(MR.Std.Const_Vector_MRPdfPaletteRowStats paletteStats)
unsafe void addText(string text, bool? isTitle=null)
unsafe Pdf(MR.Const_PdfParameters? params_=null)
unsafe void addImageFromFile(string imagePath, MR.Pdf.Const_ImageParams params_)
unsafe void drawTextCell(string text, MR.Pdf.Const_TextCellParams params_)
unsafe void setNewPageAction(MR.Std._ByValue_Function_VoidFuncFromMRPdfRef action)
unsafe void newTable(int columnCount)
unsafe void addTable(MR.Std.Const_Vector_StdPairStdStringFloat table)
unsafe void addImage(MR.Const_Image image, MR.Pdf.Const_ImageParams params_)
unsafe void setColumnValuesFormat(MR.Std.Const_Vector_StdString formats)
unsafe void drawTextInRect(string text, in MR.Box2f rect, MR.Pdf.Const_TextParams params_)
unsafe void setTableColumnWidths(MR.Std.Const_Vector_Float widths)
unsafe void addTableTitles(MR.Std.Const_Vector_StdString titles)
unsafe void drawRect(in MR.Box2f rect, in MR.Color fillColor, in MR.Color strokeColor)
auto width(const Box< V > &box)
returns size along x axis
Definition MRMesh/MRBox.h:354
auto height(const Box< V > &box)
returns size along y axis
Definition MRMesh/MRBox.h:361
Definition MRCameraOrientationPlugin.h:8
Definition MRMesh/MRColor.h:9
static MR.Color transparent()
std::optional< Color > colorCellBg
Definition MRPdf.h:210
std::optional< Color > colorText
Definition MRPdf.h:209
std::optional< Color > colorCellBorder
Definition MRPdf.h:211
std::optional< std::string > text
Definition MRPdf.h:212
std::variant< int, float, bool, std::string, Empty > Value
Definition MRPdf.h:182
Cell(const T &value)
Definition MRPdf.h:188
Value data
Definition MRPdf.h:183
Cell()
Definition MRPdf.h:185
MRIOEXTRAS_API std::string toString(const std::string &fmtStr="{}") const
Parameters to adding image from file.
Definition MRPdf.h:127
std::string caption
caption if not empty - add caption under marks (if exist) or image.
Definition MRPdf.h:133
enum MR::Pdf::ImageParams::UniformScale uniformScale
enum MR::Pdf::ImageParams::AlignmentVertical alignmentVertical
Vector2f size
Definition MRPdf.h:131
AlignmentHorizontal alignmentHorizontal
Definition MRPdf.h:148
UniformScale
set height to keep same scale as width scale
Definition MRPdf.h:136
AlignmentVertical
Definition MRPdf.h:143
std::string rangeMin
Definition MRPdf.h:119
std::string rangeMax
Definition MRPdf.h:120
Color color
Definition MRPdf.h:118
std::string percent
Definition MRPdf.h:121
Color colorBackground
Definition MRPdf.h:230
Color colorBorder
Definition MRPdf.h:229
Box2f rect
Definition MRPdf.h:228
TextParams textParams
Definition MRPdf.h:226
float fontSize
Definition MRPdf.h:89
Color colorText
Definition MRPdf.h:92
bool underline
Definition MRPdf.h:93
AlignmentHorizontal alignment
Definition MRPdf.h:91
PdfGeneralFont fontName
Definition MRPdf.h:87