26 #include "swe_window.h" 42 enum MoveDirection { MoveCenter, MoveUp, MoveDown, MoveLeft, MoveRight, MoveUpperLeft, MoveUpperRight, MoveLowerLeft, MoveLowerRight, MoveFirst, MoveLast };
78 size_t cols(
void)
const {
return val1(); }
79 size_t rows(
void)
const {
return val2(); }
81 void setSize(
size_t cols,
size_t rows) { set1(cols); set2(rows); }
86 TermSize & operator+= (
const TermSize & ts) { setSize(cols() + ts.cols(), rows() + ts.rows());
return *
this; }
87 TermSize & operator-= (
const TermSize & ts) { setSize(cols() - ts.cols(), rows() - ts.rows());
return *
this; }
89 Size toSize(
void)
const {
return Size(cols(), rows()); }
99 int posx(
void)
const {
return val1(); }
100 int posy(
void)
const {
return val2(); }
102 void setPos(
int posx,
int posy) { set1(posx); set2(posy); }
104 TermPos operator+ (
const TermPos & tp)
const {
return TermPos(posx() + tp.posx(), posy() + tp.posy()); }
105 TermPos operator- (
const TermPos & tp)
const {
return TermPos(posx() - tp.posx(), posy() - tp.posy()); }
110 TermPos & operator+= (
const TermPos & tp) { setPos(posx() + tp.posx(), posy() + tp.posy());
return *
this; }
111 TermPos & operator-= (
const TermPos & tp) { setPos(posx() - tp.posx(), posy() - tp.posy());
return *
this; }
113 TermPos & operator+= (
const TermSize & ts) { setPos(posx() + ts.cols(), posy() + ts.rows());
return *
this; }
114 TermPos & operator-= (
const TermSize & ts) { setPos(posx() - ts.cols(), posy() - ts.rows());
return *
this; }
116 Point toPoint(
void)
const {
return Point(posx(), posy()); }
127 void setRect(
int posx,
int posy,
size_t cols,
size_t rows) { setPos(posx, posy); setSize(cols, rows); }
128 Rect toRect(
void)
const {
return Rect(toPoint(), toSize()); }
149 void setState(
const Type &,
bool f);
150 bool checkState(
const Type &)
const;
153 int alpha(
void)
const;
163 set(
int x,
int y) :
packint2(x, y) {}
165 int posx(
void)
const {
return val1(); }
166 int posy(
void)
const {
return val2(); }
175 int count(
void)
const {
return val2(); }
181 up(
int count = 1) :
move(MoveUp, count) {}
187 down(
int count = 1) :
move(MoveDown, count) {}
193 left(
int count = 1) :
move(MoveLeft, count) {}
199 right(
int count = 1) :
move(MoveRight, count) {}
244 const AlignType & operator()(
void)
const {
return val; }
256 padding(
int left,
int right,
int top,
int bottom) :
packint4(left, right, top, bottom) {}
258 int left(
void)
const {
return val1(); }
259 int right(
void)
const {
return val2(); }
260 int top(
void)
const {
return val3(); }
261 int bottom(
void)
const {
return val4(); }
271 ColorIndex fgindex(
void)
const {
return val1(); }
272 ColorIndex bgindex(
void)
const {
return val2(); }
292 flip(
int val) : type(val) {}
311 alpha(
int val) : value(val) {}
368 struct area :
public std::pair<int, packint2>
370 area(
int val,
const TermSize & sz) : std::pair<int, packint2>(val,
packint2(sz.cols(), sz.rows())) {}
372 int value(
void)
const {
return first; }
373 size_t width(
void)
const {
return second.val1(); }
374 size_t height(
void)
const {
return second.val2(); }
420 struct property :
public std::pair<CharProperty, packint2>
423 std::pair<CharProperty, packint2>(cp,
packint2(sz.cols(), sz.rows())) {}
425 const CharProperty & toProperty(
void)
const {
return first; }
426 size_t width(
void)
const {
return second.val1(); }
427 size_t height(
void)
const {
return second.val2(); }
453 int count(
void)
const {
return val1(); }
454 int charset(
void)
const {
return val2(); }
463 int count(
void)
const {
return val1(); }
464 int charset(
void)
const {
return val2(); }
473 rect(
int px,
int py,
int pw,
int ph,
const LineType & type) :
TermRect(px, py, pw, ph), line(type) {}
490 : ucol(uc), prop(cp), chst(cs) {}
492 void setUnicodeColor(
const UnicodeColor & val) { ucol = val; }
493 void setProperty(
const CharProperty & val) { prop = val; }
494 void setFGIndex(
const ColorIndex & col) { ucol.fgindex(col); }
495 void setBGIndex(
const ColorIndex & col) { ucol.bgindex(col); }
496 void setColors(
const FBColors & cols) { ucol.colors(cols); }
497 void setUnicode(
int sym) { ucol.unicode(sym); }
499 const UnicodeColor & unicodeColor(
void)
const {
return ucol; }
500 const FBColors & colors(
void)
const {
return ucol.colors(); }
501 int unicode(
void)
const {
return ucol.unicode(); }
502 const CharProperty & property(
void)
const {
return prop; }
510 void setAlpha(
int val) { chst.setAlpha(val); }
515 int alpha(
void)
const {
return chst.alpha(); }
518 JsonObject toJson(
void)
const;
560 bool lineWrap(
void)
const;
568 const FBColors & colors(
void)
const;
577 bool blink(
void)
const;
579 void setInvert(
bool);
580 bool invert(
void)
const;
582 void setFlip(
int,
bool);
583 int flip(
void)
const;
586 int alpha(
void)
const;
594 virtual FBColors defaultColors(
void)
const;
595 virtual void terminalResizeEvent(
void) {}
602 void setSize(
const Size &)
override;
603 virtual void setTermSize(
const TermSize &);
607 void setCursorPos(
const TermPos &);
609 void resetCursorPos(
void);
610 const TermPos & cursor(
void)
const;
612 virtual void setCharset(
int ch,
const ColorIndex & fg = Color::Transparent,
const ColorIndex & bg = Color::Transparent,
const CharProperty* prop =
nullptr) = 0;
613 virtual void renderFlush(
void) = 0;
619 size_t cols(
void)
const;
621 size_t rows(
void)
const;
740 TermBase & operator<< (
const char*);
741 TermBase & operator<< (
const std::string &);
749 void renderWindow(
void)
override;
750 const char*
className(
void)
const override {
return "SWE::TermBase"; }
752 JsonObject toJson(
void)
const override;
760 std::vector<TermCharset> chars;
767 bool blinkShow(
void)
const;
768 void setBlinkShow(
bool);
770 int index(
const TermPos &)
const;
771 int index(
void)
const;
773 void fontChangedHandle(
void);
775 void displayResizeEvent(
const Size &)
final;
778 virtual void fontChangedEvent(
void) {};
779 virtual TermSize minimalTerminalSize(
void)
const {
return TermSize(80, 25); }
781 FBColors defaultColors(
void)
const override;
791 void setCharset(
int ch,
const ColorIndex & fg = Color::Transparent,
const ColorIndex & bg = Color::Transparent,
const CharProperty* prop =
nullptr)
override;
794 void setTermSize(
const TermSize &)
override;
795 void renderFlush(
void)
override;
798 void renderSymbol(
int symx,
int symy);
799 const char*
className(
void)
const override {
return "SWE::TermWindow"; }
801 JsonObject toJson(
void)
const override;
803 void dumpState(
void)
const;
812 const char*
className(
void)
const override {
return "SWE::FullTerminal"; }
820 const char*
className(
void)
const override {
return "SWE::CenteredTerminal"; }
int rtee(const LineType &)
код символа "правый T".
Definition: swe_termwin.cpp:172
Definition: swe_types.h:192
TermPos termPos(const TermBase &) const
Definition: swe_termwin.cpp:370
класс двухмерной размерности в терминале
Definition: swe_termwin.h:72
TermPos gfx2sym(const Point &) const
coordinate transformer: graphics Point to symbol TermPos (parent relative)
Definition: swe_termwin.cpp:483
int lrcorner(const LineType &)
код символа "нижний правый угол".
Definition: swe_termwin.cpp:132
класс манипулятор, установка состояния set::bgcolor.
Definition: swe_termwin.h:229
void tickEvent(u32 ms) override
метод получатель, вызывается один раз за каждую итерацию главного цикла сцены DisplayScene, но перед отрисовкой всей сцены
Definition: swe_termwin.cpp:1071
const FontRender * frs(void) const override
Definition: swe_termwin.cpp:1053
класс двухмерной позиции в терминале
Definition: swe_termwin.h:93
класс манипулятор, перемещение курсора в терминале налево
Definition: swe_termwin.h:191
класс пары двух цветов (foreground, background)
Definition: swe_colors.h:136
класс манипулятор, установка состояния set::blink.
Definition: swe_termwin.h:286
const char * className(void) const override
идентификацинная метка класса
Definition: swe_termwin.h:812
пространство SWE.
Definition: swe_binarybuf.cpp:30
тип normal.
Definition: swe_fontset.h:95
класс прямоугольника
Definition: swe_rect.h:144
const TermSize & termSize(void) const
Definition: swe_termwin.cpp:376
класс манипулятор, установка состояния set::rn.
Definition: swe_termwin.h:318
класс манипулятор, заполнение области цветом фона по умолчанию
Definition: swe_termwin.h:400
класс манипулятор, установка состояния set::colors.
Definition: swe_termwin.h:266
Definition: swe_termwin.h:816
int vline(const LineType &)
код символа "вертикальная линия".
Definition: swe_termwin.cpp:32
класс манипулятор, установка состояния set::align.
Definition: swe_termwin.h:238
flip по горизонтали
Definition: swe_termwin.h:140
класс манипулятор, установка состояния set::padding.
Definition: swe_termwin.h:253
Definition: swe_termwin.h:368
класс манипулятор, установка состояния set::flush.
Definition: swe_termwin.h:321
класс манипулятор, перемещение курсора в терминале вверх
Definition: swe_termwin.h:179
класс манипулятор, сброс состояния set::invert.
Definition: swe_termwin.h:352
unicode тонкая
Definition: swe_termwin.h:36
класс манипулятор, заполнение области символом
Definition: swe_termwin.h:379
класс точки с двумя координатами
Definition: swe_rect.h:72
класс цветной unicode строки
Definition: swe_cunicode_color.h:67
стиль normal.
Definition: swe_fontset.h:83
класс манипулятор, сброс состояния set::align.
Definition: swe_termwin.h:337
класс манипулятор, сброс состояния set::fgcolor.
Definition: swe_termwin.h:328
const FontRenderSystem & systemFont(void)
альяс на встроенный рендер PSF шрифта
Definition: swe_fontset.cpp:811
класс манипулятор, заполнение области цветом символа по умолчанию
Definition: swe_termwin.h:393
класс манипулятор, заполнение области цветом символа и фона по умолчанию
Definition: swe_termwin.h:408
const char * className(void) const override
идентификацинная метка класса
Definition: swe_termwin.h:750
Definition: swe_types.h:173
ascii линия
Definition: swe_termwin.h:35
класс манипулятор, заполнение области символом, цветом и свойствами по умолчанию
Definition: swe_termwin.h:433
класс манипулятор, перемещение курсора в терминале направо
Definition: swe_termwin.h:197
int btee(const LineType &)
код символа "нижний T".
Definition: swe_termwin.cpp:212
flip по вертикали
Definition: swe_termwin.h:141
класс манипулятор, заполнение строки символом space.
Definition: swe_termwin.h:386
класс списка unicode строк
Definition: swe_cunicode.h:109
класс манипулятор, сброс состояния set::colors.
Definition: swe_termwin.h:334
size_t cols(void) const
Definition: swe_termwin.cpp:360
int ttee(const LineType &)
код символа "верхний T".
Definition: swe_termwin.cpp:192
класс манипулятор, рисования вертикальной линии
Definition: swe_termwin.h:459
класс терминального символа
Definition: swe_termwin.h:478
класс манипулятор, установка состояния set::alpha.
Definition: swe_termwin.h:308
класс манипулятор, рисования прямоугольника
Definition: swe_termwin.h:468
int ltee(const LineType &)
код символа "левый T".
Definition: swe_termwin.cpp:152
класс манипулятор, сброс состояния set::bgcolor.
Definition: swe_termwin.h:331
базовый класс шрифта
Definition: swe_fontset.h:151
Definition: swe_termwin.h:807
Type
Definition: swe_termwin.h:138
базовый класс терминального окна
Definition: swe_termwin.h:523
класс манипулятор, перемещение курсора в терминале в позицию "окончание строки".
Definition: swe_termwin.h:209
LineType
перечисление типа символьных линий
Definition: swe_termwin.h:33
flip по горизонтали и вертикали
Definition: swe_termwin.h:142
класс индекса цвета
Definition: swe_colors.h:113
класс манипулятор, рисования горизонтальной линии
Definition: swe_termwin.h:449
unicode двойная
Definition: swe_termwin.h:38
свойства отрисовка символа
Definition: swe_fontset.h:102
класс манипулятор, сброс состояния set::property.
Definition: swe_termwin.h:340
класс манипулятор, перемещение курсора в терминале в позицию "начало строки".
Definition: swe_termwin.h:203
Definition: swe_types.h:127
класс состояние графического символа
Definition: swe_termwin.h:132
AlignType
перечисление типа выравнивания
Definition: swe_fontset.h:37
класс манипулятор, сброс состояния set::alpha.
Definition: swe_termwin.h:358
size_t rows(void) const
Definition: swe_termwin.cpp:365
int llcorner(const LineType &)
код символа "нижний левый угол".
Definition: swe_termwin.cpp:112
MoveDirection
перечисление направления движения курсора в терминале
Definition: swe_termwin.h:42
int hline(const LineType &)
код символа "горизонтальная линия".
Definition: swe_termwin.cpp:52
класс манипулятор, сброс состояния set::flip.
Definition: swe_termwin.h:355
класс манипулятор, установка состояния set::flipvert.
Definition: swe_termwin.h:296
const char * className(void) const override
идентификацинная метка класса
Definition: swe_termwin.h:820
класс манипулятор, установка состояния set::fliphorz.
Definition: swe_termwin.h:302
класс двухмерной размерности
Definition: swe_rect.h:36
класс манипулятор, движение курсора по направлению в терминале
Definition: swe_termwin.h:170
const char * className(void) const override
идентификацинная метка класса
Definition: swe_termwin.h:799
CharRender
перечисление типа рендера
Definition: swe_fontset.h:70
основной класс терминального окна
Definition: swe_termwin.h:757
Definition: swe_tools.h:257
класс манипулятор, установка состояния set::invert.
Definition: swe_termwin.h:315
Point sym2gfx(const TermPos &) const
coordinate transformer: symbol TermPos to graphics Point (parent relative)
Definition: swe_termwin.cpp:478
класс манипулятор, сброс состояния set::blink.
Definition: swe_termwin.h:349
blink state
Definition: swe_termwin.h:144
класс манипулятор, заполнение области свойствами символа по умолчанию
Definition: swe_termwin.h:420
класс манипулятор, сброс всех состояний
Definition: swe_termwin.h:361
класс список цветных unicode строк
Definition: swe_cunicode_color.h:110
класс манипулятор, установка позиции курсора терминала
Definition: swe_termwin.h:160
класс прямоугольника в терминале
Definition: swe_termwin.h:120
класс манипулятор, установка состояния set::wrap.
Definition: swe_termwin.h:249
CharHinting
перечисление типа сглаживания контура
Definition: swe_fontset.h:92
int plus(const LineType &)
код символа "+".
Definition: swe_termwin.cpp:232
int ulcorner(const LineType &)
код символа "верхний левый угол".
Definition: swe_termwin.cpp:72
базовый класс графических объектов сцены DisplayScene.
Definition: swe_window.h:57
int urcorner(const LineType &)
код символа "верхний правый угол".
Definition: swe_termwin.cpp:92
unicode толстая
Definition: swe_termwin.h:37
класс цветного unicode символа
Definition: swe_cunicode_color.h:35
класс манипулятор, сброс состояния set::wrap.
Definition: swe_termwin.h:346
класс манипулятор, установка состояния set::fgcolor.
Definition: swe_termwin.h:220
virtual const FontRender * frs(void) const =0
класс манипулятор, установка состояния set::property.
Definition: swe_termwin.h:277
класс манипулятор, сброс состояния set::padding.
Definition: swe_termwin.h:343
класс манипулятор, установка состояния set::flip.
Definition: swe_termwin.h:289
класс манипулятор, перемещение курсора в терминале вниз
Definition: swe_termwin.h:185
инвертировать цвет символа на увет фона
Definition: swe_termwin.h:143
класс unicode строки
Definition: swe_cunicode.h:41