elem_label.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // package elem_label -- текстовая метка для отображения
  2. package elem_label
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/kern/v3"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  7. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  8. "gitp78su.ipnodns.ru/svi/goarch/lev1/elem_base"
  9. )
  10. // ElemLabel -- текстовая метка для отображения
  11. type ElemLabel struct {
  12. types.IElemBase
  13. Val_ alias.Label `yaml:"val"` // Метка для вывода
  14. Offset_ types.IViewOffset `yaml:"offset"` // Смещение метки
  15. }
  16. var (
  17. hassert = kern.GetFnHassert()
  18. )
  19. // NewElemLabel -- возвращает новую метку
  20. func NewElemLabel(label alias.Label, coord types.IViewCoord, offset types.IViewOffset) types.IViewLabel {
  21. sf := &ElemLabel{
  22. IElemBase: elem_base.NewElemBase(coord, "elem_label"),
  23. Val_: label,
  24. Offset_: offset,
  25. }
  26. sf.SelfCheck()
  27. return sf
  28. }
  29. // Draw -- отрисовка метки
  30. func (sf *ElemLabel) Draw(canvas *svg.SVG) {
  31. strLabel := sf.String()
  32. if strLabel != "" {
  33. x, y := sf.Offset_.Int()
  34. offX := int(sf.Offset_.X())
  35. canvas.Text(x+offX, y-8, strLabel,
  36. "font-size: 14px; font-family: Courier; fill: black")
  37. }
  38. }
  39. // SelfCheck -- самопроверка типа
  40. func (sf *ElemLabel) SelfCheck() {
  41. sf.IElemBase.SelfCheck()
  42. hassert(sf.Offset_ != nil, "SelfCheck(): Offset_ is nil")
  43. }
  44. // String -- возвращает метку
  45. //
  46. //go:fix inline
  47. func (sf *ElemLabel) String() string {
  48. return string(sf.Val_)
  49. }
  50. // Get -- возвращает метку
  51. //
  52. //go:fix inline
  53. func (sf *ElemLabel) Get() alias.Label {
  54. return sf.Val_
  55. }
  56. // Offset -- возвращает смещение метки
  57. //
  58. //go:fix inline
  59. func (sf *ElemLabel) Offset() types.IViewOffset {
  60. return sf.Offset_
  61. }