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);
33extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_PixelFormatPreferred(ZF_IN SDL_PixelFormat f);
34
35// ============================================================
36typedef void (*ZFImpl_sys_SDL_WindowLifeCycle)(ZF_IN SDL_Window *owner);
37extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_WindowLifeCycle> ZFImpl_sys_SDL_WindowOnCreate;
38extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_WindowLifeCycle> ZFImpl_sys_SDL_WindowOnDestroy;
39extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_WindowNotifyCreate(ZF_IN SDL_Window *owner);
40extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_WindowNotifyDestroy(ZF_IN SDL_Window *owner);
41
42typedef void (*ZFImpl_sys_SDL_RendererLifeCycle)(ZF_IN SDL_Renderer *owner);
43extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_RendererLifeCycle> ZFImpl_sys_SDL_RendererOnCreate;
44extern ZFLIB_ZF_impl ZFCoreArray<ZFImpl_sys_SDL_RendererLifeCycle> ZFImpl_sys_SDL_RendererOnDestroy;
45extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_RendererNotifyCreate(ZF_IN SDL_Renderer *owner);
46extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_RendererNotifyDestroy(ZF_IN SDL_Renderer *owner);
47
48// ============================================================
54typedef zfbool (*ZFImpl_sys_SDL_EventHandler)(ZF_IN SDL_Event *event);
55
57extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_eventHandlerAdd(
58 ZF_IN Uint32 type
59 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
61 );
63extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_eventHandlerRemove(
64 ZF_IN Uint32 type
65 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
66 );
67
69extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_userEventHandlerAdd(
70 ZF_IN Sint32 userEventCode
71 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
73 );
75extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_userEventHandlerRemove(
76 ZF_IN Sint32 userEventCode
77 , ZF_IN ZFImpl_sys_SDL_EventHandler eventHandler
78 );
79
102#define ZFIMPL_SYS_SDL_USER_EVENT_HANDLER(name, level) \
103 ZFIDMAP_GLOBAL_REGISTER_DETAIL(_ZFP_SDLEvent, name) \
104 static zfbool _ZFP_SDLEventH_##name(ZF_IN SDL_Event *sdlEvent); \
105 ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(SDLEventReg_##name, ZFLevelZFFrameworkStatic) { \
106 ZFImpl_sys_SDL_userEventHandlerAdd(((Sint32)_ZFP_SDLEvent##name()), _ZFP_SDLEventH_##name, level); \
107 } \
108 ZF_GLOBAL_INITIALIZER_DESTROY(SDLEventReg_##name) { \
109 ZFImpl_sys_SDL_userEventHandlerRemove(((Sint32)_ZFP_SDLEvent##name()), _ZFP_SDLEventH_##name); \
110 } \
111 ZF_GLOBAL_INITIALIZER_END(SDLEventReg_##name) \
112 static zfbool _ZFP_SDLEventH_##name(ZF_IN SDL_Event *sdlEvent)
116#define ZFIMPL_SYS_SDL_USER_EVENT(name) \
117 ((Sint32)_ZFP_SDLEvent##name())
118
122#define ZFIMPL_SYS_SDL_USER_EVENT_POST(name, data1_, data2_) \
123 do { \
124 SDL_Event e; \
125 SDL_zero(e); \
126 e.type = SDL_EVENT_USER; \
127 e.user.code = ZFIMPL_SYS_SDL_USER_EVENT(name); \
128 e.user.data1 = data1_; \
129 e.user.data2 = data2_; \
130 SDL_PushEvent(&e); \
131 } while(zffalse)
132
133// ============================================================
145extern ZFLIB_ZF_impl zfbool ZFImpl_sys_SDL_embed;
146
148extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_embedInit(ZF_IN SDL_Window *window);
150extern ZFLIB_ZF_impl void ZFImpl_sys_SDL_embedCleanup(void);
151
157extern ZFLIB_ZF_impl zfbool ZFImpl_sys_SDL_embedEventHandler(ZF_IN SDL_Event *event);
158
160#endif // #if ZF_ENV_sys_SDL
161#endif // #ifndef _ZFI_ZFMainEntry_sys_SDL_h_
162
header file for ZFCore module
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:188
_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