Documentation ¶
Overview ¶
Package canvas implements a 2D vector graphics program.
Index ¶
- Variables
- func AddNewDash(dary []float64) string
- func BBoxReshapeDelta(bb *math32.Box2, delta float32, bbX, bbY BBoxPoints)
- func DashIconsInit()
- func DashMatchArray(lwidth float64, dary []float64) (bool, string)
- func DashMulWidth(lwidth float64, dary []float64) []float64
- func DashString(dary []float64) string
- func DrawAlignMatchHoriz(sp *core.Sprite, trgsz image.Point)
- func DrawAlignMatchVert(sp *core.Sprite, trgsz image.Point)
- func DrawRubberBandHoriz(sp *core.Sprite, trgsz image.Point)
- func DrawRubberBandVert(sp *core.Sprite, trgsz image.Point)
- func DrawSpriteNodeCtrl(sp *core.Sprite, subtyp Sprites)
- func DrawSpriteNodePoint(sp *core.Sprite, bbtyp Sprites)
- func DrawSpriteReshape(sp *core.Sprite, bbtyp Sprites)
- func DrawSpriteSelect(sp *core.Sprite, bbtyp Sprites)
- func HandleSpriteSize(scale float32) (int, image.Point)
- func IconToMarkerName(icnm any) string
- func InactivateSprites(ctx core.Widget, typ Sprites)
- func LayerIsLocked(kn tree.Node) bool
- func LayerIsVisible(kn tree.Node) bool
- func LineSpriteSize() (int, int)
- func MarkerDeleteCtxtColors(mk *svg.Marker)
- func MarkerIconsInit()
- func MarkerNameToIcon(nm string) icons.Icon
- func MarkerSetColors(mk *svg.Marker, fill, stroke string)
- func MarkerSetProp(sg *svg.SVG, sii svg.Node, prop, name string, mc MarkerColors)
- func MarkerUpdateColorProp(sg *svg.SVG, sii svg.Node, prop string)
- func NewMarker(sg *svg.SVG, name string, id int) *svg.Marker
- func NewMarkerFromXML(name, xml string) *svg.Marker
- func NewSVGElement[T tree.NodeValue](sv *SVG) *T
- func NewSVGElementDrag[T tree.NodeValue](sv *SVG, start, end image.Point) *T
- func NodeIsLayer(kn tree.Node) bool
- func NodeIsMetaData(kn tree.Node) bool
- func NodeParentLayer(n tree.Node) tree.Node
- func ProportionalBBox(bb, orig math32.Box2) math32.Box2
- func RecycleMarker(sg *svg.SVG, sii svg.Node, name string, id int, mc MarkerColors) *svg.Marker
- func SetSpritePos(sp *core.Sprite, pos image.Point)
- func SetSpriteProperties(sp *core.Sprite, typ, subtyp Sprites, idx int)
- func SnapToIncr(val, off, incr float32) (float32, bool)
- func SnapToPt(val, snap float32) (float32, bool)
- func SplitsView(pt *Splits)
- func Sprite(ctx core.Widget, typ, subtyp Sprites, idx int, trgsz image.Point, ...) *core.Sprite
- func SpriteByName(ctx core.Widget, typ, subtyp Sprites, idx int) (*core.Sprite, bool)
- func SpriteName(typ, subtyp Sprites, idx int) string
- func SquareBBox(bb math32.Box2) math32.Box2
- func ToolDoesBasicSelect(tl Tools) bool
- type Actions
- func (i Actions) Desc() string
- func (i Actions) Int64() int64
- func (i Actions) MarshalText() ([]byte, error)
- func (i *Actions) SetInt64(in int64)
- func (i *Actions) SetString(s string) error
- func (i Actions) String() string
- func (i *Actions) UnmarshalText(text []byte) error
- func (i Actions) Values() []enums.Enum
- type AlignAnchors
- func (i AlignAnchors) Desc() string
- func (i AlignAnchors) Int64() int64
- func (i AlignAnchors) MarshalText() ([]byte, error)
- func (i *AlignAnchors) SetInt64(in int64)
- func (i *AlignAnchors) SetString(s string) error
- func (i AlignAnchors) String() string
- func (i *AlignAnchors) UnmarshalText(text []byte) error
- func (i AlignAnchors) Values() []enums.Enum
- type AlignView
- type Aligns
- func (i Aligns) Desc() string
- func (i Aligns) Int64() int64
- func (i Aligns) MarshalText() ([]byte, error)
- func (i *Aligns) SetInt64(in int64)
- func (i *Aligns) SetString(s string) error
- func (i Aligns) String() string
- func (i *Aligns) UnmarshalText(text []byte) error
- func (i Aligns) Values() []enums.Enum
- type BBoxPoints
- func (i BBoxPoints) Desc() string
- func (ev BBoxPoints) Dim() math32.Dims
- func (i BBoxPoints) Int64() int64
- func (i BBoxPoints) MarshalText() ([]byte, error)
- func (ev BBoxPoints) MoveDelta(bb *math32.Box2, delta float32)
- func (ev BBoxPoints) PointBox(bb math32.Box2) math32.Vector2
- func (ev BBoxPoints) PointRect(bb image.Rectangle) math32.Vector2
- func (i *BBoxPoints) SetInt64(in int64)
- func (i *BBoxPoints) SetString(s string) error
- func (ev BBoxPoints) SetValueBox(bb *math32.Box2, val float32)
- func (i BBoxPoints) String() string
- func (i *BBoxPoints) UnmarshalText(text []byte) error
- func (ev BBoxPoints) ValueBox(bb math32.Box2) float32
- func (ev BBoxPoints) ValueRect(bb image.Rectangle) float32
- func (i BBoxPoints) Values() []enums.Enum
- type Canvas
- func (cv *Canvas) AddImage(fname core.Filename, width, height float32) error
- func (vv *Canvas) AddLayer()
- func (vv *Canvas) Align(aa AlignAnchors, al Aligns)
- func (vv *Canvas) AlignAnchorBBox(aa AlignAnchors) (image.Rectangle, svg.Node)
- func (vv *Canvas) AlignCenter(aa AlignAnchors, dim math32.Dims, act string)
- func (vv *Canvas) AlignMax(aa AlignAnchors, dim math32.Dims, act string)
- func (vv *Canvas) AlignMaxAnchor(aa AlignAnchors, dim math32.Dims, act string)
- func (vv *Canvas) AlignMin(aa AlignAnchors, dim math32.Dims, act string)
- func (vv *Canvas) AlignMinAnchor(aa AlignAnchors, dim math32.Dims, act string)
- func (vv *Canvas) AutoSave() error
- func (vv *Canvas) AutoSaveCheck() bool
- func (vv *Canvas) AutoSaveDelete()
- func (vv *Canvas) AutoSaveFilename() string
- func (vv *Canvas) ChangeMade()
- func (vv *Canvas) ClearCurLayer(lay string)
- func (gv *Canvas) CopySelected()
- func (gv *Canvas) CutSelected()
- func (vv *Canvas) DefaultGradient() string
- func (gv *Canvas) DeleteSelected()
- func (gv *Canvas) DuplicateSelected()
- func (vv *Canvas) EditRecents()
- func (cv *Canvas) ExportPDF(dpi float32) error
- func (cv *Canvas) ExportPNG(width, height float32) error
- func (vv *Canvas) FirstLayerIndex() int
- func (cv *Canvas) HBox() *core.Frame
- func (vv *Canvas) HelpWiki()
- func (cv *Canvas) Init()
- func (vc *Canvas) InitSelectButton(w core.Widget)
- func (vv *Canvas) IsCurLayer(lay string) bool
- func (cv *Canvas) LayerTree() *core.Frame
- func (vv *Canvas) LayerView() *core.Table
- func (vv *Canvas) LayerViewSigs(lyv *core.Table)
- func (vv *Canvas) MakeNodeToolbar(p *tree.Plan)
- func (vc *Canvas) MakeSelectToolbar(p *tree.Plan)
- func (vc *Canvas) MakeTextToolbar(p *tree.Plan)
- func (vv *Canvas) MakeToolbar(p *tree.Plan)
- func (vc *Canvas) MakeTools(p *tree.Plan)
- func (vv *Canvas) ManipAction(act Actions, data string, manip bool, fun func(sii svg.Node))
- func (vv *Canvas) ManipActionFun(sii svg.Node, fun func(itm svg.Node))
- func (cv *Canvas) ModalToolbar() *core.Toolbar
- func (cv *Canvas) NewDrawing(sz PhysSize) *Canvas
- func (vv *Canvas) NodeEnableFunc(act *core.Button)
- func (vv *Canvas) NodeSetXPos(xp float32)
- func (vv *Canvas) NodeSetYPos(yp float32)
- func (cv *Canvas) OpenDrawing(fnm core.Filename) error
- func (cv *Canvas) OpenDrawingFile(fnm core.Filename) error
- func (vv *Canvas) OpenRecent(filename core.Filename)
- func (vv *Canvas) PaintView() *PaintView
- func (vv *Canvas) PasteAvailFunc(bt *core.Button)
- func (gv *Canvas) PasteClip()
- func (cv *Canvas) PromptPhysSize()
- func (vv *Canvas) Redo() string
- func (cv *Canvas) ResizeToContents()
- func (vv *Canvas) SSVG() *svg.SVG
- func (vv *Canvas) SVG() *SVG
- func (cv *Canvas) SaveDrawing() error
- func (cv *Canvas) SaveDrawingAs(fname core.Filename) error
- func (gv *Canvas) SelectFlipHorizontal()
- func (gv *Canvas) SelectFlipVertical()
- func (gv *Canvas) SelectGroup()
- func (gv *Canvas) SelectLower()
- func (gv *Canvas) SelectLowerBottom()
- func (vv *Canvas) SelectNodeInSVG(kn tree.Node, mode events.SelectModes)
- func (gv *Canvas) SelectNodeInTree(kn tree.Node, mode events.SelectModes)
- func (gv *Canvas) SelectRaise()
- func (gv *Canvas) SelectRaiseTop()
- func (gv *Canvas) SelectRotate(deg float32)
- func (gv *Canvas) SelectRotateLeft()
- func (gv *Canvas) SelectRotateRight()
- func (gv *Canvas) SelectScale(scx, scy float32)
- func (gv *Canvas) SelectSetHeight(ht float32)
- func (gv *Canvas) SelectSetWidth(wd float32)
- func (gv *Canvas) SelectSetXPos(xp float32)
- func (gv *Canvas) SelectSetYPos(yp float32)
- func (gv *Canvas) SelectUnGroup()
- func (gv *Canvas) SelectedAsTrees() []core.Treer
- func (vv *Canvas) SetColorNode(sii svg.Node, prop string, prev, pt PaintTypes, sp string)
- func (vv *Canvas) SetCurLayer(lay string)
- func (vv *Canvas) SetDashNode(sii svg.Node, dary []float64)
- func (vv *Canvas) SetDashProperties(dary []float64)
- func (vv *Canvas) SetDefaultStyle()
- func (vv *Canvas) SetFill(prev, pt PaintTypes, fp string)
- func (vv *Canvas) SetFillColor(fp string, manip bool)
- func (vv *Canvas) SetMarkerNode(sii svg.Node, start, mid, end string, sc, mc, ec MarkerColors)
- func (vv *Canvas) SetMarkerProperties(start, mid, end string, sc, mc, ec MarkerColors)
- func (cv *Canvas) SetPhysSize(sz *PhysSize)
- func (cv *Canvas) SetStatus(msg string)
- func (vv *Canvas) SetStroke(prev, pt PaintTypes, sp string)
- func (vv *Canvas) SetStrokeColor(sp string, manip bool)
- func (vv *Canvas) SetStrokeWidth(wp string, manip bool)
- func (vv *Canvas) SetStrokeWidthNode(sii svg.Node, wp string)
- func (gv *Canvas) SetText(txt string)
- func (gv *Canvas) SetTextNode(sii svg.Node, txt string) bool
- func (gv *Canvas) SetTextProperties(tps map[string]string)
- func (gv *Canvas) SetTextPropertiesNode(sii svg.Node, tps map[string]string)
- func (vv *Canvas) SetTitle()
- func (vc *Canvas) SetTool(tl Tools)
- func (cv *Canvas) Splits() *core.Splits
- func (vv *Canvas) SplitsEdit()
- func (vv *Canvas) SplitsSave(split SplitName)
- func (vv *Canvas) SplitsSaveAs(name, desc string)
- func (vv *Canvas) SplitsSetView(split SplitName)
- func (vv *Canvas) StatusBar() *core.Frame
- func (vv *Canvas) StatusText() *core.Text
- func (vv *Canvas) SyncLayers()
- func (gv *Canvas) Tab(name string) *core.Frame
- func (vv *Canvas) Tabs() *core.Tabs
- func (cv *Canvas) Tools() *core.Toolbar
- func (vv *Canvas) Tree() *Tree
- func (vv *Canvas) Undo() string
- func (vv *Canvas) UpdateAll()
- func (vv *Canvas) UpdateDisp()
- func (vv *Canvas) UpdateGradients()
- func (vv *Canvas) UpdateLayerView()
- func (vv *Canvas) UpdateMarkerColors(sii svg.Node)
- func (vv *Canvas) UpdateNodeToolbar()
- func (vc *Canvas) UpdateSelectToolbar()
- func (vv *Canvas) UpdateTabs()
- func (gv *Canvas) UpdateTextToolbar()
- func (vv *Canvas) UpdateTree()
- type EditState
- func (es *EditState) ActDone()
- func (es *EditState) ActStart(act Actions, data string)
- func (es *EditState) ActUnlock()
- func (es *EditState) ConfigDefaultGradient()
- func (es *EditState) DragNodeStart(pos image.Point)
- func (es *EditState) DragReset()
- func (es *EditState) DragSelStart(pos image.Point)
- func (es *EditState) FirstSelectedNode() svg.Node
- func (es *EditState) FirstSelectedPath() *svg.Path
- func (es *EditState) HasSelected() bool
- func (es *EditState) InAction() bool
- func (es *EditState) Init(vv *Canvas)
- func (es *EditState) IsSelected(itm svg.Node) bool
- func (es *EditState) NewRecents()
- func (es *EditState) NewSelected()
- func (es *EditState) PosInLastSelect(pos image.Point) bool
- func (es *EditState) ResetSelected()
- func (es *EditState) SanitizeSelected()
- func (es *EditState) Select(itm svg.Node)
- func (es *EditState) SelectAction(n svg.Node, mode events.SelectModes, pos image.Point)
- func (es *EditState) SelectedList(descendingSort bool) []svg.Node
- func (es *EditState) SelectedListDepth(sv *SVG, descendingSort bool) []svg.Node
- func (es *EditState) SelectedNames() []string
- func (es *EditState) SelectedNamesString() string
- func (es *EditState) SelectedToRecents()
- func (es *EditState) StartRecents(pos image.Point)
- func (es *EditState) Unselect(itm svg.Node)
- func (es *EditState) UpdateSelectBBox()
- type GradStop
- type Gradient
- type Layer
- type Layers
- type MarkerColors
- func (i MarkerColors) Desc() string
- func (i MarkerColors) Int64() int64
- func (i MarkerColors) MarshalText() ([]byte, error)
- func (i *MarkerColors) SetInt64(in int64)
- func (i *MarkerColors) SetString(s string) error
- func (i MarkerColors) String() string
- func (i *MarkerColors) UnmarshalText(text []byte) error
- func (i MarkerColors) Values() []enums.Enum
- type PaintTypes
- func (i PaintTypes) Desc() string
- func (i PaintTypes) Int64() int64
- func (i PaintTypes) MarshalText() ([]byte, error)
- func (i *PaintTypes) SetInt64(in int64)
- func (i *PaintTypes) SetString(s string) error
- func (i PaintTypes) String() string
- func (i *PaintTypes) UnmarshalText(text []byte) error
- func (i PaintTypes) Values() []enums.Enum
- type PaintView
- func (pv *PaintView) FillProp() string
- func (pv *PaintView) Init()
- func (pv *PaintView) IsFillOn() bool
- func (pv *PaintView) IsStrokeOn() bool
- func (pv *PaintView) MarkerProperties() (start, mid, end string, sc, mc, ec MarkerColors)
- func (pv *PaintView) SelectFillGrad()
- func (pv *PaintView) SelectStrokeGrad()
- func (t *PaintView) SetCanvas(v *Canvas) *PaintView
- func (t *PaintView) SetFillStops(v string) *PaintView
- func (t *PaintView) SetFillType(v PaintTypes) *PaintView
- func (t *PaintView) SetPaintStyle(v styles.Paint) *PaintView
- func (pv *PaintView) SetProperties(sii svg.Node)
- func (t *PaintView) SetStrokeStops(v string) *PaintView
- func (t *PaintView) SetStrokeType(v PaintTypes) *PaintView
- func (pv *PaintView) StrokeDashProp() []float64
- func (pv *PaintView) StrokeProp() string
- func (pv *PaintView) StrokeWidthProp() string
- type PathNode
- type PhysSize
- type SVG
- func (sv *SVG) BackgroundNeedsUpdate() bool
- func (sv *SVG) ConstrainPoint(st, rawpt math32.Vector2) (math32.Vector2, bool)
- func (sv *SVG) ContentsBBox() math32.Box2
- func (sv *SVG) DepthMap() map[tree.Node]int
- func (sv *SVG) DragMove(e events.Event)
- func (sv *SVG) EditNode(n tree.Node)
- func (sv *SVG) EditState() *EditState
- func (sv *SVG) GatherAlignPoints()
- func (sv *SVG) Gradients() []*Gradient
- func (sv *SVG) GridDots() (float32, math32.Vector2)
- func (sv *SVG) Init()
- func (sv *SVG) MakeNodeContextMenu(m *core.Scene, kn tree.Node)
- func (sv *SVG) ManipDone()
- func (sv *SVG) ManipStart(act Actions, data string)
- func (sv *SVG) MetaData(mknew bool) (main, grid *svg.MetaData)
- func (sv *SVG) NewPath(start, end image.Point) *svg.Path
- func (sv *SVG) NewText(start, end image.Point) svg.Node
- func (sv *SVG) NodeContextMenuPos(pos image.Point) image.Point
- func (sv *SVG) PathNodeSetOnePoint(path *svg.Path, pts []*PathNode, pidx int, dv math32.Vector2, ...)
- func (sv *SVG) PathNodeSetPoint(path *svg.Path, pn *PathNode, npt math32.Vector2)
- func (sv *SVG) PathNodes(path *svg.Path) ([]*PathNode, []int)
- func (sv *SVG) ReadMetaData()
- func (sv *SVG) Redo() string
- func (sv *SVG) RemoveNodeSprites()
- func (sv *SVG) RemoveSelSprites()
- func (sv *SVG) Render()
- func (sv *SVG) RenderBackground()
- func (sv *SVG) RenderSVG()
- func (sv *SVG) ResizeBg(sz image.Point)
- func (sv *SVG) ResizeToContents(grid_off bool)
- func (sv *SVG) Root() *svg.Root
- func (sv *SVG) SelectContainsPoint(pt image.Point, leavesOnly, excludeSel bool) svg.Node
- func (sv *SVG) SelectWithinBBox(bbox image.Rectangle, leavesOnly bool) []svg.Node
- func (sv *SVG) SetBBoxSpritePos(typ Sprites, idx int, bbox math32.Box2)
- func (sv *SVG) SetMetaData()
- func (sv *SVG) SetRubberBand(cur image.Point)
- func (sv *SVG) SetSVGName(el svg.Node)
- func (sv *SVG) SetSelSpritePos()
- func (sv *SVG) ShowAlignMatches(pts []image.Rectangle, typs []BBoxPoints)
- func (sv *SVG) SizeFinal()
- func (sv *SVG) SnapBBox(rawbb math32.Box2) math32.Box2
- func (sv *SVG) SnapPoint(rawpt math32.Vector2) math32.Vector2
- func (sv *SVG) SnapPointToVector(rawpt math32.Vector2) math32.Vector2
- func (sv *SVG) SpriteReshapeDrag(sp Sprites, e events.Event)
- func (sv *SVG) SpriteRotateDrag(sp Sprites, delta image.Point)
- func (sv *SVG) TransformAllLeaves(trans math32.Vector2, scale math32.Vector2, rot float32, pt math32.Vector2)
- func (sv *SVG) Undo() string
- func (sv *SVG) UndoSave(action, data string)
- func (sv *SVG) UndoSaveReplace(action, data string)
- func (sv *SVG) UpdateGradients(gl []*Gradient)
- func (sv *SVG) UpdateGridEff()
- func (sv *SVG) UpdateNodeSprites()
- func (sv *SVG) UpdateSelSprites()
- func (sv *SVG) UpdateSelect()
- func (sv *SVG) UpdateView(full bool)
- func (sv *SVG) ZoomAt(pt image.Point, delta float32)
- func (sv *SVG) ZoomToContents(width bool)
- func (sv *SVG) ZoomToPage(width bool)
- type SelectedState
- type SettingsData
- type Split
- type SplitName
- type Splits
- func (lt *Splits) Add(name, desc string, splits []float32) (*Split, int)
- func (lt *Splits) CopyFrom(cp Splits)
- func (lt *Splits) FixLen()
- func (lt *Splits) Names() []string
- func (lt *Splits) Open(filename core.Filename) error
- func (lt *Splits) OpenSettings() error
- func (lt *Splits) Save(filename core.Filename) error
- func (lt *Splits) SaveSettings() error
- func (lt *Splits) SplitByName(name SplitName) (*Split, int, bool)
- type Sprites
- func (i Sprites) Desc() string
- func (i Sprites) Int64() int64
- func (i Sprites) MarshalText() ([]byte, error)
- func (i *Sprites) SetInt64(in int64)
- func (i *Sprites) SetString(s string) error
- func (i Sprites) String() string
- func (i *Sprites) UnmarshalText(text []byte) error
- func (i Sprites) Values() []enums.Enum
- type StandardSizeValues
- type StandardSizes
- func (i StandardSizes) Desc() string
- func (i StandardSizes) Int64() int64
- func (i StandardSizes) MarshalText() ([]byte, error)
- func (i *StandardSizes) SetInt64(in int64)
- func (i *StandardSizes) SetString(s string) error
- func (i StandardSizes) String() string
- func (i *StandardSizes) UnmarshalText(text []byte) error
- func (i StandardSizes) Values() []enums.Enum
- type TextStyle
- type Tools
- type Tree
Constants ¶
This section is empty.
Variables ¶
var ( HandleSpriteScale = float32(18) HandleSizeMin = 4 HandleBorderMin = 2 )
var ( LineSpriteScale = float32(8) LineSizeMin = 3 LineBorderMin = 1 )
var ActionHelpMap = map[Actions]string{ Move: "<b>Alt</b> = move without snapping, <b>Ctrl</b> = constrain to axis with smallest delta", Reshape: "<b>Alt</b> = rotate, <b>Ctrl</b> = constraint to axis with smallest delta", }
ActionHelpMap contains a set of help strings for different actions which are the names given e.g., in the ActStart, SaveUndo etc.
var AlignIcons = map[Aligns]icons.Icon{AlignRightAnchor: cicons.AlignRightAnchor, AlignLeft: cicons.AlignLeft, AlignCenter: cicons.AlignCenter, AlignRight: cicons.AlignRight, AlignLeftAnchor: cicons.AlignLeftAnchor, AlignBaselineHoriz: cicons.AlignBaselineHoriz, AlignBottomAnchor: cicons.AlignBottomAnchor, AlignTop: cicons.AlignTop, AlignMiddle: cicons.AlignMiddle, AlignBottom: cicons.AlignBottom, AlignTopAnchor: cicons.AlignTopAnchor, AlignBaselineVert: cicons.AlignBaselineVert}
var AllDashIcons []icons.Icon
AllDashIcons contains all of the available dash names as Icons -- for chooser.
var AllDashNames []string
AllDashNames contains all of the available dash names. it is initialized from StdDashNames.
var AllDashesMap map[string][]float64
AllDashesMap contains all of the available Dashes. it is initialized from StdDashesMap
var AllMarkerIcons []icons.Icon
AllMarkerIcons contains all of the available marker names as Icons -- for chooser. All names have marker- prefix in addition to regular marker names.
var AllMarkerNames []string
AllMarkerNames contains all of the available marker names. it is initialized from StdMarkerNames.
var AllMarkersSVGMap map[string]*svg.Marker
AllMarkersSVGMap contains all of the available Markers as *svg.Marker elements that have been converted from the XML source.
var AllMarkersXMLMap map[string]string
AllMarkersXMLMap contains all of the available Markers as XML source. It is initialized from StdMarkersMap
var AvailableSplitNames []string
AvailableSplitNames are the names of the current AvailableSplits -- used for some choosers
var AvailableSplitsChanged = false
AvailableSplitsChanged is used to update toolbars via following menu, toolbar properties update methods -- not accurate if editing any other map but works for now..
var DashIconsInited = false
DashIconsInited records whether the dashes have been initialized into Icons for use in selectors: see DashIconsInit()
var MarkerIconsInited = false
MarkerIconsInited records whether the dashes have been initialized into Icons for use in selectors: see MarkerIconsInit()
var Settings = &SettingsData{ SettingsBase: core.SettingsBase{ Name: "Canvas", File: filepath.Join(core.TheApp.DataDir(), "Cogent Canvas", "settings.toml"), }, }
Settings are the overall Code settings
var SplitsSettingsFilename = "splits-settings.json"
SplitsSettingsFilename is the name of the settings file in App prefs directory for saving / loading the default AvailSplits
var SpriteNames = map[Sprites]string{ SpBBoxUpL: "up-l", SpBBoxUpC: "up-c", SpBBoxUpR: "up-r", SpBBoxDnL: "dn-l", SpBBoxDnC: "dn-c", SpBBoxDnR: "dn-r", SpBBoxLfM: "lf-m", SpBBoxRtM: "rt-m", SpReshapeBBox: "reshape-bbox", SpSelBBox: "sel-bbox", SpNodePoint: "node-point", SpNodeCtrl: "node-ctrl", SpRubberBand: "rubber-band", SpAlignMatch: "align-match", }
SpriteNames are name strings to use for naming sprites
var StandardDashNames = []string{
"dash-solid",
"dash-1-1",
"dash-1-2",
"dash-1-3",
"dash-1-4",
"dash-1-6",
"dash-1-8",
"dash-1-12",
"dash-1-24",
"dash-1-48",
"dash-empty",
"dash-2-1",
"dash-3-1",
"dash-4-1",
"dash-6-1",
"dash-8-1",
"dash-12-1",
"dash-24-1",
"dash-2-2",
"dash-3-3",
"dash-4-4",
"dash-6-6",
"dash-8-8",
"dash-12-12",
"dash-24-24",
"dash-2-4",
"dash-4-2",
"dash-2-6",
"dash-6-2",
"dash-4-8",
"dash-8-4",
"dash-2-1-012-1",
"dash-4-2-1-2",
"dash-8-2-1-2",
"dash-012-012",
"dash-014-014",
"dash-0110-0110",
}
StandardDashNames are standard dash patterns
var StandardDashesMap = map[string][]float64{
"dash-solid": {},
"dash-1-1": {1, 1},
"dash-1-2": {1, 2},
"dash-1-3": {1, 3},
"dash-1-4": {1, 4},
"dash-1-6": {1, 6},
"dash-1-8": {1, 8},
"dash-1-12": {1, 12},
"dash-1-24": {1, 24},
"dash-1-48": {1, 48},
"dash-empty": {0, 11},
"dash-2-1": {2, 1},
"dash-3-1": {3, 1},
"dash-4-1": {4, 1},
"dash-6-1": {6, 1},
"dash-8-1": {8, 1},
"dash-12-1": {12, 1},
"dash-24-1": {24, 1},
"dash-2-2": {2, 2},
"dash-3-3": {3, 3},
"dash-4-4": {4, 4},
"dash-6-6": {6, 6},
"dash-8-8": {8, 8},
"dash-12-12": {12, 12},
"dash-24-24": {24, 24},
"dash-2-4": {2, 4},
"dash-4-2": {4, 2},
"dash-2-6": {2, 6},
"dash-6-2": {6, 2},
"dash-4-8": {4, 8},
"dash-8-4": {8, 4},
"dash-2-1-012-1": {2, 1, 0.5, 1},
"dash-4-2-1-2": {4, 2, 1, 2},
"dash-8-2-1-2": {8, 2, 1, 2},
"dash-012-012": {0.5, 0.5},
"dash-014-014": {0.25, 0.25},
"dash-0110-0110": {0.1, 0.1},
}
StandardDashesMap are standard dash patterns
var StandardMarkerNames = []string{
"-",
"Arrow1Sstart",
"Arrow1Send",
"Arrow1Mstart",
"Arrow1Mend",
"Arrow1Lstart",
"Arrow1Lend",
"Arrow2Sstart",
"Arrow2Send",
"Arrow2Mstart",
"Arrow2Mend",
"Arrow2Lstart",
"Arrow2Lend",
"Tail",
"DistanceStart",
"DistanceEnd",
"DotS",
"DotM",
"DotL",
"SquareS",
"SquareM",
"SquareL",
"DiamondS",
"DiamondM",
"DiamondL",
"DiamondSstart",
"DiamondSend",
"DiamondMstart",
"DiamondMend",
"DiamondLstart",
"DiamondLend",
"EmptyDiamondS",
"EmptyDiamondM",
"EmptyDiamondL",
"EmptyDiamondSstart",
"EmptyDiamondSend",
"EmptyDiamondMstart",
"EmptyDiamondMend",
"EmptyDiamondLstart",
"EmptyDiamondLend",
"TriangleInS",
"TriangleInM",
"TriangleInL",
"TriangleOutS",
"TriangleOutM",
"TriangleOutL",
"EmptyTriangleInS",
"EmptyTriangleInM",
"EmptyTriangleInL",
"EmptyTriangleOutS",
"EmptyTriangleOutM",
"EmptyTriangleOutL",
"StopS",
"StopM",
"StopL",
"SemiCircleIn",
"SemiCircleOut",
"CurveIn",
"CurveOut",
"CurvyCross",
"Scissors",
"Legs",
"Torso",
"Club",
"RazorWire",
"InfiniteLineStart",
"InfiniteLineEnd",
}
StandardMarkerNames is an ordered list of marker names
var StandardMarkersMap = map[string]string{
"-": "",
"Arrow1Lstart": `<marker style="overflow:visible" id="Arrow1Lstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Lstart">
<path transform="scale(0.8) translate(12.5,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow1Lend": `<marker style="overflow:visible;" id="Arrow1Lend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Lend">
<path transform="scale(0.8) rotate(180) translate(12.5,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow1Mstart": `<marker style="overflow:visible" id="Arrow1Mstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Mstart">
<path transform="scale(0.4) translate(10,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow1Mend": `<marker style="overflow:visible;" id="Arrow1Mend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Mend">
<path transform="scale(0.4) rotate(180) translate(10,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow1Sstart": `<marker style="overflow:visible" id="Arrow1Sstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Sstart">
<path transform="scale(0.2) translate(6,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow1Send": `<marker style="overflow:visible;" id="Arrow1Send" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow1Send">
<path transform="scale(0.2) rotate(180) translate(6,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;" d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "/>
</marker>`,
"Arrow2Lstart": `<marker style="overflow:visible" id="Arrow2Lstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Lstart">
<path transform="scale(1.1) translate(1,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round"/>
</marker>`,
"Arrow2Lend": `<marker style="overflow:visible;" id="Arrow2Lend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Lend">
<path transform="scale(1.1) rotate(180) translate(1,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"/>
</marker>`,
"Arrow2Mstart": `<marker style="overflow:visible" id="Arrow2Mstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Mstart">
<path transform="scale(0.6) translate(0,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round"/>
</marker>`,
"Arrow2Mend": `<marker style="overflow:visible;" id="Arrow2Mend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Mend">
<path transform="scale(0.6) rotate(180) translate(0,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"/>
</marker>`,
"Arrow2Sstart": `<marker style="overflow:visible" id="Arrow2Sstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Sstart">
<path transform="scale(0.3) translate(-2.3,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round"/>
</marker>`,
"Arrow2Send": `<marker style="overflow:visible;" id="Arrow2Send" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Arrow2Send">
<path transform="scale(0.3) rotate(180) translate(-2.3,0)" d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " style="fill-rule:evenodd;fill:context-stroke;stroke-width:0.62500000;stroke-linejoin:round;"/>
</marker>`,
"Tail": `<marker style="overflow:visible" id="Tail" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Tail">
<g transform="scale(-1.2)">
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M -3.8048674,-3.9585227 L 0.54352094,0"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M -1.2866832,-3.9585227 L 3.0617053,0"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M 1.3053582,-3.9585227 L 5.6537466,0"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round" d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"/>
</g>
</marker>`,
"DistanceStart": `<marker inkscape:stockid="DistanceStart" orient="auto" refY="0.0" refX="0.0" id="DistanceStart" style="overflow:visible">
<g id="g2300">
<path id="path2306" d="M 0,0 L 2,0" style="fill:none;stroke:context-fill;stroke-width:1.15;stroke-linecap:square"/>
<path id="path2302" d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z " style="fill:context-stroke;fill-rule:evenodd;stroke:none"/>
<path id="path2304" d="M 0,-4 L 0,40" style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:square"/>
</g>
</marker>`,
"DistanceEnd": `<marker inkscape:stockid="DistanceEnd" orient="auto" refY="0.0" refX="0.0" id="DistanceEnd" style="overflow:visible">
<g id="g2301">
<path id="path2316" d="M 0,0 L -2,0" style="fill:none;stroke:context-fill;stroke-width:1.15;stroke-linecap:square"/>
<path id="path2312" d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z " style="fill:context-stroke;fill-rule:evenodd;stroke:none"/>
<path id="path2314" d="M 0,-4 L 0,40" style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:square"/>
</g>
</marker>`,
"DotL": `<marker style="overflow:visible" id="DotL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DotL">
<path transform="scale(0.8) translate(7.4, 1)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "/>
</marker>`,
"DotM": `<marker style="overflow:visible" id="DotM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DotM">
<path transform="scale(0.4) translate(7.4, 1)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "/>
</marker>`,
"DotS": `<marker style="overflow:visible" id="DotS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DotS">
<path transform="scale(0.2) translate(7.4, 1)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "/>
</marker>`,
"SquareL": `<marker style="overflow:visible" id="SquareL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="SquareL">
<path transform="scale(0.8)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "/>
</marker>`,
"SquareM": `<marker style="overflow:visible" id="SquareM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="SquareM">
<path transform="scale(0.4)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "/>
</marker>`,
"SquareS": `<marker style="overflow:visible" id="SquareS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="SquareS">
<path transform="scale(0.2)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "/>
</marker>`,
"DiamondL": `<marker style="overflow:visible" id="DiamondL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondL">
<path transform="scale(0.8)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondM": `<marker style="overflow:visible" id="DiamondM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondM">
<path transform="scale(0.4)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondS": `<marker style="overflow:visible" id="DiamondS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondS">
<path transform="scale(0.2)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondLstart": `<marker style="overflow:visible" id="DiamondLstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondLstart">
<path transform="scale(0.8) translate(7,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondMstart": `<marker style="overflow:visible" id="DiamondMstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondMstart">
<path transform="scale(0.4) translate(6.5,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondSstart": `<marker style="overflow:visible" id="DiamondSstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondSstart">
<path transform="scale(0.2) translate(6,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondLend": `<marker style="overflow:visible" id="DiamondLend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondLend">
<path transform="scale(0.8) translate(-7,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondMend": `<marker style="overflow:visible" id="DiamondMend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondMend">
<path transform="scale(0.4) translate(-6.5,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"DiamondSend": `<marker style="overflow:visible" id="DiamondSend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="DiamondSend">
<path transform="scale(0.2) translate(-6,0)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondL": `<marker style="overflow:visible" id="EmptyDiamondL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondL">
<path transform="scale(0.8)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondM": `<marker style="overflow:visible" id="EmptyDiamondM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondM">
<path transform="scale(0.4)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondS": `<marker style="overflow:visible" id="EmptyDiamondS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondS">
<path transform="scale(0.2)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondLstart": `<marker style="overflow:visible" id="EmptyDiamondLstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondLstart">
<path transform="scale(0.8) translate(7,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondMstart": `<marker style="overflow:visible" id="EmptyDiamondMstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondMstart">
<path transform="scale(0.4) translate(6.5,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondSstart": `<marker style="overflow:visible" id="EmptyDiamondSstart" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondSstart">
<path transform="scale(0.2) translate(6,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondLend": `<marker style="overflow:visible" id="EmptyDiamondLend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondLend">
<path transform="scale(0.8) translate(-7,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondMend": `<marker style="overflow:visible" id="EmptyDiamondMend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondMend">
<path transform="scale(0.4) translate(-6.5,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"EmptyDiamondSend": `<marker style="overflow:visible" id="EmptyDiamondSend" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyDiamondSend">
<path transform="scale(0.2) translate(-6,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "/>
</marker>`,
"TriangleInL": `<marker style="overflow:visible" id="TriangleInL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleInL">
<path transform="scale(-0.8)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"TriangleInM": `<marker style="overflow:visible" id="TriangleInM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleInM">
<path transform="scale(-0.4)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"TriangleInS": `<marker style="overflow:visible" id="TriangleInS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleInS">
<path transform="scale(-0.2)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"TriangleOutL": `<marker style="overflow:visible" id="TriangleOutL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleOutL">
<path transform="scale(0.8)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"TriangleOutM": `<marker style="overflow:visible" id="TriangleOutM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleOutM">
<path transform="scale(0.4)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"TriangleOutS": `<marker style="overflow:visible" id="TriangleOutS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="TriangleOutS">
<path transform="scale(0.2)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleInL": `<marker style="overflow:visible" id="EmptyTriangleInL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleInL">
<path transform="scale(-0.8) translate(-6,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleInM": `<marker style="overflow:visible" id="EmptyTriangleInM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleInM">
<path transform="scale(-0.4) translate(-4.5,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleInS": `<marker style="overflow:visible" id="EmptyTriangleInS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleInS">
<path transform="scale(-0.2) translate(-3.0,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleOutL": `<marker style="overflow:visible" id="EmptyTriangleOutL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleOutL">
<path transform="scale(0.8) translate(-6,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleOutM": `<marker style="overflow:visible" id="EmptyTriangleOutM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleOutM">
<path transform="scale(0.4) translate(-4.5,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"EmptyTriangleOutS": `<marker style="overflow:visible" id="EmptyTriangleOutS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="EmptyTriangleOutS">
<path transform="scale(0.2) translate(-3.0,0)" style="fill-rule:evenodd;fill:context-fill;stroke:context-stroke;stroke-width:1.0pt" d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "/>
</marker>`,
"StopL": `<marker style="overflow:visible" id="StopL" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="StopL">
<path transform="scale(0.8)" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,5.65 L 0.0,-5.65"/>
</marker>`,
"StopM": `<marker style="overflow:visible" id="StopM" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="StopM">
<path transform="scale(0.4)" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,5.65 L 0.0,-5.65"/>
</marker>`,
"StopS": `<marker style="overflow:visible" id="StopS" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="StopS">
<path transform="scale(0.2)" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M 0.0,5.65 L 0.0,-5.65"/>
</marker>`,
"SemiCircleIn": `<marker style="overflow:visible" id="SemiCircleIn" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="SemiCircleIn">
<path transform="scale(0.6)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074 L 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 z "/>
</marker>`,
"SemiCircleOut": `<marker style="overflow:visible" id="SemiCircleOut" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="SemiCircleOut">
<path transform="scale(0.6) translate(7.125493,0.763446)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt" d="M -2.5,-0.80913858 C -2.5,1.9508614 -4.7400000,4.1908614 -7.5,4.1908614 L -7.5,-5.8091386 C -4.7400000,-5.8091386 -2.5,-3.5691386 -2.5,-0.80913858 z "/>
</marker>`,
"CurveIn": `<marker style="overflow:visible" id="CurveIn" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="CurveIn">
<path transform="scale(0.6)" style="fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt;fill:none" d="M 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074"/>
</marker>`,
"CurveOut": `<marker style="overflow:visible" id="CurveOut" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="CurveOut">
<path transform="scale(0.6)" style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M -5.4129913,-5.0456926 C -2.6529913,-5.0456926 -0.41299131,-2.8056926 -0.41299131,-0.045692580 C -0.41299131,2.7143074 -2.6529913,4.9543074 -5.4129913,4.9543074"/>
</marker>`,
"CurvyCross": `<marker style="overflow:visible" id="CurvyCross" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="CurvyCross">
<g transform="scale(0.6)">
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074"/>
<path style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0pt" d="M -5.4129913,-5.0456926 C -2.6529913,-5.0456926 -0.41299131,-2.8056926 -0.41299131,-0.045692580 C -0.41299131,2.7143074 -2.6529913,4.9543074 -5.4129913,4.9543074"/>
</g>
</marker>`,
"Scissors": `<marker style="overflow:visible" id="Scissors" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Scissors">
<path style="fill:context-stroke;" d="M 9.0898857,-3.6061018 C 8.1198849,-4.7769976 6.3697607,-4.7358294 5.0623558,-4.2327734 L -3.1500488,-1.1548705 C -5.5383421,-2.4615840 -7.8983361,-2.0874077 -7.8983361,-2.7236578 C -7.8983361,-3.2209742 -7.4416699,-3.1119800 -7.5100293,-4.4068519 C -7.5756648,-5.6501286 -8.8736064,-6.5699315 -10.100428,-6.4884954 C -11.327699,-6.4958500 -12.599867,-5.5553341 -12.610769,-4.2584343 C -12.702194,-2.9520479 -11.603560,-1.7387447 -10.304005,-1.6532027 C -8.7816644,-1.4265411 -6.0857470,-2.3487593 -4.8210600,-0.082342643 C -5.7633447,1.6559151 -7.4350844,1.6607341 -8.9465707,1.5737277 C -10.201445,1.5014928 -11.708664,1.8611256 -12.307219,3.0945882 C -12.885586,4.2766744 -12.318421,5.9591904 -10.990470,6.3210002 C -9.6502788,6.8128279 -7.8098011,6.1912892 -7.4910978,4.6502760 C -7.2454393,3.4624530 -8.0864637,2.9043186 -7.7636052,2.4731223 C -7.5199917,2.1477623 -5.9728246,2.3362771 -3.2164999,1.0982979 L 5.6763468,4.2330688 C 6.8000164,4.5467672 8.1730685,4.5362646 9.1684433,3.4313614 L -0.051640930,-0.053722219 L 9.0898857,-3.6061018 z M -9.2179159,-5.5066058 C -7.9233569,-4.7838060 -8.0290767,-2.8230356 -9.3743431,-2.4433169 C -10.590861,-2.0196559 -12.145370,-3.2022863 -11.757521,-4.5207817 C -11.530373,-5.6026336 -10.104134,-6.0014137 -9.2179159,-5.5066058 z M -9.1616516,2.5107591 C -7.8108215,3.0096239 -8.0402087,5.2951947 -9.4138723,5.6023681 C -10.324932,5.9187072 -11.627422,5.4635705 -11.719569,4.3902287 C -11.897178,3.0851737 -10.363484,1.9060805 -9.1616516,2.5107591 z " id="schere"/>
</marker>`,
"Legs": `<marker style="overflow:visible" id="Legs" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Legs">
<g transform="scale(-0.7)">
<g transform="matrix(0,-1.000000,-1.000000,0,20.70862,21.31391)">
<path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 21.221250,20.675360 C 14.311099,25.396517 18.766725,27.282204 15.380179,34.118595"/>
<path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 21.398110,20.548120 C 20.037601,28.895644 24.934182,29.318060 25.903151,34.373078"/>
</g>
<path style="fill:context-stroke;fill-rule:evenodd;stroke-width:1.0000000pt" d="M -14.090070,-6.7318716 L -15.012238,-2.6884886 L -11.049487,-3.9115586 L -14.090070,-6.7318716 z "/>
<path style="fill:context-stroke;fill-rule:evenodd;stroke-width:1.0000000pt" d="M -15.215679,4.5567534 L -13.341552,8.2563664 L -11.074678,4.7835114 L -15.215679,4.5567534 z "/>
</g>
</marker>`,
"Torso": `<marker style="overflow:visible" id="Torso" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Torso">
<g transform="scale(0.7)">
<path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.2500000" d="M -4.7792281,-3.2395420 C -2.4288541,-2.8736027 0.52103922,-1.3019943 0.25792722,0.38794346 C -0.0051877922,2.0778819 -2.2126741,2.6176539 -4.5630471,2.2517169 C -6.9134221,1.8857769 -8.5210350,0.75201414 -8.2579220,-0.93792336 C -7.9948090,-2.6278615 -7.1296041,-3.6054813 -4.7792281,-3.2395420 z "/>
<path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 4.4598789,0.088665736 C -2.5564571,-4.3783320 5.2248769,-3.9061806 -0.84829578,-8.7197331"/>
<path style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 4.9298719,0.057520736 C -1.3872731,1.7494689 1.8027579,5.4782079 -4.9448731,7.5462725"/>
<rect style="fill-rule:evenodd;fill:context-stroke;stroke-width:1.0000000pt" width="2.6366582" height="2.7608147" x="-10.391706" y="-1.7408575" transform="matrix(0.527536,-0.849533,0.887668,0.460484,0,0)"/>
<rect style="fill-rule:evenodd;fill:context-stroke;stroke-width:1.0000000pt" width="2.7327356" height="2.8614161" x="4.9587269" y="-7.9629307" transform="matrix(0.671205,-0.741272,0.790802,0.612072,0,0)"/>
<path style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z" transform="matrix(0,-1.109517,1.109517,0,25.96648,19.71619)"/>
<path style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:context-stroke;stroke-width:1.0000000pt" d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z" transform="matrix(0,-1.109517,1.109517,0,26.82450,16.99126)"/>
</g>
</marker>`,
"Club": `<marker style="overflow:visible" id="Club" refX="0.0" refY="0.0" orient="auto" inkscape:stockid="Club">
<path transform="scale(0.6)" style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:0.74587913pt" d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "/>
</marker>`,
"RazorWire": `<marker style="overflow:visible" orient="auto" refY="0" refX="0" id="RazorWire" inkscape:stockid="RazorWire">
<path d="M 0.022727273,-0.74009011 L 0.022727273,0.69740989 L -7.7585227,3.0099099 L 10.678977,3.0099099 L 3.4914773,0.69740989 L 3.4914773,-0.74009011 L 10.741477,-2.8963401 L -7.7272727,-2.8963401 L 0.022727273,-0.74009011 z " style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.1pt" transform="scale(0.8,0.8)"/>
</marker>`,
"InfiniteLineEnd": `<marker orient="auto" refY="0" refX="0" id="InfiniteLineEnd" inkscape:stockid="InfiniteLineEnd" style="overflow:visible">
<g style="fill:context-stroke">
<circle cx="3" cy="0" r="0.8"/>
<circle cx="6.5" cy="0" r="0.8"/>
<circle cx="10" cy="0" r="0.8"/>
</g>
</marker>`,
"InfiniteLineStart": `<marker orient="auto" refY="0" refX="0" id="InfiniteLineStart" inkscape:stockid="InfiniteLineStart" style="overflow:visible">
<g transform="translate(-13,0)" style="fill:context-stroke">
<circle cx="3" cy="0" r="0.8"/>
<circle cx="6.5" cy="0" r="0.8"/>
<circle cx="10" cy="0" r="0.8"/>
</g>
</marker>`,
}
StandardMarkersMap is a map of the standard markers
var StandardSizesMap = map[StandardSizes]*StandardSizeValues{ Img1280x720: {units.UnitPx, 1280, 720}, Img1920x1080: {units.UnitPx, 1920, 1080}, Img3840x2160: {units.UnitPx, 3840, 2160}, Img7680x4320: {units.UnitPx, 7680, 4320}, Img1024x768: {units.UnitPx, 1024, 768}, Img720x480: {units.UnitPx, 720, 480}, Img640x480: {units.UnitPx, 640, 480}, Img320x240: {units.UnitPx, 320, 240}, A4: {units.UnitMm, 210, 297}, USLetter: {units.UnitPt, 612, 792}, USLegal: {units.UnitPt, 612, 1008}, A0: {units.UnitMm, 841, 1189}, A1: {units.UnitMm, 594, 841}, A2: {units.UnitMm, 420, 594}, A3: {units.UnitMm, 297, 420}, A5: {units.UnitMm, 148, 210}, A6: {units.UnitMm, 105, 148}, A7: {units.UnitMm, 74, 105}, A8: {units.UnitMm, 52, 74}, A9: {units.UnitMm, 37, 52}, A10: {units.UnitMm, 26, 37}, }
StandardSizesMap is the map of size values for each standard size
var StandardSplits = Splits{ {"Code", "2 text views, tabs", []float32{.1, .325, .325, .25}}, {"Small", "1 text view, tabs", []float32{.1, .5, 0, .4}}, {"BigTabs", "1 text view, big tabs", []float32{.1, .3, 0, .6}}, {"Debug", "big command panel for debugging", []float32{0.1, 0.3, 0.3, 0.3}}, }
StandardSplits is the original compiled-in set of standard named splits.
Functions ¶
func AddNewDash ¶
AddNewDash adds new dash pattern to available list, creating name based on pattern, which is returned. the given array is copied before storing, just in case.
func BBoxReshapeDelta ¶
func BBoxReshapeDelta(bb *math32.Box2, delta float32, bbX, bbY BBoxPoints)
BBoxReshapeDelta moves given target dimensions by delta amounts
func DashIconsInit ¶
func DashIconsInit()
DashIconsInit ensures that the dashes have been turned into icons for selectors, with same name (dash- prefix). Call this after startup, when configuring a gui element that needs it.
func DashMatchArray ¶
DashMatchArray returns the matching dash pattern for given array and line width. divides array and matches with wide tolerance. returns true if no match and thus new dash pattern was added, else false.
func DashMulWidth ¶
DashMulWidth returns the dash array multiplied by the line width -- what is actually set
func DashString ¶
DashString returns string of dash array values
func DrawAlignMatchHoriz ¶
DrawAlignMatchHoriz renders a horizontal alignment line
func DrawAlignMatchVert ¶
DrawAlignMatchVert renders a vertical alignment line
func DrawRubberBandHoriz ¶
DrawRubberBandHoriz renders a horizontal rubber band line
func DrawRubberBandVert ¶
DrawRubberBandVert renders a vertical rubber band line
func DrawSpriteNodeCtrl ¶
DrawSpriteNodeCtrl renders a NodePoint sprite handle
func DrawSpriteNodePoint ¶
DrawSpriteNodePoint renders a NodePoint sprite handle
func DrawSpriteReshape ¶
DrawSpriteReshape renders a Reshape sprite handle
func DrawSpriteSelect ¶
DrawSpriteSelect renders a Select sprite handle -- smaller
func HandleSpriteSize ¶
HandleSpriteSize returns the border size and overall size of handle-type sprites, with given scaling factor
func IconToMarkerName ¶
IconToMarkerName converts a icons.Icon (as an interface{}) to a marker name suitable for use (removes marker- prefix)
func InactivateSprites ¶
InactivateSprites inactivates sprites of given type
func LayerIsLocked ¶
LayerIsLocked returns true if layer is locked (insensitive = true)
func LayerIsVisible ¶
LayerIsVisible returns true if layer is visible
func LineSpriteSize ¶
LineSpriteSize returns the border size and overall size of line-type sprites
func MarkerDeleteCtxtColors ¶
MarkerDeleteCtxtColors deletes context-* color names from standard code
func MarkerIconsInit ¶
func MarkerIconsInit()
MarkerIconsInit ensures that the markers have been turned into icons for selectors, with marker- preix. Call this after startup, when configuring a gui element that needs it. It also initializes the AllMarkersSVGMap.
func MarkerNameToIcon ¶
MarkerNameToIcon converts a marker name to a icons.Icon
func MarkerSetColors ¶
MarkerSetColors sets color properties in each element
func MarkerSetProp ¶
MarkerSetProp sets marker property for given node to given marker name (canonical)
func MarkerUpdateColorProp ¶
MarkerUpdateColorProp updates marker color for given marker property
func NewMarker ¶
NewMarker makes a new marker of given name and id in given svg, copying from existing one in AllMarkersSVGMap.
func NewMarkerFromXML ¶
NewMarkerFromXML makes a new marker from given XML source.
func NewSVGElement ¶
NewSVGElement makes a new SVG element of the given type. It uses the current active layer if it is set.
func NewSVGElementDrag ¶
NewSVGElementDrag makes a new SVG element of the given type during the drag operation.
func NodeIsLayer ¶
NodeIsLayer returns true if given node is a layer
func NodeIsMetaData ¶
NodeIsMetaData returns true if given node is a MetaData
func NodeParentLayer ¶
NodeParentLayer returns the parent group that is a layer -- nil if none
func RecycleMarker ¶
RecycleMarker ensures that given marker name and id exists in SVG, making a new one, copying from standard markers if not. if mc is MarkerCopyColor then sets marker colors to node colors.
func SetSpritePos ¶
SetSpritePos sets sprite position, taking into account relative offsets
func SetSpriteProperties ¶
SetSpriteProperties sets sprite properties
func SnapToIncr ¶
SnapToIncr snaps value to given increment, first subtracting given offset. Tolerance is determined by settings, which is in screen pixels. Returns true if snapped.
func SnapToPt ¶
SnapToPt snaps value to given potential snap point, in screen pixel units. Tolerance is determined by settings. Returns true if snapped.
func Sprite ¶
func Sprite(ctx core.Widget, typ, subtyp Sprites, idx int, trgsz image.Point, init func(sp *core.Sprite)) *core.Sprite
Sprite returns the given sprite in the context of the given widget, making it if not yet made. trgsz is the target size (e.g., for rubber band boxes). Init function is called on new sprites.
func SpriteByName ¶
SpriteByName returns the given sprite in the context of the given widget, returning nil, false if not yet made.
func SpriteName ¶
SpriteName returns the unique name of the sprite based on main type, subtype (e.g., bbox) if relevant, and index if relevant
func ToolDoesBasicSelect ¶
ToolDoesBasicSelect returns true if tool should do select for clicks
Types ¶
type Actions ¶
type Actions int32 //enums:enum
const ActionsN Actions = 10
ActionsN is the highest valid value for type Actions, plus one.
func ActionsValues ¶
func ActionsValues() []Actions
ActionsValues returns all possible values for the type Actions.
func (Actions) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Actions) SetString ¶
SetString sets the Actions value from its string representation, and returns an error if the string is invalid.
func (*Actions) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type AlignAnchors ¶
type AlignAnchors int32 //enums:enum
AlignAnchors are ways of anchoring alignment
const ( AlignFirst AlignAnchors = iota AlignLast AlignDrawing AlignSelectBox )
const AlignAnchorsN AlignAnchors = 4
AlignAnchorsN is the highest valid value for type AlignAnchors, plus one.
func AlignAnchorsValues ¶
func AlignAnchorsValues() []AlignAnchors
AlignAnchorsValues returns all possible values for the type AlignAnchors.
func (AlignAnchors) Desc ¶
func (i AlignAnchors) Desc() string
Desc returns the description of the AlignAnchors value.
func (AlignAnchors) Int64 ¶
func (i AlignAnchors) Int64() int64
Int64 returns the AlignAnchors value as an int64.
func (AlignAnchors) MarshalText ¶
func (i AlignAnchors) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler interface.
func (*AlignAnchors) SetInt64 ¶
func (i *AlignAnchors) SetInt64(in int64)
SetInt64 sets the AlignAnchors value from an int64.
func (*AlignAnchors) SetString ¶
func (i *AlignAnchors) SetString(s string) error
SetString sets the AlignAnchors value from its string representation, and returns an error if the string is invalid.
func (AlignAnchors) String ¶
func (i AlignAnchors) String() string
String returns the string representation of this AlignAnchors value.
func (*AlignAnchors) UnmarshalText ¶
func (i *AlignAnchors) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface.
func (AlignAnchors) Values ¶
func (i AlignAnchors) Values() []enums.Enum
Values returns all possible values for the type AlignAnchors.
type AlignView ¶
type AlignView struct { core.Frame // Anchor is the alignment anchor Anchor AlignAnchors // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-"` }
AlignView provides a range of alignment actions on selected objects.
func NewAlignView ¶
NewAlignView returns a new AlignView with the given optional parent: AlignView provides a range of alignment actions on selected objects.
func (*AlignView) SetAnchor ¶
func (t *AlignView) SetAnchor(v AlignAnchors) *AlignView
SetAnchor sets the [AlignView.Anchor]: Anchor is the alignment anchor
type Aligns ¶
type Aligns int32 //enums:enum -transform kebab
Aligns are ways of aligning items
const ( // align right edges to left edge of anchor item AlignRightAnchor Aligns = iota // align left edges AlignLeft // align horizontal centers AlignCenter // align right edges AlignRight // align left edges to right edge of anchor item AlignLeftAnchor // align left text baseline edges AlignBaselineHoriz // align bottom edges to top edge of anchor item AlignBottomAnchor // align top edges AlignTop // align middle vertical point AlignMiddle // align bottom edges AlignBottom // align top edges to bottom edge of anchor item AlignTopAnchor // align baseline points vertically AlignBaselineVert )
const AlignsN Aligns = 12
AlignsN is the highest valid value for type Aligns, plus one.
func AlignsValues ¶
func AlignsValues() []Aligns
AlignsValues returns all possible values for the type Aligns.
func (Aligns) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Aligns) SetString ¶
SetString sets the Aligns value from its string representation, and returns an error if the string is invalid.
func (*Aligns) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type BBoxPoints ¶
type BBoxPoints int32 //enums:enum
BBoxPoints are the different control points within a bounding box
const ( BBLeft BBoxPoints = iota BBCenter BBRight BBTop BBMiddle BBBottom )
const BBoxPointsN BBoxPoints = 6
BBoxPointsN is the highest valid value for type BBoxPoints, plus one.
func BBoxPointsValues ¶
func BBoxPointsValues() []BBoxPoints
BBoxPointsValues returns all possible values for the type BBoxPoints.
func ReshapeBBoxPoints ¶
func ReshapeBBoxPoints(reshape Sprites) (bbX, bbY BBoxPoints)
ReshapeBBoxPoints returns the X and Y BBoxPoints for given sprite Reshape control point.
func (BBoxPoints) Desc ¶
func (i BBoxPoints) Desc() string
Desc returns the description of the BBoxPoints value.
func (BBoxPoints) Dim ¶
func (ev BBoxPoints) Dim() math32.Dims
Dim returns the relevant dimension for this point
func (BBoxPoints) Int64 ¶
func (i BBoxPoints) Int64() int64
Int64 returns the BBoxPoints value as an int64.
func (BBoxPoints) MarshalText ¶
func (i BBoxPoints) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler interface.
func (BBoxPoints) MoveDelta ¶
func (ev BBoxPoints) MoveDelta(bb *math32.Box2, delta float32)
MoveDelta moves overall bbox (Max and Min) by delta (X or Y depending on pt)
func (BBoxPoints) PointBox ¶
func (ev BBoxPoints) PointBox(bb math32.Box2) math32.Vector2
PointBox returns the relevant point for a given bounding box, where relevant dimension is from ValRect and other is midpoint -- for drawing lines. BBox is an image.Rectangle
func (BBoxPoints) PointRect ¶
func (ev BBoxPoints) PointRect(bb image.Rectangle) math32.Vector2
PointRect returns the relevant point for a given bounding box, where relevant dimension is from ValRect and other is midpoint -- for drawing lines. BBox is an image.Rectangle
func (*BBoxPoints) SetInt64 ¶
func (i *BBoxPoints) SetInt64(in int64)
SetInt64 sets the BBoxPoints value from an int64.
func (*BBoxPoints) SetString ¶
func (i *BBoxPoints) SetString(s string) error
SetString sets the BBoxPoints value from its string representation, and returns an error if the string is invalid.
func (BBoxPoints) SetValueBox ¶
func (ev BBoxPoints) SetValueBox(bb *math32.Box2, val float32)
SetValueBox sets the relevant value for a given bounding box as a math32.Box2
func (BBoxPoints) String ¶
func (i BBoxPoints) String() string
String returns the string representation of this BBoxPoints value.
func (*BBoxPoints) UnmarshalText ¶
func (i *BBoxPoints) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface.
func (BBoxPoints) ValueBox ¶
func (ev BBoxPoints) ValueBox(bb math32.Box2) float32
ValueBox returns the relevant value for a given bounding box as a math32.Box2
func (BBoxPoints) ValueRect ¶
func (ev BBoxPoints) ValueRect(bb image.Rectangle) float32
ValueRect returns the relevant value for a given bounding box as an image.Rectangle
func (BBoxPoints) Values ¶
func (i BBoxPoints) Values() []enums.Enum
Values returns all possible values for the type BBoxPoints.
type Canvas ¶
type Canvas struct { core.Frame // full path to current drawing filename Filename core.Filename `extension:".svg" set:"-"` // current edit state EditState EditState `set:"-"` }
Canvas is the main widget of the Cogent Canvas SVG vector graphics program.
func NewCanvas ¶
NewCanvas returns a new Canvas with the given optional parent: Canvas is the main widget of the Cogent Canvas SVG vector graphics program.
func (*Canvas) Align ¶
func (vv *Canvas) Align(aa AlignAnchors, al Aligns)
func (*Canvas) AlignAnchorBBox ¶
AlignAnchorBBox returns the bounding box for given type of align anchor and the anchor node if non-nil
func (*Canvas) AlignCenter ¶
func (vv *Canvas) AlignCenter(aa AlignAnchors, dim math32.Dims, act string)
func (*Canvas) AlignMaxAnchor ¶
func (vv *Canvas) AlignMaxAnchor(aa AlignAnchors, dim math32.Dims, act string)
func (*Canvas) AlignMin ¶
func (vv *Canvas) AlignMin(aa AlignAnchors, dim math32.Dims, act string)
AlignMin aligns to min coordinate (Left, Top) in bbox
func (*Canvas) AlignMinAnchor ¶
func (vv *Canvas) AlignMinAnchor(aa AlignAnchors, dim math32.Dims, act string)
func (*Canvas) AutoSaveCheck ¶
AutoSaveCheck checks if an autosave file exists -- logic for dealing with it is left to larger app -- call this before opening a file
func (*Canvas) AutoSaveDelete ¶
func (vv *Canvas) AutoSaveDelete()
AutoSaveDelete deletes any existing autosave file
func (*Canvas) AutoSaveFilename ¶
AutoSaveFilename returns the autosave filename
func (*Canvas) ChangeMade ¶
func (vv *Canvas) ChangeMade()
ChangeMade should be called after any change is completed on the drawing. Calls autosave.
func (*Canvas) ClearCurLayer ¶
ClearCurLayer clears the current layer for creating items if it was set to the given layer name
func (*Canvas) CopySelected ¶
func (gv *Canvas) CopySelected()
CopySelected copies selected items in SVG view, using Tree methods
func (*Canvas) CutSelected ¶
func (gv *Canvas) CutSelected()
CutSelected cuts selected items in SVG view, using Tree methods
func (*Canvas) DefaultGradient ¶
DefaultGradient returns the default gradient to use for setting stops
func (*Canvas) DeleteSelected ¶
func (gv *Canvas) DeleteSelected()
DeleteSelected deletes selected items in SVG view, using Tree methods
func (*Canvas) DuplicateSelected ¶
func (gv *Canvas) DuplicateSelected()
DuplicateSelected duplicates selected items in SVG view, using Tree methods
func (*Canvas) EditRecents ¶
func (vv *Canvas) EditRecents()
RecentsEdit opens a dialog editor for deleting from the recents project list
func (*Canvas) ExportPDF ¶
ExportPDF exports drawing to a PDF file (auto-names to same name with .pdf suffix). Calls inkscape -- needs to be on the PATH. specify DPI of resulting image for effects rendering. Renders full current page -- do ResizeToContents to render just current contents.
func (*Canvas) ExportPNG ¶
ExportPNG exports drawing to a PNG image (auto-names to same name with .png suffix). Calls inkscape -- needs to be on the PATH. specify either width or height of resulting image, or nothing for physical size as set. Renders full current page -- do ResizeToContents to render just current contents.
func (*Canvas) FirstLayerIndex ¶
FirstLayerIndex returns index of first layer group in svg
func (*Canvas) InitSelectButton ¶
InitSelectButton sets the given widget to only be enabled when there is an item selected.
func (*Canvas) IsCurLayer ¶
IsCurLayer returns true if given layer is the current layer for creating items
func (*Canvas) LayerViewSigs ¶
func (*Canvas) MakeNodeToolbar ¶
func (*Canvas) MakeSelectToolbar ¶
MakeSelectToolbar adds the select toolbar to the given plan.
func (*Canvas) MakeTextToolbar ¶
func (*Canvas) MakeToolbar ¶
func (*Canvas) ManipAction ¶
ManipAction manages all the updating etc associated with performing an action that includes an ongoing manipulation with a final non-manip update. runs given function to actually do the update.
func (*Canvas) ManipActionFun ¶
func (*Canvas) ModalToolbar ¶
func (*Canvas) NewDrawing ¶
NewDrawing creates a new drawing of the given size
func (*Canvas) NodeEnableFunc ¶
NodeEnableFunc is an ActionUpdateFunc that inactivates action if no node selected
func (*Canvas) NodeSetXPos ¶
func (*Canvas) NodeSetYPos ¶
func (*Canvas) OpenDrawing ¶
OpenDrawing opens a new .svg drawing
func (*Canvas) OpenDrawingFile ¶
OpenDrawingFile opens a new .svg drawing file -- just the basic opening
func (*Canvas) OpenRecent ¶
OpenRecent opens a recently used file
func (*Canvas) PasteAvailFunc ¶
PasteAvailFunc is an ActionUpdateFunc that inactivates action if no paste avail
func (*Canvas) PasteClip ¶
func (gv *Canvas) PasteClip()
PasteClip pastes clipboard, using cur layer etc
func (*Canvas) PromptPhysSize ¶
func (cv *Canvas) PromptPhysSize()
PromptPhysSize prompts for the physical size of the drawing and sets it
func (*Canvas) ResizeToContents ¶
func (cv *Canvas) ResizeToContents()
ResizeToContents resizes the drawing to just fit the current contents, including moving everything to start at upper-left corner, preserving the current grid offset, so grid snapping is preserved.
func (*Canvas) SaveDrawing ¶
SaveDrawing saves .svg drawing to current filename
func (*Canvas) SaveDrawingAs ¶
SaveDrawingAs saves .svg drawing to given filename
func (*Canvas) SelectFlipHorizontal ¶
func (gv *Canvas) SelectFlipHorizontal()
SelectFlipHorizontal flips the selection horizontally
func (*Canvas) SelectFlipVertical ¶
func (gv *Canvas) SelectFlipVertical()
SelectFlipVertical flips the selection vertically
func (*Canvas) SelectLower ¶
func (gv *Canvas) SelectLower()
SelectLower lowers the selection by one level in the layer
func (*Canvas) SelectLowerBottom ¶
func (gv *Canvas) SelectLowerBottom()
SelectLowerBottom lowers the selection to the bottom of the layer
func (*Canvas) SelectNodeInSVG ¶
func (vv *Canvas) SelectNodeInSVG(kn tree.Node, mode events.SelectModes)
SelectNodeInSVG selects given svg node in SVG drawing
func (*Canvas) SelectNodeInTree ¶
func (gv *Canvas) SelectNodeInTree(kn tree.Node, mode events.SelectModes)
SelectNodeInTree selects given node in Tree
func (*Canvas) SelectRaise ¶
func (gv *Canvas) SelectRaise()
SelectRaise raises the selection by one level in the layer
func (*Canvas) SelectRaiseTop ¶
func (gv *Canvas) SelectRaiseTop()
SelectRaiseTop raises the selection to the top of the layer
func (*Canvas) SelectRotate ¶
func (*Canvas) SelectRotateLeft ¶
func (gv *Canvas) SelectRotateLeft()
SelectRotateLeft rotates the selection 90 degrees counter-clockwise
func (*Canvas) SelectRotateRight ¶
func (gv *Canvas) SelectRotateRight()
SelectRotateRight rotates the selection 90 degrees clockwise
func (*Canvas) SelectScale ¶
func (*Canvas) SelectSetHeight ¶
func (*Canvas) SelectSetWidth ¶
func (*Canvas) SelectSetXPos ¶
func (*Canvas) SelectSetYPos ¶
func (*Canvas) SelectUnGroup ¶
func (gv *Canvas) SelectUnGroup()
SelectUnGroup ungroups items from each other
func (*Canvas) SelectedAsTrees ¶
SelectedAsTrees returns the currently selected items from SVG as Tree nodes
func (*Canvas) SetColorNode ¶
SetColorNode sets the color properties of Node based on previous and current PaintType
func (*Canvas) SetCurLayer ¶
SetCurLayer sets the current layer for creating items to given one
func (*Canvas) SetDashNode ¶
SetDashNode sets the stroke-dasharray property of Node. multiplies dash values by the line width in dots.
func (*Canvas) SetDashProperties ¶
SetDashProperties sets the dash properties
func (*Canvas) SetDefaultStyle ¶
func (vv *Canvas) SetDefaultStyle()
func (*Canvas) SetFill ¶
func (vv *Canvas) SetFill(prev, pt PaintTypes, fp string)
SetFill sets the fill properties of selected items based on previous and current PaintType
func (*Canvas) SetFillColor ¶
SetFillColor sets the fill color for selected items manip means currently being manipulated -- don't save undo.
func (*Canvas) SetMarkerNode ¶
func (vv *Canvas) SetMarkerNode(sii svg.Node, start, mid, end string, sc, mc, ec MarkerColors)
SetMarkerNode sets the marker properties of Node.
func (*Canvas) SetMarkerProperties ¶
func (vv *Canvas) SetMarkerProperties(start, mid, end string, sc, mc, ec MarkerColors)
SetMarkerProperties sets the marker properties
func (*Canvas) SetPhysSize ¶
SetPhysSize sets physical size of drawing
func (*Canvas) SetStatus ¶
SetStatus updates the status bar text with the given message, along with other status info
func (*Canvas) SetStroke ¶
func (vv *Canvas) SetStroke(prev, pt PaintTypes, sp string)
SetStroke sets the stroke properties of selected items based on previous and current PaintType
func (*Canvas) SetStrokeColor ¶
SetStrokeColor sets the stroke color for selected items. manip means currently being manipulated -- don't save undo.
func (*Canvas) SetStrokeWidth ¶
SetStrokeWidth sets the stroke width property for selected items manip means currently being manipulated -- don't save undo.
func (*Canvas) SetStrokeWidthNode ¶
SetStrokeWidthNode sets the stroke width of Node
func (*Canvas) SetTextNode ¶
SetTextNode sets the text of given Text node
func (*Canvas) SetTextProperties ¶
SetTextProperties sets the text properties of selected Text nodes
func (*Canvas) SetTextPropertiesNode ¶
SetTextPropertiesNode sets the text properties of given Text node
func (*Canvas) SplitsEdit ¶
func (vv *Canvas) SplitsEdit()
SplitsEdit opens the SplitsView editor to customize saved splitter settings
func (*Canvas) SplitsSave ¶
SplitsSave saves current splitter settings to named splitter settings under existing name, and saves to prefs file
func (*Canvas) SplitsSaveAs ¶
SplitsSaveAs saves current splitter settings to new named splitter settings, and saves to prefs file
func (*Canvas) SplitsSetView ¶
SplitsSetView sets split view splitters to given named setting
func (*Canvas) StatusText ¶
StatusText returns the status bar text widget
func (*Canvas) SyncLayers ¶
func (vv *Canvas) SyncLayers()
func (*Canvas) UpdateDisp ¶
func (vv *Canvas) UpdateDisp()
func (*Canvas) UpdateGradients ¶
func (vv *Canvas) UpdateGradients()
UpdateGradients updates gradients from EditState
func (*Canvas) UpdateLayerView ¶
func (vv *Canvas) UpdateLayerView()
func (*Canvas) UpdateMarkerColors ¶
UpdateMarkerColors updates the marker colors, when setting fill or stroke
func (*Canvas) UpdateNodeToolbar ¶
func (vv *Canvas) UpdateNodeToolbar()
UpdateNodeToolbar updates the node toolbar based on current nodeion
func (*Canvas) UpdateSelectToolbar ¶
func (vc *Canvas) UpdateSelectToolbar()
UpdateSelectToolbar updates the select toolbar based on current selection
func (*Canvas) UpdateTabs ¶
func (vv *Canvas) UpdateTabs()
func (*Canvas) UpdateTextToolbar ¶
func (gv *Canvas) UpdateTextToolbar()
UpdateTextToolbar updates the select toolbar based on current selection
func (*Canvas) UpdateTree ¶
func (vv *Canvas) UpdateTree()
type EditState ¶
type EditState struct { // current tool in use Tool Tools // current action being performed, for undo labeling Action Actions // action data set at start of action ActData string // list of layers Layers Layers // current layer -- where new objects are inserted CurLayer string // current shared gradients, referenced by obj-specific gradients Gradients []*Gradient // current text styling info Text TextStyle // the undo manager Undos undo.Stack // contents have changed Changed bool `display:"inactive"` // action mutex, protecting start / end of actions ActMu sync.Mutex `copier:"-" json:"-" xml:"-" display:"-"` // selected item(s) Selected map[svg.Node]*SelectedState `copier:"-" json:"-" xml:"-" display:"-"` // selection just happened on press, and no drag happened in between SelectNoDrag bool // true if a new text item was made while dragging NewTextMade bool // point where dragging started, mouse coords DragStartPos image.Point // current dragging position, mouse coords DragCurPos image.Point // current selection bounding box SelectBBox math32.Box2 // number of current selectbox sprites NSelectSprites int // last select action position -- continued clicks in same area lead to deeper selection LastSelectPos image.Point // recently selected item(s) -- within the same selection position RecentlySelected map[svg.Node]*SelectedState `copier:"-" json:"-" xml:"-" display:"-"` // bbox at start of dragging DragSelectStartBBox math32.Box2 // current bbox during dragging -- non-snapped version DragSelectCurrentBBox math32.Box2 // current effective bbox during dragging -- snapped version DragSelectEffectiveBBox math32.Box2 // potential points of alignment for dragging AlignPts [BBoxPointsN][]math32.Vector2 // number of current node sprites in use NNodeSprites int // currently manipulating path object ActivePath *svg.Path // current path node points PathNodes []*PathNode // selected path nodes PathSelect map[int]struct{} // current path command indexes within PathNodes -- where the commands start PathCommands []int // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-"` }
EditState has all the current edit state information
func (*EditState) ActDone ¶
func (es *EditState) ActDone()
ActDone finishes an action, resetting action
func (*EditState) ActUnlock ¶
func (es *EditState) ActUnlock()
ActUnlock unlocks the action mutex -- after done doing all action starting steps
func (*EditState) ConfigDefaultGradient ¶
func (es *EditState) ConfigDefaultGradient()
ConfigDefaultGradient configures a new default gradient
func (*EditState) DragNodeStart ¶
DragNodeStart captures the current state at start of node dragging. position is starting position.
func (*EditState) DragReset ¶
func (es *EditState) DragReset()
DragReset resets drag state information
func (*EditState) DragSelStart ¶
DragSelStart captures the current state at start of dragging manipulation with selected items. position is starting position.
func (*EditState) FirstSelectedNode ¶
FirstSelectedNode returns the first selected node, that is not a Group (recurses into groups)
func (*EditState) FirstSelectedPath ¶
FirstSelectedPath returns the first selected Path, that is not a Group (recurses into groups)
func (*EditState) HasSelected ¶
HasSelected returns true if there are selected items
func (*EditState) IsSelected ¶
IsSelected returns the selected status of given slice index
func (*EditState) NewRecents ¶
func (es *EditState) NewRecents()
func (*EditState) NewSelected ¶
func (es *EditState) NewSelected()
NewSelected makes a new Selected list
func (*EditState) PosInLastSelect ¶
PosInLastSelect returns true if position is within tolerance of last selection point
func (*EditState) ResetSelected ¶
func (es *EditState) ResetSelected()
ResetSelected resets the selection list, including recents
func (*EditState) SanitizeSelected ¶
func (es *EditState) SanitizeSelected()
SanitizeSelected ensures that the current selected list makes sense. E.g., it prevents having a group and a child both in the selected list (removes the parent group).
func (*EditState) Select ¶
Select selects given item (if not already selected) -- updates select status of index text
func (*EditState) SelectAction ¶
SelectAction is called when a select action has been received (e.g., a mouse click) -- translates into selection updates -- gets selection mode from mouse event (ExtendContinuous, ExtendOne)
func (*EditState) SelectedList ¶
SelectedList returns list of selected items, sorted either ascending or descending according to order of selection
func (*EditState) SelectedListDepth ¶
SelectedListDepth returns list of selected items, sorted either ascending or descending according to depth: ascending = deepest first, descending = highest first
func (*EditState) SelectedNames ¶
SelectedNames returns names of selected items, in order selected
func (*EditState) SelectedNamesString ¶
SelectedNamesString returns names of selected items as a space-separated single string. If over 256 chars long, then truncated.
func (*EditState) SelectedToRecents ¶
func (es *EditState) SelectedToRecents()
func (*EditState) StartRecents ¶
StartRecents starts a new list of recently selected items
func (*EditState) UpdateSelectBBox ¶
func (es *EditState) UpdateSelectBBox()
UpdateSelectBBox updates the current selection bbox surrounding all selected items
type GradStop ¶
type GradStop struct { // color -- alpha is ignored -- set opacity separately Color color.Color // opacity determines how opaque color is - used instead of alpha in color Opacity float64 // offset position along the gradient vector: 0 = start, 1 = nominal end Offset float64 }
GradStop represents a single gradient stop
type Gradient ¶
type Gradient struct { // icon of gradient -- generated to display each gradient Ic core.SVG `edit:"-" table:"no-header" width:"5"` // name of gradient (id) Id string `edit:"-" width:"6"` // full name of gradient as SVG element Name string `display:"-"` // gradient stops Stops []*GradStop }
Gradient represents a single gradient that defines stops (referenced in StopName of other gradients)
type Layer ¶
Layer represents one layer group
type Layers ¶
type Layers []*Layer
Layers is the list of all layers
func (*Layers) LayerIndexByName ¶
func (*Layers) LayersUpdated ¶
func (*Layers) SyncLayers ¶
type MarkerColors ¶
type MarkerColors int32 //enums:enum -trim-prefix Marker
MarkerColors are the drawing tools
const ( // use the default color of marker (typically black) MarkerDef MarkerColors = iota // copy color of object using marker (create separate marker object per element) MarkerCopy // marker has its own separate custom color MarkerCust )
const MarkerColorsN MarkerColors = 3
MarkerColorsN is the highest valid value for type MarkerColors, plus one.
func MarkerColorsValues ¶
func MarkerColorsValues() []MarkerColors
MarkerColorsValues returns all possible values for the type MarkerColors.
func MarkerFromNodeProp ¶
MarkerFromNodeProp returns the marker name (canonicalized -- no id) and id and color type
func (MarkerColors) Desc ¶
func (i MarkerColors) Desc() string
Desc returns the description of the MarkerColors value.
func (MarkerColors) Int64 ¶
func (i MarkerColors) Int64() int64
Int64 returns the MarkerColors value as an int64.
func (MarkerColors) MarshalText ¶
func (i MarkerColors) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler interface.
func (*MarkerColors) SetInt64 ¶
func (i *MarkerColors) SetInt64(in int64)
SetInt64 sets the MarkerColors value from an int64.
func (*MarkerColors) SetString ¶
func (i *MarkerColors) SetString(s string) error
SetString sets the MarkerColors value from its string representation, and returns an error if the string is invalid.
func (MarkerColors) String ¶
func (i MarkerColors) String() string
String returns the string representation of this MarkerColors value.
func (*MarkerColors) UnmarshalText ¶
func (i *MarkerColors) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface.
func (MarkerColors) Values ¶
func (i MarkerColors) Values() []enums.Enum
Values returns all possible values for the type MarkerColors.
type PaintTypes ¶
type PaintTypes int32 //enums:enum -trim-prefix Paint
const ( PaintOff PaintTypes = iota PaintSolid PaintLinear PaintRadial PaintInherit )
const PaintTypesN PaintTypes = 5
PaintTypesN is the highest valid value for type PaintTypes, plus one.
func PaintTypesValues ¶
func PaintTypesValues() []PaintTypes
PaintTypesValues returns all possible values for the type PaintTypes.
func (PaintTypes) Desc ¶
func (i PaintTypes) Desc() string
Desc returns the description of the PaintTypes value.
func (PaintTypes) Int64 ¶
func (i PaintTypes) Int64() int64
Int64 returns the PaintTypes value as an int64.
func (PaintTypes) MarshalText ¶
func (i PaintTypes) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler interface.
func (*PaintTypes) SetInt64 ¶
func (i *PaintTypes) SetInt64(in int64)
SetInt64 sets the PaintTypes value from an int64.
func (*PaintTypes) SetString ¶
func (i *PaintTypes) SetString(s string) error
SetString sets the PaintTypes value from its string representation, and returns an error if the string is invalid.
func (PaintTypes) String ¶
func (i PaintTypes) String() string
String returns the string representation of this PaintTypes value.
func (*PaintTypes) UnmarshalText ¶
func (i *PaintTypes) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface.
func (PaintTypes) Values ¶
func (i PaintTypes) Values() []enums.Enum
Values returns all possible values for the type PaintTypes.
type PaintView ¶
type PaintView struct { core.Frame // Active styles PaintStyle styles.Paint // paint type for stroke StrokeType PaintTypes // name of gradient with stops StrokeStops string // paint type for fill FillType PaintTypes // name of gradient with stops FillStops string // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-"` // contains filtered or unexported fields }
PaintView provides editing of basic Stroke and Fill painting parameters for selected items
func NewPaintView ¶
NewPaintView returns a new PaintView with the given optional parent: PaintView provides editing of basic Stroke and Fill painting parameters for selected items
func (*PaintView) FillProp ¶
FillProp returns the fill property string according to current settings
func (*PaintView) IsStrokeOn ¶
IsStrokeOn returns true if stroke is active
func (*PaintView) MarkerProperties ¶
func (pv *PaintView) MarkerProperties() (start, mid, end string, sc, mc, ec MarkerColors)
MarkerProp returns the marker property string according to current settings along with color type to set.
func (*PaintView) SelectFillGrad ¶
func (pv *PaintView) SelectFillGrad()
func (*PaintView) SelectStrokeGrad ¶
func (pv *PaintView) SelectStrokeGrad()
func (*PaintView) SetFillStops ¶
SetFillStops sets the [PaintView.FillStops]: name of gradient with stops
func (*PaintView) SetFillType ¶
func (t *PaintView) SetFillType(v PaintTypes) *PaintView
SetFillType sets the [PaintView.FillType]: paint type for fill
func (*PaintView) SetPaintStyle ¶
SetPaintStyle sets the [PaintView.PaintStyle]: Active styles
func (*PaintView) SetProperties ¶
SetProperties sets the properties for given node according to current settings
func (*PaintView) SetStrokeStops ¶
SetStrokeStops sets the [PaintView.StrokeStops]: name of gradient with stops
func (*PaintView) SetStrokeType ¶
func (t *PaintView) SetStrokeType(v PaintTypes) *PaintView
SetStrokeType sets the [PaintView.StrokeType]: paint type for stroke
func (*PaintView) StrokeDashProp ¶
StrokeDashProp returns stroke-dasharray property as an array (nil = none) these values need to be multiplied by line widths for each item.
func (*PaintView) StrokeProp ¶
StrokeProp returns the stroke property string according to current settings
func (*PaintView) StrokeWidthProp ¶
StrokeWidthProp returns stroke-width property
type PathNode ¶
type PathNode struct { // path command Cmd svg.PathCmds // previous path command PrevCmd svg.PathCmds // starting index of command CmdIndex int // index of points in data stream Index int // logical index of point within current command (0 = first point, etc) PtIndex int // local coords abs previous current point that is starting point for this command PCp math32.Vector2 // local coords abs current point Cp math32.Vector2 // main point coords in window (dot) coords WinPt math32.Vector2 // control point coords in window (dot) coords (nil until manipulated) WinCtrls []math32.Vector2 }
PathNode is info about each node in a path that is being edited
type PhysSize ¶
type PhysSize struct { // select a standard size -- this will set units and size StandardSize StandardSizes // for standard size, use first number as width, second as height Portrait bool // default units to use, e.g., in line widths etc Units units.Units // drawing size, in Units Size math32.Vector2 // grid spacing, in units of ViewBox size Grid float32 }
PhysSize specifies the physical size of the drawing, when making a new one
func (*PhysSize) SetStandardSize ¶
func (ps *PhysSize) SetStandardSize(std StandardSizes) error
SetStandardSize sets drawing to a standard size
func (*PhysSize) SetToStandardSize ¶
SetToStandardSize sets drawing to the current standard size value
type SVG ¶
type SVG struct { core.WidgetBase // SVG is the SVG drawing to display in this widget SVG *svg.SVG `set:"-"` // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-" set:"-"` // grid spacing, in native ViewBox units Grid float32 ` set:"-"` // effective grid spacing given Scale level GridEff float32 `edit:"-" set:"-"` // contains filtered or unexported fields }
SVG is the element for viewing and interacting with the SVG.
func NewSVG ¶
NewSVG returns a new SVG with the given optional parent: SVG is the element for viewing and interacting with the SVG.
func (*SVG) BackgroundNeedsUpdate ¶
func (*SVG) ConstrainPoint ¶
ConstrainPoint constrains movement of point relative to starting point to either X, Y or diagonal. returns constrained point, and whether the constraint is along the diagonal, which can then trigger reshaping the object to be along the diagonal as well. also adds constraint to AlignMatches.
func (*SVG) ContentsBBox ¶
ContentsBBox returns the object-level box of the entire contents
func (*SVG) DepthMap ¶
DepthMap returns a map of all nodes and their associated depth count counting up from 0 as the deepest, first drawn node.
func (*SVG) GatherAlignPoints ¶
func (sv *SVG) GatherAlignPoints()
GatherAlignPoints gets all the potential points of alignment for objects not in selection group
func (*SVG) Gradients ¶
Gradients returns the currently defined gradients with stops that are shared among obj-specific ones
func (*SVG) MakeNodeContextMenu ¶
MakeNodeContextMenu makes the menu of options for context right click
func (*SVG) ManipDone ¶
func (sv *SVG) ManipDone()
ManipDone happens when a manipulation has finished: resets action, does render
func (*SVG) ManipStart ¶
ManipStart is called at the start of a manipulation, saving the state prior to the action
func (*SVG) MetaData ¶
MetaData returns the overall metadata and grid if present. if mknew is true, it will create new ones if not found.
func (*SVG) NodeContextMenuPos ¶
ContextMenuPos returns position to use for context menu, based on input position
func (*SVG) PathNodeSetOnePoint ¶
func (sv *SVG) PathNodeSetOnePoint(path *svg.Path, pts []*PathNode, pidx int, dv math32.Vector2, svoff math32.Vector2)
PathNodeMoveOnePoint moves given node index by given delta in window coords and all following points up to cmd = z or m are moved in the opposite direction to compensate, so only the one point is moved in effect. svoff is the window starting vector coordinate for view.
func (*SVG) PathNodeSetPoint ¶
PathNodeSetPoint sets data point for path node to given new point value which is in *absolute* (but local) coordinates -- translates into relative coordinates as needed.
func (*SVG) PathNodes ¶
PathNodes returns the PathNode data for given path data, and a list of indexes where commands start
func (*SVG) RemoveNodeSprites ¶
func (sv *SVG) RemoveNodeSprites()
func (*SVG) RemoveSelSprites ¶
func (sv *SVG) RemoveSelSprites()
func (*SVG) RenderBackground ¶
func (sv *SVG) RenderBackground()
RenderBackground renders our background grid image
func (*SVG) RenderSVG ¶
func (sv *SVG) RenderSVG()
RenderSVG renders the SVG, typically called in a goroutine
func (*SVG) ResizeToContents ¶
ResizeToContents resizes the drawing to just fit the current contents, including moving everything to start at upper-left corner, optionally preserving the current grid offset, so grid snapping is preserved -- recommended.
func (*SVG) SelectContainsPoint ¶
SelectContainsPoint finds the first node whose BBox contains the given point in scene coordinates; nil if none. If leavesOnly is set then only nodes that have no nodes (leaves, terminal nodes) will be considered. if leavesOnly, only terminal leaves (no children) are included if excludeSel, any leaf nodes that are within the current edit selection are excluded,
func (*SVG) SelectWithinBBox ¶
SelectWithinBBox returns a list of all nodes whose BBox is fully contained within the given BBox. SVG version excludes layer groups.
func (*SVG) SetBBoxSpritePos ¶
SetBBoxSpritePos sets positions of given type of sprites
func (*SVG) SetRubberBand ¶
SetRubberBand updates the rubber band position.
func (*SVG) SetSVGName ¶
SetSVGName sets the name of the element to standard type + id name
func (*SVG) SetSelSpritePos ¶
func (sv *SVG) SetSelSpritePos()
func (*SVG) ShowAlignMatches ¶
func (sv *SVG) ShowAlignMatches(pts []image.Rectangle, typs []BBoxPoints)
ShowAlignMatches draws the align matches as given between BBox Min - Max. typs are corresponding bounding box sources.
func (*SVG) SnapBBox ¶
SnapBBox does snapping on given raw bbox according to settings, aligning movement of bbox edges / centers relative to other bboxes.. returns snapped bbox.
func (*SVG) SnapPoint ¶
SnapPoint does snapping on one raw point, given that point, in window coordinates. returns the snapped point.
func (*SVG) SnapPointToVector ¶
func (*SVG) SpriteReshapeDrag ¶
SpriteReshapeDrag processes a mouse reshape drag event on a selection sprite
func (*SVG) SpriteRotateDrag ¶
SpriteRotateDrag processes a mouse rotate drag event on a selection sprite
func (*SVG) TransformAllLeaves ¶
func (sv *SVG) TransformAllLeaves(trans math32.Vector2, scale math32.Vector2, rot float32, pt math32.Vector2)
TransformAllLeaves transforms all the leaf items in the drawing (not groups) uses ApplyDeltaTransform manipulation.
func (*SVG) UndoSaveReplace ¶
UndoSaveReplace save current state to replace current
func (*SVG) UpdateGradients ¶
UpdateGradients update SVG gradients from given gradient list
func (*SVG) UpdateGridEff ¶
func (sv *SVG) UpdateGridEff()
UpdateGridEff updates the GirdEff value based on current scale
func (*SVG) UpdateNodeSprites ¶
func (sv *SVG) UpdateNodeSprites()
func (*SVG) UpdateSelSprites ¶
func (sv *SVG) UpdateSelSprites()
func (*SVG) UpdateSelect ¶
func (sv *SVG) UpdateSelect()
UpdateSelect should be called whenever selection changes
func (*SVG) UpdateView ¶
UpdateView updates the view, optionally with a full re-render
func (*SVG) ZoomAt ¶
ZoomAt updates the scale and translate parameters at given point by given delta: + means zoom in, - means zoom out, delta should always be < 1)
func (*SVG) ZoomToContents ¶
ZoomToContents sets the scale to fit the current contents into view
func (*SVG) ZoomToPage ¶
ZoomToPage sets the scale to fit the current viewbox
type SelectedState ¶
type SelectedState struct { // order item was selected Order int // initial geometry, saved when first selected or start dragging -- manipulations restore then transform from there InitGeom []float32 }
SelectedState is state for selected nodes
type SettingsData ¶
type SettingsData struct { core.SettingsBase // default physical size, when app is started without opening a file Size PhysSize // default shape styles ShapeStyle styles.Paint // default text styles TextStyle styles.Paint // default line styles PathStyle styles.Paint // default line styles LineStyle styles.Paint // turns on the grid display GridDisp bool // snap positions and sizes to underlying grid SnapGrid bool // snap positions and sizes to line up with other elements SnapGuide bool // snap node movements to align with guides SnapNodes bool // number of screen pixels around target point (in either direction) to snap SnapTol int `min:"1"` // named-split config in use for configuring the splitters SplitName SplitName // environment variables to set for this app -- if run from the command line, standard shell environment variables are inherited, but on some OS's (Mac), they are not set when run as a gui app EnvVars map[string]string }
SettingsData is the overall Vector settings
func (*SettingsData) Apply ¶
func (se *SettingsData) Apply()
Apply settings updates things according with settings
func (*SettingsData) Defaults ¶
func (se *SettingsData) Defaults()
func (*SettingsData) EditSplits ¶
func (se *SettingsData) EditSplits()
EditSplits opens the SplitsView editor to customize saved splitter settings
func (*SettingsData) Open ¶
func (se *SettingsData) Open() error
func (*SettingsData) Save ¶
func (se *SettingsData) Save() error
func (*SettingsData) Update ¶
func (se *SettingsData) Update()
type Split ¶
type Split struct { // name of splitter config Name string // brief description Desc string // splitter panel proportions Splits []float32 `min:"0" max:"1" step:".05"` // TODO: convert to [4]float32 !! }
Split is a named splitter configuration
func (*Split) SaveSplits ¶
SaveSplits saves given splits to this setting -- must use copy!
type SplitName ¶
type SplitName string
SplitName has an associated ValueView for selecting from the list of available named splits
func (SplitName) Value ¶
Value registers core.Chooser as the core.Value widget for SplitName
type Splits ¶
type Splits []*Split
Splits is a list of named splitter configurations
var AvailableSplits Splits
AvailableSplits are available named splitter settings. can be loaded / saved / edited with settings. This is set to StandardSplits at startup.
func (*Splits) FixLen ¶
func (lt *Splits) FixLen()
FixLen ensures that there are exactly 4 splits in each
func (*Splits) OpenSettings ¶
OpenSettings opens Splits from App standard prefs directory, using PrefSplitsFilename
func (*Splits) SaveSettings ¶
SaveSettings saves Splits to App standard prefs directory, using PrefSplitsFilename
type Sprites ¶
type Sprites int32 //enums:enum
Sprites are the type of sprite
const ( // SpUnk is an unknown sprite type SpUnk Sprites = iota // SpReshapeBBox is a reshape bbox -- the overall active selection BBox // for active manipulation SpReshapeBBox // SpSelBBox is a selection bounding box -- display only SpSelBBox // SpNodePoint is a main coordinate point for path node SpNodePoint // SpNodeCtrl is a control coordinate point for path node SpNodeCtrl // SpRubberBand is the draggable sel box // subtyp = UpC, LfM, RtM, DnC for sides SpRubberBand // SpAlignMatch is an alignment match (n of these), // subtyp is actually BBoxPoints so we just hack cast that SpAlignMatch // Sprite bounding boxes are set as a "bbox" property on sprites SpBBoxUpL SpBBoxUpC SpBBoxUpR SpBBoxDnL SpBBoxDnC SpBBoxDnR SpBBoxLfM SpBBoxRtM )
const SpritesN Sprites = 15
SpritesN is the highest valid value for type Sprites, plus one.
func SpriteProperties ¶
SpriteProperties reads the sprite properties -- returns SpUnk if not one of our sprites.
func SpritesValues ¶
func SpritesValues() []Sprites
SpritesValues returns all possible values for the type Sprites.
func (Sprites) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Sprites) SetString ¶
SetString sets the Sprites value from its string representation, and returns an error if the string is invalid.
func (*Sprites) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type StandardSizeValues ¶
StandardSizeValues are values for standard sizes
type StandardSizes ¶
type StandardSizes int32 //enums:enum
StandardSizes are standard physical drawing sizes
const ( // CustomSize = nonstandard CustomSize StandardSizes = iota // Image 1280x720 Px = 720p Img1280x720 // Image 1920x1080 Px = 1080p HD Img1920x1080 // Image 3840x2160 Px = 4K Img3840x2160 // Image 7680x4320 Px = 8K Img7680x4320 // Image 1024x768 Px = XGA Img1024x768 // Image 720x480 Px = DVD Img720x480 // Image 640x480 Px = VGA Img640x480 // Image 320x240 Px = old CRT Img320x240 // A4 = 210 x 297 mm A4 // USLetter = 8.5 x 11 in = 612 x 792 pt USLetter // USLegal = 8.5 x 14 in = 612 x 1008 pt USLegal // A0 = 841 x 1189 mm A0 // A1 = 594 x 841 mm A1 // A2 = 420 x 594 mm A2 // A3 = 297 x 420 mm A3 // A5 = 148 x 210 mm A5 // A6 = 105 x 148 mm A6 // A7 = 74 x 105 A7 // A8 = 52 x 74 mm A8 // A9 = 37 x 52 A9 // A10 = 26 x 37 A10 )
const StandardSizesN StandardSizes = 22
StandardSizesN is the highest valid value for type StandardSizes, plus one.
func MatchStandardSize ¶
func MatchStandardSize(wd, ht float32, un units.Units) StandardSizes
func StandardSizesValues ¶
func StandardSizesValues() []StandardSizes
StandardSizesValues returns all possible values for the type StandardSizes.
func (StandardSizes) Desc ¶
func (i StandardSizes) Desc() string
Desc returns the description of the StandardSizes value.
func (StandardSizes) Int64 ¶
func (i StandardSizes) Int64() int64
Int64 returns the StandardSizes value as an int64.
func (StandardSizes) MarshalText ¶
func (i StandardSizes) MarshalText() ([]byte, error)
MarshalText implements the encoding.TextMarshaler interface.
func (*StandardSizes) SetInt64 ¶
func (i *StandardSizes) SetInt64(in int64)
SetInt64 sets the StandardSizes value from an int64.
func (*StandardSizes) SetString ¶
func (i *StandardSizes) SetString(s string) error
SetString sets the StandardSizes value from its string representation, and returns an error if the string is invalid.
func (StandardSizes) String ¶
func (i StandardSizes) String() string
String returns the string representation of this StandardSizes value.
func (*StandardSizes) UnmarshalText ¶
func (i *StandardSizes) UnmarshalText(text []byte) error
UnmarshalText implements the encoding.TextUnmarshaler interface.
func (StandardSizes) Values ¶
func (i StandardSizes) Values() []enums.Enum
Values returns all possible values for the type StandardSizes.
type TextStyle ¶
type TextStyle struct { // current text to edit Text string // font family Font core.FontName `xml:"font-family"` // font size Size units.Value `xml:"font-size"` // prop: font-style = style -- normal, italic, etc Style styles.FontStyles `xml:"font-style" inherit:"true"` // prop: font-weight = weight: normal, bold, etc Weight styles.FontWeights `xml:"font-weight" inherit:"true"` // prop: font-stretch = font stretch / condense options Stretch styles.FontStretch `xml:"font-stretch" inherit:"true"` // prop: font-variant = normal or small caps Variant styles.FontVariants `xml:"font-variant" inherit:"true"` // prop: text-decoration = underline, line-through, etc -- not inherited Deco styles.TextDecorations `xml:"text-decoration"` // prop: baseline-shift = super / sub script -- not inherited Shift styles.BaselineShifts `xml:"baseline-shift"` // prop: text-align (inherited) = how to align text, horizontally. This *only* applies to the text within its containing element, and is typically relevant only for multi-line text: for single-line text, if element does not have a specified size that is different from the text size, then this has *no effect*. Align styles.Aligns `xml:"text-align" inherit:"true"` // font value view for font toolbar FontButton core.FontButton `display:"-"` // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-"` }
TextStyle is text styling info -- using Form to do text editor
func (*TextStyle) SetFromFontStyle ¶
SetFromFontStyle sets from standard styles.Font style
func (*TextStyle) SetFromNode ¶
SetFromNode sets text style info from given svg.Text node
func (*TextStyle) TextProperties ¶
TextProperties returns non-default text properties to set
type Tools ¶
type Tools int //enums:enum
Tools are the drawing tools
const ToolsN Tools = 6
ToolsN is the highest valid value for type Tools, plus one.
func ToolsValues ¶
func ToolsValues() []Tools
ToolsValues returns all possible values for the type Tools.
func (Tools) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Tools) SetString ¶
SetString sets the Tools value from its string representation, and returns an error if the string is invalid.
func (*Tools) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type Tree ¶
type Tree struct { core.Tree // the parent [Canvas] Canvas *Canvas `copier:"-" json:"-" xml:"-" display:"-"` }
Tree is a core.Tree that interacts properly with Canvas.
func NewTree ¶
NewTree returns a new Tree with the given optional parent: Tree is a core.Tree that interacts properly with Canvas.
func (*Tree) LayerClearCurrent ¶
func (tv *Tree) LayerClearCurrent()
LayerClearCurrent clears this layer as the current layer if it was set as such.
func (*Tree) LayerIsCurrent ¶
LayerIsCurrent returns true if layer is the current active one for creating
func (*Tree) LayerSetCurrent ¶
func (tv *Tree) LayerSetCurrent()
LayerSetCurrent sets this layer as the current layer name
func (*Tree) LayerToggleLock ¶
func (tv *Tree) LayerToggleLock()
LayerToggleLock toggles whether layer is locked or not
func (*Tree) LayerToggleVis ¶
func (tv *Tree) LayerToggleVis()
LayerToggleVis toggles visibility of the layer