static void _Paint(FRAMEWIN_Obj* pObj) { WM_HWIN hWin = WM_GetActiveWindow(); int xsize = WM_GetWindowSizeX(hWin); int ysize = WM_GetWindowSizeY(hWin); int FrameSize = pObj->FrameSize; GUI_RECT rClient; GUI_GetClientRect(&rClient); GUI_SetFont(pObj->pFont); /* Draw Title */ GUI_SetBkColor((pObj->Widget.State & WIDGET_STATE_CHILD_HAS_FOCUS) ? pObj->BarColor[1] : pObj->BarColor[0]); GUI_SetColor (pObj->TextColor); GUI_SetTextAlign(pObj->TextAlign); GUI_ClearRect(FrameSize,FrameSize, xsize-1-FrameSize, FrameSize+pObj->rClient.y0-1); GUI_DispStringAt( pObj->pText, FrameSize+pObj->XOff, FrameSize+pObj->YOff); /* Draw Frame */ GUI_SetColor (FRAMEWIN_FRAMECOLOR_DEFAULT); /* pObj->BarColor[1]*/ GUI_FillRect (0, 0, xsize-1, FrameSize-1); GUI_FillRect (0, 0, pObj->rClient.x0-1, ysize-1); GUI_FillRect (pObj->rClient.x1+1, 0, xsize-1, ysize-1); GUI_FillRect (0, pObj->rClient.y1+1, xsize-1, ysize-1); GUI_FillRect (0, pObj->TitleHeight+FrameSize, xsize-1, pObj->TitleHeight+2*FrameSize-1); /* Draw Client area */ WM_SetUserClipArea(&pObj->rClient); /*GUI_SetBkColor(pObj->ClientColor); GUI_Clear();*/ WM_SetUserClipArea(NULL); /* Draw the 3D effect (if configured) */ #if FRAMEWIN_USE_3D WIDGET_EFFECT_3D_DrawUp(); #endif }
/********************************************************************* * * _Paint */ static void _Paint(BUTTON_Obj* pObj) { const char*s =NULL; int State = pObj->Widget.State; int PressedState = (State & BUTTON_STATE_PRESSED) ? 1:0; GUI_RECT rClient; GUI_RECT r; GUI_SetFont(pObj->pFont); GUI_DEBUG_LOG("BUTTON: Paint(..)\n"); if (pObj->hpText) { s = (const char*) WM_HMEM2Ptr(pObj->hpText); } GUI_GetClientRect(&rClient); r = rClient; /* Draw background */ GUI_SetBkColor (pObj->aBkColor[PressedState]); GUI_SetColor (pObj->aTextColor[PressedState]); GUI_Clear(); /* Draw bitmap. If we have only one, we will use it. If we have to we will use the second one (Index 1) for the pressed state */ { int Index =0; if (pObj->apBitmap[1] && PressedState) { Index =1; } if (pObj->apBitmap[Index]) { #if BUTTON_SUPPORT_STREAMED_BITMAP if(pObj->aBitmapIsStreamed[Index]) { #if BUTTON_SUPPORT_BITMAP_OFFSET GUI_DrawStreamedBitmap((const GUI_BITMAP_STREAM*)(pObj->apBitmap[Index]), pObj->xOffBitmap, pObj->yOffBitmap); #else GUI_DrawBitmapStreamed((const GUI_BITMAP_STREAM*)(pObj->apBitmap[Index]), 0,0); #endif } else #endif { #if BUTTON_SUPPORT_BITMAP_OFFSET GUI_DrawBitmap(pObj->apBitmap[Index], pObj->xOffBitmap[Index], pObj->yOffBitmap[Index]); #else GUI_DrawBitmap(pObj->apBitmap[Index], 0,0); #endif } } } /* Draw the actual button (background and text) */ #if BUTTON_USE_3D if (pObj->Widget.State & BUTTON_STATE_PRESSED) { GUI_MoveRect(&r, BUTTON_3D_MOVE_X,BUTTON_3D_MOVE_Y); } #endif GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect(s, &r, GUI_TA_HCENTER | GUI_TA_VCENTER); /* Draw the 3D effect (if configured) */ #if BUTTON_USE_3D if ((State & BUTTON_STATE_PRESSED) == 0) { WIDGET_EFFECT_3D_DrawUp(); } else { GUI_SetColor(0x000000); /// TBD: Use halftone GUI_DrawRect(rClient.y0, rClient.x0, rClient.x1, rClient.y1); } #endif /* Draw focus */ if (State & BUTTON_STATE_FOCUS) { GUI_SetColor(GUI_BLACK); GUI_DrawFocusRect(&rClient, 2); } }