/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcUI/src/FcUI_Window.h
151 строка
6 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef _FCUI_WINDOW_H_ #define _FCUI_WINDOW_H_ #include "FcPlatform.h" #include "FcWindow.h" #include "FcUI_Error.h" typedef struct _FcUI_Window_config_t { size_t mWidth; size_t mHeight; size_t mX; size_t mY; size_t mFullscreen; size_t mVSync; }FcUI_Window_config_t; typedef struct FcUI_Window_t { FcPlatform_t* mPlatform; FcWindow_t mWindow; }FcUI_Window_t; FCUIDEF FcUI_Error_t FcUI_Window(FcUI_Window_t* pWindow, FcPlatform_t* pPlatform, FcUI_Window_config_t* pConfig); FCUIDEF FcUI_Error_t FcUI_Window_free(FcUI_Window_t* pWindow); FCUIDEF FcUI_Error_t FcUI_Window_setCallback_keyboard(FcUI_Window_t* pWindow, void* pData0, void* pData1); FCUIDEF FcUI_Error_t FcUI_Window_setCallback_mouse(FcUI_Window_t* pWindow, void* pData); FCUIDEF FcUI_Error_t FcUI_Window_setCallbackResizeWindow(FcUI_Window_t* pWindow, void (*f)(unsigned int, unsigned int, void* d0, void* data1), void* pData); FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_push_GL(FcUI_Window_t* pWindow, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunction, void* pData); FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_sync_GL(FcUI_Window_t* pWindow); FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_Callback_push_GL(FcUI_Window_t* pWindow, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunction, void* pData); FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_Callback_free_GL(FcUI_Window_t* pWindow); FCUIDEF FcUI_Error_t FcUI_Window_dispatch(FcUI_Window_t* pWindow); FCUIDEF FcWindow_t* FcUI_Window_getWindow(FcUI_Window_t* pWindow) { return pWindow ? &pWindow->mWindow : NULL; }; FCUIDEF size_t FcUI_Window_getWidth(FcUI_Window_t* pWindow) { return pWindow ? FcWindow_getWidth(&pWindow->mWindow) : 0; }; FCUIDEF size_t FcUI_Window_getHeight(FcUI_Window_t* pWindow) { return pWindow ? FcWindow_getHeight(&pWindow->mWindow) : 0; }; FCUIDEF size_t FcUI_Window_getClientWidth(FcUI_Window_t* pWindow) { return pWindow ? FcWindow_getClientWidth(&pWindow->mWindow) : 0; } FCUIDEF size_t FcUI_Window_getClientHeight(FcUI_Window_t* pWindow) { return pWindow ? FcWindow_getClientHeight(&pWindow->mWindow) : 0; } FCUIDEF const FcPlatform_GL_t* FcUI_Window_getPlatform_GL(FcUI_Window_t* pWindow) { return pWindow ? FcWindow_getPlatform_GL(&pWindow->mWindow) : NULL; } FCUIDEF void FcUI_Window_callbackMouse(unsigned int x, unsigned int y, unsigned int mouseKeyCode, void* pData); FCUIDEF void FcUI_Window_callbackKeyboard(unsigned int keyCode, unsigned int keyEvent, void* pData0, void* pData1); FCUIDEF FcUI_Error_t FcUI_Window(FcUI_Window_t* pWindow, FcPlatform_t* pPlatform, FcUI_Window_config_t* pConfig) { FcWindow_config_t mConfig; FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow && pPlatform && pConfig), FCUI_ERROR_PARAMETERS); mConfig.mHeight = pConfig->mHeight; mConfig.mWidth = pConfig->mWidth; mConfig.mX = pConfig->mX; mConfig.mY = pConfig->mY; FCUISAFECALLIFF(mError, mWindowError, FcWindow(pPlatform, &pWindow->mWindow, &mConfig), FcUI_Error_Window); if (pConfig->mFullscreen) FCUISAFECALLIFF(mError, mWindowError, FcWindow_fullscreen(&pWindow->mWindow), FcUI_Error_Window); if (pConfig->mVSync) FCUISAFECALLIFF(mError, mWindowError, FcWindow_vSync_Enable(&pWindow->mWindow), FcUI_Error_Window); pWindow->mPlatform = pPlatform; gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_free(FcUI_Window_t* pWindow) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_free(&pWindow->mWindow), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_setCallback_keyboard(FcUI_Window_t* pWindow, void* pData0, void* pData1){ FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FcWindow_setCallbackKeyboard(&pWindow->mWindow, FcUI_Window_callbackKeyboard, pData0, pData1); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_setCallback_mouse(FcUI_Window_t* pWindow, void* pData){ FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FcWindow_setCallbackMouse(&pWindow->mWindow, FcUI_Window_callbackMouse, pData); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_setCallbackResizeWindow(FcUI_Window_t* pWindow, void (*f)(unsigned int, unsigned int, void* d0, void* data1), void* pData) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FcWindow_setCallbackResizeWindow(&pWindow->mWindow, f, &pWindow->mWindow, pData); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_push_GL(FcUI_Window_t* pWindow, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunction, void* pData) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_push_GL(&pWindow->mWindow, pFunction, pData), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_sync_GL(FcUI_Window_t* pWindow){ FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_sync_GL(&pWindow->mWindow), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_Callback_push_GL(FcUI_Window_t* pWindow, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunction, void* pData) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_Callback_push_GL(&pWindow->mWindow, pFunction, pData), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_GraphicsQueue_Callback_free_GL(FcUI_Window_t* pWindow) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_Callback_free_GL(&pWindow->mWindow), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_dispatch(FcUI_Window_t* pWindow) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_dispatch(&pWindow->mWindow), FcUI_Error_Window); gError: return mError; } #endif //_FCUI_WINDOW_H_