Documentation ¶
Overview ¶
Package draw 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 BasicLine
- type BoundingBox
- type Circle
- type CubicBezierCurve
- type CubicBezierPath
- type Line
- type LineEndingStyle
- type LineStyle
- type Path
- type Point
- type Rectangle
- type Vector
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DrawBezierPathWithCreator ¶
func DrawBezierPathWithCreator(bpath CubicBezierPath, creator *pdfcontent.ContentCreator)
DrawBezierPathWithCreator makes 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)
DrawPathWithCreator makes the path with the content creator. Adds the PDF commands to draw the path to the creator instance.
Types ¶
type BasicLine ¶
type BasicLine struct { X1 float64 Y1 float64 X2 float64 Y2 float64 LineColor *pdf.PdfColorDeviceRGB Opacity float64 // Alpha value (0-1). LineWidth float64 LineStyle LineStyle }
BasicLine defines a line between point 1 (X1,Y1) and point 2 (X2,Y2). The line has a specified width, color and opacity.
type BoundingBox ¶
BoundingBox represents the smallest rectangular area that encapsulates an object.
type Circle ¶
type Circle 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). }
Circle represents a circle shape with fill and border properties that can be drawn to a PDF content stream.
type CubicBezierCurve ¶
type CubicBezierCurve struct { P0 Point // Starting point. P1 Point // Control point 1. P2 Point // Control point 2. P3 Point // Final point. }
CubicBezierCurve is 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
NewCubicBezierCurve returns a new cubic Bezier curve.
func (CubicBezierCurve) AddOffsetXY ¶
func (curve CubicBezierCurve) AddOffsetXY(offX, offY float64) CubicBezierCurve
AddOffsetXY adds X,Y offset to all points on a curve.
func (CubicBezierCurve) GetBounds ¶
func (curve CubicBezierCurve) GetBounds() model.PdfRectangle
GetBounds returns the bounding box of the Bezier curve.
type CubicBezierPath ¶
type CubicBezierPath struct {
Curves []CubicBezierCurve
}
CubicBezierPath represents a collection of cubic Bezier curves.
func NewCubicBezierPath ¶
func NewCubicBezierPath() CubicBezierPath
NewCubicBezierPath returns a new empty cubic Bezier path.
func (CubicBezierPath) AppendCurve ¶
func (p CubicBezierPath) AppendCurve(curve CubicBezierCurve) CubicBezierPath
AppendCurve appends the specified Bezier curve to the path.
func (CubicBezierPath) Copy ¶
func (p CubicBezierPath) Copy() CubicBezierPath
Copy returns a clone of the Bezier path.
func (CubicBezierPath) GetBoundingBox ¶
func (p CubicBezierPath) GetBoundingBox() Rectangle
GetBoundingBox returns the bounding box of the Bezier path.
func (CubicBezierPath) Offset ¶
func (p CubicBezierPath) Offset(offX, offY float64) CubicBezierPath
Offset shifts the Bezier path with the specified offsets.
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. LineStyle LineStyle }
Line defines a line shape 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
LineEndingStyle defines the line ending style for lines. The currently supported line ending styles are None, Arrow (ClosedArrow) and Butt.
const ( LineEndingStyleNone LineEndingStyle = 0 LineEndingStyleArrow LineEndingStyle = 1 LineEndingStyleButt LineEndingStyle = 2 )
Line ending styles.
type Path ¶
type Path struct {
Points []Point
}
Path consists of straight line connections between each point defined in an array of points.
func (Path) AppendPoint ¶
AppendPoint adds the specified point to the path.
func (Path) GetBoundingBox ¶
func (p Path) GetBoundingBox() BoundingBox
GetBoundingBox returns the bounding box of the path.
func (Path) GetPointNumber ¶
GetPointNumber returns the path point at the index specified by number. The index is 1-based.
func (Path) RemovePoint ¶
RemovePoint removes the point at the index specified by number from the path. The index is 1-based.
type Point ¶
Point represents a two-dimensional point.
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). }
Rectangle is a shape with a specified Width and Height and a lower left corner at (X,Y) that can be drawn to a PDF content stream. 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.
type Vector ¶
Vector represents a two-dimensional vector.
func NewVectorBetween ¶
NewVectorBetween returns a new vector with the direction specified by the subtraction of point a from point b (b-a).
func NewVectorPolar ¶
NewVectorPolar returns a new vector calculated from the specified magnitude and angle.
func (Vector) GetPolarAngle ¶
GetPolarAngle returns the angle the magnitude of the vector forms with the positive X-axis going counterclockwise.