// package pos -- позиция объекта на экране
package pos

import (
	"p78git.ddns.net/svi/libtui/alias"
	"p78git.ddns.net/svi/libtui/pos/posx"
	"p78git.ddns.net/svi/libtui/pos/posy"
	"p78git.ddns.net/svi/libtui/types"
)

// Pos -- позиция виджета
type Pos struct {
	x *posx.PosX // Позиция по X
	y *posy.PosY // Позиция по Y
}

// NewPos -- возвращает новую позицию
func NewPos() *Pos {
	sf := &Pos{
		x: posx.NewPosX(),
		y: posy.NewPosY(),
	}
	return sf
}

// Get -- возвращает позицию в виде пары координат
func (sf *Pos) Get() (alias.PosX, alias.PosY) {
	return sf.x.Get(), sf.y.Get()
}

// Set -- устанавливает позицию объекта в виде пары координат
func (sf *Pos) Set(posX alias.PosX, posY alias.PosY) {
	sf.x.Set(posX)
	sf.y.Set(posY)
}

// X -- возвращает позицию X
func (sf *Pos) X() types.IPosX {
	return sf.x
}

// Y -- возвращает позицию Y
func (sf *Pos) Y() types.IPosY {
	return sf.y
}
