drawing

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 15 Imported by: 0

README

go-chart > drawing

The bulk of the code in this package is based on draw2d, but with significant modifications to make the APIs more golang friendly and careful about units (points vs. pixels).

Documentation

Index

Constants

View Source
const (
	// HalignLeft Horizontally align to left
	HalignLeft = iota
	// HalignCenter Horizontally align to center
	HalignCenter
	// HalignRight Horizontally align to right
	HalignRight
)
View Source
const (
	// CurveRecursionLimit represents the maximum recursion that is really necessary to subsivide a curve into straight lines
	CurveRecursionLimit = 32
)
View Source
const (
	// DefaultDPI is the default image DPI.
	DefaultDPI = 96.0
)

Variables

View Source
var (
	// ColorTransparent is a fully transparent color.
	ColorTransparent = Color{R: 255, G: 255, B: 255, A: 0}
	// ColorWhite is white.
	ColorWhite = Color{R: 255, G: 255, B: 255, A: 255}
	// ColorBlack is black.
	ColorBlack = Color{R: 0, G: 0, B: 0, A: 255}
	// ColorRed is red.
	ColorRed = Color{R: 255, G: 0, B: 0, A: 255}
	// ColorGreen is green.
	ColorGreen = Color{R: 0, G: 128, B: 0, A: 255}
	// ColorBlue is blue.
	ColorBlue = Color{R: 0, G: 0, B: 255, A: 255}
	// ColorSilver is a known color.
	ColorSilver = Color{R: 192, G: 192, B: 192, A: 255}
	// ColorMaroon is a known color.
	ColorMaroon = Color{R: 128, G: 0, B: 0, A: 255}
	// ColorPurple is a known color.
	ColorPurple = Color{R: 128, G: 0, B: 128, A: 255}
	// ColorFuchsia is a known color.
	ColorFuchsia = Color{R: 255, G: 0, B: 255, A: 255}
	// ColorLime is a known color.
	ColorLime = Color{R: 0, G: 255, B: 0, A: 255}
	// ColorOlive is a known color.
	ColorOlive = Color{R: 128, G: 128, B: 0, A: 255}
	// ColorYellow is a known color.
	ColorYellow = Color{R: 255, G: 255, B: 0, A: 255}
	// ColorNavy is a known color.
	ColorNavy = Color{R: 0, G: 0, B: 128, A: 255}
	// ColorTeal is a known color.
	ColorTeal = Color{R: 0, G: 128, B: 128, A: 255}
	// ColorAqua is a known color.
	ColorAqua = Color{R: 0, G: 255, B: 255, A: 255}
)

Basic Colors from: https://www.w3.org/wiki/CSS/Properties/color/keywords

Functions

func Bresenham

func Bresenham(img draw.Image, color color.Color, x0, y0, x1, y1 int)

Bresenham draws a line between (x0, y0) and (x1, y1)

func ColorChannelFromFloat

func ColorChannelFromFloat(v float64) uint8

ColorChannelFromFloat returns a normalized byte from a given float value.

func DrawContour

func DrawContour(path PathBuilder, ps []truetype.Point, dx, dy float64)

DrawContour draws the given closed contour at the given sub-pixel offset.

func DrawImage

func DrawImage(src image.Image, dest draw.Image, tr Matrix, op draw.Op, filter ImageFilter)

DrawImage draws an image into dest using an affine transformation matrix, an op and a filter

func Flatten

func Flatten(path *Path, flattener Flattener, scale float64)

Flatten convert curves into straight segments keeping join segments info

func PointsToPixels

func PointsToPixels(dpi, points float64) (pixels float64)

PointsToPixels returns the pixels for a given number of points at a DPI.

func PolylineBresenham

func PolylineBresenham(img draw.Image, c color.Color, s ...float64)

PolylineBresenham draws a polyline to an image

func SubdivideCubic

func SubdivideCubic(c, c1, c2 []float64)

SubdivideCubic a Bezier cubic curve in 2 equivalents Bezier cubic curves. c1 and c2 parameters are the resulting curves

func SubdivideQuad

func SubdivideQuad(c, c1, c2 []float64)

SubdivideQuad a Bezier quad curve in 2 equivalents Bezier quad curves. c1 and c2 parameters are the resulting curves

func TraceArc

func TraceArc(t Liner, x, y, rx, ry, start, angle, scale float64) (lastX, lastY float64)

TraceArc trace an arc using a Liner

func TraceCubic

func TraceCubic(t Liner, cubic []float64, flatteningThreshold float64)

