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.
func (BasicLine) Draw ¶
Draw draws the basic line to PDF. Generates the content stream which can be used in page contents or appearance stream of annotation. Returns the stream content, XForm bounding box (local), bounding box and an error if one occurred.
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.
func (Line) Draw ¶
Draw draws the line to PDF contentstream. Generates the content stream which can be used in page contents or appearance stream of annotation. Returns the stream content, XForm bounding box (local), bounding box and an error if one occurred.
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) Offset ¶
Offset shifts the path with the specified offsets.
type Point ¶
Point represents a two-dimensional point.
func NewPoint ¶
NewPoint returns a new point with the coordinates x, y.
func (Point) Add ¶
Add shifts the coordinates of the point with dx, dy and returns the result.
func (Point) Rotate ¶
Rotate returns a new Point at `p` rotated by `theta` degrees.
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 NewVector ¶
NewVector returns a new vector with the direction specified by dx and dy.
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) Add ¶
Add adds the specified vector to the current one and returns the result.
func (Vector) FlipX ¶
FlipX flips the sign of the Dx component of the vector.
func (Vector) FlipY ¶
FlipY flips the sign of the Dy component of the vector.
func (Vector) GetPolarAngle ¶
GetPolarAngle returns the angle the magnitude of the vector forms with the positive X-axis going counterclockwise.
func (Vector) Magnitude ¶
Magnitude returns the magnitude of the vector.
func (Vector) Rotate ¶
Rotate rotates the vector by the specified angle.