/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcUI/src/FcUI.h
231 строка
9 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef _FCUI_H_ #define _FCUI_H_ #include "FcUI_Error.h" #include "FcUI_Setting.h" #include "FcUI_Window.h" #include "FcUI_Font.h" #include "FcUI_Object.h" #include "FcUI_Config.h" #include "FcUI_View.h" #include "FcUI_View_Field.h" #include "FcUI_Render.h" #include "FcUI_Activity.h" #include "FcUI_Input.h" typedef struct _FcUI_Setting_t { FcUI_Config_Setting_t mGraphicsSetting; FcUI_Window_config_t mWindowConfig; FcUI_Object_t mObjects; }FcUI_Setting_t; typedef struct FcUI_t { FcUI_Window_t mWindow; FcUI_Font_t mFont; FcUI_Config_t mConfig; FcUI_View_t mView; FcUI_View_Field_t mViewField; FcUI_Render_t mRender; FcUI_Activity_t mActivity; FcUI_Input_t mInput; }FcUI_t; FCUIDEF FcUI_Error_t FcUI(FcUI_t* pUI, FcPlatform_t* pPlatform, FcUI_Setting_t* pConfig); FCUIDEF FcUI_Error_t FcUI_initUI(FcUI_t* pUI, FcUI_Object_t* pObjects, FcUI_Config_Setting_t* pGraphicsSetting); FCUIDEF FcUI_Error_t FcUI_GraphicsQueue_push_funcGL(FcUI_t* pUI, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunc, void* pData); FCUIDEF FcUI_Error_t FcUI_set_drawSceneGL(FcUI_t* pUI, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunc, void* pData); FCUIDEF FcUI_Error_t FcUI_GraphicsQueue_sync(FcUI_t* pUI); FCUIDEF FcUI_Error_t FcUI_setTimer1(FcUI_t* pUI, size_t timeMS, PFNFCWINDOWGLCALLBACKPROC function, void* pData); FCUIDEF FcUI_Error_t FcUI_Window_vSync_Enable(FcUI_t* pUI); FCUIDEF FcUI_Error_t FcUI_Window_vSync_Disable(FcUI_t* pUI); FCUIDEF FcUI_Error_t FcUI_TextView_setText_GL0(FcUI_t* pUI, size_t id, TCHAR* pText); //FcUI_Error_t FcUI_set_Input(FcUI_Input_t* pInput); FCUIDEF FcUI_Error_t FcUI_dispatch(FcUI_t* pUI); FCUIDEF FcUI_Error_t FcUI_free(FcUI_t* pUI); FCUIDEF FcUI_Error_t FcUI(FcUI_t* pUI, FcPlatform_t* pPlatform, FcUI_Setting_t* pConfig) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI && pPlatform && pConfig), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_Window(&pUI->mWindow, pPlatform, &pConfig->mWindowConfig)); FCUISAFECALLF(mError, FcUI_Font(&pUI->mFont, &pUI->mWindow, &pConfig->mObjects)); FCUISAFECALLF(mError, FcUI_Config(&pUI->mConfig, &pUI->mWindow, &pConfig->mGraphicsSetting, &pUI->mFont, &pConfig->mObjects)); FCUISAFECALLF(mError, FcUI_View(&pUI->mView, &pUI->mWindow, &pUI->mFont, &pConfig->mObjects, &pUI->mConfig)); FCUISAFECALLF(mError, FcUI_View_Field(&pUI->mViewField, &pUI->mWindow, &pUI->mView)); FCUISAFECALLF(mError, FcUI_Render(&pUI->mRender, &pUI->mWindow, &pUI->mView, &pUI->mViewField, &pUI->mConfig)); FCUISAFECALLF(mError, FcUI_Activity(&pUI->mActivity, &pUI->mView)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_initUI(FcUI_t* pUI, FcUI_Object_t* pObjects, FcUI_Config_Setting_t* pGraphicsSetting) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI && pObjects && pGraphicsSetting), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_GraphicsQueue_sync(pUI)); FCUISAFECALLF(mError, FcUI_Activity_free(&pUI->mActivity)); FCUISAFECALLF(mError, FcUI_Render_free(&pUI->mRender)); FCUISAFECALLF(mError, FcUI_View_Field_free(&pUI->mViewField)); FCUISAFECALLF(mError, FcUI_View_free(&pUI->mView)); FCUISAFECALLF(mError, FcUI_Config_free(&pUI->mConfig)); FCUISAFECALLF(mError, FcUI_Config(&pUI->mConfig, &pUI->mWindow, pGraphicsSetting, &pUI->mFont, pObjects)); FCUISAFECALLF(mError, FcUI_View(&pUI->mView, &pUI->mWindow, &pUI->mFont, pObjects, &pUI->mConfig)); FCUISAFECALLF(mError, FcUI_View_Field(&pUI->mViewField, &pUI->mWindow, &pUI->mView)); FCUISAFECALLF(mError, FcUI_Render(&pUI->mRender, &pUI->mWindow, &pUI->mView, &pUI->mViewField, &pUI->mConfig)); FCUISAFECALLF(mError, FcUI_Activity(&pUI->mActivity, &pUI->mView)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_setTimer1(FcUI_t* pUI, size_t timeMS, PFNFCWINDOWGLCALLBACKPROC function, void* pData) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI && function), FCUI_ERROR_PARAMETERS); FcWindow_setTimer1(&pUI->mWindow.mWindow, timeMS, function, pData); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_dispatch(FcUI_t* pUI){ FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_Window_dispatch(&pUI->mWindow)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_free(FcUI_t* pUI){ FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_GraphicsQueue_sync(pUI)); FCUISAFECALLF(mError, FcUI_Activity_free(&pUI->mActivity)); FCUISAFECALLF(mError, FcUI_Render_free(&pUI->mRender)); FCUISAFECALLF(mError, FcUI_View_Field_free(&pUI->mViewField)); FCUISAFECALLF(mError, FcUI_View_free(&pUI->mView)); FCUISAFECALLF(mError, FcUI_Config_free(&pUI->mConfig)); FCUISAFECALLF(mError, FcUI_Font_free(&pUI->mFont)); FCUISAFECALLF(mError, FcUI_Window_free(&pUI->mWindow)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_GraphicsQueue_push_funcGL(FcUI_t* pUI, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunc, void* pData) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_push_GL(FcUI_Window_getWindow(&pUI->mWindow), pFunc, pData), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_GraphicsQueue_sync(FcUI_t* pUI) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALLIFF(mError, mWindowError, FcWindow_GraphicsQueue_sync_GL(FcUI_Window_getWindow(&pUI->mWindow)), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_set_drawSceneGL(FcUI_t* pUI, PFNFCWINDOWPUSHGRAPHICSQUEUEPROC pFunc, void* pData) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI && pFunc), FCUI_ERROR_PARAMETERS); FcUI_Raster_set_RenderScene(FcUI_Render_getRaster(&pUI->mRender), pFunc, pData); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_set_Input(FcUI_t* pUI, FcUI_Input_t* pInput) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_Input(&pUI->mInput, pInput, &pUI->mWindow, pUI)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_vSync_Enable(FcUI_t* pUI) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_vSync_Enable(&pUI->mWindow.mWindow), FcUI_Error_Window); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Window_vSync_Disable(FcUI_t* pUI) { FcWindow_Error_t mWindowError; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); FCUISAFECALLIFF(mError, mWindowError, FcWindow_vSync_Disable(&pUI->mWindow.mWindow), FcUI_Error_Window); gError: return mError; } FCUIDEF void FcUI_Window_callbackMouse(unsigned int x, unsigned int y, unsigned int mouseKeyCode, void* pData) { FcUI_View_Info_t* mViewInfo; FcUI_Input_data_t mData; FcUI_t* mUI = (FcUI_t*)pData; mData.mEvent.mMouse.mouseKeyCode = mouseKeyCode; mData.mEvent.mMouse.x = x; mData.mEvent.mMouse.y = y; mData.mType = FCUI_INPUT_DEVICE_MOUSE; mUI->mInput.mFunction(&mData, mUI); if (FcUI_Activity_init(&mUI->mActivity)) FcUI_Activity_mouse(&mUI->mActivity, &mUI, &mUI->mWindow, &mUI->mViewField, mouseKeyCode, x, y); } FCUIDEF void FcUI_Window_callbackKeyboard(unsigned int keyCode, unsigned int keyEvent, void* pData0, void* pData1) { FcUI_Input_data_t mData; FcUI_t* mUI = (FcUI_t*)pData0; mData.mEvent.mKeyboard.keyCode = keyCode; mData.mEvent.mKeyboard.keyEvent = keyEvent; mData.mType = FCUI_INPUT_DEVICE_KEYBOARD; mUI->mInput.mFunction(&mData, mUI); if (FcUI_Activity_init(&mUI->mActivity)) FcUI_Activity_keyboard(&mUI->mActivity, keyCode, keyEvent); } FCUIDEF FcUI_Error_t FcUI_TextView_setText_GL0(FcUI_t* pUI, size_t id, TCHAR* pText) { size_t i, j; FcUI_View_Vertex_Array_Info_GL0_t mArray; FcUI_TextView_t* pTextView; FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pUI), FCUI_ERROR_PARAMETERS); for (i = 0; i < pUI->mView.mData.mGraphics_GL_0.mNumberObjects; i++) { if (pUI->mView.mData.mGraphics_GL_0.mDrawElement2Info[i].mTypeObject == FCUI_OBJECT_TEXTVIEW) { if (pUI->mView.mData.mGraphics_GL_0.mDrawElement2Info[i].mObject.mTextView.mID == id) { pTextView = &pUI->mView.mData.mGraphics_GL_0.mDrawElement2Info[i].mObject.mTextView; FcUI_TextView_setText(pTextView, pText); mArray.mVertex = (float(*)[6][3][4])FcUI_Buffer_Array_v3_GL_getData(&pUI->mActivity.mData.mGraphics_GL_0.mTypeConfig->mData.mGraphics_0.mBuffer0, &j); mArray.mOffsetVertex = pUI->mView.mData.mGraphics_GL_0.mDrawElement2Info[i].mOffsetVertex; FcUI_TextView_Rectangle_Array_v2f_GL_0(pTextView, &pUI->mFont, &mArray); FcUI_Buffer_Array_v3_GL_sync(&pUI->mActivity.mData.mGraphics_GL_0.mTypeConfig->mData.mGraphics_0.mBuffer0); } } } gError: return mError; } #endif //_FCUI_H_