TraceCubic generate lines subdividing the cubic curve using a Liner flattening_threshold helps determines the flattening expectation of the curve

func TraceQuad

func TraceQuad(t Liner, quad []float64, flatteningThreshold float64)

TraceQuad generate lines subdividing the curve using a Liner flattening_threshold helps determines the flattening expectation of the curve

Types

type Color

type Color struct {
	R, G, B, A uint8
}

Color is our internal color type because color.Color is bullshit.

func ColorFromAlphaMixedRGBA

func ColorFromAlphaMixedRGBA(r, g, b, a uint32) Color

ColorFromAlphaMixedRGBA returns the system alpha mixed rgba values.

func ColorFromHex

func ColorFromHex(hex string) Color

ColorFromHex returns a color from a css hex code.

NOTE: it will trim a leading '#' character if present.

func ColorFromKnown

func ColorFromKnown(known string) Color

ColorFromKnown returns an internal color from a known (basic) color name.

func ColorFromRGB

func ColorFromRGB(rgb string) (output Color)

ColorFromRGB returns a color from an `rgb()` css function.

func ColorFromRGBA

func ColorFromRGBA(rgba string) (output Color)

ColorFromRGBA returns a color from an `rgba()` css function.

func ParseColor

func ParseColor(rawColor string) Color

ParseColor parses a color from a string.

func (Color) AverageWith

func (c Color) AverageWith(other Color) Color

AverageWith averages two colors.

func (Color) Equals

func (c Color) Equals(other Color) bool

Equals returns true if the color equals another.

func (Color) IsTransparent

func (c Color) IsTransparent() bool

IsTransparent returns if the colors alpha channel is zero.

func (Color) IsZero

func (c Color) IsZero() bool

IsZero returns if the color has been set or not.

func (Color) RGBA

func (c Color) RGBA() (r, g, b, a uint32)

RGBA returns the color as a pre-alpha mixed color set.

func (Color) String

func (c Color) String() string

String returns a css string representation of the color.

func (Color) WithAlpha

func (c Color) WithAlpha(a uint8) Color

WithAlpha returns a copy of the color with a given alpha.

type ContextStack

type ContextStack struct {
	Tr          Matrix
	Path        *Path
	LineWidth   float64
	Dash        []float64
	DashOffset  float64
	StrokeColor color.Color
	FillColor   color.Color
	FillRule    FillRule
	Cap         LineCap
	Join        LineJoin

	FontSizePoints float64
	Font           *truetype.Font

	Scale float64

	Previous *ContextStack
}

ContextStack is a graphic context implementation.

type DashVertexConverter

type DashVertexConverter struct {
	// contains filtered or unexported fields
}

DashVertexConverter is a converter for dash vertexes.

func NewDashVertexConverter

func NewDashVertexConverter(dash []float64, dashOffset float64, flattener Flattener) *DashVertexConverter

NewDashVertexConverter creates a new dash converter.

func (*DashVertexConverter) Close

func (dasher *DashVertexConverter) Close()

Close implements the pathbuilder interface.

func (*DashVertexConverter) End

func (dasher *DashVertexConverter) End()

End implements the pathbuilder interface.

func (*DashVertexConverter) LineJoin

func (dasher *DashVertexConverter) LineJoin()

LineJoin implements the pathbuilder interface.

func (*DashVertexConverter) LineTo

func (dasher *DashVertexConverter) LineTo(x, y float64)

LineTo implements the pathbuilder interface.

func (*DashVertexConverter) MoveTo

func (dasher *DashVertexConverter) MoveTo(x, y float64)

MoveTo implements the pathbuilder interface.

type DemuxFlattener

type DemuxFlattener struct {
	Flatteners []Flattener
}

DemuxFlattener is a flattener

func (DemuxFlattener) Close

func (dc DemuxFlattener) Close()

Close implements the path builder interface.

func (DemuxFlattener) End

func (dc DemuxFlattener) End()

End implements the path builder interface.

func (DemuxFlattener) LineJoin

func (dc DemuxFlattener) LineJoin()

LineJoin implements the path builder interface.

func (DemuxFlattener) LineTo

func (dc DemuxFlattener) LineTo(x, y float64)

LineTo implements the path builder interface.

func (DemuxFlattener) MoveTo

func (dc DemuxFlattener) MoveTo(x, y float64)

MoveTo implements the path builder interface.

type FillRule

type FillRule int

FillRule defines the type for fill rules

