// package elem_label -- текстовая метка для отображения package elem_label import ( svg "github.com/ajstarks/svgo" "gitp78su.ipnodns.ru/svi/kern/v3" "gitp78su.ipnodns.ru/svi/goarch/lev0/alias" "gitp78su.ipnodns.ru/svi/goarch/lev0/types" "gitp78su.ipnodns.ru/svi/goarch/lev1/elem_base" ) // ElemLabel -- текстовая метка для отображения type ElemLabel struct { types.IElemBase Val_ alias.Label `yaml:"val"` // Метка для вывода Offset_ types.IViewOffset `yaml:"offset"` // Смещение метки } var ( hassert = kern.GetFnHassert() ) // NewElemLabel -- возвращает новую метку func NewElemLabel(label alias.Label, coord types.IViewCoord, offset types.IViewOffset) types.IViewLabel { sf := &ElemLabel{ IElemBase: elem_base.NewElemBase(coord, "elem_label"), Val_: label, Offset_: offset, } sf.SelfCheck() return sf } // Draw -- отрисовка метки func (sf *ElemLabel) Draw(canvas *svg.SVG) { strLabel := sf.String() if strLabel != "" { x, y := sf.Offset_.Int() offX := int(sf.Offset_.X()) canvas.Text(x+offX, y-8, strLabel, "font-size: 14px; font-family: Courier; fill: black") } } // SelfCheck -- самопроверка типа func (sf *ElemLabel) SelfCheck() { sf.IElemBase.SelfCheck() hassert(sf.Offset_ != nil, "SelfCheck(): Offset_ is nil") } // String -- возвращает метку // //go:fix inline func (sf *ElemLabel) String() string { return string(sf.Val_) } // Get -- возвращает метку // //go:fix inline func (sf *ElemLabel) Get() alias.Label { return sf.Val_ } // Offset -- возвращает смещение метки // //go:fix inline func (sf *ElemLabel) Offset() types.IViewOffset { return sf.Offset_ }