draw

package
v3.0.0-...-55e877b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2023 License: GPL-2.0 Imports: 6 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func DrawBezierPathWithCreator

func DrawBezierPathWithCreator(bpath CubicBezierPath, creator *_cd.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 *_cd.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 _a.PdfColor
	Opacity   float64
	LineWidth float64
	LineStyle LineStyle
	DashArray []int64
	DashPhase int64
}

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

func (_gee BasicLine) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

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

type BoundingBox struct {
	X      float64
	Y      float64
	Width  float64
	Height float64
}

BoundingBox represents the smallest rectangular area that encapsulates an object.

func (BoundingBox) ToPdfRectangle

func (_bc BoundingBox) ToPdfRectangle() *_a.PdfRectangle

ToPdfRectangle returns the bounding box as a PDF rectangle.

type Circle

type Circle struct {
	X             float64
	Y             float64
	Width         float64
	Height        float64
	FillEnabled   bool
	FillColor     _a.PdfColor
	BorderEnabled bool
	BorderWidth   float64
	BorderColor   _a.PdfColor
	Opacity       float64
}

Circle represents a circle shape with fill and border properties that can be drawn to a PDF content stream.

func (Circle) Draw

func (_de Circle) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the circle. Can specify a graphics state (gsName) for setting opacity etc. Otherwise leave empty (""). Returns the content stream as a byte array, the bounding box and an error on failure.

type CubicBezierCurve