const (
	// FillRuleEvenOdd determines the "insideness" of a point in the shape
	// by drawing a ray from that point to infinity in any direction
	// and counting the number of path segments from the given shape that the ray crosses.
	// If this number is odd, the point is inside; if even, the point is outside.
	FillRuleEvenOdd FillRule = iota
	// FillRuleWinding determines the "insideness" of a point in the shape
	// by drawing a ray from that point to infinity in any direction
	// and then examining the places where a segment of the shape crosses the ray.
	// Starting with a count of zero, add one each time a path segment crosses
	// the ray from left to right and subtract one each time
	// a path segment crosses the ray from right to left. After counting the crossings,
	// if the result is zero then the point is outside the path. Otherwise, it is inside.
	FillRuleWinding
)

type Flattener

type Flattener interface {
	// MoveTo Start a New line from the point (x, y)
	MoveTo(x, y float64)
	// LineTo Draw a line from the current position to the point (x, y)
	LineTo(x, y float64)
	// LineJoin add the most recent starting point to close the path to create a polygon
	LineJoin()
	// Close add the most recent starting point to close the path to create a polygon
	Close()
	// End mark the current line as finished so we can draw caps
	End()
}

Flattener receive segment definition

type FontExtents

type FontExtents struct {
	// Ascent is the distance that the text
	// extends above the baseline.
	Ascent float64

	// Descent is the distance that the text
	// extends below the baseline.  The descent
	// is given as a negative value.
	Descent float64

	// Height is the distance from the lowest
	// descending point to the highest ascending
	// point.
	Height float64
}

FontExtents contains font metric information.

func Extents

func Extents(font *truetype.Font, size float64) FontExtents

Extents returns the FontExtents for a font. TODO needs to read this https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#intro

type FtLineBuilder

type FtLineBuilder struct {
	Adder raster.Adder
}

FtLineBuilder is a builder for freetype raster glyphs.

func (FtLineBuilder) Close

func (liner FtLineBuilder) Close()

Close implements the path builder interface.

func (FtLineBuilder) End

func (liner FtLineBuilder) End()

End implements the path builder interface.

func (FtLineBuilder) LineJoin

func (liner FtLineBuilder) LineJoin()

LineJoin implements the path builder interface.

func (FtLineBuilder) LineTo

func (liner FtLineBuilder) LineTo(x, y float64)

LineTo implements the path builder interface.

func (FtLineBuilder) MoveTo

func (liner FtLineBuilder) MoveTo(x, y float64)

MoveTo implements the path builder interface.

type GraphicContext

type GraphicContext interface {
	// PathBuilder describes the interface for path drawing
	PathBuilder
	// BeginPath creates a new path
	BeginPath()
	// GetMatrixTransform returns the current transformation matrix
	GetMatrixTransform() Matrix
	// SetMatrixTransform sets the current transformation matrix
	SetMatrixTransform(tr Matrix)
	// ComposeMatrixTransform composes the current transformation matrix with tr
	ComposeMatrixTransform(tr Matrix)
	// Rotate applies a rotation to the current transformation matrix. angle is in radian.
	Rotate(angle float64)
	// Translate applies a translation to the current transformation matrix.
	Translate(tx, ty float64)
	// Scale applies a scale to the current transformation matrix.
	Scale(sx, sy float64)
	// SetStrokeColor sets the current stroke color
	SetStrokeColor(c color.Color)
	// SetFillColor sets the current fill color
	SetFillColor(c color.Color)
	// SetFillRule sets the current fill rule
	SetFillRule(f FillRule)
	// SetLineWidth sets the current line width
	SetLineWidth(lineWidth float64)
	// SetLineCap sets the current line cap
	SetLineCap(cap LineCap)
	// SetLineJoin sets the current line join
	SetLineJoin(join LineJoin)
	// SetLineDash sets the current dash
	SetLineDash(dash []float64, dashOffset float64)
	// SetFontSize sets the current font size
	SetFontSize(fontSize float64)
	// GetFontSize gets the current font size
	GetFontSize() float64
	// SetFont sets the font for the context
	SetFont(f *truetype.Font)
	// GetFont returns the current font
	GetFont() *truetype.Font
	// DrawImage draws the raster image in the current canvas
	DrawImage(image image.Image)
	// Save the context and push it to the context stack
	Save()
	// Restore remove the current context and restore the last one
	Restore()
	// Clear fills the current canvas with a default transparent color
	Clear()
	// ClearRect fills the specified rectangle with a default transparent color
	ClearRect(x1, y1, x2, y2 int)
	// SetDPI sets the current DPI
	SetDPI(dpi int)
	// GetDPI gets the current DPI
	GetDPI() int
	// GetStringBounds gets pixel bounds(dimensions) of given string
	GetStringBounds(s string) (left, top, right, bottom float64)
	// CreateStringPath creates a path from the string s at x, y
	CreateStringPath(text string, x, y float64) (cursor float64)
	// FillString draws the text at point (0, 0)
	FillString(text string) (cursor float64)
	// FillStringAt draws the text at the specified point (x, y)
	FillStringAt(text string, x, y float64) (cursor float64)
	// StrokeString draws the contour of the text at point (0, 0)
	StrokeString(text string) (cursor float64)
	// StrokeStringAt draws the contour of the text at point (x, y)
	StrokeStringAt(text string, x, y float64) (cursor float64)
	// Stroke strokes the paths with the color specified by SetStrokeColor
	Stroke(paths ...*Path)
	// Fill fills the paths with the color specified by SetFillColor
	Fill(paths ...*Path)
	// FillStroke first fills the paths and then strokes them
	FillStroke(paths ...*Path)
}

