summaryrefslogtreecommitdiff
path: root/public/fpdf_edit.h
diff options
context:
space:
mode:
authorNicolas Pena <npm@chromium.org>2017-02-07 14:59:23 -0500
committerChromium commit bot <commit-bot@chromium.org>2017-02-07 20:47:07 +0000
commit55e026b7b6eec17b012c819c4a7d39e63094b5c4 (patch)
tree5dfdf3759f9d13a87dab2bfd354aaa6342728716 /public/fpdf_edit.h
parent79365f7e3d2d62138e79e4403d4959318776c139 (diff)
downloadpdfium-55e026b7b6eec17b012c819c4a7d39e63094b5c4.tar.xz
Add APIs for path construction and paintingchromium/3006
Added methods to create paths, set their colors, determine whether they will be stroked and/or filled. FPDFPage_InsertObject should be used to add a path to a page. BUG=pdfium:661 Change-Id: I8fd17b33a09c5126e517bfd1a69a893216c160e8 Reviewed-on: https://pdfium-review.googlesource.com/2534 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Nicolás Peña <npm@chromium.org>
Diffstat (limited to 'public/fpdf_edit.h')
-rw-r--r--public/fpdf_edit.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index 640d97ed05..d151c5c6ab 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -27,6 +27,9 @@
#define FPDF_PAGEOBJ_SHADING 4
#define FPDF_PAGEOBJ_FORM 5
+#define FPDF_FILLMODE_ALTERNATE 1
+#define FPDF_FILLMODE_WINDING 2
+
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
@@ -260,6 +263,121 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,
FPDF_PAGEOBJECT image_object,
FPDF_BITMAP bitmap);
+// Create a new path object at an initial position.
+//
+// x - initial horizontal position.
+// y - initial vertical position.
+//
+// Returns a handle to a new path object.
+DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_CreateNewPath(float x, float y);
+
+// Create a closed path consisting of a rectangle.
+//
+// x - horizontal position for the left boundary of the rectangle.
+// y - vertical position for the bottom boundary of the rectangle.
+// w - width of the rectangle.
+// h - height of the rectangle.
+//
+// Returns a handle to the new path object.
+DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_CreateNewRect(float x,
+ float y,
+ float w,
+ float h);
+
+// Set the stroke RGBA of a path. Range of values: 0 - 255.
+//
+// path - the handle to the path object.
+// R - the red component for the path stroke color.
+// G - the green component for the path stroke color.
+// B - the blue component for the path stroke color.
+// A - the stroke alpha for the path.
+//
+// Returns TRUE on success.
+DLLEXPORT FPDF_BOOL FPDFPath_SetStrokeColor(FPDF_PAGEOBJECT path,
+ unsigned int R,
+ unsigned int G,
+ unsigned int B,
+ unsigned int A);
+
+// Set the fill RGBA of a path. Range of values: 0 - 255.
+//
+// path - the handle to the path object.
+// R - the red component for the path fill color.
+// G - the green component for the path fill color.
+// B - the blue component for the path fill color.
+// A - the fill alpha for the path.
+//
+// Returns TRUE on success.
+DLLEXPORT FPDF_BOOL FPDFPath_SetFillColor(FPDF_PAGEOBJECT path,
+ unsigned int R,
+ unsigned int G,
+ unsigned int B,
+ unsigned int A);
+
+// Move a path's current point.
+//
+// path - the handle to the path object.
+// x - the horizontal position of the new current point.
+// y - the vertical position of the new current point.
+//
+// Note that no line will be created between the previous current point and the
+// new one.
+//
+// Returns TRUE on success
+DLLEXPORT FPDF_BOOL FPDFPath_MoveTo(FPDF_PAGEOBJECT path, float x, float y);
+
+// Add a line between the current point and a new point in the path.
+//
+// path - the handle to the path object.
+// x - the horizontal position of the new point.
+// y - the vertical position of the new point.
+//
+// The path's current point is changed to (x, y).
+//
+// Returns TRUE on success
+DLLEXPORT FPDF_BOOL FPDFPath_LineTo(FPDF_PAGEOBJECT path, float x, float y);
+
+// Add a cubic Bezier curve to the given path, starting at the current point.
+//
+// path - the handle to the path object.
+// x1 - the horizontal position of the first Bezier control point.
+// y1 - the vertical position of the first Bezier control point.
+// x2 - the horizontal position of the second Bezier control point.
+// y2 - the vertical position of the second Bezier control point.
+// x3 - the horizontal position of the ending point of the Bezier curve.
+// y3 - the vertical position of the ending point of the Bezier curve.
+//
+// Returns TRUE on success
+DLLEXPORT FPDF_BOOL FPDFPath_BezierTo(FPDF_PAGEOBJECT path,
+ float x1,
+ float y1,
+ float x2,
+ float y2,
+ float x3,
+ float y3);
+
+// Close the current subpath of a given path.
+//
+// path - the handle to the path object.
+//
+// This will add a line between the current point and the initial point of the
+// subpath, thus terminating the current subpath.
+//
+// Returns TRUE on success
+DLLEXPORT FPDF_BOOL FPDFPath_Close(FPDF_PAGEOBJECT path);
+
+// Set the drawing mode of a path.
+//
+// path - the handle to the path object.
+// fillmode - the filling mode to be set: 0 for no fill, 1 for alternate, 2 for
+// winding.
+// stroke - a boolean specifying if the path should be stroked or not.
+//
+// Returns TRUE on success
+DLLEXPORT FPDF_BOOL FPDFPath_SetDrawMode(FPDF_PAGEOBJECT path,
+ int fillmode,
+ FPDF_BOOL stroke);
+
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus