34 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT) 35 #error "Only <final/final.h> can be included directly." 41 #include "final/ftypes.h" 42 #include "final/output/fcolorpalette.h" 43 #include "final/vterm/fvterm.h" 47 #pragma GCC diagnostic ignored "-Wnon-virtual-dtor" 56 class FOutput :
public std::enable_shared_from_this<FOutput>
60 using FSetPalette = FColorPalette::FSetPalette;
73 virtual auto getClassName()
const ->
FString;
74 auto getInstance() -> std::shared_ptr<FOutput>;
75 auto getFVTerm()
const & ->
const FVTerm&;
76 virtual auto getColumnNumber()
const -> std::size_t = 0;
77 virtual auto getLineNumber()
const -> std::size_t = 0;
78 virtual auto getTabstop()
const ->
int = 0;
79 virtual auto getMaxColor()
const ->
int = 0;
80 virtual auto getEncoding()
const -> Encoding = 0;
81 virtual auto getKeyName (FKey)
const ->
FString = 0;
84 virtual void setCursor (
FPoint) = 0;
85 virtual void setCursor (CursorMode) = 0;
86 virtual void hideCursor (
bool =
true) = 0;
87 virtual void showCursor() = 0;
88 virtual void setTerminalSize (
FSize) = 0;
89 virtual auto setVGAFont() ->
bool = 0;
90 virtual auto setNewFont() ->
bool = 0;
91 virtual void setNonBlockingRead (
bool =
true) = 0;
92 template <
typename ClassT>
93 void setColorPaletteTheme()
const;
94 template <
typename ClassT>
95 void setColorPaletteTheme (
const FSetPalette&)
const;
98 virtual auto isCursorHideable()
const ->
bool = 0;
99 virtual auto isMonochron()
const ->
bool = 0;
100 virtual auto isNewFont()
const ->
bool = 0;
101 virtual auto isEncodable (
const wchar_t&)
const ->
bool = 0;
102 virtual auto isFlushTimeout()
const ->
bool = 0;
103 virtual auto hasTerminalResized()
const ->
bool = 0;
104 virtual auto allowsTerminalSizeManipulation()
const ->
bool = 0;
105 virtual auto canChangeColorPalette()
const ->
bool = 0;
106 virtual auto hasHalfBlockCharacter()
const ->
bool = 0;
107 virtual auto hasShadowCharacter()
const ->
bool = 0;
108 virtual auto areMetaAndArrowKeysSupported()
const ->
bool = 0;
112 virtual void finishTerminal() = 0;
113 virtual auto updateTerminal() ->
bool = 0;
114 virtual void detectTerminalSize() = 0;
115 virtual void commitTerminalResize() = 0;
116 virtual void initScreenSettings() = 0;
117 virtual auto scrollTerminalForward() ->
bool = 0;
118 virtual auto scrollTerminalReverse() ->
bool = 0;
119 virtual void clearTerminalAttributes() = 0;
120 virtual void clearTerminalState() = 0;
121 virtual auto clearTerminal (
wchar_t = L
' ') ->
bool = 0;
122 virtual void flush() = 0;
123 virtual void beep()
const = 0;
127 virtual auto getFSetPaletteRef()
const & ->
const FSetPalette& = 0;
130 virtual auto isDefaultPaletteTheme()
const ->
bool = 0;
131 virtual void redefineColorPalette() = 0;
132 virtual void restoreColorPalette() = 0;
140 inline auto FOutput::getClassName()
const ->
FString 141 {
return "FOutput"; }
144 inline auto FOutput::getFVTerm()
const & ->
const FVTerm&
148 template <
typename ClassT>
149 inline void FOutput::setColorPaletteTheme()
const 151 const auto& set_Palette = getFSetPaletteRef();
152 setColorPaletteTheme<ClassT>(set_Palette);
156 template <
typename ClassT>
157 inline void FOutput::setColorPaletteTheme (
const FSetPalette& f)
const 160 FColorPalette::getInstance() = std::make_shared<ClassT>(f);
162 FColorPalette::getInstance()->setColorPalette();
Definition: class_template.cpp:25