/********************************************************************* * * BUTTON_SetDrawObj */ void BUTTON__SetDrawObj(BUTTON_Handle hObj, int Index, GUI_DRAW_HANDLE hDrawObj) { if (hObj) { BUTTON_Obj* pObj; WM_LOCK(); pObj = BUTTON_H2P(hObj); BUTTON_ASSERT_IS_VALID_PTR(pObj); if ((unsigned int)Index <= GUI_COUNTOF(pObj->ahDrawObj)) { GUI_ALLOC_FreePtr(&pObj->ahDrawObj[Index]); pObj->ahDrawObj[Index] = hDrawObj; BUTTON_Invalidate(hObj); } WM_UNLOCK(); } }
int GUI__SetText(GUI_HMEM* phText, const char* s) { int r = 0; if (GUI__strcmp_hp(*phText, s) != 0) { /* Make sure we have a quick out if nothing changes */ GUI_HMEM hMem; hMem = GUI_ALLOC_AllocNoInit(GUI__strlen(s) + 1); if (hMem) { char* pMem; pMem = (char*) GUI_ALLOC_h2p(hMem); strcpy(pMem, s); GUI_ALLOC_FreePtr(phText); *phText = hMem; r = 1; } } return r; }
/********************************************************************* * * HEADER__SetDrawObj */ void HEADER__SetDrawObj(HEADER_Handle hObj, unsigned Index, GUI_DRAW_HANDLE hDrawObj) { if (hObj) { HEADER_Obj * pObj; WM_LOCK(); pObj = HEADER_H2P(hObj); if (Index <= GUI_ARRAY_GetNumItems(&pObj->Columns)) { HEADER_COLUMN * pColumn; pColumn = (HEADER_COLUMN *)GUI_ARRAY_GetpItem(&pObj->Columns, Index); if (pColumn) { GUI_ALLOC_FreePtr(&pColumn->hDrawObj); pColumn->hDrawObj = hDrawObj; } } WM_UNLOCK(); } }
/********************************************************************* * * GUI_ARRAY_DeleteItem * * Purpose: * Eliminate one element in a GUI_ARRAY. * This means: * - freeing the memory block * - moving the last item to the position of the deleted item * - possible reducing the size of the memory used for management (opt) * */ void GUI_ARRAY_DeleteItem(GUI_ARRAY* pThis, unsigned int Index) { WM_HMEM ha; WM_HMEM* pa; int i; if (Index < (unsigned)pThis->NumItems) { ha = pThis->haHandle; if (ha) { int NumItems; WM_LOCK(); pa = (WM_HMEM*) GUI_ALLOC_h2p(ha); /* Free the attached item */ GUI_ALLOC_FreePtr(pa + Index); /* Move the last items to the position of the deleted item */ NumItems = --pThis->NumItems; for (i = Index; i <= NumItems - 1; i++) { *(pa + i) = *(pa + i + 1); } WM_UNLOCK(); } } }
/********************************************************************* * * EDIT_SetText */ void EDIT_SetText(EDIT_Handle hObj, const char* s) { if (hObj) { EDIT_Obj* pObj; WM_LOCK(); pObj = EDIT_H2P(hObj); if (s) { int NumBytesNew, NumBytesOld = 0; int NumCharsNew; if (pObj->hpText) { char* pText; pText = (char*) GUI_ALLOC_h2p(pObj->hpText); NumBytesOld = strlen(pText) + 1; } NumCharsNew = GUI__GetNumChars(s); if (NumCharsNew > pObj->MaxLen) { NumCharsNew = pObj->MaxLen; } NumBytesNew = GUI_UC__NumChars2NumBytes(s, NumCharsNew) + 1; if (_IsSpaceInBuffer(pObj, NumBytesNew - NumBytesOld)) { char* pText; pText = (char*) GUI_ALLOC_h2p(pObj->hpText); memcpy(pText, s, NumBytesNew); pObj->CursorPos = NumCharsNew; if (pObj->CursorPos == pObj->MaxLen) { if (pObj->EditMode == GUI_EDIT_MODE_OVERWRITE) { pObj->CursorPos--; } } } } else { GUI_ALLOC_FreePtr(&pObj->hpText); pObj->BufferSize = 0; pObj->CursorPos = 0; } EDIT_Invalidate(hObj); WM_UNLOCK(); } }
/********************************************************************* * * _Delete * * Delete attached objects (if any) */ static void _Delete(BUTTON_Obj* pObj) { GUI_ALLOC_FreePtr(&pObj->hpText); GUI_ALLOC_FreePtrArray(pObj->ahDrawObj, GUI_COUNTOF(pObj->ahDrawObj)); }
/********************************************************************* * * _FreeAttached */ static void _FreeAttached(TEXT_Obj* pObj) { GUI_ALLOC_FreePtr(&pObj->hpText); }
/********************************************************************* * * _Delete */ static void _Delete(CHECKBOX_Obj * pObj) { /* Delete attached objects (if any) */ GUI_DEBUG_LOG("CHECKBOX: Delete() Deleting attached items"); GUI_ALLOC_FreePtr(&pObj->hpText); }
/********************************************************************* * * _Delete * * Delete attached objects (if any) */ static void _Delete(BUTTON_Obj* pObj) { GUI_ALLOC_FreePtr(&pObj->hpText); GUI_ALLOC_FreePtr(&pObj->ahDrawObj[0]); GUI_ALLOC_FreePtr(&pObj->ahDrawObj[1]); }
/********************************************************************* * * _FreeText */ static void _FreeText(PROGBAR_Handle hObj) { PROGBAR_Obj* pObj = PROGBAR_H2P(hObj); GUI_ALLOC_FreePtr(&pObj->hpText); }
/********************************************************************* * * GUI_ALLOC_FreePtrArray */ void GUI_ALLOC_FreePtrArray(GUI_HMEM * pArray, int NumElems) { int i; for (i = 0; i < NumElems; i++) { GUI_ALLOC_FreePtr(&pArray[i]); } }
/********************************************************************* * * _Delete */ static void _Delete(EDIT_Obj* pObj) { GUI_ALLOC_FreePtr(&pObj->hpText); }