/******************************************************************* * * _Draw This function draws the non high resolution pointer */ static void _Draw(void * p) { PARAM * pParam = (PARAM *)p; if (pParam->AutoInfo.DrawFixed) { GUI_ClearRect(160, 60, 259, 159); } GUI_AA_FillPolygon(pParam->aPoints, countof(_aPointer), 165, 155); }
/******************************************************************* * * _DrawHiRes This function draws the high resolution pointer */ static void _DrawHiRes(void * p) { PARAM * pParam = (PARAM *)p; if (pParam->AutoInfo.DrawFixed) { GUI_ClearRect(60, 60, 159, 159); } GUI_AA_FillPolygon(pParam->aPoints, countof(_aPointer), 65 * pParam->Factor, 155 * pParam->Factor); }
/******************************************************************* * * _cbWindow This is the callback for the window. A callback was used for memory devices. */ static void _cbWindow(WM_MESSAGE* pMsg) { switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(_color_a); GUI_ClearRect( 0, 0, 250, 14); GUI_SetBkColor(_color_b); GUI_ClearRect( 0, 15, 250, 29); GUI_SetBkColor(GUI_BLACK); GUI_ClearRect( 0, 30, 250, 60); GUI_SetColor(_color_c); GUI_FillPolygon(_aPolygon, POLY_POINTS, _pos_x1, _pos_y1); GUI_AA_FillPolygon(_aPolygon, POLY_POINTS, _pos_x2, _pos_y2); GUI_AA_EnableHiRes(); GUI_AA_FillPolygon(_aPolygonHiRes, POLY_POINTS, _pos_x3, _pos_y3); GUI_AA_DisableHiRes(); break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* *Function name : Draw *Parameters : void *p *Return value : NULL *Description : Draw the watch **********************************************************************/ static void Draw(void * p) { PARAM * pParam = (PARAM *)p; if (pParam->AutoDevInfo.DrawFixed) { /* Draw fixed background */ GUI_ClearRect(37, 0, 30+ bmwatch.XSize, bmwatch.YSize); GUI_DrawBitmap(&bmwatch, 37, 0); } /* Draw moving objects */ GUI_SetColor(GUI_BLACK); GUI_AA_FillPolygon(pParam->aPoint1, GUI_COUNTOF(_aNeedle[0]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); GUI_AA_FillPolygon(pParam->aPoint2, GUI_COUNTOF(_aNeedle[1]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); GUI_AA_FillPolygon(pParam->aPoint3, GUI_COUNTOF(_aNeedle[2]), MAG * LCD_GetXSize() / 2, MAG * (LCD_GetYSize() / 2)); if (pParam->AutoDevInfo.DrawFixed) { /* Draw fixed foreground (if needed) */ GUI_SetColor(GUI_BLACK); GUI_FillCircle(160, 120, 3); } }
void GUIDEMO_DemoPolygon(void) { int XMid = LCD_GetXSize() / 2; int YMid = LCD_GetYSize() / 2; GUIDEMO_ShowIntro("Arbitrary Polygons", "\nStandard and antialiased"); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontComic18B_ASCII); #if GUIDEMO_LARGE GUI_DispStringAt("Arbitrary\nPolygons", 0, 0); #endif GUI_FillPolygon(&_aArrow[0], 7, XMid - 50, YMid + 40); GUI_FillPolygon(&_aArrow[0], 7, XMid + 50, YMid + 40); GUI_SetColor(GUI_GREEN); GUI_FillPolygon(&_aTriangle[0], 3, XMid, YMid + 60); GUI_SetColor(GUI_WHITE); #if GUI_SUPPORT_AA GUI_AA_EnableHiRes(); GUI_AA_FillPolygon(&_aiCursor[0], 4, XMid * 3, (YMid - 40) * 3); #endif GUIDEMO_Wait(); }