SDL Window Engine  20200905
swe_display_scene.h
1 /***************************************************************************
2  * Copyright (C) 2017 by SWE team <sdl.window.engine@gmail.com> *
3  * *
4  * Part of the SWE: SDL Window Engine: *
5  * https://github.com/AndreyBarmaley/sdl-window-engine *
6  * *
7  * This program is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 3 of the License, or *
10  * (at your option) any later version. *
11  * *
12  * This program is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have received a copy of the GNU General Public License *
18  * along with this program; if not, write to the *
19  * Free Software Foundation, Inc., *
20  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21  ***************************************************************************/
22 
23 #ifndef _SWE_DISPLAY_SCENE_
24 #define _SWE_DISPLAY_SCENE_
25 
26 #include <list>
27 #include "swe_events.h"
28 
29 #ifdef SWE_WITH_JSON
30 #include "swe_json_ext.h"
31 #endif
32 
34 namespace SWE
35 {
36  class Window;
37  class Texture;
38  struct KeySym;
39  class BaseObject;
40 
87  {
88  public:
89  static Window* rootWindow(void);
90  static Window* focusedWindow(void);
92  static Window* windowsFocusHandle(void);
93 
95  static bool keyHandle(const KeySym &, bool);
97  static bool textInputHandle(const std::string &);
99  static bool mouseButtonHandle(const ButtonEvent &, bool);
101  static bool mouseClickHandle(const ButtonsEvent &);
103  static bool mouseMotionHandle(const Point &, u32 buttons);
104 #ifdef SWE_SDL12
105  static bool userHandle(const UserEvent &);
107 #else
108  static bool userHandle(const SDL_UserEvent &);
110 #endif
111  static bool scrollHandle(bool);
114  static void tickHandle(u32);
116  static void renderPresentHandle(u32);
118  static void textureInvalidHandle(void);
120  static void displayResizeHandle(const Size &);
122  static void displayFocusHandle(bool);
123 
124  static const std::list<Window*> & items(void);
125  static std::list<Window*> findChilds(const Window &);
126  static std::list<Window*> findParents(const Window &);
127 
128  static void addObject(BaseObject &);
129  static void removeObject(const BaseObject &);
130 
133  static void addItem(Window &);
136  static void removeItem(const Window &);
138  static void pushEvent(const ObjectEvent* dst, int code, void* data);
139  static void moveTopLayer(const Window &);
140 
142  static void sceneRedraw(bool force = false);
144  static void sceneDestroy(void);
145  static void handleWhileVisible(const Window &);
147  static void setCursor(const Texture &, const Point &);
149  static void resetCursor(void);
150 
152  static bool isDirty(void);
154  static void setDirty(bool);
155 
157  static void handleEvents(u32 interval = 0);
158 
159 #ifdef SWE_WITH_JSON
160  static JsonObject toJson(void);
161 #endif
162  static void dumpScene(void);
164  };
165 
166 } // SWE
167 #endif
Definition: swe_surface.h:154
класс объектов сцены DisplayScene, с возможностью отправки/получения сообщений
Definition: swe_object.h:79
пространство SWE.
Definition: swe_binarybuf.cpp:30
event класс кнопки мыши (с состояниями press, release)
Definition: swe_events.h:159
класс точки с двумя координатами
Definition: swe_rect.h:72
базовый класс не графических объектов сцены DisplayScene.
Definition: swe_events.h:98
Definition: swe_inputs_keys.h:245
static void setCursor(const Texture &, const Point &)
функция установки спрайта графического курсора
Definition: swe_display_scene.cpp:201
static void removeItem(const Window &)
функция удаления объекта Window из сцены
Definition: swe_display_scene.cpp:303
static void setDirty(bool)
фунция манипулирования флагом необходимости отрисовки сцены
Definition: swe_display_scene.cpp:208
static void handleEvents(u32 interval=0)
функция главного цикла сцены DisplayScene.
Definition: swe_display_scene.cpp:407
static void sceneRedraw(bool force=false)
функция рендера сцены DisplayScene.
Definition: swe_display_scene.cpp:344
event класс пользовательских данных
Definition: swe_events.h:186
Definition: swe_display_scene.h:86
static void dumpScene(void)
функция дампа в консоль всех Window обектов текущей сцены
Definition: swe_display_scene.cpp:915
event класс кнопки мыши
Definition: swe_events.h:145
класс двухмерной размерности
Definition: swe_rect.h:36
static void resetCursor(void)
функция отмены установки спрайта графического курсора
Definition: swe_display_scene.cpp:194
static void pushEvent(const ObjectEvent *dst, int code, void *data)
функция отправки сообщения на сцену
Definition: swe_display_scene.cpp:425
базовый класс графических объектов сцены DisplayScene.
Definition: swe_window.h:57
static void addItem(Window &)
функция добавления объекта Window на сцену
Definition: swe_display_scene.cpp:297