|
|
@@ -0,0 +1,45 @@
|
|
|
+// package screen_hard -- аппаратный экран
|
|
|
+package screen_hard
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+
|
|
|
+ "github.com/gdamore/tcell"
|
|
|
+
|
|
|
+ "p78git.ddns.net/svi/libtui/types"
|
|
|
+)
|
|
|
+
|
|
|
+// SigResize -- сигнал ресайза для аппаратного экрана
|
|
|
+type SigResize struct {
|
|
|
+}
|
|
|
+
|
|
|
+// ScreenHard -- аппаратный экран
|
|
|
+type ScreenHard struct {
|
|
|
+ scr tcell.Screen // Библиотечный экран
|
|
|
+}
|
|
|
+
|
|
|
+// NewScreenHard -- аппаратный экран
|
|
|
+func NewScreenHard() (*ScreenHard, error) {
|
|
|
+ sf := &ScreenHard{}
|
|
|
+ var err error
|
|
|
+ sf.scr, err = tcell.NewScreen()
|
|
|
+ if err != nil {
|
|
|
+ return nil, fmt.Errorf("NewScreen(): in create tcell.Screen, err=\n\t%w", err)
|
|
|
+ }
|
|
|
+ return sf, nil
|
|
|
+}
|
|
|
+
|
|
|
+// Run -- запскает в работу аппаратный экран
|
|
|
+func (sf *ScreenHard) Run() {
|
|
|
+ sf.scr.EnableMouse()
|
|
|
+ sf.scr.HideCursor()
|
|
|
+ sf.scr.Clear()
|
|
|
+}
|
|
|
+
|
|
|
+// SetCell -- устанавливает ячейку на экран
|
|
|
+func (sf *ScreenHard) SetCell(cell types.ICell) {
|
|
|
+ x, y := cell.Pos()
|
|
|
+ style := cell.Style()
|
|
|
+ lit := cell.Lit()
|
|
|
+ sf.scr.SetCell(int(x), int(y), tcell.Style(style), rune(lit))
|
|
|
+}
|