Documentation ¶
Overview ¶
The draw package has handy features for defining paths which can be used to draw content on a PDF page. Handles defining paths as points, vector calculations and conversion to PDF content stream data which can be used in page content streams and XObject forms and thus also in annotation appearance streams.
Also defines utility functions for drawing common shapes such as rectangles, lines and circles (ovals).
Index ¶
- func DrawBezierPathWithCreator(bpath CubicBezierPath, creator *pdfcontent.ContentCreator)
- func DrawPathWithCreator(path Path, creator *pdfcontent.ContentCreator)
- type BoundingBox
- type Circle
- type CubicBezierCurve
- type CubicBezierPath
- type Line
- type LineEndingStyle
- type Path
- type Point
- type Rectangle
- type Vector
- func (v Vector) Add(other Vector) Vector
- func (this Vector) Flip() Vector
- func (v Vector) FlipX() Vector
- func (v Vector) FlipY() Vector
- func (this Vector) GetPolarAngle() float64
- func (this Vector) Magnitude() float64
- func (v Vector) Rotate(phi float64) Vector
- func (this Vector) Scale(factor float64) Vector
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DrawBezierPathWithCreator ¶
func DrawBezierPathWithCreator(bpath CubicBezierPath, creator *pdfcontent.ContentCreator)
Make the bezier path with the content creator. Adds the PDF commands to draw the path to the creator instance.
func DrawPathWithCreator ¶
func DrawPathWithCreator(path Path, creator *pdfcontent.ContentCreator)
Make the path with the content creator. Adds the PDF commands to draw the path to the creator instance.
Types ¶
type Circle ¶
type CubicBezierCurve ¶
type CubicBezierCurve struct { P0 Point // Starting point. P1 Point // Control point 1. P2 Point // Control point 2. P3 Point // Final point. }
Cubic bezier curves are defined by: R(t) = P0*(1-t)^3 + P1*3*t*(1-t)^2 + P2*3*t^2*(1-t) + P3*t^3 where P0 is the current point, P1, P2 control points and P3 the final point.
func NewCubicBezierCurve ¶
func NewCubicBezierCurve(x0, y0, x1, y1, x2, y2, x3, y3 float64) CubicBezierCurve
func (CubicBezierCurve) AddOffsetXY ¶
func (curve CubicBezierCurve) AddOffsetXY(offX, offY float64) CubicBezierCurve
Add X,Y offset to all points on a curve.
func (CubicBezierCurve) GetBounds ¶
func (curve CubicBezierCurve) GetBounds() model.PdfRectangle
type CubicBezierPath ¶
type CubicBezierPath struct {
Curves []CubicBezierCurve
}
func NewCubicBezierPath ¶
func NewCubicBezierPath() CubicBezierPath
func (CubicBezierPath) AppendCurve ¶
func (this CubicBezierPath) AppendCurve(curve CubicBezierCurve) CubicBezierPath
func (CubicBezierPath) Copy ¶
func (bpath CubicBezierPath) Copy() CubicBezierPath
func (CubicBezierPath) GetBoundingBox ¶
func (bpath CubicBezierPath) GetBoundingBox() Rectangle
func (CubicBezierPath) Offset ¶
func (bpath CubicBezierPath) Offset(offX, offY float64) CubicBezierPath
type Line ¶
type Line struct { X1 float64 Y1 float64 X2 float64 Y2 float64 LineColor *pdf.PdfColorDeviceRGB Opacity float64 // Alpha value (0-1). LineWidth float64 LineEndingStyle1 LineEndingStyle // Line ending style of point 1. LineEndingStyle2 LineEndingStyle // Line ending style of point 2. }
Defines a line between point 1 (X1,Y1) and point 2 (X2,Y2). The line ending styles can be none (regular line), or arrows at either end. The line also has a specified width, color and opacity.
type LineEndingStyle ¶
type LineEndingStyle int
The currently supported line ending styles are None, Arrow (ClosedArrow) and Butt.
const ( LineEndingStyleNone LineEndingStyle = 0 LineEndingStyleArrow LineEndingStyle = 1 LineEndingStyleButt LineEndingStyle = 2 )
type Path ¶
type Path struct {
Points []Point
}
A path consists of straight line connections between each point defined in an array of points.
func (Path) AppendPoint ¶
func (Path) GetBoundingBox ¶
func (path Path) GetBoundingBox() BoundingBox
func (Path) GetPointNumber ¶
func (Path) RemovePoint ¶
type Rectangle ¶
type Rectangle struct { X float64 Y float64 Width float64 Height float64 FillEnabled bool // Show fill? FillColor *pdf.PdfColorDeviceRGB BorderEnabled bool // Show border? BorderWidth float64 BorderColor *pdf.PdfColorDeviceRGB Opacity float64 // Alpha value (0-1). }
A rectangle defined with a specified Width and Height and a lower left corner at (X,Y). The rectangle can optionally have a border and a filling color. The Width/Height includes the border (if any specified), i.e. is positioned inside.