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

import (
	svg "github.com/ajstarks/svgo"

	"gitp78su.ipnodns.ru/svi/test_arch/pkg/elems/coord"
)

// Canvas -- оюъект холста
type Canvas struct {
	size    *coord.Coord
	pos     *coord.Coord
	diaMode string
}

// NewCanvas -- возвращает новый холст
func NewCanvas(diaMode string, elem map[string]interface{}) *Canvas {
	size := coord.NewCoord("size", elem)
	pos := coord.NewCoord("pos", elem)
	sf := &Canvas{
		size:    size,
		pos:     pos,
		diaMode: diaMode,
	}
	return sf
}

// Draw -- рисует холст
func (sf *Canvas) Draw(canvas *svg.SVG) {
	x := int(sf.pos.X_)
	y := int(sf.pos.Y_)
	w := int(sf.size.X_)
	h := int(sf.size.Y_)
	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 -- возвращает размер холста
func (sf *Canvas) Size() (int, int) {
	x := int(sf.size.X_)
	y := int(sf.size.Y_)
	return x, y
}
