// package view_use_group -- отображение группы вариантов использования package view_use_group import ( svg "github.com/ajstarks/svgo" "gitp78su.ipnodns.ru/svi/kern/v3" "gitp78su.ipnodns.ru/svi/goarch/lev0/types" "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_use_group" "gitp78su.ipnodns.ru/svi/goarch/lev1/view_coord" "gitp78su.ipnodns.ru/svi/goarch/lev1/view_size" ) // ViewUseGroup -- отображение группы вариантов использования type ViewUseGroup struct { *arch_use_group.ArchUseCaseGroup text types.IViewText coord *view_coord.ViewCoord size *view_size.ViewSize } var ( hassert = kern.GetFnHassert() ) // NewViewUseGroup -- возвращает новое отображение группы вариант использования func NewViewUseGroup(useGroup *arch_use_group.ArchUseCaseGroup, label types.IViewText) *ViewUseGroup { hassert(useGroup != nil, "NewViewUseGroup(): useGroup == nil") sf := &ViewUseGroup{ ArchUseCaseGroup: useGroup, text: label, } sf.SelfCheck() _ = types.IViewNode(sf) return sf } // Coord -- координаты группы вариантов использования func (sf *ViewUseGroup) Coord() types.IViewCoord { return sf.coord } // SelfCheck -- проверяет корректность элемента func (sf *ViewUseGroup) SelfCheck() { hassert(sf.ArchUseCaseGroup != nil, "ViewUseGroup.SelfCheck(): IElemUseGroup == nil") hassert(sf.text != nil, "ViewUseGroup.SelfCheck(): Label_ == nil") } // Draw -- рисует группу вариантов использования func (sf *ViewUseGroup) Draw(canvas *svg.SVG) { x, y := sf.coord.Int() w, h := sf.size.Int() // Главный квадрат canvas.Rect(x, y, w, h, "fill:none;stroke:black") // Заголовок canvas.Rect(x, y-26, h/2, 26, "fill:none;stroke:black") sf.text.Draw(canvas) }