/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcUI/src/FcUI_Object/FcUI_Object_RadioButton.h
132 строки
4 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef _FCUI_OBJECT_RADIOBUTTON_H_ #define _FCUI_OBJECT_RADIOBUTTON_H_ #include "FcUI_Setting.h" #include "FcUI_Error.h" #include "FcUI_Config/FcUI_Config_Setting.h" #include "FcUI_Algo/FcUI_Rectangle.h" enum { FCUI_ACTIVITY_RADIOBUTTON_DISABLE, FCUI_ACTIVITY_RADIOBUTTON_ENABLE }; typedef size_t FcUI_Activity_RadioButton_GL0_t; typedef struct _FcUI_Object_RadioButton_t { size_t mID; size_t mType; ptrdiff_t mX; ptrdiff_t mY; size_t mHeight; size_t mFontHeight; uint32_t mDefaultColor; uint32_t mSelectColor; FCUICALLBACKPROC mCallback; void* mData; }FcUI_Object_RadioButton_t; typedef struct _FcUI_RadioButton_t { size_t mID; FcUI_Activity_RadioButton_GL0_t mStatus; ptrdiff_t mX; ptrdiff_t mY; size_t mWidth; size_t mHeight; size_t mButtonScale; size_t mFontHeight; uint32_t mDefaultColor; uint32_t mSelectColor; FCUICALLBACKPROC mCallback; size_t mOffsetVertexStart; size_t mOffsetVertexEnd; void* mData; }FcUI_RadioButton_t; FCUIDEF FcUI_Error_t FcUI_RadioButton(FcUI_Object_RadioButton_t* pObject, FcUI_RadioButton_t* mRadioButton) { FcUI_Error_t mError = FCUI_ERROR_NOERROR; FCUISAFECALL(mError, (pObject && mRadioButton), FCUI_ERROR_PARAMETERS); mRadioButton->mID = pObject->mID; mRadioButton->mStatus = FCUI_ACTIVITY_RADIOBUTTON_DISABLE; mRadioButton->mX = pObject->mX; mRadioButton->mY = pObject->mY; mRadioButton->mWidth = pObject->mHeight; mRadioButton->mHeight = pObject->mHeight; mRadioButton->mFontHeight = pObject->mFontHeight; mRadioButton->mDefaultColor = pObject->mDefaultColor; mRadioButton->mSelectColor = pObject->mSelectColor; mRadioButton->mCallback = pObject->mCallback; mRadioButton->mData = pObject->mData; mRadioButton->mButtonScale = 1; gError: return mError; } FCUIDEF size_t FcUI_RadioButton_Rectangle_Array_v2f_GL_0(FcUI_RadioButton_t* pRadioButton, FcUI_Font_t* pFont, FcUI_View_Vertex_Array_Info_GL0_t* pData) { size_t i, j, mRectangleCounter, mStartX, mStartY, mSymbolStartX, mSymbolStartY, mWidth, mHeight, mAW; FcFont_Metrics_u mMetrics; size_t mImageWidth, mImageHeight; bool mFind; uint8_t mColor[4]; float (*mVertex)[6][3][4]; FCUISAFECALL(mRectangleCounter, (pRadioButton && pFont), 0); mRectangleCounter = 2; FCUISAFECALL(mRectangleCounter, (pData), mRectangleCounter); mVertex = pData->mVertex; mStartX = pRadioButton->mX - pRadioButton->mWidth / 2; mStartY = pRadioButton->mY - pRadioButton->mHeight / 2; mImageWidth = FcUI_Font_getAtlas_Image(pFont)->mWidth; mImageHeight = FcUI_Font_getAtlas_Image(pFont)->mHeight; mColor[0] = (pRadioButton->mSelectColor >> 0) & 0xff; mColor[1] = (pRadioButton->mSelectColor >> 8) & 0xff; mColor[2] = (pRadioButton->mSelectColor >> 16) & 0xff; mColor[3] = (pRadioButton->mSelectColor >> 24) & 0xff; _FcUI_RectangleGL_Array_vct_i_v4f(mVertex + pData->mOffsetVertex, 0, 0, 0, 0, 0, 0, mStartX, mStartY, pRadioButton->mWidth, pRadioButton->mHeight, mColor); pData->mOffsetVertex += 1; mColor[0] = (pRadioButton->mDefaultColor >> 0) & 0xff; mColor[1] = (pRadioButton->mDefaultColor >> 8) & 0xff; mColor[2] = (pRadioButton->mDefaultColor >> 16) & 0xff; mColor[3] = (pRadioButton->mDefaultColor >> 24) & 0xff; mStartX = pRadioButton->mX - pRadioButton->mWidth / (2 * pRadioButton->mButtonScale); mStartY = pRadioButton->mY - pRadioButton->mHeight / (2 * pRadioButton->mButtonScale); _FcUI_RectangleGL_Array_vct_i_v4f(mVertex + pData->mOffsetVertex, 0, 0, 0, 0, 0, 0, mStartX, mStartY, pRadioButton->mWidth / pRadioButton->mButtonScale, pRadioButton->mHeight / pRadioButton->mButtonScale, mColor); pData->mOffsetVertex += 1; gError: return mRectangleCounter; } FCUIDEF size_t FcUI_RadioButton_getNumberRectangle_Array(FcUI_RadioButton_t* pRadioButton, FcUI_Font_t* pFont, FcUI_Config_Setting_e config) { switch (config) { case FCUI_CONFIG_GRAPHICS_GL_0: return FcUI_RadioButton_Rectangle_Array_v2f_GL_0(pRadioButton, pFont, NULL); case FCUI_CONFIG_NONE: default: break; } return 0; } FCUIDEF size_t FcUI_RadioButton_setDataRectangle_Array(FcUI_RadioButton_t* pRadioButton, FcUI_Font_t* pFont, FcUI_View_Vertex_Info_t* pInfo) { switch (pInfo->mType) { case FCUI_CONFIG_GRAPHICS_GL_0: return FcUI_RadioButton_Rectangle_Array_v2f_GL_0(pRadioButton, pFont, &pInfo->mData.mGLArray0); case FCUI_CONFIG_NONE: default: break; } return 0; } #endif //_FCUI_OBJECT_RADIOBUTTON_H_