GraphicContext describes the interface for the various backends (images, pdf, opengl, ...)

type Halign

type Halign int

Halign Horizontal Alignment of the text

type ImageFilter

type ImageFilter int

ImageFilter defines the type of filter to use

const (
	// LinearFilter defines a linear filter
	LinearFilter ImageFilter = iota
	// BilinearFilter defines a bilinear filter
	BilinearFilter
	// BicubicFilter defines a bicubic filter
	BicubicFilter
)

type ImageScaling

type ImageScaling struct {
	// Horizontal Alignment of the image
	Halign Halign
	// Vertical Alignment of the image
	Valign Valign
	// Width Height used by scaling policy
	Width, Height float64
	// ScalingPolicy defines the scaling policy to applied to the image
	ScalingPolicy ScalingPolicy
}

ImageScaling style attributes used to display the image

type LineCap

type LineCap int

LineCap is the style of line extremities

const (
	// RoundCap defines a rounded shape at the end of the line
	RoundCap LineCap = iota
	// ButtCap defines a squared shape exactly at the end of the line
	ButtCap
	// SquareCap defines a squared shape at the end of the line
	SquareCap
)

type LineJoin

type LineJoin int

LineJoin is the style of segments joint

const (
	// BevelJoin represents cut segments joint
	BevelJoin LineJoin = iota
	// RoundJoin represents rounded segments joint
	RoundJoin
	// MiterJoin represents peaker segments joint
	MiterJoin
)

type LineStroker

type LineStroker struct {
	Flattener     Flattener
	HalfLineWidth float64
	Cap           LineCap
	Join          LineJoin
	// contains filtered or unexported fields
}

LineStroker draws the stroke portion of a line.

func NewLineStroker

func NewLineStroker(c LineCap, j LineJoin, flattener Flattener) *LineStroker

NewLineStroker creates a new line stroker.

func (*LineStroker) Close

func (l *LineStroker) Close()

Close implements the path builder interface.

func (*LineStroker) End

func (l *LineStroker) End()

End implements the path builder interface.

func (*LineStroker) LineJoin

func (l *LineStroker) LineJoin()

LineJoin implements the path builder interface.

func (*LineStroker) LineTo

func (l *LineStroker) LineTo(x, y float64)

LineTo implements the path builder interface.

func (*LineStroker) MoveTo

func (l *LineStroker) MoveTo(x, y float64)

MoveTo implements the path builder interface.

type Liner

type Liner interface {
	// LineTo Draw a line from the current position to the point (x, y)
	LineTo(x, y float64)
}

Liner receive segment definition

type Matrix

type Matrix [6]float64

Matrix represents an affine transformation

func NewIdentityMatrix

func NewIdentityMatrix() Matrix

NewIdentityMatrix creates an identity transformation matrix.

func NewMatrixFromRects

func NewMatrixFromRects(rectangle1, rectangle2 [4]float64) Matrix

NewMatrixFromRects creates a transformation matrix, combining a scale and a translation, that transform rectangle1 into rectangle2.

func NewRotationMatrix

func NewRotationMatrix(angle float64) Matrix

NewRotationMatrix creates a rotation transformation matrix. angle is in radian

func NewScaleMatrix

func NewScaleMatrix(sx, sy float64) Matrix

NewScaleMatrix creates a transformation matrix with a sx, sy scale factor

func NewTranslationMatrix

func NewTranslationMatrix(tx, ty float64) Matrix

NewTranslationMatrix creates a transformation matrix with a translation tx and ty translation parameter

func (*Matrix) Compose

func (tr *Matrix) Compose(trToCompose Matrix)

Compose multiplies trToConcat x tr

func (*Matrix) Copy

