| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // package cursor -- глобальный курсор на экране
- package cursor
- import (
- "fmt"
- "p78git.ddns.net/svi/libtui/alias"
- "p78git.ddns.net/svi/libtui/lib/line_cell/cell"
- "p78git.ddns.net/svi/libtui/types"
- )
- // Cursor -- курсор на экране
- type Cursor struct {
- *cell.Cell
- app types.IKernel
- screen types.IScreen
- isVisible alias.IsVisible
- }
- // NewCursor -- возвращает новый объект экранного курсора
- func NewCursor(app types.IKernel) (*Cursor, error) {
- if app == nil {
- return nil, fmt.Errorf("NewScrCursor(): IScreen==nil")
- }
- sf := &Cursor{
- app: app,
- screen: app.Screen(),
- Cell: cell.NewCell(),
- isVisible: true,
- }
- sf.SetLit(alias.Lit([]rune("↖")[0]))
- return sf, nil
- }
- // Draw -- отрисовка курсора на экране
- func (sf *Cursor) Draw() {
- sf.screen.SetCell(sf)
- posX, posY := sf.Pos()
- strOut := fmt.Sprintf("WinDebug.Draw(): pos=%v:%v", posX, posY)
- sf.screen.DrawText(posX, posY, strOut)
- }
- // SetPos -- устанавливает позицию курсора с подстройкой фона
- func (sf *Cursor) SetPos(posX alias.PosX, posY alias.PosY) {
- cell := sf.screen.GetCell(posX, posY)
- color := cell.BgColor()
- sf.BgColorSet(color)
- sf.Cell.SetPos(posX, posY)
- }
- // Hide -- скрывает курсор от отображения
- func (sf *Cursor) Hide() {
- sf.isVisible = false
- }
- // Show -- показывает курсор для отображения
- func (sf *Cursor) Show() {
- sf.isVisible = true
- }
- // IsVisible -- возвращает признак отображения курсора
- func (sf *Cursor) IsVisible() alias.IsVisible {
- return sf.isVisible
- }
|