draw

package
v0.0.0-...-90a1d6d Latest Latest
Warning

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

Go to latest
Published: Apr 8, 2020 License: AGPL-3.0, AGPL-3.0-only 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 *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

func (line BasicLine) Draw(gsName string) ([]byte, *pdf.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.

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.

func (Circle) Draw

func (c Circle) Draw(gsName string) ([]byte, *pdf.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 // 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

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

func (line Line) Draw(gsName string) ([]byte, *pdf.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
)

Line ending styles.

type LineStyle

type LineStyle int

LineStyle refers to how the line will be created.

const (
	LineStyleSolid  LineStyle = 0
	LineStyleDashed LineStyle = 1
)

Line styles.

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 (p Path) AppendPoint(point Point) Path

AppendPoint adds the specified point to the path.

func (Path) Copy

func (p Path) Copy() Path

Copy returns a clone of the path.

func (Path) GetBoundingBox

func (p Path) GetBoundingBox() BoundingBox

GetBoundingBox returns the bounding box of the path.

func (Path) GetPointNumber

func (p 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 (p Path) Length() int

Length returns the number of points in the path.

func (Path) Offset

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

Offset shifts the path with the specified offsets.

func (Path) RemovePoint

func (p 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 (p Point) Add(dx, dy float64) Point

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

func (Point) AddVector

func (p Point) AddVector(v Vector) Point

AddVector adds vector to a point.

func (Point) Rotate

func (p Point) Rotate(theta float64) Point

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

func (Point) String

func (p Point) String() string

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.

func (Rectangle) Draw

func (rect Rectangle) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)

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

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 (v Vector) Add(other Vector) Vector

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

func (Vector) Flip

func (v Vector) Flip() Vector

Flip changes the sign of the vector: -vector.

func (Vector) FlipX

func (v Vector) FlipX() Vector

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

func (Vector) FlipY

func (v Vector) FlipY() Vector

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

func (Vector) GetPolarAngle

func (v Vector) GetPolarAngle() float64

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

func (Vector) Magnitude

func (v Vector) Magnitude() float64

Magnitude returns the magnitude of the vector.

func (Vector) Rotate

func (v Vector) Rotate(phi float64) Vector

Rotate rotates the vector by the specified angle.

func (Vector) Scale

func (v 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