func (tr *Matrix) Copy() Matrix

Copy copies the matrix.

func (*Matrix) Determinant

func (tr *Matrix) Determinant() float64

Determinant compute the determinant of the matrix

func (*Matrix) Equals

func (tr *Matrix) Equals(tr2 Matrix) bool

Equals tests if a two transformation are equal. A tolerance is applied when comparing matrix elements.

func (*Matrix) GetScale

func (tr *Matrix) GetScale() float64

GetScale computes a scale for the matrix

func (*Matrix) GetScaling

func (tr *Matrix) GetScaling() (x, y float64)

GetScaling gets the matrix scaling.

func (*Matrix) GetTranslation

func (tr *Matrix) GetTranslation() (x, y float64)

GetTranslation gets the matrix traslation.

func (*Matrix) Inverse

func (tr *Matrix) Inverse()

Inverse computes the inverse matrix

func (*Matrix) InverseTransform

func (tr *Matrix) InverseTransform(points []float64)

InverseTransform applies the transformation inverse matrix to the rectangle represented by the min and the max point of the rectangle

func (*Matrix) InverseTransformPoint

func (tr *Matrix) InverseTransformPoint(x, y float64) (xres, yres float64)

InverseTransformPoint applies the transformation inverse matrix to point. It returns the point the transformed point.

func (*Matrix) IsIdentity

func (tr *Matrix) IsIdentity() bool

IsIdentity tests if a transformation is the identity transformation. A tolerance is applied when comparing matrix elements.

func (*Matrix) IsTranslation

func (tr *Matrix) IsTranslation() bool

IsTranslation tests if a transformation is a pure translation. A tolerance is applied when comparing matrix elements.

func (*Matrix) Rotate

func (tr *Matrix) Rotate(radians float64)

Rotate adds a rotation to the matrix.

func (*Matrix) Scale

func (tr *Matrix) Scale(sx, sy float64)

Scale adds a scale to the matrix

func (*Matrix) Transform

func (tr *Matrix) Transform(points []float64)

Transform applies the transformation matrix to points. It modify the points passed in parameter.

func (*Matrix) TransformPoint

func (tr *Matrix) TransformPoint(x, y float64) (xres, yres float64)

TransformPoint applies the transformation matrix to point. It returns the point the transformed point.

func (*Matrix) TransformRectangle

func (tr *Matrix) TransformRectangle(x0, y0, x2, y2 float64) (nx0, ny0, nx2, ny2 float64)

TransformRectangle applies the transformation matrix to the rectangle represented by the min and the max point of the rectangle

func (*Matrix) Translate

func (tr *Matrix) Translate(tx, ty float64)

Translate adds a translation to the matrix

func (*Matrix) VectorTransform

func (tr *Matrix) VectorTransform(points []float64)

VectorTransform applies the transformation matrix to points without using the translation parameter of the affine matrix. It modify the points passed in parameter.

type Painter

type Painter interface {
	raster.Painter
	SetColor(color color.Color)
}

Painter implements the freetype raster.Painter and has a SetColor method like the RGBAPainter

type Path

type Path struct {
	// Components is a slice of PathComponent in a Path and mark the role of each points in the Path
	Components []PathComponent
	// Points are combined with Components to have a specific role in the path
	Points []float64
	// contains filtered or unexported fields
}

Path stores points

func (*Path) ArcTo

func (p *Path) ArcTo(cx, cy, rx, ry, startAngle, delta float64)

ArcTo adds an arc to the path

func (*Path) Clear

func (p *Path) Clear()

Clear reset the path

func (*Path) Close

func (p *Path) Close()

Close closes the current path

func (*Path) Copy

func (p *Path) Copy() (dest *Path)

Copy make a clone of the current path and return it

func (*Path) CubicCurveTo

func (p *Path) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)

CubicCurveTo adds a cubic bezier curve to the current path

func (*Path) IsEmpty

func (p *Path) IsEmpty() bool

IsEmpty returns true if the path is empty

func (*Path) LastPoint

func (p *Path) LastPoint() (x, y float64)

LastPoint returns the current point of the current path

func (*Path) LineTo

func (p *Path) LineTo(x, y float64)

LineTo adds a line to the current path

func (*Path) MoveTo

func (p *Path) MoveTo(x, y float64)

MoveTo starts a new path at (x, y) position

func (*Path) QuadCurveTo

func (p *Path) QuadCurveTo(cx, cy, x, y float64)

QuadCurveTo adds a quadratic bezier curve to the current path

func (*Path) String

func (p *Path) String() string

String returns a debug text view of the path

