Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Window.hpp
1 
2 #pragma once
3 #include <map>
4 #include <memory>
5 #include <alicorn\boost\filesystem.forward.hpp>
6 #include <Covellite\Events\Events.hpp>
7 #include <Covellite\App\IWindow.hpp>
8 #include <Covellite\Gui\IWindow.hpp>
9 #include <Covellite\Gui\Layers.hpp>
10 
11 namespace covellite
12 {
13 
14 namespace api { class IWindow; }
15 
16 namespace gui
17 {
18 
19 class Initializer;
20 class StringTranslator;
21 class Renderer;
22 
47 class Window final :
50 {
52  using WindowApiPtr_t = ::std::shared_ptr<WindowApi_t>;
53  using Utf8String_t = ::std::string;
54  using StringBank_t = ::std::map<Utf8String_t, Utf8String_t>;
55  using Path_t = ::boost::filesystem::path;
56  using LayerPtr_t = ::std::shared_ptr<ILayer>;
59  using InitializerPtr_t = ::std::unique_ptr<Initializer_t>;
61  using StringTranslatorPtr_t = ::std::shared_ptr<StringTranslator_t>;
62  using Context_t = CovelliteGui::Core::Context;
63  using ContextPtr_t = ::std::unique_ptr<Context_t, void(*)(Context_t *)>;
64  using Vector_t = CovelliteGui::Core::Vector2i;
65  using RendererPtr_t = ::std::shared_ptr<covellite::gui::Renderer>;
66 
67 public:
68  class EventListener;
69  using EventListenerPtr_t = ::std::shared_ptr<EventListener>;
70 
71 public:
72  // Интерфейс events::IEvents:
73  operator Events_t (void) const override;
74 
75 public:
76  // Интерфейс gui::IWindow:
77  DocumentPtr_t LoadDocument(const PathToFile_t &) override;
78 
79 public:
80  void Set(const StringBank_t &);
81 
82 public:
83  // Функции работы со слоями (экранами) окна.
84  template<class TLayer>
85  TLayer & PushLayer(void);
86  void Back(void);
87 
88 private:
89  void PushLayer(const LayerPtr_t &);
90 
91 private:
92  Vector_t GetContextSize(void) const;
93  void DoDrawWindow(void);
94  void LoadFonts(void);
95 
96 private:
97  const WindowApi_t & m_WindowApi;
98  Events_t m_Events;
99  RendererPtr_t m_pRenderer;
100  EventListenerPtr_t m_pEventListener;
101  StringTranslatorPtr_t m_pStringTranslator;
102  InitializerPtr_t m_pInitializer;
103  ContextPtr_t m_pContext;
104  Layers_t m_Layers;
105  ::std::map<Path_t, ::std::vector<uint8_t>> m_RawDataFonts;
106 
107 public:
108  explicit Window(const WindowApi_t &);
109  ~Window(void) noexcept;
110 };
111 
112 } // namespace gui
113 
114 } // namespace covellite
115 
116 #include <Covellite\Gui\Window.inl>
covellite::gui::Initializer
Класс входит в проект Covellite.Gui Класс, инкапсулирующий инициализацию/разрушение используемой би...
Definition: Initializer.hpp:41
covellite::gui::Layers
Класс входит в проект Covellite.Gui Класс списка слоев.
Definition: Layers.hpp:35
covellite::gui::Window
Класс входит в проект Covellite.Gui Класс окна, отрисовывающий GUI.
Definition: Window.hpp:50
covellite::gui::Window::LoadFonts
void LoadFonts(void)
Функция загрузки используемых шрифтов.
Definition: Window.cpp:221
covellite::gui::Window::LoadDocument
DocumentPtr_t LoadDocument(const PathToFile_t &) override
Функция загрузки документа из указанного файла.
Definition: Window.cpp:132
covellite::api::IWindow
Класс входит в проект Covellite.Api Интерфейсный класс для всех окон, реализующих различные графиче...
Definition: IWindow.hpp:35
covellite::app::IWindow
Класс входит в проект Covellite.App Интерфейсный класс для классов окон фреймворка.
Definition: IWindow.hpp:32
covellite::gui::Window::Set
void Set(const StringBank_t &)
Функция установки набора для преобразования строк.
Definition: Window.cpp:153
covellite::events::Events
Класс входит в проект Covellite.Events Класс для работы с событиями фреймворка.
Definition: Events.hpp:36
covellite::gui::Window::PushLayer
TLayer & PushLayer(void)
Функция вставки нового слоя.
Definition: Window.inl:32
covellite::gui::Window::GetContextSize
Vector_t GetContextSize(void) const
Функция получения размеров панели контекста в пикселях.
Definition: Window.cpp:195
covellite::gui::Window::EventListener
Класс входит в Covellite.Gui Вспомогательный класс для передачи событий библиотеки GUI классам окон...
Definition: EventListener.hpp:32
covellite::gui::StringTranslator
Класс входит в проект Covellite.Gui Класс преобразователя строк.
Definition: StringTranslator.hpp:34
covellite::gui::Window::Back
void Back(void)
Функция возврата к предыдущему слою.
Definition: Window.cpp:166
covellite::gui::IWindow
Класс входит в проект Covellite.Gui Интерфесный класс окна, отображающего элементы GUI.
Definition: IWindow.hpp:31
covellite::gui::Window::DoDrawWindow
void DoDrawWindow(void)
Функция добработки события covellite::events::Drawing.Do.
Definition: Window.cpp:205