Xojo Conferences

MBS | Oct | 2019 | Cologne | DE |

DynaPDF Manual - Page 160

Previous Page 159 Index Next Page 161

Function Reference

Page 160 of 767

Bezier_1_2_3

Syntax:

SI32 pdfBezier_1_2_3(

const PPDF* IPDF, // Instance pointer

double x1,

// X-Coordinate of the first control point P1

double y1,

// Y-Coordinate of the first control point P1

double x2,

// X-Coordinate of the second control point P2

double y2,

// Y-Coordinate of the second control point P2

double x3,

// X-Coordinate of the end point P3

double y3)

// Y-Coordinate of the end point P3

Curved path segments are specified as cubic Bézier curves. Such curves are defined by four points:

the two endpoints (the current point P0 and the final point P3) and two control points P1 and P2.

Given the coordinates of the four points, the curve is generated by varying the parameter t from 0.0

to 1.0 in the following equation:

R(t) = (1 - t)³ P0 + 3t(1 - t)² P1+ 3t² (1 - t) P2 + t³ P3

When t = 0.0, the value of the function R(t) coincides with the current point P0; when t = 1.0, R(t)

coincides with the final point P3. Intermediate values of t generate intermediate points along the

curve. The curve does not, in general, pass through the two control points P1 and P2. Cubic Bézier

curves have two desirable properties:

• The curve can be very quickly split into smaller pieces for rapid rendering.

• The curve is contained within the convex hull of the four points defining the curve, most

easily visualized as the polygon obtained by stretching a rubber band around the outside of

the four points. This property allows rapid testing of whether the curve lies completely

outside the visible region, and hence does not have to be rendered.

The most general type of curve in PDF is the cubic Bézier curve with two control points. The starting

point P0 is the current point that was set before by a painting operator (MoveTo(), LineTo() and so

on). PDF also supports two other Bézier curves with only one control point (see Bezier_1_3() and

Bezier_2_3()). Theses two curve types are rarely used but still supported by all Acrobat versions incl.

DynaPDF.

As mentioned earlier the function requires a start point that must be set with MoveTo() or another

painting operator beforehand. Once the start point was set, multiple curve segments can be drawn to

build circles, ellipses or other curved paths. The DynaPDF functions DrawArc(), DrawCircle(),

Ellipse() and so on use all Bezier_1_2_3() to construct the path.

Return values:

If the function succeeds the return value is 1. If the function fails the return value is 0.

Previous topic: Bezier_1_2_3

Next topic: BuildFamilyNameAndStyle