type PathBuilder

type PathBuilder interface {
	// LastPoint returns the current point of the current sub path
	LastPoint() (x, y float64)
	// MoveTo creates a new subpath that start at the specified point
	MoveTo(x, y float64)
	// LineTo adds a line to the current subpath
	LineTo(x, y float64)
	// QuadCurveTo adds a quadratic Bézier curve to the current subpath
	QuadCurveTo(cx, cy, x, y float64)
	// CubicCurveTo adds a cubic Bézier curve to the current subpath
	CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)
	// ArcTo adds an arc to the current subpath
	ArcTo(cx, cy, rx, ry, startAngle, angle float64)
	// Close creates a line from the current point to the last MoveTo
	// point (if not the same) and mark the path as closed so the
	// first and last lines join nicely.
	Close()
}

PathBuilder describes the interface for path drawing.

type PathComponent

type PathComponent int

PathComponent represents component of a path

const (
	// MoveToComponent is a MoveTo component in a Path
	MoveToComponent PathComponent = iota
	// LineToComponent is a LineTo component in a Path
	LineToComponent
	// QuadCurveToComponent is a QuadCurveTo component in a Path
	QuadCurveToComponent
	// CubicCurveToComponent is a CubicCurveTo component in a Path
	CubicCurveToComponent
	// ArcToComponent is a ArcTo component in a Path
	ArcToComponent
	// CloseComponent is a ArcTo component in a Path
	CloseComponent
)

type RasterGraphicContext

type RasterGraphicContext struct {
	*StackGraphicContext

	DPI float64
	// contains filtered or unexported fields
}

RasterGraphicContext is the implementation of GraphicContext for a raster image

func NewRasterGraphicContext

func NewRasterGraphicContext(img draw.Image) (*RasterGraphicContext, error)

NewRasterGraphicContext creates a new Graphic context from an image.

func NewRasterGraphicContextWithPainter

func NewRasterGraphicContextWithPainter(img draw.Image, painter Painter) *RasterGraphicContext

NewRasterGraphicContextWithPainter creates a new Graphic context from an image and a Painter (see Freetype-go)

func (*RasterGraphicContext) Clear

func (rgc *RasterGraphicContext) Clear()

Clear fills the current canvas with a default transparent color

func (*RasterGraphicContext) ClearRect

func (rgc *RasterGraphicContext) ClearRect(x1, y1, x2, y2 int)

ClearRect fills the current canvas with a default transparent color at the specified rectangle

func (*RasterGraphicContext) CreateStringPath

func (rgc *RasterGraphicContext) CreateStringPath(s string, x, y float64) (cursor float64, err error)

CreateStringPath creates a path from the string s at x, y, and returns the string width. The text is placed so that the left edge of the em square of the first character of s and the baseline intersect at x, y. The majority of the affected pixels will be above and to the right of the point, but some may be below or to the left. For example, drawing a string that starts with a 'J' in an italic font may affect pixels below and left of the point.

func (*RasterGraphicContext) DrawImage

func (rgc *RasterGraphicContext) DrawImage(img image.Image)

DrawImage draws the raster image in the current canvas

func (*RasterGraphicContext) Fill

func (rgc *RasterGraphicContext) Fill(paths ...*Path)

Fill fills the paths with the color specified by SetFillColor

func (*RasterGraphicContext) FillString

func (rgc *RasterGraphicContext) FillString(text string) (cursor float64, err error)

FillString draws the text at point (0, 0)

func (*RasterGraphicContext) FillStringAt

func (rgc *RasterGraphicContext) FillStringAt(text string, x, y float64) (cursor float64, err error)

FillStringAt draws the text at the specified point (x, y)

func (*RasterGraphicContext) FillStroke

func (rgc *RasterGraphicContext) FillStroke(paths ...*Path)

FillStroke first fills the paths and then strokes them

func (*RasterGraphicContext) GetDPI

func (rgc *RasterGraphicContext) GetDPI() float64

GetDPI returns the resolution of the Image GraphicContext

func (*RasterGraphicContext) GetFont

func (rgc *RasterGraphicContext) GetFont() *truetype.Font

GetFont returns the font used to draw text.

func (*RasterGraphicContext) GetStringBounds

func (rgc *RasterGraphicContext) GetStringBounds(s string) (left, top, right, bottom float64, err error)

GetStringBounds returns the approximate pixel bounds of a string.

func (*RasterGraphicContext) SetDPI

func (rgc *RasterGraphicContext) SetDPI(dpi float64)

SetDPI sets the screen resolution in dots per inch.

