// package canvas -- объект холста
package canvas

import (
	svg "github.com/ajstarks/svgo"
	"gitp78su.ipnodns.ru/svi/kern/v3"

	"gitp78su.ipnodns.ru/svi/goarch/lev0/types"
)

// Canvas -- объект холста
type Canvas struct {
	size    types.IViewSize
	pos     types.IViewCoord
	diaMode string
}

var (
	hassert = kern.GetFnHassert()
)

// NewCanvas -- возвращает новый холст
func NewCanvas(diaMode string, size types.IViewSize, pos types.IViewCoord) *Canvas {
	hassert(diaMode != "", "NewCanvas(): diaMode is empty")
	hassert(size != nil, "NewCanvas(): size is nil")
	hassert(pos != nil, "NewCanvas(): pos is nil")
	sf := &Canvas{
		size:    size,
		pos:     pos,
		diaMode: diaMode,
	}
	return sf
}

// Draw -- рисует холст
func (sf *Canvas) Draw(canvas *svg.SVG) {
	x, y := sf.pos.Int()
	w, h := sf.size.Int()
	canvas.Rect(0, 0, w, h, "fill:white;stroke:red;stroke-width:1")
	canvas.Text(x, y+2, "АРХИТЕКТУРНОЕ РЕШЕНИЕ", "font-size: 20px; font-family: sans-serif; fill: black")
	canvas.Text(x+15, y+20, sf.diaMode, "font-size: 14px; font-family: sans-serif; fill: black")
}

// Size -- возвращает размер холста
//
//go:fix inline
func (sf *Canvas) Size() types.IViewSize {
	return sf.size
}
