![]() |
#include <Element.h>
Public Types | |
enum | Type { e_null, e_path, e_text_begin, e_text, e_text_new_line, e_text_end, e_image, e_inline_image, e_shading, e_form, e_group_begin, e_group_end, e_marked_content_begin, e_marked_content_end, e_marked_content_point } |
enum | PathSegmentType { e_moveto = 1, e_lineto, e_cubicto, e_conicto, e_rect, e_closepath } |
Public Member Functions | |
Element () | |
Element (const Element &c) | |
Element & | operator= (const Element &c) |
operator bool () | |
Type | GetType () |
GState | GetGState () |
Common::Matrix2D | GetCTM () |
bool | GetBBox (Rect &out_bbox) |
Obtains the bounding box for a graphical element. | |
Struct::SElement | GetParentStructElement () |
int | GetStructMCID () |
bool | IsOCVisible () |
bool | IsClippingPath () |
bool | IsStroked () |
bool | IsFilled () |
bool | IsWindingFill () |
bool | IsClipWindingFill () |
const char * | GetPathTypes () |
Returns this path's array of path segment types. | |
int | GetPathTypesCount () |
const double * | GetPathPoints () |
Returns the array of points stored by the Path element. | |
int | GetPointCount () |
void | SetPathClip (bool clip) |
Indicate whether the path is a clipping path or non-clipping path. | |
void | SetPathStroke (bool stroke) |
Indicate whether the path should be stroked. | |
void | SetPathFill (bool fill) |
Indicate whether the path should be filled. | |
void | SetWindingFill (bool winding_rule) |
Sets path's fill rule. | |
void | SetClipWindingFill (bool winding_rule) |
Sets clipping path's fill rule. | |
void | SetPathPoints (const double *in_points, int count) |
Sets the array of points stored by the Path element. | |
void | SetPathTypes (const char *in_seg_types, int count) |
Sets this path's array of path segment types. | |
SDF::Obj | GetXObject () |
Filters::Filter | GetImageData () const |
int | GetImageDataSize () const |
Gdiplus::Bitmap * | GetBitmap () const |
Convert PDF image to GDI+ Bitmap. | |
ColorSpace | GetImageColorSpace () const |
int | GetImageWidth () const |
int | GetImageHeight () const |
SDF::Obj | GetDecodeArray () const |
int | GetBitsPerComponent () const |
int | GetComponentNum () const |
bool | IsImageMask () const |
bool | IsImageInterpolate () const |
SDF::Obj | GetMask () const |
GState::RenderingIntent | GetImageRenderingIntent () const |
const UString * | GetTextString () |
const UChar * | GetTextData () |
UInt32 | GetTextDataSize () |
Common::Matrix2D | GetTextMatrix () |
CharIterator | GetCharIterator () |
double | GetTextLength () |
double | GetPosAdjustment () |
void | GetNewTextLineOffset (double &out_x, double &out_y) |
Returns the offset (out_x, out_y) to the start of the current line relative to the beginning of the previous line. | |
bool | HasTextMatrix () |
void | SetTextData (const UChar *text_data, int text_data_size) |
Set the text data for the current e_text Element. | |
void | SetTextMatrix (Common::Matrix2D &mtx) |
Sets the text matrix for a text element. | |
void | SetTextMatrix (double a, double b, double c, double d, double h, double v) |
Sets the text matrix for a text element. | |
void | SetPosAdjustment (double adjust) |
void | UpdateTextMetrics () |
Recompute the character positioning information (i.e. | |
void | SetNewTextLineOffset (double dx, double dy) |
Sets the offset (dx, dy) to the start of the current line relative to the beginning of the previous line. | |
Shading | GetShading () |
SDF::Obj | GetMCPropertyDict () |
SDF::Obj | GetMCTag () |
~Element () |
Just like many other classes in PDFNet (e.g. ColorSpace, Font, Annot, etc), Element class follows the composite design pattern. This means that all Elements are accessed through the same interface, but depending on the Element type (that can be obtained using GetType()), only methods related to that type can be called. For example, if GetType() returns e_image, it is illegal to call a method specific to another Element type (i.e. a call to a text specific GetTextData() will throw an Exception).
pdftron::PDF::Element::Element | ( | ) |
pdftron::PDF::Element::Element | ( | const Element & | c | ) |
pdftron::PDF::Element::~Element | ( | ) | [inline] |
pdftron::PDF::Element::operator bool | ( | ) | [inline] |
Type pdftron::PDF::Element::GetType | ( | ) |
Common::Matrix2D pdftron::PDF::Element::GetCTM | ( | ) |
bool pdftron::PDF::Element::GetBBox | ( | Rect & | out_bbox | ) |
Obtains the bounding box for a graphical element.
Calculates the bounding box for a graphical element (i.e. an Element that belongs to one of following types: e_path, e_text, e_image, e_inline_image, e_shading e_form). The returned bounding box is guaranteed to encompass the Element, but is not guaranteed to be the smallest box that could contain the element. For example, for Bezier curves the bounding box will enclose all control points, not just the curve itself.
out_bbox | (Filled by the method) A reference to a rectangle specifying the bounding box of Element (a rectangle that surrounds the entire element). The coordinates are represented in the default PDF page coordinate system and are using units called points ( 1 point = 1/72 inch = 2.54 /72 centimeter). The bounding box already accounts for the effects of current transformation matrix (CTM), text matrix, font size, and other properties in the graphics state. If this is a non-graphical element (i.e. the method returns false) the bounding box is undefined. |
Struct::SElement pdftron::PDF::Element::GetParentStructElement | ( | ) |
int pdftron::PDF::Element::GetStructMCID | ( | ) |
bool pdftron::PDF::Element::IsOCVisible | ( | ) |
bool pdftron::PDF::Element::IsClippingPath | ( | ) |
bool pdftron::PDF::Element::IsStroked | ( | ) |
bool pdftron::PDF::Element::IsFilled | ( | ) |
bool pdftron::PDF::Element::IsWindingFill | ( | ) |
According to even-odd rule, you can determine whether a test point is inside or outside a closed curve as follows: Draw a line from the test point to a point that is distant from the curve. If that line crosses the curve an odd number of times, the test point is inside the curve; otherwise, the test point is outside the curve.
bool pdftron::PDF::Element::IsClipWindingFill | ( | ) |
const char* pdftron::PDF::Element::GetPathTypes | ( | ) |
Returns this path's array of path segment types.
int pdftron::PDF::Element::GetPathTypesCount | ( | ) |
const double* pdftron::PDF::Element::GetPathPoints | ( | ) |
Returns the array of points stored by the Path element.
int pdftron::PDF::Element::GetPointCount | ( | ) |
void pdftron::PDF::Element::SetPathClip | ( | bool | clip | ) |
Indicate whether the path is a clipping path or non-clipping path.
void pdftron::PDF::Element::SetPathStroke | ( | bool | stroke | ) |
Indicate whether the path should be stroked.
void pdftron::PDF::Element::SetPathFill | ( | bool | fill | ) |
Indicate whether the path should be filled.
void pdftron::PDF::Element::SetWindingFill | ( | bool | winding_rule | ) |
Sets path's fill rule.
winding_rule | if winding_rule is true path will be filled using non-zero winding fill rule, otherwise even-odd fill will be used. |
void pdftron::PDF::Element::SetClipWindingFill | ( | bool | winding_rule | ) |
Sets clipping path's fill rule.
winding_rule | if winding_rule is true clipping should use non-zero winding rule, or false for even-odd rule. |
void pdftron::PDF::Element::SetPathPoints | ( | const double * | in_points, | |
int | count | |||
) |
Sets the array of points stored by the Path element.
in_points | an array containing the path data points. A point may be on or off (i.e. off points are control points). The meaning of a point depends on associated id (or segment type) in the path segment type array. | |
count | the size of the array of doubles. |
void pdftron::PDF::Element::SetPathTypes | ( | const char * | in_seg_types, | |
int | count | |||
) |
Sets this path's array of path segment types.
in_seg_types | an array of PathSegmentType identifiers used to identify path data points that are set using SetPathPoints(). | |
count | the size of in_seg_types array. |
Filters::Filter pdftron::PDF::Element::GetImageData | ( | ) | const |
int pdftron::PDF::Element::GetImageDataSize | ( | ) | const |
Gdiplus::Bitmap* pdftron::PDF::Element::GetBitmap | ( | ) | const |
Convert PDF image to GDI+ Bitmap.
ColorSpace pdftron::PDF::Element::GetImageColorSpace | ( | ) | const |
int pdftron::PDF::Element::GetImageWidth | ( | ) | const |
int pdftron::PDF::Element::GetImageHeight | ( | ) | const |
SDF::Obj pdftron::PDF::Element::GetDecodeArray | ( | ) | const |
int pdftron::PDF::Element::GetBitsPerComponent | ( | ) | const |
int pdftron::PDF::Element::GetComponentNum | ( | ) | const |
bool pdftron::PDF::Element::IsImageMask | ( | ) | const |
bool pdftron::PDF::Element::IsImageInterpolate | ( | ) | const |
SDF::Obj pdftron::PDF::Element::GetMask | ( | ) | const |
GState::RenderingIntent pdftron::PDF::Element::GetImageRenderingIntent | ( | ) | const |
const UString* pdftron::PDF::Element::GetTextString | ( | ) |
If you would like to map raw text to Unicode (or some other encoding) yourself use CharIterators returned by CharBegin()/CharEnd() and PDF::Font code mapping methods.
The string owner is the current element (i.e. ElementReader or ElementBuilder).
const UChar* pdftron::PDF::Element::GetTextData | ( | ) |
Most of the time GetTextString() is what you are looking for instead. GetTextString() maps the raw text directly into Unicode (as specified by Adobe Glyph List (AGL) ). Even if you would prefer to decode text yourself it is more convenient to use CharIterators returned by CharBegin()/CharEnd() and PDF::Font code mapping methods.
the buffer owner is the current element (i.e. ElementReader or ElementBuilder).
UInt32 pdftron::PDF::Element::GetTextDataSize | ( | ) |
Common::Matrix2D pdftron::PDF::Element::GetTextMatrix | ( | ) |
CharIterator pdftron::PDF::Element::GetCharIterator | ( | ) |
for (CharIterator itr = element.GetCharIterator(); itr.HasNext(); itr.Next()) { unsigned int char_code = itr.Current().char_code; double char_pos_x = itr.Current().x; double char_pos_y = itr.Current().y; }
within a text run a character may occupy more than a single byte (e.g. in case of composite/Type0 fonts). The role of CharIterator/CharData is to provide a uniform and easy to use interface to access character information.
double pdftron::PDF::Element::GetTextLength | ( | ) |
double pdftron::PDF::Element::GetPosAdjustment | ( | ) |
void pdftron::PDF::Element::GetNewTextLineOffset | ( | double & | out_x, | |
double & | out_y | |||
) |
Returns the offset (out_x, out_y) to the start of the current line relative to the beginning of the previous line.
out_x and out_y are numbers expressed in unscaled text space units. The returned numbers correspond to the arguments of 'Td' operator.
bool pdftron::PDF::Element::HasTextMatrix | ( | ) |
void pdftron::PDF::Element::SetTextData | ( | const UChar * | text_data, | |
int | text_data_size | |||
) |
Set the text data for the current e_text Element.
text_data | a pointer to a buffer containing text. | |
text_data_size | the size of the internal text buffer |
void pdftron::PDF::Element::SetTextMatrix | ( | Common::Matrix2D & | mtx | ) |
Sets the text matrix for a text element.
mtx | The new text matrix for this text element |
void pdftron::PDF::Element::SetTextMatrix | ( | double | a, | |
double | b, | |||
double | c, | |||
double | d, | |||
double | h, | |||
double | v | |||
) |
Sets the text matrix for a text element.
This method accepts text transformation matrix components directly.
A transformation matrix in PDF is specified by six numbers, usually in the form of an array containing six elements. In its most general form, this array is denoted [a b c d h v]; it can represent any linear transformation from one coordinate system to another. For more information about PDF matrices please refer to section 4.2.2 'Common Transformations' in PDF Reference Manual, and to documentation for Matrix2D class.
a | - horizontal 'scaling' component of the new text matrix. | |
b | - 'rotation' component of the new text matrix. | |
c | - 'rotation' component of the new text matrix. | |
d | - vertical 'scaling' component of the new text matrix. | |
h | - horizontal translation component of the new text matrix. | |
v | - vertical translation component of the new text matrix. |
void pdftron::PDF::Element::SetPosAdjustment | ( | double | adjust | ) |
void pdftron::PDF::Element::UpdateTextMetrics | ( | ) |
Recompute the character positioning information (i.e.
CharIterator-s) and text length.
Element objects caches text length and character positioning information. If the user modifies the text data or graphics state the cached information is not correct. UpdateTextMetrics() can be used to recalculate the correct positioning and length information.
void pdftron::PDF::Element::SetNewTextLineOffset | ( | double | dx, | |
double | dy | |||
) |
Sets the offset (dx, dy) to the start of the current line relative to the beginning of the previous line.
SDF::Obj pdftron::PDF::Element::GetMCPropertyDict | ( | ) |
SDF::Obj pdftron::PDF::Element::GetMCTag | ( | ) |