2017-11-26 21:46:30 -06:00

1137 lines
25 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Page.h
//
// Library: PDF
// Package: PDFCore
// Module: Page
//
// Definition of the Page class.
//
// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef PDF_Page_INCLUDED
#define PDF_Page_INCLUDED
#include "Poco/PDF/PDF.h"
#include "Poco/PDF/Resource.h"
#include "Poco/PDF/Font.h"
#include "Poco/PDF/Image.h"
#include "Poco/PDF/Encoder.h"
#include "Poco/PDF/Destination.h"
#include "Poco/PDF/TextAnnotation.h"
#include "Poco/PDF/LinkAnnotation.h"
#include "Poco/Exception.h"
#include <map>
namespace Poco {
namespace PDF {
class Document;
class PDF_API Page
/// A Page represents a PDF page object.
{
public:
typedef HPDF_Page Type;
typedef std::map<std::string, Destination> DestinationContainer;
typedef std::map<std::string, TextAnnotation> TextAnnotationContainer;
typedef std::map<std::string, LinkAnnotation> LinkAnnotationContainer;
enum Size
{
PAGE_SIZE_LETTER = HPDF_PAGE_SIZE_LETTER,
/// 8½ x 11 (Inches), 612 x 792 px
PAGE_SIZE_LEGAL = HPDF_PAGE_SIZE_LEGAL,
/// 8½ x 14 (Inches), 612 x 1008 px
PAGE_SIZE_A3 = HPDF_PAGE_SIZE_A3,
/// 297 × 420 (mm), 841.89 x 1199.551 px
PAGE_SIZE_A4 = HPDF_PAGE_SIZE_A4,
/// 210 × 297 (mm), 595.276 x 841.89 px
PAGE_SIZE_A5 = HPDF_PAGE_SIZE_A5,
/// 148 × 210 (mm), 419.528 x 595.276 px
PAGE_SIZE_B4 = HPDF_PAGE_SIZE_B4,
/// 250 × 353 (mm), 708.661 x 1000.63 px
PAGE_SIZE_B5 = HPDF_PAGE_SIZE_B5,
/// 176 × 250 (mm), 498.898 x 708.661 px
PAGE_SIZE_EXECUTIVE = HPDF_PAGE_SIZE_EXECUTIVE,
/// 7½ x 10½ (Inches), 522 x 756 px
PAGE_SIZE_US4x6 = HPDF_PAGE_SIZE_US4x6,
/// 4 x 6 (Inches), 288 x 432 px
PAGE_SIZE_US4x8 = HPDF_PAGE_SIZE_US4x8,
/// 4 x 8 (Inches), 288 x 576 px
PAGE_SIZE_US5x7 = HPDF_PAGE_SIZE_US5x7,
/// 5 x 7 (Inches), 360 x 504 px
PAGE_SIZE_COMM10 = HPDF_PAGE_SIZE_COMM10
/// 4.125 x 9.5 (Inches) 297x 684 px
};
enum Orientation
{
ORIENTATION_PORTRAIT = HPDF_PAGE_PORTRAIT,
// Portrait orientation.
ORIENTATION_LANDSCAPE = HPDF_PAGE_LANDSCAPE
// Landscape orientation.
};
enum RenderMode
{
RENDER_FILL = HPDF_FILL,
RENDER_STROKE = HPDF_STROKE,
RENDER_FILL_THEN_STROKE = HPDF_FILL_THEN_STROKE,
RENDER_INVISIBLE = HPDF_INVISIBLE,
RENDER_FILL_CLIPPING = HPDF_FILL_CLIPPING,
RENDER_STROKE_CLIPPING = HPDF_STROKE_CLIPPING,
RENDER_FILL_STROKE_CLIPPING = HPDF_FILL_STROKE_CLIPPING,
RENDER_CLIPPING = HPDF_CLIPPING,
RENDER_RENDERING_MODE_EOF = HPDF_RENDERING_MODE_EOF
};
enum ColorSpace
{
CS_DEVICE_GRAY = HPDF_CS_DEVICE_GRAY,
CS_DEVICE_RGB = HPDF_CS_DEVICE_RGB,
CS_DEVICE_CMYK = HPDF_CS_DEVICE_CMYK,
CS_CAL_GRAY = HPDF_CS_CAL_GRAY,
CS_CAL_RGB = HPDF_CS_CAL_RGB,
CS_LAB = HPDF_CS_LAB,
CS_ICC_BASED = HPDF_CS_ICC_BASED,
CS_SEPARATION = HPDF_CS_SEPARATION,
CS_DEVICE_N = HPDF_CS_DEVICE_N,
CS_INDEXED = HPDF_CS_INDEXED,
CS_PATTERN = HPDF_CS_PATTERN,
CS_EOF = HPDF_CS_EOF
};
enum TransitionStyle
{
TS_WIPE_RIGHT = HPDF_TS_WIPE_RIGHT,
TS_WIPE_UP = HPDF_TS_WIPE_UP,
TS_WIPE_LEFT = HPDF_TS_WIPE_LEFT,
TS_WIPE_DOWN = HPDF_TS_WIPE_DOWN,
TS_BARN_DOORS_HORIZONTAL_OUT = HPDF_TS_BARN_DOORS_HORIZONTAL_OUT,
TS_BARN_DOORS_HORIZONTAL_IN = HPDF_TS_BARN_DOORS_HORIZONTAL_IN,
TS_BARN_DOORS_VERTICAL_OUT = HPDF_TS_BARN_DOORS_VERTICAL_OUT,
TS_BARN_DOORS_VERTICAL_IN = HPDF_TS_BARN_DOORS_VERTICAL_IN,
TS_BOX_OUT = HPDF_TS_BOX_OUT,
TS_BOX_IN = HPDF_TS_BOX_IN,
TS_BLINDS_HORIZONTAL = HPDF_TS_BLINDS_HORIZONTAL,
TS_BLINDS_VERTICAL = HPDF_TS_BLINDS_VERTICAL,
TS_DISSOLVE = HPDF_TS_DISSOLVE,
TS_GLITTER_RIGHT = HPDF_TS_GLITTER_RIGHT,
TS_GLITTER_DOWN = HPDF_TS_GLITTER_DOWN,
TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT = HPDF_TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT,
TS_REPLACE = HPDF_TS_REPLACE
};
enum TextAlignment
{
TEXT_ALIGN_LEFT = HPDF_TALIGN_LEFT,
/// The text is aligned to left.
TEXT_ALIGN_RIGHT = HPDF_TALIGN_RIGHT,
/// The text is aligned to right.
TEXT_ALIGN_CENTER = HPDF_TALIGN_CENTER,
/// The text is aligned to center.
TEXT_ALIGN_JUSTIFY = HPDF_TALIGN_JUSTIFY
/// Add spaces between the words to justify both left and right side.
};
Page(Document* pDocument,
const HPDF_Page& page,
Size pageSize = PAGE_SIZE_LETTER,
Orientation orientation = ORIENTATION_PORTRAIT);
/// Creates the page
Page(const Page& other);
/// Copy creates the page.
virtual ~Page();
/// Destroys the page.
Page& operator = (const Page& page);
/// Assignment operator.
operator const Type& () const;
/// Const conversion operator into reference to native type.
bool operator == (const Page& other) const;
/// Equality operator.
void swap(Page& other);
/// Swaps this page with another.
void setWidth(float value);
/// Sets the page width.
float getWidth() const;
/// Gets the page width.
void setHeight(float value);
/// Sets the page height.
float getHeight() const;
/// Gets the page height.
void setSize(Size size);
/// Sets the page size.
Size getSize() const;
/// Returns the page size.
void setOrientation(Orientation orientation);
/// Sets the page orientation.
Orientation getOrientation() const;
/// Returns the page orientation.
void setSizeAndOrientation(Size size, Orientation orientation);
/// Sets the page size and orientation.
void setRotation(int angle);
/// Sets the rotation for the page.
/// Angle must be multiple of 90.
void setFont(const Font& font, float size);
/// Sets the font.
void setFont(const std::string& fontName, float size, const std::string& encoding = "");
/// Sets the font. The name must be a valid Base14 PDF internal font.
void setTTFont(const std::string& name, float size, const std::string& encoding = "UTF-8", bool embed = true);
/// Sets the external true type font. Name must be a valid path to .ttf file.
/// If embed is tru, font will be embedded int othe document.
float textWidth(const std::string& text);
/// Returns the width of the supplied text.
void beginText();
/// Begins a text object and sets the current text position to the point (0,0).
void endText();
/// Ends a text object.
void write(float xPos, float yPos, const std::string& text);
/// Write text at specified position.
void writeOnce(float xPos, float yPos, const std::string& text);
/// Begins, writes and ends text object.
void write(const std::string& text);
/// Writes the text at the current position on the page.
void writeNextLine(const std::string& text);
/// Moves the current text position to the start of the next line and
/// prints the text at the current position on the page.
void writeNextLineEx(float wordSpace, float charSpace, const std::string& text);
/// Moves the current text position to the start of the next line, sets the word spacing,
/// character spacing and prints the text at the current position on the page.
int writeOnceInRectangle(float left,
float top,
float right,
float bottom,
const std::string& text,
TextAlignment align = TEXT_ALIGN_LEFT);
/// Begins, writes and ends text objectinside the specified region.
/// Returns the number of characters written.
int writeInRectangle(float left,
float top,
float right,
float bottom,
const std::string& text,
TextAlignment align);
/// Writes the text inside the specified region.
/// Returns the number of characters written.
void drawImage(Image image, float x, float y, float width, float height);
/// Draws an image in one operation.
const Destination& createDestination(const std::string& name);
/// Creates ad returns reference to destination.
const TextAnnotation& createTextAnnotation(const std::string& name,
const Rectangle& rect,
const std::string& text,
const Encoder& encoder);
/// Creates ad returns reference to text annotation.
const LinkAnnotation& createLinkAnnotation(const std::string& name,
const Rectangle& rect,
const Destination& dest);
/// Creates ad returns reference to destination link annotation.
const LinkAnnotation& createURILinkAnnotation(const std::string& name,
const Rectangle& rect,
const std::string& uri);
/// Creates ad returns reference to URI annotation.
int getGraphicsMode() const;
/// Returns current graphics mode.
int getGraphicStateDepth() const;
/// Returns current graphics mode.
void setExtGraphicsState(ExtGraphicsState state);
/// Sets the graphic state.
void saveGraphics();
/// Pushes graphics parameters on the stack.
void restoreGraphics();
/// Restores graphics parameters from the stack.
void concatenate(const std::vector<float>& values);
/// Concatenates the page's current transformation matrix and specified matrix.
void moveTo(float x, float y);
/// Starts a new subpath and move the current point for drawing path.
/// Sets the start point for the path to the point (x, y).
void lineTo(float x, float y);
/// Appends a path from the current point to the specified point..
void curveTo(const std::vector<float>& values);
/// Appends a Bézier curve to the current path using two specified points.
/// The point (x1, y1) and the point (x2, y2) are used as the control points
/// for a Bézier curve and current point is moved to the point (x3, y3)
void curveToRight(float x2, float y2, float x3, float y3);
/// Appends a Bézier curve to the right of the current point using two specified points.
/// The current point and the point (x2, y2) are used as the control points
/// for a Bézier curve and current point is moved to the point (x3, y3)
void curveToLeft(float x2, float y2, float x3, float y3);
/// Appends a Bézier curve to the left of the current point using two specified points.
/// The current point and the point (x2, y2) are used as the control points
/// for a Bézier curve and current point is moved to the point (x3, y3)
void closePath();
/// Appends a straight line from the current point to the start point of sub path.
/// The current point is moved to the start point of sub path.
void rectangle(float x, float y, float width, float height);
/// Draws a rectangle.
void circle(float x, float y, float radius);
/// Draws a circle.
void arc(float x, float y, float radius, float beginAngle, float endAngle);
/// Draws an arc.
void ellipse(float x, float y, float xRadius, float yRadius);
/// Draws an ellips.
void stroke();
/// Paints the current path.
void closeAndStroke();
/// Closes the current path and paints it.
void fill();
/// Fills the current path using the nonzero winding number rule.
void EOFill();
/// Fills the current path using the even-odd rule.
void fillStroke();
/// Fills the current path using the nonzero winding number rule and then paints it.
void EOFillStroke();
/// Fills the current path using the even-odd rule and then paints it.
void closeFillAndStroke();
/// Closes the current path, fills the current path using the nonzero winding number
/// rule and then paints it.
void closeFillAndEOStroke();
/// Closes the current path, fills the current path using the even-odd rule and then paints it.
void endPath();
/// Ends the path object without filling and painting operation.
void clip();
///
void eoClip();
///
Point getPos() const;
/// Returns the current position.
Point getTextPos() const;
/// Returns the current position for text showing.
void moveTextPos(float x, float y);
/// Moves the current text position to the start of the next line
/// using specified offset values. If the start position of the current
/// line is (x1, y1), the start of the next line is (x1 + x, y1 + y).
void moveTextNextLine(float x, float y);
/// Moves the current text position to the start of the next line
/// using specified offset values, and sets the text leading to -y.
/// If the start position of the current line is (x1, y1), the start
/// of the next line is (x1 + x, y1 + y).
void moveTextNextLine();
/// Moves the current text position to the start of the next line.
/// If the start position of the current line is (x1, y1), the start of
/// the next line is (x1, y1 - text leading).
///
/// NOTE:
/// Since the default value of Text Leading is 0, an application has to
/// invoke HPDF_Page_SetTextLeading() before HPDF_Page_MoveTextPos2() to set
/// text leading.
const Font& getFont() const;
/// Returns the current font.
float getFontSize() const;
/// Returns the current Font size.
TransMatrix getTransMatrix() const;
/// Returns the current transformation matrix.
TransMatrix getTextMatrix() const;
/// Returns the current text transformation matrix.
float getLineWidth() const;
/// Returns the current line width.
void setLineWidth(float width);
/// Sets the line width.
LineCap getLineCap() const;
/// Returns the current line cap.
void setLineCap(LineCap cap) const;
/// Sets the line cap.
LineJoin getLineJoin() const;
/// Returns the current line join.
void setLineJoin(LineJoin join) const;
/// Returns the current line join.
float getMiterLimit() const;
/// Returns the current miter limit.
void setMiterLimit(float limit) const;
/// Sets the miter limit.
DashMode getDashMode() const;
/// Returns current dash mode.
void setDashMode(const PatternVec& pattern, int paramNo, int phase) const;
/// Sets teh dash mode.
float getFlatness() const;
/// Returns the current flatness.
float getCharSpace() const;
/// Returns the current character space.
void setCharSpace(float value);
/// Sets the current character space.
float getWordSpace() const;
/// Returns the current word space.
void setWordSpace(float value);
/// Sets the current word space.
float getHorizontalScale() const;
/// Returns the current horizontal scaling.
void setHorizontalScale(float value);
/// Sets the current horizontal scaling.
float getTextLead() const;
/// Returns the current text leading.
void setTextLead(float value);
/// Sets the current text leading.
RenderMode getTextRenderMode() const;
/// Returns the current text rendering mode.
void setTextRenderMode(RenderMode value);
/// Sets the current text rendering mode.
float getTextRise() const;
/// Returns the current text leading.
void setTextRise(float value);
/// Sets the current text leading.
RGBColor getRGBFill() const;
/// Returns current RGB fill.
void setRGBFill(RGBColor value);
/// Sets current RGB fill.
RGBColor getRGBStroke() const;
/// Returns current RGB stroke.
void setRGBStroke(RGBColor value);
/// Sets current RGB stroke.
CMYKColor getCMYKFill() const;
/// Returns current CMYK fill.
void setCMYKFill(CMYKColor value);
/// Sets current CMYK fill.
CMYKColor getCMYKStroke() const;
/// Returns current CMYK stroke.
void setCMYKStroke(CMYKColor value);
/// Returns current CMYK stroke.
float getGreyFill() const;
/// Returns current grey fill.
void setGreyFill(float value);
/// Sets current grey fill.
float getGreyStroke() const;
/// Returns current grey stroke.
void setGreyStroke(float value);
/// Sets current grey stroke.
ColorSpace getStrokeColorSpace() const;
/// Returns current stroking color space.
ColorSpace getFillColorSpace() const;
/// Returns current filling color space.
void setSlideShow(TransitionStyle type, float displayTime, float transitionTime);
/// Configures the setting for slide transition of the page
private:
Page();
Document* _pDocument;
HPDF_Page _page;
Size _size;
Orientation _orientation;
DestinationContainer _destinations;
TextAnnotationContainer _textAnnotations;
LinkAnnotationContainer _linkAnnotations;
mutable Font* _pCurrentFont;
};
//
// inlines
//
inline Page::operator const Page::Type& () const
{
return _page;
}
inline void Page::setWidth(float value)
{
HPDF_Page_SetWidth(_page, value);
}
inline float Page::getWidth() const
{
return HPDF_Page_GetWidth(_page);
}
inline void Page::setHeight(float value)
{
HPDF_Page_SetHeight(_page, value);
}
inline float Page::getHeight() const
{
return HPDF_Page_GetHeight(_page);
}
inline void Page::setSizeAndOrientation(Size size, Orientation orientation)
{
_size = size;
_orientation = orientation;
HPDF_Page_SetSize(_page, static_cast<HPDF_PageSizes>(size), static_cast<HPDF_PageDirection>(orientation));
}
inline void Page::setSize(Size size)
{
_size = size;
HPDF_Page_SetSize(_page, static_cast<HPDF_PageSizes>(size), static_cast<HPDF_PageDirection>(_orientation));
}
inline void Page::setOrientation(Orientation orientation)
{
_orientation = orientation;
HPDF_Page_SetSize(_page, static_cast<HPDF_PageSizes>(_size), static_cast<HPDF_PageDirection>(orientation));
}
inline Page::Size Page::getSize() const
{
return _size;
}
inline Page::Orientation Page::getOrientation() const
{
return _orientation;
}
inline void Page::setFont(const Font& font, float size)
{
HPDF_Page_SetFontAndSize(_page, font, size);
}
inline int Page::getGraphicsMode() const
{
return HPDF_Page_GetGMode(_page);
}
inline int Page::getGraphicStateDepth() const
{
return HPDF_Page_GetGStateDepth(_page);
}
inline void Page::setExtGraphicsState(ExtGraphicsState state)
{
HPDF_Page_SetExtGState(_page, state);
}
inline void Page::saveGraphics()
{
HPDF_Page_GSave(_page);
}
inline void Page::restoreGraphics()
{
HPDF_Page_GRestore(_page);
}
inline void Page::concatenate(const std::vector<float>& values)
{
if (values.size() < 6)
throw InvalidArgumentException("Needs six values");
HPDF_Page_Concat(_page,
values[0],
values[1],
values[2],
values[3],
values[4],
values[5]);
}
inline void Page::moveTo(float x, float y)
{
HPDF_Page_MoveTo(_page, x, y);
}
inline void Page::lineTo(float x, float y)
{
HPDF_Page_LineTo(_page, x, y);
}
inline void Page::curveTo(const std::vector<float>& values)
{
if (values.size() < 6)
throw InvalidArgumentException("Needs six values");
HPDF_Page_CurveTo(_page,
values[0],
values[1],
values[2],
values[3],
values[4],
values[5]);
}
inline void Page::curveToRight(float x2, float y2, float x3, float y3)
{
HPDF_Page_CurveTo2(_page, x2, y2, x3, y3);
}
inline void Page::curveToLeft(float x2, float y2, float x3, float y3)
{
HPDF_Page_CurveTo3(_page, x2, y2, x3, y3);
}
inline void Page::closePath()
{
HPDF_Page_ClosePath(_page);
}
inline void Page::rectangle(float x, float y, float width, float height)
{
HPDF_Page_Rectangle(_page, x, y, width, height);
}
inline void Page::stroke()
{
HPDF_Page_Stroke(_page);
}
inline void Page::closeAndStroke()
{
HPDF_Page_ClosePathStroke(_page);
}
inline void Page::fill()
{
HPDF_Page_Fill(_page);
}
inline void Page::EOFill()
{
HPDF_Page_Eofill(_page);
}
inline void Page::fillStroke()
{
HPDF_Page_FillStroke(_page);
}
inline void Page::EOFillStroke()
{
HPDF_Page_EofillStroke(_page);
}
inline void Page::closeFillAndStroke()
{
HPDF_Page_ClosePathFillStroke(_page);
}
inline void Page::closeFillAndEOStroke()
{
HPDF_Page_ClosePathEofillStroke(_page);
}
inline void Page::endPath()
{
HPDF_Page_EndPath(_page);
}
inline void Page::clip()
{
HPDF_Page_Clip(_page);
}
inline void Page::eoClip()
{
HPDF_Page_Eoclip(_page);
}
inline Point Page::getPos() const
{
return HPDF_Page_GetCurrentPos(_page);
}
inline Point Page::getTextPos() const
{
return HPDF_Page_GetCurrentTextPos(_page);
}
inline void Page::moveTextPos(float x, float y)
{
HPDF_Page_MoveTextPos(_page, x, y);
}
inline void Page::moveTextNextLine(float x, float y)
{
HPDF_Page_MoveTextPos2(_page, x, y);
}
inline void Page::moveTextNextLine()
{
HPDF_Page_MoveToNextLine(_page);
}
inline float Page::getFontSize() const
{
return HPDF_Page_GetCurrentFontSize(_page);
}
inline TransMatrix Page::getTransMatrix() const
{
return HPDF_Page_GetTransMatrix(_page);
}
inline TransMatrix Page::getTextMatrix() const
{
return HPDF_Page_GetTextMatrix(_page);
}
inline float Page::getLineWidth() const
{
return HPDF_Page_GetLineWidth(_page);
}
inline void Page::setLineWidth(float width)
{
HPDF_Page_SetLineWidth(_page, width);
}
inline LineCap Page::getLineCap() const
{
return HPDF_Page_GetLineCap(_page);
}
inline void Page::setLineCap(LineCap cap) const
{
HPDF_Page_SetLineCap(_page, cap);
}
inline LineJoin Page::getLineJoin() const
{
return HPDF_Page_GetLineJoin(_page);
}
inline void Page::setLineJoin(LineJoin join) const
{
HPDF_Page_SetLineJoin(_page, join);
}
inline float Page::getMiterLimit() const
{
return HPDF_Page_GetMiterLimit(_page);
}
inline void Page::setMiterLimit(float limit) const
{
HPDF_Page_SetMiterLimit(_page, limit);
}
inline DashMode Page::getDashMode() const
{
return HPDF_Page_GetDash(_page);
}
inline void Page::setDashMode(const PatternVec& pattern, int paramNo, int phase) const
{
HPDF_Page_SetDash(_page, &pattern[0],
static_cast<HPDF_UINT>(paramNo),
static_cast<HPDF_UINT>(phase));
}
inline float Page::getFlatness() const
{
return HPDF_Page_GetFlat(_page);
}
inline float Page::getCharSpace() const
{
return HPDF_Page_GetCharSpace(_page);
}
inline void Page::setCharSpace(float value)
{
HPDF_Page_SetCharSpace(_page, value);
}
inline float Page::getWordSpace() const
{
return HPDF_Page_GetWordSpace(_page);
}
inline void Page::setWordSpace(float value)
{
HPDF_Page_SetWordSpace(_page, value);
}
inline float Page::getHorizontalScale() const
{
return HPDF_Page_GetHorizontalScalling(_page);
}
inline void Page::setHorizontalScale(float value)
{
HPDF_Page_SetHorizontalScalling(_page, value);
}
inline float Page::getTextLead() const
{
return HPDF_Page_GetTextLeading(_page);
}
inline void Page::setTextLead(float value)
{
HPDF_Page_SetTextLeading(_page, value);
}
inline Page::RenderMode Page::getTextRenderMode() const
{
return static_cast<RenderMode>(HPDF_Page_GetTextRenderingMode(_page));
}
inline void Page::setTextRenderMode(RenderMode value)
{
HPDF_Page_SetTextRenderingMode(_page, static_cast<HPDF_TextRenderingMode>(value));
}
inline float Page::getTextRise() const
{
return HPDF_Page_GetTextRise(_page);
}
inline void Page::setTextRise(float value)
{
HPDF_Page_SetTextRise(_page, value);
}
inline RGBColor Page::getRGBFill() const
{
return HPDF_Page_GetRGBFill(_page);
}
inline void Page::setRGBFill(RGBColor value)
{
HPDF_Page_SetRGBFill(_page, value.r, value.g, value.b);
}
inline RGBColor Page::getRGBStroke() const
{
return HPDF_Page_GetRGBStroke(_page);
}
inline void Page::setRGBStroke(RGBColor value)
{
HPDF_Page_SetRGBStroke(_page, value.r, value.g, value.b);
}
inline CMYKColor Page::getCMYKFill() const
{
return HPDF_Page_GetCMYKFill(_page);
}
inline void Page::setCMYKFill(CMYKColor value)
{
HPDF_Page_SetCMYKFill(_page, value.c, value.m, value.y, value.k);
}
inline CMYKColor Page::getCMYKStroke() const
{
return HPDF_Page_GetCMYKStroke(_page);
}
inline void Page::setCMYKStroke(CMYKColor value)
{
HPDF_Page_SetCMYKStroke(_page, value.c, value.m, value.y, value.k);
}
inline float Page::getGreyFill() const
{
return HPDF_Page_GetGrayFill(_page);
}
inline void Page::setGreyFill(float value)
{
HPDF_Page_SetGrayFill(_page, value);
}
inline float Page::getGreyStroke() const
{
return HPDF_Page_GetGrayStroke(_page);
}
inline void Page::setGreyStroke(float value)
{
HPDF_Page_SetGrayStroke(_page, value);
}
inline Page::ColorSpace Page::getStrokeColorSpace() const
{
return static_cast<ColorSpace>(HPDF_Page_GetStrokingColorSpace(_page));
}
inline Page::ColorSpace Page::getFillColorSpace() const
{
return static_cast<ColorSpace>(HPDF_Page_GetFillingColorSpace(_page));
}
inline void Page::setSlideShow(TransitionStyle type, float displayTime, float transitionTime)
{
HPDF_Page_SetSlideShow(_page,
static_cast<HPDF_TransitionStyle>(type),
displayTime,
transitionTime);
}
inline void Page::beginText()
{
HPDF_Page_BeginText(_page);
}
inline void Page::endText()
{
HPDF_Page_EndText(_page);
}
inline void Page::write(float xPos, float yPos, const std::string& text)
{
HPDF_Page_TextOut(_page, xPos, yPos, text.c_str());
}
inline void Page::write(const std::string& text)
{
HPDF_Page_ShowText(_page, text.c_str());
}
inline void Page::writeNextLine(const std::string& text)
{
HPDF_Page_ShowTextNextLine(_page, text.c_str());
}
inline void Page::writeNextLineEx(float wordSpace, float charSpace, const std::string& text)
{
HPDF_Page_ShowTextNextLineEx(_page, wordSpace, charSpace, text.c_str());
}
inline int Page::writeInRectangle(float left,
float top,
float right,
float bottom,
const std::string& text,
TextAlignment align)
{
HPDF_UINT ret = 0;
HPDF_Page_TextRect(_page,
left,
top,
right,
bottom,
text.c_str(),
static_cast<HPDF_TextAlignment>(align),
&ret);
return static_cast<int>(ret);
}
inline void Page::drawImage(Image image, float x, float y, float width, float height)
{
HPDF_Page_DrawImage(_page, image, x, y, width, height);
}
inline void Page::circle(float x, float y, float radius)
{
HPDF_Page_Circle(_page, x, y, radius);
}
inline void Page::arc(float x, float y, float radius, float beginAngle, float endAngle)
{
HPDF_Page_Arc(_page, x, y, radius, beginAngle, endAngle);
}
inline void Page::ellipse(float x, float y, float xRadius, float yRadius)
{
HPDF_Page_Ellipse(_page, x, y, xRadius, yRadius);
}
} } // namespace Poco::PDF
#endif // PDF_Page_INCLUDED