// package size -- размеры объекта
package size

import (
	"p78git.ddns.net/svi/libtui/alias"
	"p78git.ddns.net/svi/libtui/size/sizex"
	"p78git.ddns.net/svi/libtui/size/sizey"
	"p78git.ddns.net/svi/libtui/types"
)

// Size -- размеры объекта
type Size struct {
	sizeX *sizex.SizeX
	sizeY *sizey.SizeY
}

// Возвращает новый размер
func NewSize() *Size {
	sf := &Size{
		sizeX: sizex.NewSizeX(),
		sizeY: sizey.NewSizeY(),
	}
	return sf
}

// Get -- возвращает фактический размер
func (sf *Size) Get() (alias.SizeX, alias.SizeY) {
	return sf.sizeX.Get(), sf.sizeY.Get()
}

// Set -- устанавливает размеры объекта
func (sf *Size) Set(sizeX alias.SizeX, sizeY alias.SizeY) {
	sf.sizeX.Set(sizeX)
	sf.sizeY.Set(sizeY)
}

// X -- возвращает объект размера по X
func (sf *Size) X() types.ISizeX {
	return sf.sizeX
}

// Y -- возвращает объект размера по Y
func (sf *Size) Y() types.ISizeY {
	return sf.sizeY
}
