view_use_group.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_use_group"
  8. "gitp78su.ipnodns.ru/svi/goarch/lev1/view_coord"
  9. "gitp78su.ipnodns.ru/svi/goarch/lev1/view_size"
  10. )
  11. // ViewUseGroup -- отображение группы вариантов использования
  12. type ViewUseGroup struct {
  13. *arch_use_group.ArchUseCaseGroup
  14. text types.IViewText
  15. coord *view_coord.ViewCoord
  16. size *view_size.ViewSize
  17. }
  18. var (
  19. hassert = kern.GetFnHassert()
  20. )
  21. // NewViewUseGroup -- возвращает новое отображение группы вариант использования
  22. func NewViewUseGroup(useGroup *arch_use_group.ArchUseCaseGroup, label types.IViewText) *ViewUseGroup {
  23. hassert(useGroup != nil, "NewViewUseGroup(): useGroup == nil")
  24. sf := &ViewUseGroup{
  25. ArchUseCaseGroup: useGroup,
  26. text: label,
  27. }
  28. sf.SelfCheck()
  29. _ = types.IViewNode(sf)
  30. return sf
  31. }
  32. // Coord -- координаты группы вариантов использования
  33. func (sf *ViewUseGroup) Coord() types.IViewCoord {
  34. return sf.coord
  35. }
  36. // SelfCheck -- проверяет корректность элемента
  37. func (sf *ViewUseGroup) SelfCheck() {
  38. hassert(sf.ArchUseCaseGroup != nil, "ViewUseGroup.SelfCheck(): IElemUseGroup == nil")
  39. hassert(sf.text != nil, "ViewUseGroup.SelfCheck(): Label_ == nil")
  40. }
  41. // Draw -- рисует группу вариантов использования
  42. func (sf *ViewUseGroup) Draw(canvas *svg.SVG) {
  43. x, y := sf.coord.Int()
  44. w, h := sf.size.Int()
  45. // Главный квадрат
  46. canvas.Rect(x, y, w, h, "fill:none;stroke:black")
  47. // Заголовок
  48. canvas.Rect(x, y-26, h/2, 26, "fill:none;stroke:black")
  49. sf.text.Draw(canvas)
  50. }