// 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"
)

// ViewUseGroup -- отображение группы вариантов использования
type ViewUseGroup struct {
	types.IElemUseGroup
	Label_ types.IElemLabel
}

var (
	hassert = kern.GetFnHassert()
)

// NewViewUseGroup -- возвращает новое отображение группы вариант использования
func NewViewUseGroup(useGroup types.IElemUseGroup, label types.IElemLabel) types.IDrawer {
	hassert(useGroup != nil, "NewViewUseGroup(): useGroup == nil")
	sf := &ViewUseGroup{
		IElemUseGroup: useGroup,
		Label_:        label,
	}
	sf.SelfCheck()
	return sf
}

// SelfCheck -- проверяет корректность элемента
func (sf *ViewUseGroup) SelfCheck() {
	hassert(sf.IElemUseGroup != nil, "ViewUseGroup.SelfCheck(): IElemUseGroup == nil")
	hassert(sf.Label_ != 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.Label_.Draw(canvas)
}
