// package scr_cursor -- курсор на экране
package scr_cursor

import (
	"fmt"

	"p78git.ddns.net/svi/libtui/alias"
	"p78git.ddns.net/svi/libtui/cell"
	"p78git.ddns.net/svi/libtui/types"
)

// ScrCursor -- курсор на экране
type ScrCursor struct {
	*cell.Cell
	scr types.IScreen
}

// NewScrCursor -- возвращает новый объект экранного курсора
func NewScrCursor(scr types.IScreen) (*ScrCursor, error) {
	if scr == nil {
		return nil, fmt.Errorf("NewScrCursor(): IScreen==nil")
	}
	sf := &ScrCursor{
		scr:  scr,
		Cell: cell.NewCell(),
	}
	sf.SetLit(alias.Lit([]rune("↖")[0]))
	return sf, nil
}

// Draw -- отрисовка курсора на экране
func (sf *ScrCursor) Draw() {
	sf.scr.SetCell(sf)
}

// SetPos -- устанавливает позицию курсора с подстройкой фона
func (sf *ScrCursor) SetPos(posX alias.PosX, posY alias.PosY) {
	cell := sf.scr.GetCell(posX, posY)
	color := cell.BgColor()
	sf.BgColorSet(color)
	sf.Cell.SetPos(posX, posY)
}