type CubicBezierCurve struct {
	P0 Point
	P1 Point
	P2 Point
	P3 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 (_eg CubicBezierCurve) AddOffsetXY(offX, offY float64) CubicBezierCurve

AddOffsetXY adds X,Y offset to all points on a curve.

func (CubicBezierCurve) GetBounds

func (_g CubicBezierCurve) GetBounds() _a.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 (_fc CubicBezierPath) AppendCurve(curve CubicBezierCurve) CubicBezierPath

AppendCurve appends the specified Bezier curve to the path.

func (CubicBezierPath) Copy

func (_gf CubicBezierPath) Copy() CubicBezierPath

Copy returns a clone of the Bezier path.

func (CubicBezierPath) GetBoundingBox

func (_da CubicBezierPath) GetBoundingBox() Rectangle

GetBoundingBox returns the bounding box of the Bezier path.

func (CubicBezierPath) Offset

func (_egb CubicBezierPath) Offset(offX, offY float64) CubicBezierPath

Offset shifts the Bezier path with the specified offsets.

type CurvePolygon

type CurvePolygon struct {
	Rings         [][]CubicBezierCurve
	FillEnabled   bool
	FillColor     _a.PdfColor
	BorderEnabled bool
	BorderColor   _a.PdfColor
	BorderWidth   float64
}

CurvePolygon is a multi-point shape with rings containing curves that can be drawn to a PDF content stream.

func (CurvePolygon) Draw

func (_egf CurvePolygon) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the composite curve polygon. A graphics state name can be specified for setting the curve properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the bounding box of the polygon.

type Line

type Line struct {
	X1               float64
	Y1               float64
	X2               float64
	Y2               float64
	LineColor        _a.PdfColor
	Opacity          float64
	LineWidth        float64
	LineEndingStyle1 LineEndingStyle
	LineEndingStyle2 LineEndingStyle
	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

func (_dgd Line) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

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
)

type LineStyle

type LineStyle int

LineStyle refers to how the line will be created.

const (
	LineStyleSolid  LineStyle = 0
	LineStyleDashed LineStyle = 1
)

type Path

type Path struct{ Points []Point }

Path consists of straight line connections between each point defined in an array of points.

func NewPath

func NewPath() Path

NewPath returns a new empty path.

func (Path) AppendPoint

func (_dde Path) AppendPoint(point Point) Path

AppendPoint adds the specified point to the path.

func (Path) Copy

func (_gd Path) Copy() Path

Copy returns a clone of the path.

func (Path) GetBoundingBox

func (_gb Path) GetBoundingBox() BoundingBox

GetBoundingBox returns the bounding box of the path.

func (Path) GetPointNumber

func (_ggf Path) GetPointNumber(number int) Point

GetPointNumber returns the path point at the index specified by number. The index is 1-based.

func (Path) Length

func (_cad Path) Length() int

Length returns the number of points in the path.

func (Path) Offset

func (_ac Path) Offset(offX, offY float64) Path

Offset shifts the path with the specified offsets.

func (Path) RemovePoint

func (_cg Path) RemovePoint(number int) Path

RemovePoint removes the point at the index specified by number from the path. The index is 1-based.

type Point

type Point struct {
	X float64
	Y float64
}

Point represents a two-dimensional point.

func NewPoint

func NewPoint(x, y float64) Point

NewPoint returns a new point with the coordinates x, y.

func (Point) Add

func (_cc Point) Add(dx, dy float64) Point

Add shifts the coordinates of the point with dx, dy and returns the result.

func (Point) AddVector

func (_dfd Point) AddVector(v Vector) Point

AddVector adds vector to a point.

func (Point) Rotate

func (_ggb Point) Rotate(theta float64) Point

Rotate returns a new Point at `p` rotated by `theta` degrees.

func (Point) String

func (_aff Point) String() string

type PolyBezierCurve

type PolyBezierCurve struct {
	Curves      []CubicBezierCurve
	BorderWidth float64
	BorderColor _a.PdfColor
	FillEnabled bool
	FillColor   _a.PdfColor
}

PolyBezierCurve represents a composite curve that is the result of joining multiple cubic Bezier curves.

func (PolyBezierCurve) Draw

func (_faa PolyBezierCurve) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the composite Bezier curve. A graphics state name can be specified for setting the curve properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the curve bounding box.

type Polygon

type Polygon struct {
	Points        [][]Point
	FillEnabled   bool
	FillColor     _a.PdfColor
	BorderEnabled bool
	BorderColor   _a.PdfColor
	BorderWidth   float64
}

Polygon is a multi-point shape that can be drawn to a PDF content stream.

func (Polygon) Draw

func (_edbg Polygon) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the polygon. A graphics state name can be specified for setting the polygon properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the polygon bounding box.

type Polyline

type Polyline struct {
	Points    []Point
	LineColor _a.PdfColor
	LineWidth float64
}

Polyline defines a slice of points that are connected as straight lines.

func (Polyline) Draw

func (_bda Polyline) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the polyline. A graphics state name can be specified for setting the polyline properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the polyline bounding box.

type Rectangle

type Rectangle struct {

	// Position and size properties.
	X      float64
	Y      float64
	Width  float64
	Height float64

	// Fill properties.
	FillEnabled bool
	FillColor   _a.PdfColor

	// Border properties.
	BorderEnabled           bool
	BorderColor             _a.PdfColor
	BorderWidth             float64
	BorderRadiusTopLeft     float64
	BorderRadiusTopRight    float64
	BorderRadiusBottomLeft  float64
	BorderRadiusBottomRight float64

	// Shape opacity (0-1 interval).
	Opacity float64
}

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.

func (Rectangle) Draw

func (_cce Rectangle) Draw(gsName string) ([]byte, *_a.PdfRectangle, error)

Draw draws the rectangle. A graphics state can be specified for setting additional properties (e.g. opacity). Otherwise pass an empty string for the `gsName` parameter. The method returns the content stream as a byte array and the bounding box of the shape.

func (Rectangle) ToPdfRectangle

func (_ecbe Rectangle) ToPdfRectangle() *_a.PdfRectangle

ToPdfRectangle returns the rectangle as a PDF rectangle.

type Vector

type Vector struct {
	Dx float64
	Dy float64
}

Vector represents a two-dimensional vector.

func NewVector

func NewVector(dx, dy float64) Vector

NewVector returns a new vector with the direction specified by dx and dy.

func NewVectorBetween

func NewVectorBetween(a Point, b Point) Vector

NewVectorBetween returns a new vector with the direction specified by the subtraction of point a from point b (b-a).

func NewVectorPolar

func NewVectorPolar(length float64, theta float64) Vector

NewVectorPolar returns a new vector calculated from the specified magnitude and angle.

func (Vector) Add

func (_bcf Vector) Add(other Vector) Vector

Add adds the specified vector to the current one and returns the result.

func (Vector) Flip

func (_ffe Vector) Flip() Vector

Flip changes the sign of the vector: -vector.

func (Vector) FlipX

func (_fgg Vector) FlipX() Vector

FlipX flips the sign of the Dx component of the vector.

func (Vector) FlipY

func (_cae Vector) FlipY() Vector

FlipY flips the sign of the Dy component of the vector.

func (Vector) GetPolarAngle

func (_dcf Vector) GetPolarAngle() float64

GetPolarAngle returns the angle the magnitude of the vector forms with the positive X-axis going counterclockwise.

func (Vector) Magnitude

func (_edab Vector) Magnitude() float64

Magnitude returns the magnitude of the vector.

func (Vector) Rotate

func (_efac Vector) Rotate(phi float64) Vector

Rotate rotates the vector by the specified angle.

func (Vector) Scale

func (_eec Vector) Scale(factor float64) Vector

Scale scales the vector by the specified factor.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL