oksvg – github.com/fyne-io/oksvg Index | Files

package oksvg

import "github.com/fyne-io/oksvg"

Index

Variables

var DefaultStyle = PathStyle{1.0, 1.0, 2.0, 0.0, 4.0, nil, true,
	color.NRGBA{0x00, 0x00, 0x00, 0xff}, nil,
	nil, nil, rasterx.ButtCap, rasterx.Bevel, rasterx.MatrixAdder{M: rasterx.Identity}}

DefaultStyle sets the default PathStyle to fill black, winding rule, full opacity, no stroke, ButtCap line end and Bevel line connect.

Functions

func ParseSVGColor

func ParseSVGColor(colorStr string) (color.Color, error)

ParseSVGColor parses an SVG color string in all forms including all SVG1.1 names, obtained from the image.colornames package

func ParseSVGColorNum

func ParseSVGColorNum(colorStr string) (r, g, b uint8, err error)

ParseSVGColorNum reads the SFG color string e.g. #FBD9BD

Types

type ErrorMode

type ErrorMode uint8

ErrorMode is the for setting how the parser reacts to unparsed elements

const (
	// IgnoreErrorMode skips un-parsed SVG elements.
	IgnoreErrorMode ErrorMode = iota

	// WarnErrorMode outputs a warning when an un-parsed SVG element is found.
	WarnErrorMode

	// StrictErrorMode causes an error when an un-parsed SVG element is found.
	StrictErrorMode
)

type IconCursor

type IconCursor struct {
	PathCursor

	StyleStack []PathStyle
	// contains filtered or unexported fields
}

IconCursor is used while parsing SVG files.

func (*IconCursor) PushStyle

func (c *IconCursor) PushStyle(attrs []xml.Attr) error

PushStyle parses the style element, and push it on the style stack. Only color and opacity are supported for fill. Note that this parses both the contents of a style attribute plus direct fill and opacity attributes.

func (*IconCursor) ReadGradAttr

func (c *IconCursor) ReadGradAttr(attr xml.Attr) (err error)

ReadGradAttr reads an SVG gradient attribute

func (*IconCursor) ReadGradURL

func (c *IconCursor) ReadGradURL(v string, defaultColor any) (grad rasterx.Gradient, ok bool)

ReadGradURL reads an SVG format gradient url Since the context of the gradient can affect the colors the current fill or line color is passed in and used in the case of a nil stopClor value

type PathCursor

type PathCursor struct {
	rasterx.Path

	ErrorMode ErrorMode
	// contains filtered or unexported fields
}

PathCursor is used to parse SVG format path strings into a rasterx Path

func (*PathCursor) AddArcFromA

func (c *PathCursor) AddArcFromA(points []float64)

AddArcFromA adds a path of an arc element to the cursor path to the PathCursor

func (*PathCursor) CompilePath

func (c *PathCursor) CompilePath(svgPath string) error

CompilePath translates the svgPath description string into a rasterx path. All valid SVG path elements are interpreted to rasterx equivalents. The resulting path element is stored in the PathCursor.

func (*PathCursor) EllipseAt

func (c *PathCursor) EllipseAt(cx, cy, rx, ry float64)

EllipseAt adds a path of an elipse centered at cx, cy of radius rx and ry to the PathCursor

func (*PathCursor) GetPoints

func (c *PathCursor) GetPoints(dataPoints string) error

GetPoints reads a set of floating point values from the SVG format number string, and add them to the cursor's points slice.

func (*PathCursor) ReadFloat

func (c *PathCursor) ReadFloat(numStr string) error

ReadFloat reads a floating point value and adds it to the cursor's points slice.

type PathStyle

type PathStyle struct {
	FillOpacity, LineOpacity          float64
	LineWidth, DashOffset, MiterLimit float64
	Dash                              []float64
	UseNonZeroWinding                 bool

	LineGap     rasterx.GapFunc
	LeadLineCap rasterx.CapFunc // This is used if different than LineCap
	LineCap     rasterx.CapFunc
	LineJoin    rasterx.JoinMode
	// contains filtered or unexported fields
}

PathStyle holds the state of the SVG style.

type SvgIcon

type SvgIcon struct {
	ViewBox      struct{ X, Y, W, H float64 }
	Titles       []string // Title elements collect here
	Descriptions []string // Description elements collect here
	Grads        map[string]*rasterx.Gradient
	Defs         map[string][]definition
	SVGPaths     []SvgPath
	Transform    rasterx.Matrix2D
	// contains filtered or unexported fields
}

SvgIcon holds data from parsed SVGs.

func ReadIcon

func ReadIcon(iconFile string, errMode ...ErrorMode) (*SvgIcon, error)

ReadIcon reads the Icon from the named file. This only supports a sub-set of SVG, but is enough to draw many icons. If errMode is provided, the first value determines if the icon ignores, errors out, or logs a warning if it does not handle an element found in the icon file. Ignore warnings is the default if no ErrorMode value is provided.

func ReadIconStream

func ReadIconStream(stream io.Reader, errMode ...ErrorMode) (*SvgIcon, error)

ReadIconStream reads the Icon from the given io.Reader. This only supports a sub-set of SVG, but is enough to draw many icons. If errMode is provided, the first value determines if the icon ignores, errors out, or logs a warning if it does not handle an element found in the icon file. Ignore warnings is the default if no ErrorMode value is provided.

func ReadReplacingCurrentColor

func ReadReplacingCurrentColor(stream io.Reader, currentColor string, errMode ...ErrorMode) (icon *SvgIcon, err error)

ReadReplacingCurrentColor replaces currentColor value with specified value and loads SvgIcon as ReadIconStream do. currentColor value should be valid hex, rgb or named color value.

func (*SvgIcon) Draw

func (s *SvgIcon) Draw(r *rasterx.Dasher, opacity float64)

Draw the compiled SVG icon into the GraphicContext. All elements should be contained by the Bounds rectangle of the SvgIcon.

func (*SvgIcon) SetTarget

func (s *SvgIcon) SetTarget(x, y, w, h float64)

SetTarget sets the Transform matrix to draw within the bounds of the rectangle arguments

type SvgPath

type SvgPath struct {
	PathStyle
	Path rasterx.Path
}

SvgPath binds a style to a path.

func (*SvgPath) Draw

func (svgp *SvgPath) Draw(r *rasterx.Dasher, opacity float64)

Draw the compiled SvgPath into the Dasher.

func (*SvgPath) DrawTransformed

func (svgp *SvgPath) DrawTransformed(r *rasterx.Dasher, opacity float64, t rasterx.Matrix2D)

DrawTransformed draws the compiled SvgPath into the Dasher while applying transform t.

func (*SvgPath) GetFillColor

func (svgp *SvgPath) GetFillColor() color.Color

GetFillColor returns the fill color of the SvgPath if one is defined and otherwise returns colornames.Black

func (*SvgPath) GetLineColor

func (svgp *SvgPath) GetLineColor() color.Color

GetLineColor returns the stroke color of the SvgPath if one is defined and otherwise returns colornames.Black

func (*SvgPath) SetFillColor

func (svgp *SvgPath) SetFillColor(clr color.Color)

SetFillColor sets the fill color of the SvgPath

func (*SvgPath) SetLineColor

func (svgp *SvgPath) SetLineColor(clr color.Color)

SetLineColor sets the line color of the SvgPath

Source Files

definitions.go draw.go icon_cursor.go path_cursor.go path_style.go public.go svg_icon.go svg_path.go utils.go

Version
v0.1.0 (latest)
Published
Mar 30, 2025
Platform
js/wasm
Imports
16 packages
Last checked
now

Tools for package owners.