draw

package
v2.1.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2018 License: AGPL-3.0 Imports: 5 Imported by: 0

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

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 BoundingBox

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

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).
}

func (Circle) Draw

func (c Circle) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)

Draw a 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.
}

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.

func (Line) Draw

func (line Line) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)

Draw a line in 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 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 NewPath

func NewPath() Path

func (Path) AppendPoint

func (this Path) AppendPoint(point Point) Path

func (Path) Copy

func (path Path) Copy() Path

func (Path) GetBoundingBox

func (path Path) GetBoundingBox() BoundingBox

func (Path) GetPointNumber

func (this Path) GetPointNumber(number int) Point

func (Path) Length

func (this Path) Length() int

func (Path) Offset

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

func (Path) RemovePoint

func (this Path) RemovePoint(number int) Path

type Point

type Point struct {
	X float64
	Y float64
}

func NewPoint

func NewPoint(x, y float64) Point

func (Point) Add

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

func (Point) AddVector

func (this Point) AddVector(v Vector) Point

Add vector to a point.

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).
}

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.

func (Rectangle) Draw

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

Draw the circle. 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
}

func NewVector

func NewVector(dx, dy float64) Vector

func NewVectorBetween

func NewVectorBetween(a Point, b Point) Vector

func NewVectorPolar

func NewVectorPolar(length float64, theta float64) Vector

func (Vector) Add

func (v Vector) Add(other Vector) Vector

func (Vector) Flip

func (this Vector) Flip() Vector

Change the sign of the vector: -vector.

func (Vector) FlipX

func (v Vector) FlipX() Vector

func (Vector) FlipY

func (v Vector) FlipY() Vector

func (Vector) GetPolarAngle

func (this Vector) GetPolarAngle() float64

func (Vector) Magnitude

func (this Vector) Magnitude() float64

func (Vector) Rotate

func (v Vector) Rotate(phi float64) Vector

func (Vector) Scale

func (this Vector) Scale(factor float64) Vector

Jump to

Keyboard shortcuts

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