/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcUI/src/FcUI_Object/FcUI_Object_Info.h
179 строк
7 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef _FCUI_OBJECT_INFO_H_ #define _FCUI_OBJECT_INFO_H_ #include "FcUI_Setting.h" #include "FcUI_Error.h" #include "FcUI_View/FcUI_View_Config.h" #include "FcUI_Config/FcUI_Config_Setting.h" #include "FcUI_Object_Button.h" #include "FcUI_Object_TextView.h" #include "FcUI_Font/FcUI_Font_Config.h" typedef enum _FCUI_OBJECT_TYPE_e { FCUI_OBJECT_BUTTON, FCUI_OBJECT_TEXTVIEW, FCUI_OBJECT_RADIOBUTTON, FCUI_OBJECT_SLIDER, FCUI_OBJECT_FONTCONFIG, FCUI_OBJECT_PROGRAM, FCUI_OBJECT_FONTTEXT }FCUI_OBJECT_TYPE_e; typedef size_t FCUI_OBJECT; typedef union _FcUI_Object_u { FcUI_Button_t mButton; FcUI_TextView_t mTextView; FcUI_RadioButton_t mRadioButton; FcUI_Slider_t mSlider; }FcUI_Object_u; typedef struct _FcUI_View_Info_t { size_t mBBOX_x0; size_t mBBOX_y0; size_t mBBOX_x1; size_t mBBOX_y1; size_t mWidth; size_t mHeight; size_t mFontHeight; size_t mStart_ID; size_t mEnd_ID; size_t mOffsetVertex; bool mSelect; bool mSelectableKeyboard; float mDefaultColor[4]; float mSelectColor[4]; FCUI_OBJECT mTypeObject; FCUICALLBACKPROC mCallback; //FCUICALLBACKPROC mEditCallback; FcUI_Object_u mObject; void* mData; }FcUI_View_Info_t; FCUIDEF size_t FcUI_Objects_info_getNumberDrawElements(FcUI_Object_t* pObjects, FcUI_Font_t* pFont, FcUI_Config_Setting_e config); FCUIDEF size_t FcUI_Objects_info_getInfoLengthCurve(FcUI_Object_t* pObjects); FCUIDEF size_t FcUI_Objects_info_getAtlasInfoLength(FcUI_Object_t* pObject, FcUI_Font_t* pFont); FCUIDEF size_t FcUI_Objects_info_getNumberDrawElements(FcUI_Object_t* pObjects, FcUI_Font_t* pFont, FcUI_Config_Setting_e config) { size_t i, j; FcUI_View_Raster_getInfo_curve2_t mCurveInfo; FcUI_Button_t* mButton; FcUI_TextView_t* mTextView; FcUI_RadioButton_t *mRadioButton; FcUI_Slider_t *mSlider; FCUISAFECALL(j, (pObjects && pFont), 0); j = 0; for (i = 0; mButton = FcUI_Object_get_button(pObjects, i); i++) { j += FcUI_Button_getNumberRectangle_Array(mButton, pFont, config); } for (i = 0; mTextView = FcUI_Object_get_textView(pObjects, i); i++) { j += FcUI_TextView_getNumberRectangle_Array(mTextView, pFont, config); } for (i = 0; mRadioButton = FcUI_Object_get_radioButton(pObjects, i); i++) { j += FcUI_RadioButton_getNumberRectangle_Array(mRadioButton, pFont, config); } for (i = 0; mSlider = FcUI_Object_get_slider(pObjects, i); i++) { j += FcUI_Slider_getNumberRectangle_Array(mSlider, pFont, config); } gError: return j; } FCUIDEF size_t FcUI_Objects_info_getInfoLengthCurve(FcUI_Object_t* pObjects) { return pObjects ? FcUI_Object_get_textView_number(pObjects) + FcUI_Object_get_button_number(pObjects) + FcUI_Object_get_radioButton_number(pObjects) + FcUI_Object_get_slider_number(pObjects) : 0; } FCUIDEF size_t FcUI_Objects_info_getAtlasInfoLength(FcUI_Object_t* pObject, FcUI_Font_t* pFont) { size_t i, j, c; FcUI_Button_t* mButton; FcUI_TextView_t *mTextView; FcUI_Slider_t *mSlider; FcUI_RadioButton_t* mRadioButton; FCUISAFECALL(j, (pObject && pFont), 0); j = 0; for (i = c = 0; mButton = FcUI_Object_get_button(pObject, i); i++, c = 0) { if (FcUI_Font_getType(pFont) != FCUI_FONT_CURVE2) for (; mButton->mText[c]; j++, c++); } for (i = c = 0; mTextView = FcUI_Object_get_textView(pObject, i); i++, c = 0) { if (FcUI_Font_getType(pFont) != FCUI_FONT_CURVE2) for (; mTextView->mText[c]; j++, c++); } for (i = c = 0; mSlider = FcUI_Object_get_slider(pObject, i); i++, c = 0) { if (FcUI_Font_getType(pFont) != FCUI_FONT_CURVE2) for (; mSlider->mText[c]; j++, c++) ; } //for (i = c = 0; mRadioButton = FcUI_Object_get_RadioButton(pObject, i); i++, c = 0) { // if (FcUI_Font_getType(pFont) != FCUI_FONT_CURVE2) // for (; mRadioButton->mText[c]; j++, c++); //} gError: return j; } FCUIDEF size_t FcUI_Objects_info_setDrawElementInfo(FcUI_View_Info_t* pView, FcUI_View_Vertex_Info_t* pInfo, FcUI_Object_t* pObject, FcUI_Font_t* pFont, FcUI_Config_Setting_e config) { size_t i, j, mNumberDrawElement, mStartID, mEndID; union { FcUI_Button_t* mButton; FcUI_TextView_t* mTextView; FcUI_RadioButton_t* mRadioButton; FcUI_Slider_t *mSlider; } mLocalObjects; FCUISAFECALL(mNumberDrawElement, (pView && pInfo && pObject && pFont), 0); i = mNumberDrawElement = mStartID = mEndID = 0; #define FcUI_Objects_Info_set(mType, functionType, type, TYPE, selectableKeyboard, mCurrentSelect)\ for (j = 0; mLocalObjects.mType = FcUI_Object_get_##type(pObject, j); j++, i++) {\ mEndID += FcUI_##functionType##_getNumberRectangle_Array(mLocalObjects.mType, pFont, config);\ pView[i].mBBOX_x0 = max(0, mLocalObjects.mType->mX) - mLocalObjects.mType->mWidth / 2;\ pView[i].mBBOX_y0 = max(0, mLocalObjects.mType->mY) - mLocalObjects.mType->mHeight / 2;\ pView[i].mBBOX_x1 = mLocalObjects.mType->mWidth + pView[i].mBBOX_x0;\ pView[i].mBBOX_y1 = mLocalObjects.mType->mHeight + pView[i].mBBOX_y0;\ pView[i].mWidth = mLocalObjects.mType->mWidth;\ pView[i].mHeight = mLocalObjects.mType->mHeight;\ pView[i].mFontHeight = mLocalObjects.mType->mFontHeight;\ pView[i].mDefaultColor[0] = 1. / ((mLocalObjects.mType->mDefaultColor >> 0) & 0xff);\ pView[i].mDefaultColor[1] = 1. / ((mLocalObjects.mType->mDefaultColor >> 8) & 0xff);\ pView[i].mDefaultColor[2] = 1. / ((mLocalObjects.mType->mDefaultColor >> 16) & 0xff);\ pView[i].mDefaultColor[3] = 1. / ((mLocalObjects.mType->mDefaultColor >> 24) & 0xff);\ pView[i].mTypeObject = FCUI_OBJECT_##TYPE;\ pView[i].mCallback = mLocalObjects.mType->mCallback;\ pView[i].mSelectableKeyboard = selectableKeyboard;\ pView[i].mSelect = mCurrentSelect;\ pView[i].mSelectColor[0] = 1. / ((mLocalObjects.mType->mSelectColor >> 0) & 0xff);\ pView[i].mSelectColor[1] = 1. / ((mLocalObjects.mType->mSelectColor >> 8) & 0xff);\ pView[i].mSelectColor[2] = 1. / ((mLocalObjects.mType->mSelectColor >> 16) & 0xff);\ pView[i].mSelectColor[3] = 1. / ((mLocalObjects.mType->mSelectColor >> 24) & 0xff);\ pView[i].mObject.mType = *mLocalObjects.mType;\ pView[i].mData = mLocalObjects.mType->mData;\ pView[i].mStart_ID = mStartID;\ pView[i].mEnd_ID = mEndID;\ pView[i].mOffsetVertex = pInfo->mData.mGLArray0.mOffsetVertex;\ FcUI_##functionType##_setDataRectangle_Array(mLocalObjects.mType, pFont, pInfo);\ mStartID = mEndID;\ } FcUI_Objects_Info_set(mButton, Button, button, BUTTON, false, false); FcUI_Objects_Info_set(mTextView, TextView, textView, TEXTVIEW, true, false); FcUI_Objects_Info_set(mRadioButton, RadioButton, radioButton, RADIOBUTTON, false, false); FcUI_Objects_Info_set(mSlider, Slider, slider, SLIDER, false, false); mNumberDrawElement = i; gError: return mNumberDrawElement; } #endif //_FCUI_OBJECT_INFO_H_