//============================================================================= //Perform rendering //============================================================================= void GLApp::Render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); AECHAR m_BlendingStr[10] = {'B','l','e','n','d','i','n','g',':','\0'}; AECHAR m_LightingStr[10] = {'L','i','g','h','t','i','n','g',':','\0'}; AECHAR m_TextureStr[9] = {'T','e','x','t','u','r','e',':','\0'}; AECHAR m_FogStr[5] = {'F','o','g',':','\0'}; AECHAR m_OnStr[3] = {'O','n','\0'}; AECHAR m_OffStr[4] = {'O','f','f','\0'}; IDISPLAY_SetColor(m_pIDisplay, CLR_USER_TEXT, MAKE_RGB(0xFF,0xFF,0xFF)); IDISPLAY_SetColor(m_pIDisplay, CLR_USER_BACKGROUND, MAKE_RGB(0,0,0)); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, m_BlendingStr, -1, 1, 0, 0, IDF_ALIGN_LEFT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, (m_Cube.IsBlendEnabled)?m_OnStr:m_OffStr, -1, 1, 0, 0, IDF_ALIGN_RIGHT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, m_LightingStr, -1, 1, 12, 0, IDF_ALIGN_LEFT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, (m_Cube.IsLightEnabled)?m_OnStr:m_OffStr, -1, 1, 12, 0, IDF_ALIGN_RIGHT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, m_TextureStr, -1, 1, 24, 0, IDF_ALIGN_LEFT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, (m_Cube.IsTextureEnabled)?m_OnStr:m_OffStr, -1, 1, 24, 0, IDF_ALIGN_RIGHT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, m_FogStr, -1, 1, 36, 0, IDF_ALIGN_LEFT); IDISPLAY_DrawText(m_pIDisplay, AEE_FONT_NORMAL, (m_Cube.IsFogEnabled)?m_OnStr:m_OffStr, -1, 1, 36, 0, IDF_ALIGN_RIGHT); IDISPLAY_Update(m_pIDisplay); m_Cube.Render(); eglSwapBuffers(m_eglDisplay, m_eglSurface); }
//绘制文字 void TS_DrawText(IDisplay* pIDisplay, AEEFont nFont, AECHAR* pText, AEERect *rect) { RGBVAL oldColor; oldColor = IDISPLAY_SetColor(pIDisplay, CLR_USER_TEXT, MAKE_RGB(255, 255, 255)); IDISPLAY_DrawText(pIDisplay, nFont, pText, -1, rect->x, rect->y, rect, IDF_TEXT_TRANSPARENT); IDISPLAY_SetColor(pIDisplay, CLR_USER_TEXT, oldColor); }
/* * 函数名称: PicBrowser::Draw() * 功能介绍: 该函数为PicBrowser类的显示函数。作用是根据相应的位置信息和颜色信息在屏幕上显示一行字和一副图片。 * 输入参数: N/A * 输出参数: N/A * 返回值: 返回是否初始化成功 * 可能出现的意外: N/A */ void PicBrowser::Draw() { RGBVAL rgb; AEERect rctScreen; AECHAR pwszFailTip[7]= {0x8D44,0x6E90,0x88C5,0x8F7D,0x5931,0x8D25,0}; //资源装载失败 IDISPLAY_ClearScreen(m_pIDisplay); SETAEERECT(&rctScreen,0,0,pApp->lcdW,pApp->lcdH); if(!m_bInitSuccess) //若初始化失败,提示之 { IDISPLAY_DrawText(m_pIDisplay,AEE_FONT_NORMAL,pwszFailTip,-1,0,0,0,0); return; } //以下画彩色文字 rgb=IDISPLAY_SetColor(m_pIDisplay,CLR_USER_TEXT,MAKE_RGB(m_nRed,0,255-m_nRed)); IDISPLAY_DrawText(m_pIDisplay,AEE_FONT_NORMAL,m_pwszTitle,-1,0,0,0,0); IDISPLAY_SetColor(m_pIDisplay,CLR_USER_TEXT,rgb); //以下画图片 IDISPLAY_SetClipRect(m_pIDisplay,&m_rctImage); //设置剪切矩形 IDISPLAY_ClearScreen(m_pIDisplay); IIMAGE_Draw(m_pImage,m_nImageDrawX,m_nImageDrawY); IDISPLAY_DrawRect(m_pIDisplay,&m_rctImage,MAKE_RGB(0,0,0),RGB_NONE,IDF_RECT_FRAME); IDISPLAY_SetClipRect(m_pIDisplay,&rctScreen); //将剪切矩形设回来 }
void test_sn_scene_draw(Bff *bff, Bff_Scene *scene) { /*clear screen*/ IDisplay *display = BFF_DISPLAY_OF(bff); AECHAR IMSI[50]; ITAPI* tapi = NULL; TestSceneData* data; data = (TestSceneData*)scene->getData(scene); IDISPLAY_SetColor(display, CLR_USER_BACKGROUND, MAKE_RGB(0xdd,0xdd,0xdd)); IDISPLAY_ClearScreen(display); if(ISHELL_CreateInstance(BFF_SHELL(), AEECLSID_TAPI, (void **)&tapi)==SUCCESS) { TAPIStatus status; if(ITAPI_GetStatus(tapi,&status)==SUCCESS) { STRTOWSTR(status.szMobileID,IMSI,sizeof(IMSI)*sizeof(AECHAR)); } ITAPI_Release(tapi); } drawString(IMSI,20,20,MAKE_RGB(0xFF,0xFF,0xFF),MAKE_RGB(0x00,0x00,0x00),AEE_FONT_NORMAL,IDS_LEFT|IDS_TOP); //TODO IDISPLAY_Update(BFF_DISPLAY_OF(bff)); }
/*=========================================================================== FUNCTION: CGMENUCTL_Redraw DESCRIPTION: Redraws the control on the device screen. If the control currently has focus, the control is drawn with a border. PARAMETERS: pCtl [in] - A pointer to a CGMeuCtl instance DEPENDENCIES: None RETURN VALUE: None SIDE EFFECTS: Updates the device screen. ===========================================================================*/ extern void CGMENUCTL_Redraw(CGMeuCtl* pMe) { AEEApplet* pApp = (AEEApplet*)GETAPPINSTANCE(); AEERect rRect; if (pMe) { int i, j, height, h, a, b; AEEImageInfo infSe, infIc; AEERect rec; int xx, yy, dxx, dyy; RGBVAL oldColor; GMenuItem * pData = NULL; TQueueList * p = pMe->m_pDataList; ZEROAT(&infSe); IDISPLAY_EraseRect(pApp->m_pIDisplay, &pMe->m_Rect); h = IDISPLAY_GetFontMetrics(pApp->m_pIDisplay, AEE_FONT_NORMAL, &a, &b); //绘制背景图 if (pMe->m_pImageBk) { IIMAGE_SetDrawSize(pMe->m_pImageBk, pMe->m_Rect.dx, pMe->m_Rect.dy); IIMAGE_Draw(pMe->m_pImageBk, pMe->m_Rect.x, pMe->m_Rect.y); } //确定菜单高度 if (pMe->m_pImageSe) { IIMAGE_GetInfo(pMe->m_pImageSe, &infSe); IIMAGE_SetDrawSize(pMe->m_pImageSe, pMe->m_Rect.dx, infSe.cy); } else { infSe.cx = pMe->m_Rect.dx; infSe.cy = h; } //绘制菜单项 i = 0; j = 0; height = pMe->m_Rect.y + 5; while (p) { AECHAR iTemText[256]; if (i < pMe->m_startIndex) { p = p->pNext; i++; continue; } if (j >= pMe->m_pageSize) { break; } pData = (GMenuItem*)p->pData; //加载菜单ICON if (pData->pImage == NULL && pData->pszResImage != NULL && pData->wImage != 0) { pData->pImage = ISHELL_LoadResImage(pApp->m_pIShell, pData->pszResImage, pData->wImage); } //加载菜单Text if (pData->pszResText != NULL && pData->wText != 0) { MEMSET(iTemText, 0, sizeof(AECHAR)*256); ISHELL_LoadResString(pApp->m_pIShell, pData->pszResText, pData->wText, iTemText, sizeof(AECHAR)* 256); pData->pText = iTemText; } if (i == pMe->m_Index) { if (pMe->m_pImageSe) IIMAGE_Draw(pMe->m_pImageSe, pMe->m_Rect.x, height + 2); ZEROAT(&infIc); if (pData->pImage) { IIMAGE_GetInfo(pData->pImage, &infIc); IIMAGE_Draw(pData->pImage, pMe->m_Rect.x, height + (infSe.cy - infIc.cy) / 2); } xx = pMe->m_Rect.x + infIc.cx + 2; yy = height + (infSe.cy - h) / 2 + 2; dxx = pMe->m_Rect.x + pMe->m_Rect.dx - xx; dyy = h; SETAEERECT(&rec, xx, yy, dxx, dyy); oldColor = IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, pMe->m_Colors.cSelText); if (pMe->m_Properties & 0x02) IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos, -1, xx + 1, yy, &rec, IDF_TEXT_TRANSPARENT); IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos, -1, xx, yy, &rec, IDF_TEXT_TRANSPARENT); if (pMe->m_isActive) { if (IDISPLAY_MeasureText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText) > dxx) { if (IDISPLAY_MeasureText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText + pMe->m_textPos) > dxx) { pMe->m_textPos++; } else pMe->m_textPos = 0; //单行太长的话,动态显示 ISHELL_SetTimer(pApp->m_pIShell, 300, (PFNNOTIFY)CGMENUCTL_Redraw, (void*)pMe); } } height += infSe.cy; IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, oldColor); } else { ZEROAT(&infIc); if (pData->pImage) { IIMAGE_GetInfo(pData->pImage, &infIc); IIMAGE_Draw(pData->pImage, pMe->m_Rect.x, height + (infSe.cy - infIc.cy) / 2); } xx = pMe->m_Rect.x + infIc.cx + 2; yy = height + (infSe.cy - h) / 2 + 2; dxx = pMe->m_Rect.x + pMe->m_Rect.dx - xx; dyy = h; SETAEERECT(&rec, xx, yy, dxx, dyy); oldColor = IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, pMe->m_Colors.cText); if (pMe->m_Properties & 0x01) IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText, -1, xx + 1, yy, &rec, IDF_TEXT_TRANSPARENT); IDISPLAY_DrawText(pApp->m_pIDisplay, AEE_FONT_NORMAL, pData->pText, -1, xx, yy, &rec, IDF_TEXT_TRANSPARENT); height += infSe.cy; IDISPLAY_SetColor(pApp->m_pIDisplay, CLR_USER_TEXT, oldColor); } p = p->pNext; i++; j++; } IDISPLAY_Update(pApp->m_pIDisplay); return ; } }
/*=========================================================================== This function frames the rectangle with CLR_USER_FRAME and CLR_SYS_DK_SHADOW ===========================================================================*/ void TS_FrameRect(IDisplay * pd, AEERect * pRect) { RGBVAL clr = IDISPLAY_SetColor(pd, CLR_USER_FRAME, CLR_SYS_DK_SHADOW); IDISPLAY_FrameRect(pd, pRect); IDISPLAY_SetColor(pd, CLR_USER_FRAME, clr); }