...

Package draw

import "gonum.org/v1/plot/vg/draw"
Overview
Index
Examples

Overview ▾

Package draw provides types and functions to draw shapes on a vg.Canvas.

Index ▾

Constants
func Formats() []string
func NewFormattedCanvas(w, h vg.Length, format string) (vg.CanvasWriterTo, error)
func RegisterFormat(name string, fn func(w, h vg.Length) vg.CanvasWriterTo)
type BoxGlyph
    func (BoxGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type Canvas
    func Crop(c Canvas, left, right, bottom, top vg.Length) Canvas
    func New(c vg.CanvasSizer) Canvas
    func NewCanvas(c vg.Canvas, w, h vg.Length) Canvas
    func (c *Canvas) Center() vg.Point
    func (c *Canvas) ClipLinesX(lines ...[]vg.Point) (clipped [][]vg.Point)
    func (c *Canvas) ClipLinesXY(lines ...[]vg.Point) [][]vg.Point
    func (c *Canvas) ClipLinesY(lines ...[]vg.Point) (clipped [][]vg.Point)
    func (c *Canvas) ClipPolygonX(pts []vg.Point) []vg.Point
    func (c *Canvas) ClipPolygonXY(pts []vg.Point) []vg.Point
    func (c *Canvas) ClipPolygonY(pts []vg.Point) []vg.Point
    func (c *Canvas) Contains(p vg.Point) bool
    func (c *Canvas) ContainsX(x vg.Length) bool
    func (c *Canvas) ContainsY(y vg.Length) bool
    func (c *Canvas) DrawGlyph(sty GlyphStyle, pt vg.Point)
    func (c *Canvas) DrawGlyphNoClip(sty GlyphStyle, pt vg.Point)
    func (c *Canvas) FillPolygon(clr color.Color, pts []vg.Point)
    func (c *Canvas) FillText(sty TextStyle, pt vg.Point, txt string)
    func (c *Canvas) SetLineStyle(sty LineStyle)
    func (c *Canvas) StrokeLine2(sty LineStyle, x0, y0, x1, y1 vg.Length)
    func (c *Canvas) StrokeLines(sty LineStyle, lines ...[]vg.Point)
    func (c *Canvas) X(x float64) vg.Length
    func (c *Canvas) Y(y float64) vg.Length
type CircleGlyph
    func (CircleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type CrossGlyph
    func (CrossGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type GlyphDrawer
type GlyphStyle
    func (g GlyphStyle) Rectangle() vg.Rectangle
type LineStyle
type PlainTextHandler
type PlusGlyph
    func (PlusGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type PyramidGlyph
    func (PyramidGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type RingGlyph
    func (RingGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type SquareGlyph
    func (SquareGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type TextHandler
type TextStyle
type Tiles
    func (ts Tiles) At(c Canvas, x, y int) Canvas
type TriangleGlyph
    func (TriangleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)
type XAlignment
type YAlignment

Package files

canvas.go doc.go text.go text_plain.go

Constants

const (
    // XLeft aligns the left edge of the text with the specified location.
    XLeft = text.XLeft
    // XCenter aligns the horizontal center of the text with the specified location.
    XCenter = text.XCenter
    // XRight aligns the right edge of the text with the specified location.
    XRight = text.XRight
)
const (
    // YTop aligns the top of of the text with the specified location.
    YTop = text.YTop
    // YCenter aligns the vertical center of the text with the specified location.
    YCenter = text.YCenter
    // YBottom aligns the bottom of the text with the specified location.
    YBottom = text.YBottom
)

Position specifies the text position.

const (
    PosLeft   = text.PosLeft
    PosBottom = text.PosBottom
    PosCenter = text.PosCenter
    PosTop    = text.PosTop
    PosRight  = text.PosRight
)

func Formats

func Formats() []string

Formats returns the sorted list of registered vg formats.

func NewFormattedCanvas

func NewFormattedCanvas(w, h vg.Length, format string) (vg.CanvasWriterTo, error)

NewFormattedCanvas creates a new vg.CanvasWriterTo with the specified image format. Supported formats need to be registered by importing one or more of the following packages:

func RegisterFormat

func RegisterFormat(name string, fn func(w, h vg.Length) vg.CanvasWriterTo)

RegisterFormat registers an image format for use by NewFormattedCanvas. name is the name of the format, like "jpeg" or "png". fn is the construction function to call for the format.

RegisterFormat panics if fn is nil.

type BoxGlyph

BoxGlyph is a glyph that draws a filled square.

type BoxGlyph struct{}

func (BoxGlyph) DrawGlyph

func (BoxGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type Canvas

A Canvas is a vector graphics canvas along with an associated Rectangle defining a section of the canvas to which drawing should take place.

type Canvas struct {
    vg.Canvas
    vg.Rectangle
}

func Crop

func Crop(c Canvas, left, right, bottom, top vg.Length) Canvas

Crop returns a new Canvas corresponding to the Canvas c with the given lengths added to the minimum and maximum x and y values of the Canvas's Rectangle. Note that cropping the right and top sides of the canvas requires specifying negative values of right and top.

Example (SplitHorizontal)

Code:

c := draw.New(vgimg.New(vg.Points(10), vg.Points(16)))

// Split c along a vertical line centered on the canvas.
left, right := SplitHorizontal(c, c.Size().X/2)
fmt.Printf("left:  %#v\n", left.Rectangle)
fmt.Printf("right: %#v\n", right.Rectangle)

Output:

left:  vg.Rectangle{Min:vg.Point{X:0, Y:0}, Max:vg.Point{X:5, Y:16}}
right: vg.Rectangle{Min:vg.Point{X:5, Y:0}, Max:vg.Point{X:10, Y:16}}

Example (SplitVertical)

Code:

c := draw.New(vgimg.New(vg.Points(10), vg.Points(16)))

// Split c along a horizontal line centered on the canvas.
bottom, top := SplitVertical(c, c.Size().Y/2)
fmt.Printf("top:    %#v\n", top.Rectangle)
fmt.Printf("bottom: %#v\n", bottom.Rectangle)

Output:

top:    vg.Rectangle{Min:vg.Point{X:0, Y:8}, Max:vg.Point{X:10, Y:16}}
bottom: vg.Rectangle{Min:vg.Point{X:0, Y:0}, Max:vg.Point{X:10, Y:8}}

func New

func New(c vg.CanvasSizer) Canvas

New returns a new (bounded) draw.Canvas.

func NewCanvas

func NewCanvas(c vg.Canvas, w, h vg.Length) Canvas

NewCanvas returns a new (bounded) draw.Canvas of the given size.

func (*Canvas) Center

func (c *Canvas) Center() vg.Point

Center returns the center point of the area

func (*Canvas) ClipLinesX

func (c *Canvas) ClipLinesX(lines ...[]vg.Point) (clipped [][]vg.Point)

ClipLinesX returns a slice of lines that represent the given line clipped in the X direction.

func (*Canvas) ClipLinesXY

func (c *Canvas) ClipLinesXY(lines ...[]vg.Point) [][]vg.Point

ClipLinesXY returns a slice of lines that represent the given line clipped in both X and Y directions.

func (*Canvas) ClipLinesY

func (c *Canvas) ClipLinesY(lines ...[]vg.Point) (clipped [][]vg.Point)

ClipLinesY returns a slice of lines that represent the given line clipped in the Y direction.

func (*Canvas) ClipPolygonX

func (c *Canvas) ClipPolygonX(pts []vg.Point) []vg.Point

ClipPolygonX returns a slice of lines that represent the given polygon clipped in the X direction.

func (*Canvas) ClipPolygonXY

func (c *Canvas) ClipPolygonXY(pts []vg.Point) []vg.Point

ClipPolygonXY returns a slice of lines that represent the given polygon clipped in both X and Y directions.

func (*Canvas) ClipPolygonY

func (c *Canvas) ClipPolygonY(pts []vg.Point) []vg.Point

ClipPolygonY returns a slice of lines that represent the given polygon clipped in the Y direction.

func (*Canvas) Contains

func (c *Canvas) Contains(p vg.Point) bool

Contains returns true if the Canvas contains the point.

func (*Canvas) ContainsX

func (c *Canvas) ContainsX(x vg.Length) bool

ContainsX returns true if the Canvas contains the x coordinate.

func (*Canvas) ContainsY

func (c *Canvas) ContainsY(y vg.Length) bool

ContainsY returns true if the Canvas contains the y coordinate.

func (*Canvas) DrawGlyph

func (c *Canvas) DrawGlyph(sty GlyphStyle, pt vg.Point)

DrawGlyph draws the given glyph to the draw area. If the point is not within the Canvas or the sty.Shape is nil then nothing is drawn.

func (*Canvas) DrawGlyphNoClip

func (c *Canvas) DrawGlyphNoClip(sty GlyphStyle, pt vg.Point)

DrawGlyphNoClip draws the given glyph to the draw area. If the sty.Shape is nil then nothing is drawn.

func (*Canvas) FillPolygon

func (c *Canvas) FillPolygon(clr color.Color, pts []vg.Point)

FillPolygon fills a polygon with the given color.

func (*Canvas) FillText

func (c *Canvas) FillText(sty TextStyle, pt vg.Point, txt string)

FillText fills lines of text in the draw area. pt specifies the location where the text is to be drawn.

func (*Canvas) SetLineStyle

func (c *Canvas) SetLineStyle(sty LineStyle)

SetLineStyle sets the current line style

func (*Canvas) StrokeLine2

func (c *Canvas) StrokeLine2(sty LineStyle, x0, y0, x1, y1 vg.Length)

StrokeLine2 draws a line between two points in the given Canvas.

func (*Canvas) StrokeLines

func (c *Canvas) StrokeLines(sty LineStyle, lines ...[]vg.Point)

StrokeLines draws a line connecting a set of points in the given Canvas.

func (*Canvas) X

func (c *Canvas) X(x float64) vg.Length

X returns the value of x, given in the unit range, in the drawing coordinates of this draw area. A value of 0, for example, will return the minimum x value of the draw area and a value of 1 will return the maximum.

func (*Canvas) Y

func (c *Canvas) Y(y float64) vg.Length

Y returns the value of x, given in the unit range, in the drawing coordinates of this draw area. A value of 0, for example, will return the minimum y value of the draw area and a value of 1 will return the maximum.

type CircleGlyph

CircleGlyph is a glyph that draws a solid circle.

type CircleGlyph struct{}

func (CircleGlyph) DrawGlyph

func (CircleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the GlyphDrawer interface.

type CrossGlyph

CrossGlyph is a glyph that draws a big X.

type CrossGlyph struct{}

func (CrossGlyph) DrawGlyph

func (CrossGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type GlyphDrawer

A GlyphDrawer wraps the DrawGlyph function.

type GlyphDrawer interface {
    // DrawGlyph draws the glyph at the given
    // point, with the given color and radius.
    DrawGlyph(*Canvas, GlyphStyle, vg.Point)
}

type GlyphStyle

A GlyphStyle specifies the look of a glyph used to draw a point on a plot.

type GlyphStyle struct {
    // Color is the color used to draw the glyph.
    color.Color

    // Radius specifies the size of the glyph's radius.
    Radius vg.Length

    // Shape draws the shape of the glyph.
    Shape GlyphDrawer
}

func (GlyphStyle) Rectangle

func (g GlyphStyle) Rectangle() vg.Rectangle

Rectangle returns the rectangle surrounding this glyph, assuming that it is drawn centered at 0,0

type LineStyle

LineStyle describes what a line will look like.

type LineStyle struct {
    // Color is the color of the line.
    Color color.Color

    // Width is the width of the line.
    Width vg.Length

    Dashes   []vg.Length
    DashOffs vg.Length
}

type PlainTextHandler

PlainTextHandler is a text/plain handler.

type PlainTextHandler = text.Plain

type PlusGlyph

PlusGlyph is a glyph that draws a plus sign

type PlusGlyph struct{}

func (PlusGlyph) DrawGlyph

func (PlusGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type PyramidGlyph

PyramidGlyph is a glyph that draws a filled triangle.

type PyramidGlyph struct{}

func (PyramidGlyph) DrawGlyph

func (PyramidGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type RingGlyph

RingGlyph is a glyph that draws the outline of a circle.

type RingGlyph struct{}

func (RingGlyph) DrawGlyph

func (RingGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type SquareGlyph

SquareGlyph is a glyph that draws the outline of a square.

type SquareGlyph struct{}

func (SquareGlyph) DrawGlyph

func (SquareGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type TextHandler

type TextHandler = text.Handler

type TextStyle

type TextStyle = text.Style

type Tiles

Tiles creates regular subcanvases from a Canvas.

type Tiles struct {
    // Cols and Rows specify the number of rows and columns of tiles.
    Cols, Rows int
    // PadTop, PadBottom, PadRight, and PadLeft specify the padding
    // on the corresponding side of each tile.
    PadTop, PadBottom, PadRight, PadLeft vg.Length
    // PadX and PadY specify the padding between columns and rows
    // of tiles respectively..
    PadX, PadY vg.Length
}

func (Tiles) At

func (ts Tiles) At(c Canvas, x, y int) Canvas

At returns the subcanvas within c that corresponds to the tile at column x, row y.

type TriangleGlyph

TriangleGlyph is a glyph that draws the outline of a triangle.

type TriangleGlyph struct{}

func (TriangleGlyph) DrawGlyph

func (TriangleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt vg.Point)

DrawGlyph implements the Glyph interface.

type XAlignment

XAlignment specifies text alignment in the X direction. Three preset options are available, but an arbitrary alignment can also be specified using XAlignment(desired number).

type XAlignment = text.XAlignment

type YAlignment

YAlignment specifies text alignment in the Y direction. Three preset options are available, but an arbitrary alignment can also be specified using YAlignment(desired number).

type YAlignment = text.YAlignment