func (*RasterGraphicContext) SetFont

func (rgc *RasterGraphicContext) SetFont(font *truetype.Font)

SetFont sets the font used to draw text.

func (*RasterGraphicContext) SetFontSize

func (rgc *RasterGraphicContext) SetFontSize(fontSizePoints float64)

SetFontSize sets the font size in points (as in “a 12 point font”).

func (*RasterGraphicContext) Stroke

func (rgc *RasterGraphicContext) Stroke(paths ...*Path)

Stroke strokes the paths with the color specified by SetStrokeColor

func (*RasterGraphicContext) StrokeString

func (rgc *RasterGraphicContext) StrokeString(text string) (cursor float64, err error)

StrokeString draws the contour of the text at point (0, 0)

func (*RasterGraphicContext) StrokeStringAt

func (rgc *RasterGraphicContext) StrokeStringAt(text string, x, y float64) (cursor float64, err error)

StrokeStringAt draws the contour of the text at point (x, y)

type ScalingPolicy

type ScalingPolicy int

ScalingPolicy is a constant to define how to scale an image

const (
	// ScalingNone no scaling applied
	ScalingNone ScalingPolicy = iota
	// ScalingStretch the image is stretched so that its width and height are exactly the given width and height
	ScalingStretch
	// ScalingWidth the image is scaled so that its width is exactly the given width
	ScalingWidth
	// ScalingHeight the image is scaled so that its height is exactly the given height
	ScalingHeight
	// ScalingFit the image is scaled to the largest scale that allow the image to fit within a rectangle width x height
	ScalingFit
	// ScalingSameArea the image is scaled so that its area is exactly the area of the given rectangle width x height
	ScalingSameArea
	// ScalingFill the image is scaled to the smallest scale that allow the image to fully cover a rectangle width x height
	ScalingFill
)

type SegmentedPath

type SegmentedPath struct {
	Points []float64
}

SegmentedPath is a path of disparate point sectinos.

func (*SegmentedPath) Close

func (p *SegmentedPath) Close()

Close implements the path interface.

func (*SegmentedPath) End

func (p *SegmentedPath) End()

End implements the path interface.

func (*SegmentedPath) LineJoin

func (p *SegmentedPath) LineJoin()

LineJoin implements the path interface.

func (*SegmentedPath) LineTo

func (p *SegmentedPath) LineTo(x, y float64)

LineTo implements the path interface.

func (*SegmentedPath) MoveTo

func (p *SegmentedPath) MoveTo(x, y float64)

MoveTo implements the path interface.

type SolidFillStyle

type SolidFillStyle struct {
	// Color defines the line color
	Color color.Color
	// FillRule defines the file rule to used
	FillRule FillRule
}

SolidFillStyle define style attributes for a solid fill style

type StackGraphicContext

type StackGraphicContext struct {
	// contains filtered or unexported fields
}

StackGraphicContext is a context that does things.

func NewStackGraphicContext

func NewStackGraphicContext() *StackGraphicContext

NewStackGraphicContext Create a new Graphic context from an image

func (*StackGraphicContext) ArcTo

func (gc *StackGraphicContext) ArcTo(cx, cy, rx, ry, startAngle, delta float64)

ArcTo draws an arc.

func (*StackGraphicContext) BeginPath

func (gc *StackGraphicContext) BeginPath()

BeginPath starts a new path.

func (*StackGraphicContext) Close

func (gc *StackGraphicContext) Close()

Close closes a path.

func (*StackGraphicContext) ComposeMatrixTransform

func (gc *StackGraphicContext) ComposeMatrixTransform(tr Matrix)

ComposeMatrixTransform composes a transform into the current transform.

func (*StackGraphicContext) CubicCurveTo

func (gc *StackGraphicContext) CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)

CubicCurveTo draws a cubic curve.

func (*StackGraphicContext) GetFont

func (gc *StackGraphicContext) GetFont() *truetype.Font

GetFont returns the font.

func (*StackGraphicContext) GetFontSize

func (gc *StackGraphicContext) GetFontSize() float64

GetFontSize gets the font size.

func (*StackGraphicContext) GetMatrixTransform

func (gc *StackGraphicContext) GetMatrixTransform() Matrix

GetMatrixTransform returns the matrix transform.

func (*StackGraphicContext) IsEmpty

func (gc *StackGraphicContext) IsEmpty() bool

IsEmpty returns if the path is empty.

func (*StackGraphicContext) LastPoint

func (gc *StackGraphicContext) LastPoint() (x float64, y float64)

LastPoint returns the last point on the path.

func (*StackGraphicContext) LineTo

