Documentation ¶
Index ¶
- Constants
- Variables
- func Equal(a, b float64) bool
- func NewGoChart(writer Writer) func(int, int) (chart.Renderer, error)
- func NewGonumPlot(r Renderer) draw.Canvas
- type ArcsJoiner
- type BevelJoiner
- type ButtCapper
- type CSSColor
- type Canvas
- func (c *Canvas) Empty() bool
- func (c *Canvas) Fit(margin float64)
- func (c *Canvas) Render(r Renderer)
- func (c *Canvas) RenderImage(img image.Image, m Matrix)
- func (c *Canvas) RenderPath(path *Path, style Style, m Matrix)
- func (c *Canvas) RenderText(text *Text, m Matrix)
- func (c *Canvas) Reset()
- func (c *Canvas) Size() (float64, float64)
- func (c *Canvas) WriteFile(filename string, w Writer) error
- type Capper
- type Context
- func (c *Context) Arc(rx, ry, rot, theta0, theta1 float64)
- func (c *Context) ArcTo(rx, ry, rot float64, large, sweep bool, x, y float64)
- func (c *Context) Close()
- func (c *Context) ComposeView(view Matrix)
- func (c *Context) CubeTo(cpx1, cpy1, cpx2, cpy2, x, y float64)
- func (c *Context) DrawImage(x, y float64, img image.Image, dpm float64)
- func (c *Context) DrawPath(x, y float64, paths ...*Path)
- func (c *Context) DrawText(x, y float64, texts ...*Text)
- func (c *Context) Fill()
- func (c *Context) FillStroke()
- func (c *Context) Height() float64
- func (c *Context) LineTo(x, y float64)
- func (c *Context) MoveTo(x, y float64)
- func (c *Context) Pop()
- func (c *Context) Pos() (float64, float64)
- func (c *Context) Push()
- func (c *Context) QuadTo(cpx, cpy, x, y float64)
- func (c *Context) ReflectX()
- func (c *Context) ReflectXAbout(x float64)
- func (c *Context) ReflectY()
- func (c *Context) ReflectYAbout(y float64)
- func (c *Context) ResetStyle()
- func (c *Context) ResetView()
- func (c *Context) Rotate(rot float64)
- func (c *Context) RotateAbout(rot, x, y float64)
- func (c *Context) Scale(sx, sy float64)
- func (c *Context) ScaleAbout(sx, sy, x, y float64)
- func (c *Context) SetCoordSystem(coordSystem CoordSystem)
- func (c *Context) SetCoordView(rect Rect, width, height float64)
- func (c *Context) SetDashes(offset float64, dashes ...float64)
- func (c *Context) SetFillColor(col color.Color)
- func (c *Context) SetFillRule(rule FillRule)
- func (c *Context) SetStrokeCapper(capper Capper)
- func (c *Context) SetStrokeColor(col color.Color)
- func (c *Context) SetStrokeJoiner(joiner Joiner)
- func (c *Context) SetStrokeWidth(width float64)
- func (c *Context) SetView(view Matrix)
- func (c *Context) Shear(sx, sy float64)
- func (c *Context) ShearAbout(sx, sy, x, y float64)
- func (c *Context) Stroke()
- func (c *Context) Translate(x, y float64)
- func (c *Context) View() Matrix
- func (c *Context) Width() float64
- type CoordSystem
- type DPMM
- type FillRule
- type Font
- func (f *Font) Bounds(ppem float64) Rect
- func (f *Font) IndicesOf(s string) []uint16
- func (f *Font) ItalicAngle() float64
- func (f *Font) Kerning(left, right rune, ppem float64) (float64, error)
- func (f *Font) Metrics(ppem float64) FontMetrics
- func (f *Font) Name() string
- func (f *Font) Raw() (string, []byte)
- func (f *Font) UnitsPerEm() float64
- func (f *Font) Use(options TypographicOptions)
- func (f *Font) Widths(ppem float64) []float64
- type FontDecorator
- type FontFace
- func (ff FontFace) Boldness() int
- func (ff FontFace) Decorate(width float64) *Path
- func (ff FontFace) Equals(other FontFace) bool
- func (ff FontFace) Kerning(rPrev, rNext rune) float64
- func (ff FontFace) Metrics() FontMetrics
- func (ff FontFace) Name() string
- func (ff FontFace) TextWidth(s string) float64
- func (ff FontFace) ToPath(s string) (*Path, float64)
- type FontFamily
- func (family *FontFamily) Face(size float64, col color.Color, style FontStyle, variant FontVariant, ...) FontFace
- func (family *FontFamily) LoadFont(b []byte, style FontStyle) error
- func (family *FontFamily) LoadFontFile(filename string, style FontStyle) error
- func (family *FontFamily) LoadLocalFont(name string, style FontStyle) error
- func (family *FontFamily) Use(options TypographicOptions)
- type FontMetrics
- type FontStyle
- type FontVariant
- type GoChart
- func (r *GoChart) ArcTo(cx, cy int, rx, ry, startAngle, delta float64)
- func (r *GoChart) Circle(radius float64, x, y int)
- func (r *GoChart) ClearTextRotation()
- func (r *GoChart) Close()
- func (r *GoChart) Fill()
- func (r *GoChart) FillStroke()
- func (r *GoChart) GetDPI() float64
- func (r *GoChart) LineTo(x, y int)
- func (r *GoChart) MeasureText(body string) chart.Box
- func (r *GoChart) MoveTo(x, y int)
- func (r *GoChart) QuadCurveTo(cx, cy, x, y int)
- func (r *GoChart) ResetStyle()
- func (r *GoChart) Save(w io.Writer) error
- func (r *GoChart) SetClassName(name string)
- func (r *GoChart) SetDPI(dpi float64)
- func (r *GoChart) SetFillColor(col drawing.Color)
- func (r *GoChart) SetFont(font *truetype.Font)
- func (r *GoChart) SetFontColor(col drawing.Color)
- func (r *GoChart) SetFontSize(size float64)
- func (r *GoChart) SetStrokeColor(col drawing.Color)
- func (r *GoChart) SetStrokeDashArray(dashArray []float64)
- func (r *GoChart) SetStrokeWidth(width float64)
- func (r *GoChart) SetTextRotation(radian float64)
- func (r *GoChart) Stroke()
- func (r *GoChart) Text(body string, x, y int)
- type GonumPlot
- func (r *GonumPlot) DrawImage(rect vg.Rectangle, img image.Image)
- func (r *GonumPlot) Fill(path vg.Path)
- func (r *GonumPlot) FillString(f gonumFont.Face, pt vg.Point, text string)
- func (r *GonumPlot) Pop()
- func (r *GonumPlot) Push()
- func (r *GonumPlot) Rotate(rad float64)
- func (r *GonumPlot) Scale(x, y float64)
- func (r *GonumPlot) SetColor(col color.Color)
- func (r *GonumPlot) SetLineDash(pattern []vg.Length, offset vg.Length)
- func (r *GonumPlot) SetLineWidth(length vg.Length)
- func (r *GonumPlot) Size() (vg.Length, vg.Length)
- func (r *GonumPlot) Stroke(path vg.Path)
- func (r *GonumPlot) Translate(pt vg.Point)
- type Image
- type ImageEncoding
- type Joiner
- type Matrix
- func (m Matrix) Decompose() (float64, float64, float64, float64, float64, float64)
- func (m Matrix) Det() float64
- func (m Matrix) Dot(p Point) Point
- func (m Matrix) Eigen() (float64, float64, Point, Point)
- func (m Matrix) Equals(q Matrix) bool
- func (m Matrix) Inv() Matrix
- func (m Matrix) IsRigid() bool
- func (m Matrix) IsTranslation() bool
- func (m Matrix) Mul(q Matrix) Matrix
- func (m Matrix) Pos() (float64, float64)
- func (m Matrix) ReflectX() Matrix
- func (m Matrix) ReflectXAbout(x float64) Matrix
- func (m Matrix) ReflectY() Matrix
- func (m Matrix) ReflectYAbout(y float64) Matrix
- func (m Matrix) Rotate(rot float64) Matrix
- func (m Matrix) RotateAbout(rot, x, y float64) Matrix
- func (m Matrix) Scale(sx, sy float64) Matrix
- func (m Matrix) ScaleAbout(sx, sy, x, y float64) Matrix
- func (m Matrix) Shear(sx, sy float64) Matrix
- func (m Matrix) ShearAbout(sx, sy, x, y float64) Matrix
- func (m Matrix) String() string
- func (m Matrix) T() Matrix
- func (m Matrix) ToSVG(h float64) string
- func (m Matrix) Translate(x, y float64) Matrix
- type MiterJoiner
- type Path
- func BeveledRectangle(w, h, r float64) *Path
- func Circle(r float64) *Path
- func Ellipse(rx, ry float64) *Path
- func GlyphPath(sfnt *canvasFont.SFNT, glyphID uint16, size, x, y float64) (*Path, error)
- func MustParseSVG(s string) *Path
- func ParseLaTeX(s string, preamble ...string) (*Path, error)
- func ParseSVG(s string) (*Path, error)
- func Rectangle(w, h float64) *Path
- func RegularPolygon(n int, r float64, up bool) *Path
- func RegularStarPolygon(n, d int, r float64, up bool) *Path
- func RoundedRectangle(w, h, r float64) *Path
- func StarPolygon(n int, R, r float64, up bool) *Path
- func StringPath(sfnt *canvasFont.SFNT, text string, size float64) (*Path, error)
- func (p *Path) Append(q *Path) *Path
- func (p *Path) Arc(rx, ry, rot, theta0, theta1 float64) *Path
- func (p *Path) ArcTo(rx, ry, rot float64, large, sweep bool, x, y float64) *Path
- func (p *Path) Bounds() Rect
- func (p *Path) CCW() bool
- func (p *Path) Close() *Path
- func (p *Path) Closed() bool
- func (p *Path) Coords() []Point
- func (p *Path) Copy() *Path
- func (p *Path) CubeTo(cpx1, cpy1, cpx2, cpy2, x, y float64) *Path
- func (p *Path) Dash(offset float64, d ...float64) *Path
- func (p *Path) Empty() bool
- func (p *Path) Equals(q *Path) bool
- func (p *Path) Filling(fillRule FillRule) []bool
- func (p *Path) Flatten() *Path
- func (p *Path) Interior(x, y float64, fillRule FillRule) bool
- func (p *Path) Iterate(move func(Point, Point), line func(Point, Point), ...)
- func (p *Path) Join(q *Path) *Path
- func (p *Path) Length() float64
- func (p *Path) LineTo(x, y float64) *Path
- func (p *Path) Markers(first, mid, last *Path, align bool) []*Path
- func (p *Path) MoveTo(x, y float64) *Path
- func (p *Path) Offset(w float64, fillRule FillRule) *Path
- func (p *Path) Pos() Point
- func (p *Path) QuadTo(cpx, cpy, x, y float64) *Path
- func (p *Path) ReplaceArcs() *Path
- func (p *Path) Reverse() *Path
- func (p *Path) Split() []*Path
- func (p *Path) SplitAt(ts ...float64) []*Path
- func (p *Path) StartPos() Point
- func (p *Path) String() string
- func (p *Path) Stroke(w float64, cr Capper, jr Joiner) *Path
- func (p *Path) Tessellate() ([][3]Point, [][5]Point)
- func (p *Path) ToPDF() string
- func (p *Path) ToPS() string
- func (p *Path) ToRasterizer(ras *vector.Rasterizer, dpm float64)
- func (p *Path) ToSVG() string
- func (p *Path) Transform(m Matrix) *Path
- func (p *Path) Translate(x, y float64) *Path
- type Point
- func (p Point) Add(q Point) Point
- func (p Point) Angle() float64
- func (p Point) AngleBetween(q Point) float64
- func (p Point) Div(f float64) Point
- func (p Point) Dot(q Point) float64
- func (p Point) Equals(q Point) bool
- func (p Point) Interpolate(q Point, t float64) Point
- func (p Point) IsZero() bool
- func (p Point) Length() float64
- func (p Point) Mul(f float64) Point
- func (p Point) Neg() Point
- func (p Point) Norm(length float64) Point
- func (p Point) PerpDot(q Point) float64
- func (p Point) Rot(phi float64, p0 Point) Point
- func (p Point) Rot90CCW() Point
- func (p Point) Rot90CW() Point
- func (p Point) Slope() float64
- func (p Point) String() string
- func (p Point) Sub(q Point) Point
- type Polyline
- type Rect
- type Renderer
- type RichText
- type RoundCapper
- type RoundJoiner
- type SquareCapper
- type Style
- type Text
- func (t *Text) Bounds() Rect
- func (t *Text) Empty() bool
- func (t *Text) Fonts() []*Font
- func (t *Text) Heights() (float64, float64)
- func (t *Text) MostCommonFontFace() FontFace
- func (t *Text) OutlineBounds() Rect
- func (t *Text) RenderAsPath(r Renderer, m Matrix)
- func (t *Text) RenderDecoration(r Renderer, m Matrix)
- func (t *Text) WalkLines(spanCallback func(y, dx float64, span TextSpan), ...)
- func (t *Text) WalkSpans(cb func(y, dx float64, span TextSpan))
- type TextAlign
- type TextSpan
- func (span TextSpan) Bounds(width float64) Rect
- func (span TextSpan) CountGlyphs() int
- func (span TextSpan) ReplaceLigatures() TextSpan
- func (span TextSpan) Split(width float64) ([]TextSpan, bool)
- func (span TextSpan) ToPath(width float64) (*Path, *Path, color.RGBA)
- func (span TextSpan) TrimLeft() TextSpan
- func (span TextSpan) TrimRight() TextSpan
- func (span TextSpan) Words() []string
- type TypographicOptions
- type Writer
Constants ¶
const DPI = DPMM(1 / 25.4)
DPI is a shortcut for Dots-per-Inch for the resolution of raster images.
const MaxGlyphSpacing = 0.5
MaxGlyphSpacing is the maximum amount times the x-height of the font that glyphs can be spaced.
const MaxSentenceSpacing = 3.5
MaxSentenceSpacing is the maximum amount times the x-height of the font that sentence spaces can expand.
const MaxWordSpacing = 2.5
MaxWordSpacing is the maximum amount times the x-height of the font that word spaces can expand.
Variables ¶
var ( Aliceblue = color.RGBA{0xf0, 0xf8, 0xff, 0xff} // rgb(240, 248, 255) Antiquewhite = color.RGBA{0xfa, 0xeb, 0xd7, 0xff} // rgb(250, 235, 215) Aqua = color.RGBA{0x00, 0xff, 0xff, 0xff} // rgb(0, 255, 255) Aquamarine = color.RGBA{0x7f, 0xff, 0xd4, 0xff} // rgb(127, 255, 212) Azure = color.RGBA{0xf0, 0xff, 0xff, 0xff} // rgb(240, 255, 255) Beige = color.RGBA{0xf5, 0xf5, 0xdc, 0xff} // rgb(245, 245, 220) Bisque = color.RGBA{0xff, 0xe4, 0xc4, 0xff} // rgb(255, 228, 196) Black = color.RGBA{0x00, 0x00, 0x00, 0xff} // rgb(0, 0, 0) Blanchedalmond = color.RGBA{0xff, 0xeb, 0xcd, 0xff} // rgb(255, 235, 205) Blue = color.RGBA{0x00, 0x00, 0xff, 0xff} // rgb(0, 0, 255) Blueviolet = color.RGBA{0x8a, 0x2b, 0xe2, 0xff} // rgb(138, 43, 226) Brown = color.RGBA{0xa5, 0x2a, 0x2a, 0xff} // rgb(165, 42, 42) Burlywood = color.RGBA{0xde, 0xb8, 0x87, 0xff} // rgb(222, 184, 135) Cadetblue = color.RGBA{0x5f, 0x9e, 0xa0, 0xff} // rgb(95, 158, 160) Chartreuse = color.RGBA{0x7f, 0xff, 0x00, 0xff} // rgb(127, 255, 0) Chocolate = color.RGBA{0xd2, 0x69, 0x1e, 0xff} // rgb(210, 105, 30) Coral = color.RGBA{0xff, 0x7f, 0x50, 0xff} // rgb(255, 127, 80) Cornflowerblue = color.RGBA{0x64, 0x95, 0xed, 0xff} // rgb(100, 149, 237) Cornsilk = color.RGBA{0xff, 0xf8, 0xdc, 0xff} // rgb(255, 248, 220) Crimson = color.RGBA{0xdc, 0x14, 0x3c, 0xff} // rgb(220, 20, 60) Cyan = color.RGBA{0x00, 0xff, 0xff, 0xff} // rgb(0, 255, 255) Darkblue = color.RGBA{0x00, 0x00, 0x8b, 0xff} // rgb(0, 0, 139) Darkcyan = color.RGBA{0x00, 0x8b, 0x8b, 0xff} // rgb(0, 139, 139) Darkgoldenrod = color.RGBA{0xb8, 0x86, 0x0b, 0xff} // rgb(184, 134, 11) Darkgray = color.RGBA{0xa9, 0xa9, 0xa9, 0xff} // rgb(169, 169, 169) Darkgreen = color.RGBA{0x00, 0x64, 0x00, 0xff} // rgb(0, 100, 0) Darkgrey = color.RGBA{0xa9, 0xa9, 0xa9, 0xff} // rgb(169, 169, 169) Darkkhaki = color.RGBA{0xbd, 0xb7, 0x6b, 0xff} // rgb(189, 183, 107) Darkmagenta = color.RGBA{0x8b, 0x00, 0x8b, 0xff} // rgb(139, 0, 139) Darkolivegreen = color.RGBA{0x55, 0x6b, 0x2f, 0xff} // rgb(85, 107, 47) Darkorange = color.RGBA{0xff, 0x8c, 0x00, 0xff} // rgb(255, 140, 0) Darkorchid = color.RGBA{0x99, 0x32, 0xcc, 0xff} // rgb(153, 50, 204) Darkred = color.RGBA{0x8b, 0x00, 0x00, 0xff} // rgb(139, 0, 0) Darksalmon = color.RGBA{0xe9, 0x96, 0x7a, 0xff} // rgb(233, 150, 122) Darkseagreen = color.RGBA{0x8f, 0xbc, 0x8f, 0xff} // rgb(143, 188, 143) Darkslateblue = color.RGBA{0x48, 0x3d, 0x8b, 0xff} // rgb(72, 61, 139) Darkslategray = color.RGBA{0x2f, 0x4f, 0x4f, 0xff} // rgb(47, 79, 79) Darkslategrey = color.RGBA{0x2f, 0x4f, 0x4f, 0xff} // rgb(47, 79, 79) Darkturquoise = color.RGBA{0x00, 0xce, 0xd1, 0xff} // rgb(0, 206, 209) Darkviolet = color.RGBA{0x94, 0x00, 0xd3, 0xff} // rgb(148, 0, 211) Deeppink = color.RGBA{0xff, 0x14, 0x93, 0xff} // rgb(255, 20, 147) Deepskyblue = color.RGBA{0x00, 0xbf, 0xff, 0xff} // rgb(0, 191, 255) Dimgray = color.RGBA{0x69, 0x69, 0x69, 0xff} // rgb(105, 105, 105) Dimgrey = color.RGBA{0x69, 0x69, 0x69, 0xff} // rgb(105, 105, 105) Dodgerblue = color.RGBA{0x1e, 0x90, 0xff, 0xff} // rgb(30, 144, 255) Firebrick = color.RGBA{0xb2, 0x22, 0x22, 0xff} // rgb(178, 34, 34) Floralwhite = color.RGBA{0xff, 0xfa, 0xf0, 0xff} // rgb(255, 250, 240) Forestgreen = color.RGBA{0x22, 0x8b, 0x22, 0xff} // rgb(34, 139, 34) Fuchsia = color.RGBA{0xff, 0x00, 0xff, 0xff} // rgb(255, 0, 255) Gainsboro = color.RGBA{0xdc, 0xdc, 0xdc, 0xff} // rgb(220, 220, 220) Ghostwhite = color.RGBA{0xf8, 0xf8, 0xff, 0xff} // rgb(248, 248, 255) Gold = color.RGBA{0xff, 0xd7, 0x00, 0xff} // rgb(255, 215, 0) Goldenrod = color.RGBA{0xda, 0xa5, 0x20, 0xff} // rgb(218, 165, 32) Gray = color.RGBA{0x80, 0x80, 0x80, 0xff} // rgb(128, 128, 128) Green = color.RGBA{0x00, 0x80, 0x00, 0xff} // rgb(0, 128, 0) Greenyellow = color.RGBA{0xad, 0xff, 0x2f, 0xff} // rgb(173, 255, 47) Grey = color.RGBA{0x80, 0x80, 0x80, 0xff} // rgb(128, 128, 128) Honeydew = color.RGBA{0xf0, 0xff, 0xf0, 0xff} // rgb(240, 255, 240) Hotpink = color.RGBA{0xff, 0x69, 0xb4, 0xff} // rgb(255, 105, 180) Indianred = color.RGBA{0xcd, 0x5c, 0x5c, 0xff} // rgb(205, 92, 92) Indigo = color.RGBA{0x4b, 0x00, 0x82, 0xff} // rgb(75, 0, 130) Ivory = color.RGBA{0xff, 0xff, 0xf0, 0xff} // rgb(255, 255, 240) Khaki = color.RGBA{0xf0, 0xe6, 0x8c, 0xff} // rgb(240, 230, 140) Lavender = color.RGBA{0xe6, 0xe6, 0xfa, 0xff} // rgb(230, 230, 250) Lavenderblush = color.RGBA{0xff, 0xf0, 0xf5, 0xff} // rgb(255, 240, 245) Lawngreen = color.RGBA{0x7c, 0xfc, 0x00, 0xff} // rgb(124, 252, 0) Lemonchiffon = color.RGBA{0xff, 0xfa, 0xcd, 0xff} // rgb(255, 250, 205) Lightblue = color.RGBA{0xad, 0xd8, 0xe6, 0xff} // rgb(173, 216, 230) Lightcoral = color.RGBA{0xf0, 0x80, 0x80, 0xff} // rgb(240, 128, 128) Lightcyan = color.RGBA{0xe0, 0xff, 0xff, 0xff} // rgb(224, 255, 255) Lightgoldenrodyellow = color.RGBA{0xfa, 0xfa, 0xd2, 0xff} // rgb(250, 250, 210) Lightgray = color.RGBA{0xd3, 0xd3, 0xd3, 0xff} // rgb(211, 211, 211) Lightgreen = color.RGBA{0x90, 0xee, 0x90, 0xff} // rgb(144, 238, 144) Lightgrey = color.RGBA{0xd3, 0xd3, 0xd3, 0xff} // rgb(211, 211, 211) Lightpink = color.RGBA{0xff, 0xb6, 0xc1, 0xff} // rgb(255, 182, 193) Lightsalmon = color.RGBA{0xff, 0xa0, 0x7a, 0xff} // rgb(255, 160, 122) Lightseagreen = color.RGBA{0x20, 0xb2, 0xaa, 0xff} // rgb(32, 178, 170) Lightskyblue = color.RGBA{0x87, 0xce, 0xfa, 0xff} // rgb(135, 206, 250) Lightslategray = color.RGBA{0x77, 0x88, 0x99, 0xff} // rgb(119, 136, 153) Lightslategrey = color.RGBA{0x77, 0x88, 0x99, 0xff} // rgb(119, 136, 153) Lightsteelblue = color.RGBA{0xb0, 0xc4, 0xde, 0xff} // rgb(176, 196, 222) Lightyellow = color.RGBA{0xff, 0xff, 0xe0, 0xff} // rgb(255, 255, 224) Lime = color.RGBA{0x00, 0xff, 0x00, 0xff} // rgb(0, 255, 0) Limegreen = color.RGBA{0x32, 0xcd, 0x32, 0xff} // rgb(50, 205, 50) Linen = color.RGBA{0xfa, 0xf0, 0xe6, 0xff} // rgb(250, 240, 230) Magenta = color.RGBA{0xff, 0x00, 0xff, 0xff} // rgb(255, 0, 255) Maroon = color.RGBA{0x80, 0x00, 0x00, 0xff} // rgb(128, 0, 0) Mediumaquamarine = color.RGBA{0x66, 0xcd, 0xaa, 0xff} // rgb(102, 205, 170) Mediumblue = color.RGBA{0x00, 0x00, 0xcd, 0xff} // rgb(0, 0, 205) Mediumorchid = color.RGBA{0xba, 0x55, 0xd3, 0xff} // rgb(186, 85, 211) Mediumpurple = color.RGBA{0x93, 0x70, 0xdb, 0xff} // rgb(147, 112, 219) Mediumseagreen = color.RGBA{0x3c, 0xb3, 0x71, 0xff} // rgb(60, 179, 113) Mediumslateblue = color.RGBA{0x7b, 0x68, 0xee, 0xff} // rgb(123, 104, 238) Mediumspringgreen = color.RGBA{0x00, 0xfa, 0x9a, 0xff} // rgb(0, 250, 154) Mediumturquoise = color.RGBA{0x48, 0xd1, 0xcc, 0xff} // rgb(72, 209, 204) Mediumvioletred = color.RGBA{0xc7, 0x15, 0x85, 0xff} // rgb(199, 21, 133) Midnightblue = color.RGBA{0x19, 0x19, 0x70, 0xff} // rgb(25, 25, 112) Mintcream = color.RGBA{0xf5, 0xff, 0xfa, 0xff} // rgb(245, 255, 250) Mistyrose = color.RGBA{0xff, 0xe4, 0xe1, 0xff} // rgb(255, 228, 225) Moccasin = color.RGBA{0xff, 0xe4, 0xb5, 0xff} // rgb(255, 228, 181) Oldlace = color.RGBA{0xfd, 0xf5, 0xe6, 0xff} // rgb(253, 245, 230) Olive = color.RGBA{0x80, 0x80, 0x00, 0xff} // rgb(128, 128, 0) Olivedrab = color.RGBA{0x6b, 0x8e, 0x23, 0xff} // rgb(107, 142, 35) Orange = color.RGBA{0xff, 0xa5, 0x00, 0xff} // rgb(255, 165, 0) Orangered = color.RGBA{0xff, 0x45, 0x00, 0xff} // rgb(255, 69, 0) Orchid = color.RGBA{0xda, 0x70, 0xd6, 0xff} // rgb(218, 112, 214) Palegoldenrod = color.RGBA{0xee, 0xe8, 0xaa, 0xff} // rgb(238, 232, 170) Palegreen = color.RGBA{0x98, 0xfb, 0x98, 0xff} // rgb(152, 251, 152) Paleturquoise = color.RGBA{0xaf, 0xee, 0xee, 0xff} // rgb(175, 238, 238) Palevioletred = color.RGBA{0xdb, 0x70, 0x93, 0xff} // rgb(219, 112, 147) Papayawhip = color.RGBA{0xff, 0xef, 0xd5, 0xff} // rgb(255, 239, 213) Peachpuff = color.RGBA{0xff, 0xda, 0xb9, 0xff} // rgb(255, 218, 185) Peru = color.RGBA{0xcd, 0x85, 0x3f, 0xff} // rgb(205, 133, 63) Pink = color.RGBA{0xff, 0xc0, 0xcb, 0xff} // rgb(255, 192, 203) Plum = color.RGBA{0xdd, 0xa0, 0xdd, 0xff} // rgb(221, 160, 221) Powderblue = color.RGBA{0xb0, 0xe0, 0xe6, 0xff} // rgb(176, 224, 230) Purple = color.RGBA{0x80, 0x00, 0x80, 0xff} // rgb(128, 0, 128) Red = color.RGBA{0xff, 0x00, 0x00, 0xff} // rgb(255, 0, 0) Rosybrown = color.RGBA{0xbc, 0x8f, 0x8f, 0xff} // rgb(188, 143, 143) Royalblue = color.RGBA{0x41, 0x69, 0xe1, 0xff} // rgb(65, 105, 225) Saddlebrown = color.RGBA{0x8b, 0x45, 0x13, 0xff} // rgb(139, 69, 19) Salmon = color.RGBA{0xfa, 0x80, 0x72, 0xff} // rgb(250, 128, 114) Sandybrown = color.RGBA{0xf4, 0xa4, 0x60, 0xff} // rgb(244, 164, 96) Seagreen = color.RGBA{0x2e, 0x8b, 0x57, 0xff} // rgb(46, 139, 87) Seashell = color.RGBA{0xff, 0xf5, 0xee, 0xff} // rgb(255, 245, 238) Sienna = color.RGBA{0xa0, 0x52, 0x2d, 0xff} // rgb(160, 82, 45) Silver = color.RGBA{0xc0, 0xc0, 0xc0, 0xff} // rgb(192, 192, 192) Skyblue = color.RGBA{0x87, 0xce, 0xeb, 0xff} // rgb(135, 206, 235) Slateblue = color.RGBA{0x6a, 0x5a, 0xcd, 0xff} // rgb(106, 90, 205) Slategray = color.RGBA{0x70, 0x80, 0x90, 0xff} // rgb(112, 128, 144) Slategrey = color.RGBA{0x70, 0x80, 0x90, 0xff} // rgb(112, 128, 144) Snow = color.RGBA{0xff, 0xfa, 0xfa, 0xff} // rgb(255, 250, 250) Springgreen = color.RGBA{0x00, 0xff, 0x7f, 0xff} // rgb(0, 255, 127) Steelblue = color.RGBA{0x46, 0x82, 0xb4, 0xff} // rgb(70, 130, 180) Tan = color.RGBA{0xd2, 0xb4, 0x8c, 0xff} // rgb(210, 180, 140) Teal = color.RGBA{0x00, 0x80, 0x80, 0xff} // rgb(0, 128, 128) Thistle = color.RGBA{0xd8, 0xbf, 0xd8, 0xff} // rgb(216, 191, 216) Tomato = color.RGBA{0xff, 0x63, 0x47, 0xff} // rgb(255, 99, 71) Turquoise = color.RGBA{0x40, 0xe0, 0xd0, 0xff} // rgb(64, 224, 208) Violet = color.RGBA{0xee, 0x82, 0xee, 0xff} // rgb(238, 130, 238) Wheat = color.RGBA{0xf5, 0xde, 0xb3, 0xff} // rgb(245, 222, 179) White = color.RGBA{0xff, 0xff, 0xff, 0xff} // rgb(255, 255, 255) Whitesmoke = color.RGBA{0xf5, 0xf5, 0xf5, 0xff} // rgb(245, 245, 245) Yellow = color.RGBA{0xff, 0xff, 0x00, 0xff} // rgb(255, 255, 0) Yellowgreen = color.RGBA{0x9a, 0xcd, 0x32, 0xff} // rgb(154, 205, 50) )
from https://golang.org/x/image/colornames
var DefaultStyle = Style{ FillColor: Black, StrokeColor: Transparent, StrokeWidth: 1.0, StrokeCapper: ButtCap, StrokeJoiner: MiterJoin, DashOffset: 0.0, Dashes: []float64{}, FillRule: NonZero, }
DefaultStyle is the default style for paths. It fills the path with a black color.
var Epsilon = 1e-10
Epsilon is the smallest number below which we assume the value to be zero. This is to avoid numerical floating point issues.
var Identity = Matrix{
{1.0, 0.0, 0.0},
{0.0, 1.0, 0.0},
}
Identity is the identity affine transformation matrix, ie. transforms any point to itself.
var Precision = 8
Precision is the number of significant digits at which floating point value will be printed to output formats.
var Tolerance = 0.01
Tolerance is the maximum deviation from the original path in millimeters when e.g. flatting
var Transparent = color.RGBA{0x00, 0x00, 0x00, 0x00} // rgba(0, 0, 0, 0)
Transparent when used as a fill or stroke color will indicate that the fill or stroke will not be drawn.
Functions ¶
func NewGoChart ¶
NewGoChart returns a new github.com/wcharczuk/go-chart renderer.
func NewGonumPlot ¶
NewGonumPlot returns a new github.com/gonum/plot/vg renderer.
Types ¶
type ArcsJoiner ¶
ArcsJoiner is an arcs joiner.
func (ArcsJoiner) Join ¶
func (j ArcsJoiner) Join(rhs, lhs *Path, halfWidth float64, pivot, n0, n1 Point, r0, r1 float64)
Join adds a join to a right-hand-side and left-hand-side path, of width 2*halfWidth, around a pivot point with starting and ending normals of n0 and n1, and radius of curvatures of the previous and next segments.
func (ArcsJoiner) String ¶
func (j ArcsJoiner) String() string
type BevelJoiner ¶
type BevelJoiner struct{}
BevelJoiner is a bevel joiner.
func (BevelJoiner) Join ¶
func (BevelJoiner) Join(rhs, lhs *Path, halfWidth float64, pivot, n0, n1 Point, r0, r1 float64)
Join adds a join to a right-hand-side and left-hand-side path, of width 2*halfWidth, around a pivot point with starting and ending normals of n0 and n1, and radius of curvatures of the previous and next segments.
func (BevelJoiner) String ¶
func (BevelJoiner) String() string
type ButtCapper ¶
type ButtCapper struct{}
ButtCapper is a butt capper.
func (ButtCapper) Cap ¶
func (ButtCapper) Cap(p *Path, halfWidth float64, pivot, n0 Point)
Cap adds a cap to path p of width 2*halfWidth, at a pivot point and initial normal direction of n0.
func (ButtCapper) String ¶
func (ButtCapper) String() string
type CSSColor ¶
CSSColor is a string formatter to convert a color.RGBA to a CSS color (hexadecimal or using rgba()).
type Canvas ¶
type Canvas struct {
W, H float64
// contains filtered or unexported fields
}
Canvas stores all drawing operations as layers that can be re-rendered to other renderers.
func New ¶
New returns a new Canvas that records all drawing operations into layers. The canvas can then be rendered to any other renderer.
func (*Canvas) Fit ¶
Fit shrinks the canvas size so all elements fit. The elements are translated towards the origin when any left/bottom margins exist and the canvas size is decreased if any margins exist. It will maintain a given margin.
func (*Canvas) Render ¶
Render renders the accumulated canvas drawing operations to another renderer.
func (*Canvas) RenderImage ¶
RenderImage renders an image to the canvas using a transformation matrix.
func (*Canvas) RenderPath ¶
RenderPath renders a path to the canvas using a style and a transformation matrix.
func (*Canvas) RenderText ¶
RenderText renders a text object to the canvas using a transformation matrix.
type Capper ¶
Capper implements Cap, with rhs the path to append to, halfWidth the half width of the stroke, pivot the pivot point around which to construct a cap, and n0 the normal at the start of the path. The length of n0 is equal to the halfWidth.
var ButtCap Capper = ButtCapper{}
ButtCap caps the start or end of a path by a butt cap.
var RoundCap Capper = RoundCapper{}
RoundCap caps the start or end of a path by a round cap.
var SquareCap Capper = SquareCapper{}
SquareCap caps the start or end of a path by a square cap.
type Context ¶
Context maintains the state for the current path, path style, and view transformation matrix.
func NewContext ¶
NewContext returns a new Context which is a wrapper around a Renderer. Context maintains state for the current path, path style, and view transformation matrix.
func (*Context) Arc ¶
Arc adds an elliptical arc with radii rx and ry, with rot the counter clockwise rotation in degrees, and theta0 and theta1 the angles in degrees of the ellipse (before rot is applies) between which the arc will run. If theta0 < theta1, the arc will run in a CCW direction. If the difference between theta0 and theta1 is bigger than 360 degrees, one full circle will be drawn and the remaining part of diff % 360 (eg. a difference of 810 degrees will draw one full circle and an arc over 90 degrees).
func (*Context) ArcTo ¶
ArcTo adds an arc with radii rx and ry, with rot the counter clockwise rotation with respect to the coordinate system in degrees, large and sweep booleans (see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Arcs), and x,y the end position of the pen. The start position of the pen was given by a previous command end point. When sweep is true it means following the arc in a CCW direction in the Cartesian coordinate system, ie. that is CW in the upper-left coordinate system as is the case in SVGs.
func (*Context) ComposeView ¶
ComposeView post-multiplies the current affine transformation matrix by the given one.
func (*Context) CubeTo ¶
CubeTo adds a cubic Bézier path with control points cpx1,cpy1 and cpx2,cpy2 and end point x,y.
func (*Context) DrawImage ¶
DrawImage draws an image at position (x,y), using an image encoding (Lossy or Lossless) and DPM (dots-per-millimeter). A higher DPM will draw a smaller image.
func (*Context) DrawText ¶
DrawText draws text at position (x,y) using the current draw state. In particular, it only uses the current affine transformation matrix.
func (*Context) FillStroke ¶
func (c *Context) FillStroke()
FillStroke fills and then strokes the current path and resets it.
func (*Context) MoveTo ¶
MoveTo moves the path to x,y without connecting the path. It starts a new independent subpath. Multiple subpaths can be useful when negating parts of a previous path by overlapping it with a path in the opposite direction. The behaviour for overlapping paths depend on the FillRule.
func (*Context) Pop ¶
func (c *Context) Pop()
Pop restores the last pushed draw state and uses that as the current draw state. If there are no states on the stack, this will do nothing.
func (*Context) Pos ¶
Pos returns the current position of the path, which is the end point of the last command.
func (*Context) Push ¶
func (c *Context) Push()
Push saves the current draw state, so that it can be popped later on.
func (*Context) QuadTo ¶
QuadTo adds a quadratic Bézier path with control point cpx,cpy and end point x,y.
func (*Context) ReflectXAbout ¶
ReflectXAbout inverts the X axis of the view.
func (*Context) ReflectYAbout ¶
ReflectYAbout inverts the Y axis of the view.
func (*Context) ResetStyle ¶
func (c *Context) ResetStyle()
ResetStyle resets the draw state to its default (colors, stroke widths, dashes, ...).
func (*Context) ResetView ¶
func (c *Context) ResetView()
ResetView resets the current affine transformation matrix to the Identity matrix, ie. no transformations.
func (*Context) RotateAbout ¶
RotateAbout rotates the view around (x,y) with rot in degrees.
func (*Context) ScaleAbout ¶
ScaleAbout scales the view around (x,y).
func (*Context) SetCoordSystem ¶
func (c *Context) SetCoordSystem(coordSystem CoordSystem)
SetCoordSystem sets the current affine transformation matrix through which all operation coordinates will be transformed as a Cartesian coordinate system.
func (*Context) SetCoordView ¶
SetCoordView sets the current affine transformation matrix through which all operation coordinates will be transformed.
func (*Context) SetDashes ¶
SetDashes sets the dash pattern to be used for stroking operations. The dash offset denotes the offset into the dash array in mm from where to start. Negative values are allowed.
func (*Context) SetFillColor ¶
SetFillColor sets the color to be used for filling operations.
func (*Context) SetFillRule ¶
SetFillRule sets the fill rule to be used for filling paths.
func (*Context) SetStrokeCapper ¶
SetStrokeCapper sets the line cap function to be used for stroke endpoints.
func (*Context) SetStrokeColor ¶
SetStrokeColor sets the color to be used for stroking operations.
func (*Context) SetStrokeJoiner ¶
SetStrokeJoiner sets the line join function to be used for stroke midpoints.
func (*Context) SetStrokeWidth ¶
SetStrokeWidth sets the width in mm for stroking operations.
func (*Context) SetView ¶
SetView sets the current affine transformation matrix through which all operations will be transformed.
func (*Context) ShearAbout ¶
ShearAbout shear stretches the view around (x,y).
type CoordSystem ¶
type CoordSystem int
const ( CartesianI CoordSystem = iota CartesianII CartesianIII CartesianIV )
type DPMM ¶
type DPMM float64
DPMM (Dots-per-Millimetter) for the resolution of raster images. Higher DPMM will result in bigger images.
type FillRule ¶
type FillRule int
FillRule is the algorithm to specify which area is to be filled and which not, in particular when multiple subpaths overlap. The NonZero rule is the default and will fill any point that is being enclosed by an unequal number of paths winding clockwise and counter clockwise, otherwise it will not be filled. The EvenOdd rule will fill any point that is being enclosed by an uneven number of path, whichever their direction.
type Font ¶
type Font struct {
// contains filtered or unexported fields
}
Font defines a font of type TTF or OTF which which a FontFace can be generated for use in text drawing operations.
func (*Font) ItalicAngle ¶
ItalicAngle in counter-clockwise degrees from the vertical. Zero for upright text, negative for text that leans to the right (forward).
func (*Font) Kerning ¶
Kerning returns the horizontal adjustment for the rune pair. A positive kern means to move the glyphs further apart. Returns 0 if there is an error.
func (*Font) Metrics ¶
func (f *Font) Metrics(ppem float64) FontMetrics
Metrics returns the font metrics.
func (*Font) UnitsPerEm ¶
UnitsPerEm returns the number of units per em for f.
func (*Font) Use ¶
func (f *Font) Use(options TypographicOptions)
Use enables typographic options on the font such as ligatures.
type FontDecorator ¶
FontDecorator is an interface that returns a path given a font face and a width in mm.
var FontDashedUnderline FontDecorator = dashedUnderline{}
FontDashedUnderline is a font decoration that draws a dashed line at the base line.
var FontDottedUnderline FontDecorator = dottedUnderline{}
FontDottedUnderline is a font decoration that draws a dotted line at the base line.
var FontDoubleUnderline FontDecorator = doubleUnderline{}
FontDoubleUnderline is a font decoration that draws two lines at the base line.
var FontOverline FontDecorator = overline{}
FontOverline is a font decoration that draws a line over the text at the X-Height line.
var FontSawtoothUnderline FontDecorator = sawtoothUnderline{}
FontSawtoothUnderline is a font decoration that draws a wavy sawtooth path at the base line.
var FontSineUnderline FontDecorator = sineUnderline{}
FontSineUnderline is a font decoration that draws a wavy sine path at the base line.
var FontStrikethrough FontDecorator = strikethrough{}
FontStrikethrough is a font decoration that draws a line through the text in the middle between the base and X-Height line.
var FontUnderline FontDecorator = underline{}
FontUnderline is a font decoration that draws a line under the text at the base line.
type FontFace ¶
type FontFace struct { Font *Font Size float64 Style FontStyle Variant FontVariant Color color.RGBA Scale, Voffset, FauxBold, FauxItalic float64 // consequences of font style and variant // contains filtered or unexported fields }
FontFace defines a font face from a given font. It allows setting the font size, its color, faux styles and font decorations.
func (FontFace) Decorate ¶
Decorate will return a path from the decorations specified in the FontFace over a given width in mm.
func (FontFace) Equals ¶
Equals returns true when two font face are equal. In particular this allows two adjacent text spans that use the same decoration to allow the decoration to span both elements instead of two separately.
func (FontFace) Kerning ¶
Kerning returns the eventual kerning between two runes in mm (ie. the adjustment on the advance).
func (FontFace) Metrics ¶
func (ff FontFace) Metrics() FontMetrics
Metrics returns the font metrics. See https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Art/glyph_metrics_2x.png for an explanation of the different metrics.
type FontFamily ¶
type FontFamily struct {
// contains filtered or unexported fields
}
FontFamily contains a family of fonts (bold, italic, ...). Selecting an italic style will pick the native italic font or use faux italic if not present.
func NewFontFamily ¶
func NewFontFamily(name string) *FontFamily
NewFontFamily returns a new FontFamily.
func (*FontFamily) Face ¶
func (family *FontFamily) Face(size float64, col color.Color, style FontStyle, variant FontVariant, deco ...FontDecorator) FontFace
Face gets the font face given by the font size (in pt).
func (*FontFamily) LoadFont ¶
func (family *FontFamily) LoadFont(b []byte, style FontStyle) error
LoadFont loads a font from memory.
func (*FontFamily) LoadFontFile ¶
func (family *FontFamily) LoadFontFile(filename string, style FontStyle) error
LoadFontFile loads a font from a file.
func (*FontFamily) LoadLocalFont ¶
func (family *FontFamily) LoadLocalFont(name string, style FontStyle) error
LoadLocalFont loads a font from the system fonts location.
func (*FontFamily) Use ¶
func (family *FontFamily) Use(options TypographicOptions)
Use specifies which typographic options shall be used, ie. whether to use common typographic substitutions and which ligatures classes to use.
type FontMetrics ¶
type FontMetrics struct { LineHeight float64 Ascent float64 Descent float64 XHeight float64 CapHeight float64 }
FontMetrics contains a number of metrics that define a font face. See https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/Art/glyph_metrics_2x.png for an explanation of the different metrics.
type FontVariant ¶
type FontVariant int
FontVariant defines the font variant to be used for the font, such as subscript or smallcaps.
const ( FontNormal FontVariant = 2 << iota FontSubscript FontSuperscript FontSmallcaps )
see FontVariant
type GoChart ¶
type GoChart struct {
// contains filtered or unexported fields
}
GoChart is a github.com/wcharczuk/go-chart renderer.
func (*GoChart) ArcTo ¶
ArcTo draws an arc with a given center (cx,cy) a given set of radii (rx,ry), a startAngle and delta (in radians).
func (*GoChart) ClearTextRotation ¶
func (r *GoChart) ClearTextRotation()
ClearTextRotation clears rotation.
func (*GoChart) LineTo ¶
LineTo both starts a shape and draws a line to a given point from the previous point.
func (*GoChart) MeasureText ¶
MeasureText measures text.
func (*GoChart) QuadCurveTo ¶
QuadCurveTo draws a quad curve. cx and cy represent the bezier "control points".
func (*GoChart) ResetStyle ¶
func (r *GoChart) ResetStyle()
ResetStyle should reset any style related settings on the renderer.
func (*GoChart) SetClassName ¶
SetClassName sets the current class name.
func (*GoChart) SetFillColor ¶
SetFillColor sets the current fill color.
func (*GoChart) SetFontColor ¶
SetFontColor sets a font's color
func (*GoChart) SetFontSize ¶
SetFontSize sets the font size for a text field.
func (*GoChart) SetStrokeColor ¶
SetStrokeColor sets the current stroke color.
func (*GoChart) SetStrokeDashArray ¶
SetStrokeDashArray sets the stroke dash array.
func (*GoChart) SetStrokeWidth ¶
SetStrokeWidth sets the stroke width.
func (*GoChart) SetTextRotation ¶
SetTextRotation sets a rotation for drawing elements.
type GonumPlot ¶
type GonumPlot struct {
// contains filtered or unexported fields
}
GonumPlot is a github.com/gonum/plot/vg renderer.
func (*GonumPlot) FillString ¶
FillString fills in text at the specified location using the given font. If the font size is zero, the text is not drawn.
func (*GonumPlot) Pop ¶
func (r *GonumPlot) Pop()
Pop restores the context saved by the corresponding call to Push().
func (*GonumPlot) Push ¶
func (r *GonumPlot) Push()
Push saves the current line width, the current dash pattern, the current transforms, and the current color onto a stack so that the state can later be restored by calling Pop().
func (*GonumPlot) Rotate ¶
Rotate applies a rotation transform to the context. The parameter is specified in radians.
func (*GonumPlot) SetColor ¶
SetColor sets the current drawing color. Note that fill color and stroke color are the same, so if you want different fill and stroke colors then you must set a color, draw fills, set a new color and then draw lines.
The initial color is black. If SetColor is called with a nil color then black is used.
func (*GonumPlot) SetLineDash ¶
SetLineDash sets the dash pattern for lines. The pattern slice specifies the lengths of alternating dashes and gaps, and the offset specifies the distance into the dash pattern to start the dash.
The initial dash pattern is a solid line.
func (*GonumPlot) SetLineWidth ¶
SetLineWidth sets the width of stroked paths. If the width is not positive then stroked lines are not drawn.
The initial line width is 1 point.
type Image ¶
type Image struct { image.Image Bytes []byte Mimetype string // image/png or image/jpeg for instance }
Image allows the renderer to optimize specific cases
func NewJPEGImage ¶
NewJPEGImage parses a reader to later give access to the JPEG raw bytes.
type ImageEncoding ¶
type ImageEncoding int
ImageEncoding defines whether the embedded image shall be embedded as Lossless (typically PNG) or Lossy (typically JPG).
const ( Lossless ImageEncoding = iota Lossy )
see ImageEncoding
type Joiner ¶
Joiner implements Join, with rhs the right path and lhs the left path to append to, pivot the intersection of both path elements, n0 and n1 the normals at the start and end of the path respectively. The length of n0 and n1 are equal to the halfWidth.
var ArcsJoin Joiner = ArcsJoiner{BevelJoin, 10.0}
ArcsJoin connects two path elements by extending the ends of the paths as circle arcs until they meet. If this point is further than 10 mm * (strokeWidth / 2.0) away, this will result in a bevel join.
var BevelJoin Joiner = BevelJoiner{}
BevelJoin connects two path elements by a linear join.
var MiterJoin Joiner = MiterJoiner{BevelJoin, 2.0}
MiterJoin connects two path elements by extending the ends of the paths as lines until they meet. If this point is further than 2 mm * (strokeWidth / 2.0) away, this will result in a bevel join.
var RoundJoin Joiner = RoundJoiner{}
RoundJoin connects two path elements by a round join.
func ArcsClipJoin ¶
ArcsClipJoin returns an ArcsJoiner with given limit in mm*strokeWidth/2.0 upon which the gapJoiner function will be used. Limit can be NaN so that the gapJoiner is never used.
func MiterClipJoin ¶
MiterClipJoin returns a MiterJoiner with given limit*strokeWidth/2.0 in mm upon which the gapJoiner function will be used. Limit can be NaN so that the gapJoiner is never used.
type Matrix ¶
type Matrix [2][3]float64
Matrix is used for affine transformations. Be aware that concatenating transformation function will be evaluated right-to-left! So that Identity.Rotate(30).Translate(20,0) will first translate 20 points horizontally and then rotate 30 degrees counter clockwise.
func (Matrix) Decompose ¶
Decompose extracts the translation, rotation, scaling and rotation components (applied in the reverse order) as (tx, ty, theta, sx, sy, phi) with rotation counter clockwise. This corresponds to Identity.Translate(tx, ty).Rotate(theta).Scale(sx, sy).Rotate(phi).
func (Matrix) Dot ¶
Dot returns the dot product between the matrix and the given vector (ie. apply transformation).
func (Matrix) Eigen ¶
Eigen returns the matrix eigenvalues and eigenvectors. The first eigenvalue is related to the first eigenvector, and so for the second pair. Eigenvectors are normalized.
func (Matrix) IsRigid ¶
IsRigid is true if the matrix consists of only (proper) rigid transformations, ie. no scaling or skew.
func (Matrix) IsTranslation ¶
IsTranslation is true if the matrix consists of only translational components, ie. no rotation, scaling or skew.
func (Matrix) Mul ¶
Mul multiplies the current matrix by the given matrix (ie. combine transformations).
func (Matrix) ReflectXAbout ¶
ReflectXAbout adds a horizontal reflection transformation around position x.
func (Matrix) ReflectYAbout ¶
ReflectYAbout adds a vertical reflection transformation around position y.
func (Matrix) RotateAbout ¶
RotateAbout adds a rotation transformation around point (x,y) with rot in degrees counter clockwise.
func (Matrix) Scale ¶
Scale adds a scaling transformation in sx and sy. When scale is negative it will flip those axes.
func (Matrix) ScaleAbout ¶
ScaleAbout adds a scaling transformation around point (x,y) in sx and sy. When scale is negative it will flip those axes.
func (Matrix) Shear ¶
Shear adds a shear transformation with sx the horizontal shear and sy the vertical shear.
func (Matrix) ShearAbout ¶
ShearAbout adds a shear transformation around point (x,y) with sx the horizontal shear and sy the vertical shear.
func (Matrix) String ¶
String returns a string representation of the affine transformation matrix as six values, where [a b c; d e f; g h i] will be written as "a b d e c f" as g, h and i have fixed values (0, 0 and 1 respectively).
type MiterJoiner ¶
MiterJoiner is a miter joiner.
func (MiterJoiner) Join ¶
func (j MiterJoiner) Join(rhs, lhs *Path, halfWidth float64, pivot, n0, n1 Point, r0, r1 float64)
Join adds a join to a right-hand-side and left-hand-side path, of width 2*halfWidth, around a pivot point with starting and ending normals of n0 and n1, and radius of curvatures of the previous and next segments.
func (MiterJoiner) String ¶
func (j MiterJoiner) String() string
type Path ¶
type Path struct {
// contains filtered or unexported fields
}
Path defines a vector path in 2D using a series of connected commands (MoveTo, LineTo, QuadTo, CubeTo, ArcTo and Close). Each command consists of a number of float64 values (depending on the command) that fully define the action. The first value is the command itself (as a float64). The last two values are the end point position of the pen after the action (x,y). QuadTo defined one control point (x,y) in between, CubeTo defines two control points, and ArcTo defines (rx,ry,phi,large+sweep) i.e. the radius in x and y, its rotation (in radians) and the large and sweep booleans in one float64. Only valid commands are appended, so that LineTo has a non-zero length, QuadTo's and CubeTo's control point(s) don't (both) overlap with the start and end point, and ArcTo has non-zero radii and has non-zero length. For ArcTo we also make sure the angle is is in the range [0, 2*PI) and we scale the radii up if they appear too small to fit the arc.
func BeveledRectangle ¶
BeveledRectangle returns a rectangle with width w and height h with beveled corners at distance r from the corner.
func MustParseSVG ¶
MustParseSVG parses an SVG path data string and panics if it fails.
func ParseLaTeX ¶
ParseLaTeX parses a LaTeX formatted string into a path. It requires latex and dvisvgm to be installed on the machine. The content is surrounded by
\documentclass{article} \begin{document} \thispagestyle{empty} {{input}} \end{document}
func RegularPolygon ¶
RegularPolygon returns a regular polygon with radius r and rotation rot in degrees. It uses n vertices/edges, so when n approaches infinity this will return a path that approximates a circle. n must be 3 or more. The up boolean defines whether the first point will point north or not.
func RegularStarPolygon ¶
RegularStarPolygon returns a regular star polygon with radius r and rotation rot in degrees. It uses n vertices of density d. This will result in a self-intersection star in counter clockwise direction. If n/2 < d the star will be clockwise and if n and d are not coprime a regular polygon will be obtained, possible with multiple windings. n must be 3 or more and d 2 or more. The up boolean defines whether the first point will point north or not.
func RoundedRectangle ¶
RoundedRectangle returns a rectangle with width w and height h with rounded corners of radius r. A negative radius will cast the corners inwards (ie. concave).
func StarPolygon ¶
StarPolygon returns a star polygon of n points with alternating radius R and r. The up boolean defines whether the first point (true) or second point (false) will be pointing north.
func StringPath ¶
func (*Path) Append ¶
Append appends path q to p and returns a new path if succesful (otherwise either p or q are returned).
func (*Path) Arc ¶
Arc adds an elliptical arc with radii rx and ry, with rot the counter clockwise rotation in degrees, and theta0 and theta1 the angles in degrees of the ellipse (before rot is applies) between which the arc will run. If theta0 < theta1, the arc will run in a CCW direction. If the difference between theta0 and theta1 is bigger than 360 degrees, one full circle will be drawn and the remaining part of diff % 360 (eg. a difference of 810 degrees will draw one full circle and an arc over 90 degrees).
func (*Path) ArcTo ¶
ArcTo adds an arc with radii rx and ry, with rot the counter clockwise rotation with respect to the coordinate system in degrees, large and sweep booleans (see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Arcs), and x,y the end position of the pen. The start position of the pen was given by a previous command end point. When sweep is true it means following the arc in a CCW direction in the Cartesian coordinate system, ie. that is CW in the upper-left coordinate system as is the case in SVGs.
func (*Path) CCW ¶
CCW returns true when the path has (mostly) a counter clockwise direction. Does not need the path to be closed and will return true for a empty or straight line.
func (*Path) Close ¶
Close closes a (sub)path with a LineTo to the start of the path (the most recent MoveTo command). It also signals the path closes as opposed to being just a LineTo command, which can be significant for stroking purposes for example.
func (*Path) CubeTo ¶
CubeTo adds a cubic Bézier path with control points cpx1,cpy1 and cpx2,cpy2 and end point x,y.
func (*Path) Dash ¶
Dash returns a new path that consists of dashes. The elements in d specify the width of the dashes and gaps. It will alternate between dashes and gaps when picking widths. If d is an array of odd length, it is equivalent of passing d twice in sequence. The offset specifies the offset used into d (or negative offset onto the path). Dash will be applied to each subpath independently.
func (*Path) Empty ¶
Empty returns true if p is an empty path or consists of only MoveTos and Closes.
func (*Path) Filling ¶
Filling returns whether each subpath gets filled or not. A path may not be filling when it negates another path and depends on the FillRule. If a subpath is not closed, it is implicitly assumed to be closed. If the path has no area it will return false.
func (*Path) Flatten ¶
Flatten flattens all Bézier and arc curves into linear segments and returns a new path. It uses Tolerance as the maximum deviation.
func (*Path) Interior ¶
Interior is true when the point (x,y) is in the interior of the path, ie. gets filled. This depends on the FillRule.
func (*Path) Iterate ¶
func (p *Path) Iterate( move func(Point, Point), line func(Point, Point), quad func(Point, Point, Point), cube func(Point, Point, Point, Point), arc func(Point, float64, float64, float64, bool, bool, Point), close func(Point, Point), )
Iterate iterates oves the path commands and calls the respective functions move, line, quad, cube, arc, close when encountering a MoveTo, LineTo, QuadTo, CubeTo, ArcTo, Close command.
func (*Path) Join ¶
Join joins path q to p and returns a new path if succesful (otherwise either p or q are returned). Its like executing the commands in q to p in sequence, where if the first MoveTo of q doesn't coincide with p it will fallback to appending the paths.
func (*Path) Length ¶
Length returns the length of the path in millimeters. The length is approximated for cubic Béziers.
func (*Path) Markers ¶
Markers returns an array of start, mid and end markers along the path at the path coordinates between commands. Align will align the markers with the path direction so that the markers orient towards the path's left.
func (*Path) MoveTo ¶
MoveTo moves the path to x,y without connecting the path. It starts a new independent subpath. Multiple subpaths can be useful when negating parts of a previous path by overlapping it with a path in the opposite direction. The behaviour for overlapping paths depend on the FillRule.
func (*Path) Offset ¶
Offset offsets the path to expand by w and returns a new path. If w is negative it will contract. Path must be closed.
func (*Path) Pos ¶
Pos returns the current position of the path, which is the end point of the last command.
func (*Path) QuadTo ¶
QuadTo adds a quadratic Bézier path with control point cpx,cpy and end point x,y.
func (*Path) ReplaceArcs ¶
ReplaceArcs replaces ArcTo commands by CubeTo commands.
func (*Path) Reverse ¶
Reverse returns a new path that is the same path as p but in the reverse direction.
func (*Path) Split ¶
Split splits the path into its independent subpaths. The path is split before each MoveTo command. None of the subpaths shall be empty.
func (*Path) SplitAt ¶
SplitAt splits the path into separate paths at the specified intervals (given in millimeters) along the path.
func (*Path) StartPos ¶
StartPos returns the start point of the current subpath, ie. it returns the position of the last MoveTo command.
func (*Path) String ¶
String returns a string that represents the path similar to the SVG path data format (but not necessarily valid SVG).
func (*Path) Stroke ¶
Stroke converts a path into a stroke of width w and returns a new path. It uses cr to cap the start and end of the path, and jr to join all path elemtents. If the path closes itself, it will use a join between the start and end instead of capping them. The tolerance is the maximum deviation from the original path when flattening Béziers and optimizing the stroke.
func (*Path) Tessellate ¶
Tessellate tessellates the path and returns the triangles that fill the path. WIP
func (*Path) ToRasterizer ¶
func (p *Path) ToRasterizer(ras *vector.Rasterizer, dpm float64)
ToRasterizer rasterizes the path using the given rasterizer with dpm the dots-per-millimeter.
func (*Path) ToSVG ¶
ToSVG returns a string that represents the path in the SVG path data format with minifications.
type Point ¶
type Point struct {
X, Y float64
}
Point is a coordinate in 2D space. OP refers to the line that goes through the origin (0,0) and this point (x,y).
func (Point) AngleBetween ¶
AngleBetween returns the angle between OP and OQ.
func (Point) Dot ¶
Dot returns the dot product between OP and OQ, ie. zero if perpendicular and |OP|*|OQ| if aligned.
func (Point) Interpolate ¶
Interpolate returns a point on PQ that is linearly interpolated by t in [0,1], ie. t=0 returns P and t=1 returns Q.
func (Point) PerpDot ¶
PerpDot returns the perp dot product between OP and OQ, ie. zero if aligned and |OP|*|OQ| if perpendicular.
type Polyline ¶
type Polyline struct {
// contains filtered or unexported fields
}
Polyline defines a list of points in 2D space that form a polyline. If the last coordinate equals the first coordinate, we assume the polyline to close itself.
func PolylineFromPath ¶
PolylineFromPath returns a polyline from the given path by approximating it by linear line segments (ie. flattening).
func PolylineFromPathCoords ¶
PolylineFromPathCoords returns a polyline from the given path from each of the start/end coordinates of the segments, ie. converting all non-linear segments to linear ones.
func (*Polyline) FillCount ¶
FillCount returns the number of times the test point is enclosed by the polyline. Counter clockwise enclosures are counted positively and clockwise enclosures negatively.
func (*Polyline) Interior ¶
Interior is true when the point (x,y) is in the interior of the path, ie. gets filled. This depends on the FillRule.
type Rect ¶
type Rect struct {
X, Y, W, H float64
}
Rect is a rectangle in 2D defined by a position and its width and height.
type Renderer ¶
type Renderer interface { Size() (float64, float64) RenderPath(path *Path, style Style, m Matrix) RenderText(text *Text, m Matrix) RenderImage(img image.Image, m Matrix) }
Renderer is an interface that renderers implement. It defines the size of the target (in mm) and functions to render paths, text objects and raster images.
type RichText ¶
type RichText struct {
// contains filtered or unexported fields
}
RichText allows to build up a rich text with text spans of different font faces and by fitting that into a box.
type RoundCapper ¶
type RoundCapper struct{}
RoundCapper is a round capper.
func (RoundCapper) Cap ¶
func (RoundCapper) Cap(p *Path, halfWidth float64, pivot, n0 Point)
Cap adds a cap to path p of width 2*halfWidth, at a pivot point and initial normal direction of n0.
func (RoundCapper) String ¶
func (RoundCapper) String() string
type RoundJoiner ¶
type RoundJoiner struct{}
RoundJoiner is a round joiner.
func (RoundJoiner) Join ¶
func (RoundJoiner) Join(rhs, lhs *Path, halfWidth float64, pivot, n0, n1 Point, r0, r1 float64)
Join adds a join to a right-hand-side and left-hand-side path, of width 2*halfWidth, around a pivot point with starting and ending normals of n0 and n1, and radius of curvatures of the previous and next segments.
func (RoundJoiner) String ¶
func (RoundJoiner) String() string
type SquareCapper ¶
type SquareCapper struct{}
SquareCapper is a square capper.
func (SquareCapper) Cap ¶
func (SquareCapper) Cap(p *Path, halfWidth float64, pivot, n0 Point)
Cap adds a cap to path p of width 2*halfWidth, at a pivot point and initial normal direction of n0.
func (SquareCapper) String ¶
func (SquareCapper) String() string
type Style ¶
type Style struct { FillColor color.RGBA StrokeColor color.RGBA StrokeWidth float64 StrokeCapper Capper StrokeJoiner Joiner DashOffset float64 Dashes []float64 FillRule }
Style is the path style that defines how to draw the path. When FillColor is transparent it will not fill the path. If StrokeColor is transparent or StrokeWidth is zero, it will not stroke the path. If Dashes is an empty array, it will not draw dashes but instead a solid stroke line. FillRule determines how to fill the path when paths overlap and have certain directions (clockwise, counter clockwise).
type Text ¶
type Text struct {
// contains filtered or unexported fields
}
Text holds the representation of text using lines and text spans.
func NewTextBox ¶
func NewTextBox(ff FontFace, s string, width, height float64, halign, valign TextAlign, indent, lineStretch float64) *Text
NewTextBox is an advanced text formatter that will calculate text placement based on the settings. It takes a font face, a string, the width or height of the box (can be zero for no limit), horizontal and vertical alignment (Left, Center, Right, Top, Bottom or Justify), text indentation for the first line and line stretch (percentage to stretch the line based on the line height).
func NewTextLine ¶
NewTextLine is a simple text line using a font face, a string (supporting new lines) and horizontal alignment (Left, Center, Right).
func (*Text) Heights ¶
Height returns the height of the text using the font metrics, this is usually more than the bounds of the glyph outlines.
func (*Text) MostCommonFontFace ¶
MostCommonFontFace returns the most common FontFace of the text
func (*Text) OutlineBounds ¶
OutlineBounds returns the rectangle that contains the entire text box, ie. the glyph outlines (slow).
func (*Text) RenderAsPath ¶
RenderAsPath renders the text (and its decorations) converted to paths (calling r.RenderPath)
func (*Text) RenderDecoration ¶
RenderDecoration renders the text decorations using the RenderPath method of the Renderer. TODO: check text decoration z-positions when text lines are overlapping https://github.com/tdewolff/canvas/pull/40#pullrequestreview-400951503 TODO: check compliance with https://drafts.csswg.org/css-text-decor-4/#text-line-constancy
type TextAlign ¶
type TextAlign int
TextAlign specifies how the text should align or whether it should be justified.
type TextSpan ¶
type TextSpan struct { Face FontFace Text string SentenceSpacing float64 WordSpacing float64 GlyphSpacing float64 // contains filtered or unexported fields }
func (TextSpan) CountGlyphs ¶
CountGlyphs counts all the glyphs, where ligatures are separated into their constituent parts
func (TextSpan) ReplaceLigatures ¶
ReplaceLigatures replaces all ligatures by their constituent parts
type TypographicOptions ¶
type TypographicOptions int
TypographicOptions are the options that can be enabled to make typographic or ligature substitutions automatically.
const ( NoTypography TypographicOptions = 2 << iota NoRequiredLigatures CommonLigatures DiscretionaryLigatures HistoricalLigatures )
see TypographicOptions
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
html-canvas
Code generated for package main by go-bindata DO NOT EDIT.
|
Code generated for package main by go-bindata DO NOT EDIT. |