view_use_group.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // package view_use_group -- отображение группы вариантов использования
  2. package view_use_group
  3. import (
  4. "fmt"
  5. svg "github.com/ajstarks/svgo"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  7. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  8. "gitp78su.ipnodns.ru/svi/goarch/pkg/elems/use_group"
  9. )
  10. // ViewUseGroup -- отображение группы вариантов использования
  11. type ViewUseGroup struct {
  12. *use_group.UseGroup
  13. }
  14. // NewViewUseGroup -- возвращает новое отображение группы вариант использования
  15. func NewViewUseGroup(elem map[string]interface{}) (*ViewUseGroup, error) {
  16. useGroup, err := use_group.NewUseGroup(elem)
  17. if err != nil {
  18. return nil, fmt.Errorf("NewViewUseGroup(): in create UseGroup, err=\n\t%w", err)
  19. }
  20. sf := &ViewUseGroup{
  21. UseGroup: useGroup,
  22. }
  23. return sf, nil
  24. }
  25. // Draw -- рисует группу вариантов использования
  26. func (sf *ViewUseGroup) Draw(canvas *svg.SVG, mapElem map[alias.Id]types.IElemDrawer) {
  27. x := int(sf.Coord_.X_)
  28. y := int(sf.Coord_.Y_)
  29. offX := int(sf.Offset_.X_)
  30. w := int(sf.W_)
  31. h := int(sf.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. if sf.Label_ != "" {
  37. canvas.Text(x+offX, y-8, string(sf.Label_), "font-size: 14px; font-family: Courier; fill: black")
  38. }
  39. }