func (gc *StackGraphicContext) LineTo(x, y float64)

LineTo draws a line.

func (*StackGraphicContext) MoveTo

func (gc *StackGraphicContext) MoveTo(x, y float64)

MoveTo moves the cursor for a path.

func (*StackGraphicContext) QuadCurveTo

func (gc *StackGraphicContext) QuadCurveTo(cx, cy, x, y float64)

QuadCurveTo draws a quad curve.

func (*StackGraphicContext) Restore

func (gc *StackGraphicContext) Restore()

Restore restores the previous context.

func (*StackGraphicContext) Rotate

func (gc *StackGraphicContext) Rotate(angle float64)

Rotate rotates the matrix transform by an angle in degrees.

func (*StackGraphicContext) Save

func (gc *StackGraphicContext) Save()

Save pushes a context onto the stack.

func (*StackGraphicContext) Scale

func (gc *StackGraphicContext) Scale(sx, sy float64)

Scale scales a transform.

func (*StackGraphicContext) SetFillColor

func (gc *StackGraphicContext) SetFillColor(c color.Color)

SetFillColor sets the fill color.

func (*StackGraphicContext) SetFillRule

func (gc *StackGraphicContext) SetFillRule(f FillRule)

SetFillRule sets the fill rule.

func (*StackGraphicContext) SetFont

func (gc *StackGraphicContext) SetFont(f *truetype.Font)

SetFont sets the current font.

func (*StackGraphicContext) SetFontSize

func (gc *StackGraphicContext) SetFontSize(fontSizePoints float64)

SetFontSize sets the font size.

func (*StackGraphicContext) SetLineCap

func (gc *StackGraphicContext) SetLineCap(cap LineCap)

SetLineCap sets the line cap.

func (*StackGraphicContext) SetLineDash

func (gc *StackGraphicContext) SetLineDash(dash []float64, dashOffset float64)

SetLineDash sets the line dash.

func (*StackGraphicContext) SetLineJoin

func (gc *StackGraphicContext) SetLineJoin(join LineJoin)

SetLineJoin sets the line join.

func (*StackGraphicContext) SetLineWidth

func (gc *StackGraphicContext) SetLineWidth(lineWidth float64)

SetLineWidth sets the line width.

func (*StackGraphicContext) SetMatrixTransform

func (gc *StackGraphicContext) SetMatrixTransform(tr Matrix)

SetMatrixTransform sets the matrix transform.

func (*StackGraphicContext) SetStrokeColor

func (gc *StackGraphicContext) SetStrokeColor(c color.Color)

SetStrokeColor sets the stroke color.

func (*StackGraphicContext) Translate

func (gc *StackGraphicContext) Translate(tx, ty float64)

Translate translates a transform.

type StrokeStyle

type StrokeStyle struct {
	// Color defines the color of stroke
	Color color.Color
	// Line width
	Width float64
	// Line cap style rounded, butt or square
	LineCap LineCap
	// Line join style bevel, round or miter
	LineJoin LineJoin
	// offset of the first dash
	DashOffset float64
	// array represented dash length pair values are plain dash and impair are space between dash
	// if empty display plain line
	Dash []float64
}

StrokeStyle keeps stroke style attributes that is used by the Stroke method of a Drawer

type TextStyle

type TextStyle struct {
	// Color defines the color of text
	Color color.Color
	// Size font size
	Size float64
	// The font to use
	Font *truetype.Font
	// Horizontal Alignment of the text
	Halign Halign
	// Vertical Alignment of the text
	Valign Valign
}

TextStyle describe text property

type Transformer

type Transformer struct {
	Tr        Matrix
	Flattener Flattener
}

Transformer apply the Matrix transformation tr

func (Transformer) Close

func (t Transformer) Close()

Close implements the path builder interface.

func (Transformer) End

func (t Transformer) End()

End implements the path builder interface.

func (Transformer) LineJoin

func (t Transformer) LineJoin()

LineJoin implements the path builder interface.

func (Transformer) LineTo

func (t Transformer) LineTo(x, y float64)

LineTo implements the path builder interface.

func (Transformer) MoveTo

func (t Transformer) MoveTo(x, y float64)

MoveTo implements the path builder interface.

type Valign

type Valign int

Valign Vertical Alignment of the text

const (
	// ValignTop top align text
	ValignTop Valign = iota
	// ValignCenter centered text
	ValignCenter
	// ValignBottom bottom aligned text
	ValignBottom
	// ValignBaseline align text with the baseline of the font
	ValignBaseline
)

Jump to

Keyboard shortcuts

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