view_use_group.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // package view_use_group -- отображение группы вариантов использования
  2. package view_use_group
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. "gitp78su.ipnodns.ru/svi/goarch/pkg/elems/use_group"
  8. "gitp78su.ipnodns.ru/svi/kern/v3"
  9. )
  10. // ViewUseGroup -- отображение группы вариантов использования
  11. type ViewUseGroup struct {
  12. UseGroup *use_group.UseGroup
  13. }
  14. var (
  15. hassert = kern.GetFnHassert()
  16. )
  17. // NewViewUseGroup -- возвращает новое отображение группы вариант использования
  18. func NewViewUseGroup(useGroup *use_group.UseGroup, elem map[string]interface{}) *ViewUseGroup {
  19. hassert(useGroup != nil, "NewViewUseGroup(): useGroup == nil")
  20. sf := &ViewUseGroup{
  21. UseGroup: useGroup,
  22. }
  23. return sf
  24. }
  25. // Draw -- рисует группу вариантов использования
  26. func (sf *ViewUseGroup) Draw(canvas *svg.SVG, mapElem map[alias.Id]types.IElemDrawer) {
  27. x := int(sf.UseGroup.ElemBase_.Label_.Coord_.X_)
  28. y := int(sf.UseGroup.ElemBase_.Label_.Coord_.X_)
  29. offX := int(sf.UseGroup.ElemBase_.Label_.Offset_.X_)
  30. w := int(sf.UseGroup.Size_.W_)
  31. h := int(sf.UseGroup.Size_.H_)
  32. // Главный квадрат
  33. canvas.Rect(x, y, w, h, "fill:none;stroke:black")
  34. // Заголовок
  35. canvas.Rect(x, y-26, h/2, 26, "fill:none;stroke:black")
  36. strLabel := string(sf.UseGroup.ElemBase_.Label_.Val_)
  37. if strLabel != "" {
  38. canvas.Text(x+offX, y-8, strLabel, "font-size: 14px; font-family: Courier; fill: black")
  39. }
  40. }