view_use_group.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // package view_use_group -- отображение группы вариантов использования
  2. package view_use_group
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/kern/v3"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. )
  8. // ViewUseGroup -- отображение группы вариантов использования
  9. type ViewUseGroup struct {
  10. types.IElemUseGroup
  11. Label_ types.IElemLabel
  12. }
  13. var (
  14. hassert = kern.GetFnHassert()
  15. )
  16. // NewViewUseGroup -- возвращает новое отображение группы вариант использования
  17. func NewViewUseGroup(useGroup types.IElemUseGroup, label types.IElemLabel) types.IDrawer {
  18. hassert(useGroup != nil, "NewViewUseGroup(): useGroup == nil")
  19. sf := &ViewUseGroup{
  20. IElemUseGroup: useGroup,
  21. Label_: label,
  22. }
  23. sf.SelfCheck()
  24. return sf
  25. }
  26. // SelfCheck -- проверяет корректность элемента
  27. func (sf *ViewUseGroup) SelfCheck() {
  28. hassert(sf.IElemUseGroup != nil, "ViewUseGroup.SelfCheck(): IElemUseGroup == nil")
  29. hassert(sf.Label_ != nil, "ViewUseGroup.SelfCheck(): Label_ == nil")
  30. }
  31. // Draw -- рисует группу вариантов использования
  32. func (sf *ViewUseGroup) Draw(canvas *svg.SVG) {
  33. x, y := sf.Coord().Int()
  34. w, h := sf.Size().Int()
  35. // Главный квадрат
  36. canvas.Rect(x, y, w, h, "fill:none;stroke:black")
  37. // Заголовок
  38. canvas.Rect(x, y-26, h/2, 26, "fill:none;stroke:black")
  39. sf.Label_.Draw(canvas)
  40. }