ZFFramework
 
Loading...
Searching...
No Matches
ZFMainEntry_sys_SDL.h
1#ifndef _ZFI_ZFMainEntry_sys_SDL_h_
2#define _ZFI_ZFMainEntry_sys_SDL_h_
3
4#include "ZFCore.h"
5#include "ZFImpl_sys_SDL_ZF_impl.h"
6
7#if ZF_ENV_sys_SDL
8
10
11// ============================================================
15extern ZFLIB_ZF_impl SDL_Window *ZFImpl_sys_SDL_mainWindow(void);
19extern ZFLIB_ZF_impl SDL_Renderer *ZFImpl_sys_SDL_mainRenderer(void);
20
24extern ZFLIB_ZF_impl SDL_Window *ZFImpl_sys_SDL_CreateWindow(void);
25
29extern ZFLIB_ZF_impl SDL_PixelFormat ZFImpl_sys_SDL_PixelFormatPreferred(void);
30
31// ============================================================
32typedef zfbool (*ZFImpl_sys_SDL_WindowLifeCycle)(ZF_IN SDL_Window *owner);
33extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_WindowLifeCycle> ZFImpl_sys_SDL_WindowOnCreate;
34extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_WindowLifeCycle> ZFImpl_sys_SDL_WindowOnDestroy;
35extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_WindowNotifyCreate(ZF_IN SDL_Window *owner);
36extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_WindowNotifyDestroy(ZF_IN SDL_Window *owner);
37
38typedef zfbool (*ZFImpl_sys_SDL_RendererLifeCycle)(ZF_IN SDL_Renderer *owner);
39extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_RendererLifeCycle> ZFImpl_sys_SDL_RendererOnCreate;
40extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_RendererLifeCycle> ZFImpl_sys_SDL_RendererOnDestroy;
41extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_RendererNotifyCreate(ZF_IN SDL_Renderer *owner);
42extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_RendererNotifyDestroy(ZF_IN SDL_Renderer *owner);
43
44// ============================================================
50typedef zfbool (*ZFImpl_sys_SDL_EventHandler)(ZF_IN SDL_Event *event);
51
53extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_eventHandlerAdd(
54 ZF_IN Uint32 type
55 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
57 );
59extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_eventHandlerRemove(
60 ZF_IN Uint32 type
61 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
62 );
63
65extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_userEventHandlerAdd(
66 ZF_IN Sint32 userEventCode
67 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
69 );
71extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_userEventHandlerRemove(
72 ZF_IN Sint32 userEventCode
73 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
74 );
75
98#define ZFIMPL_SYS_SDL_USER_EVENT_HANDLER(name, level) \
99 ZFIDMAP_GLOBAL_REGISTER_DETAIL(_ZFP_SDLEvent, name) \
100 static zfbool _ZFP_SDLEventH_##name(ZF_IN SDL_Event *sdlEvent); \
101 ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(SDLEventReg_##name, ZFLevelZFFrameworkStatic) { \
102 ZFImpl_sys_SDL_userEventHandlerAdd(((Sint32)_ZFP_SDLEvent##name()), _ZFP_SDLEventH_##name, level); \
103 } \
104 ZF_GLOBAL_INITIALIZER_DESTROY(SDLEventReg_##name) { \
105 ZFImpl_sys_SDL_userEventHandlerRemove(((Sint32)_ZFP_SDLEvent##name()), _ZFP_SDLEventH_##name); \
106 } \
107 ZF_GLOBAL_INITIALIZER_END(SDLEventReg_##name) \
108 static zfbool _ZFP_SDLEventH_##name(ZF_IN SDL_Event *sdlEvent)
112#define ZFIMPL_SYS_SDL_USER_EVENT(name) \
113 ((Sint32)_ZFP_SDLEvent##name())
114
118#define ZFIMPL_SYS_SDL_USER_EVENT_POST(name, data1_, data2_) \
119 do { \
120 SDL_Event e; \
121 SDL_zero(e); \
122 e.type = SDL_EVENT_USER; \
123 e.user.code = ZFIMPL_SYS_SDL_USER_EVENT(name); \
124 e.user.data1 = data1_; \
125 e.user.data2 = data2_; \
126 SDL_PushEvent(&e); \
127 } while(zffalse)
128
129// ============================================================
141extern ZFLIB_ZF_impl zfbool ZFImpl_sys_SDL_embed;
142
144extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_embedInit(ZF_IN SDL_Window *window);
146extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_embedCleanup(void);
147
153extern ZFLIB_ZF_impl zfbool ZFImpl_sys_SDL_embedEventHandler(ZF_IN SDL_Event *event);
154
156#endif // #if ZF_ENV_sys_SDL
157#endif // #ifndef _ZFI_ZFMainEntry_sys_SDL_h_
158
header file for ZFCore module
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:184
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
#define ZFLIB_ZF_impl
used to export symbols
Definition ZFImpl_ZF_impl.h:15
ZFLevel
level for logic which depends on order
Definition ZFLevel.h:17
@ ZFLevelAppNormal
app
Definition ZFLevel.h:26
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
light weight array
Definition ZFCoreArray.h:331