/********************************************************************* * * SLIDER_SetBkColor */ void SLIDER_SetBkColor(SLIDER_Handle hObj, GUI_COLOR Color) { if (hObj) { SLIDER_Obj * pObj; WM_LOCK(); pObj = SLIDER_H2P(hObj); pObj->Props.BkColor = Color; #if SLIDER_SUPPORT_TRANSPARENCY if (Color <= 0xFFFFFF) { WM_ClrHasTrans(hObj); } else { WM_SetHasTrans(hObj); } #endif WM_InvalidateWindow(hObj); WM_UNLOCK(); } }
/********************************************************************* * * TEXT_SetBkColor */ void TEXT_SetBkColor(TEXT_Handle hObj, GUI_COLOR Color) { if (hObj) { TEXT_Obj* pObj; WM_LOCK(); pObj = TEXT_H2P(hObj); if (pObj->Props.BkColor != Color) { pObj->Props.BkColor = Color; #if TEXT_SUPPORT_TRANSPARENCY if (Color <= 0xFFFFFF) { WM_ClrHasTrans(hObj); } else { WM_SetHasTrans(hObj); } #endif WM_Invalidate(hObj); } WM_UNLOCK(); } }
/*---------------------------------------------------------------------------* * Routine: _PFMainDialog *---------------------------------------------------------------------------* * Description: * Callback function used by emWin to process events. * Inputs: * WM_MESSAGE *pMsg -- message structure for current dialog. *---------------------------------------------------------------------------*/ static void _PFMainDialog(WM_MESSAGE *pMsg) { int Id, NCode; WM_HWIN hItem; GUI_PID_STATE *p_touchState; T_ImageMessage message; switch (pMsg->MsgId){ case WM_INIT_DIALOG: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; LAFSetup(pMsg->hWin, ID_WINDOW, PFMainLayout); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &REVERSE_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &FORWARD_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &SETTINGS_BUTTON); G_OverlayTimer = WM_CreateTimer(pMsg->hWin, ID_OVERLAY_TIMER, OVERLAY_TIMEOUT_MS, 0); G_UpdateTimer = WM_CreateTimer(pMsg->hWin, ID_UPDATE_TIMER, UPDATE_TIME_MS, 0); G_PictureChangeTimer = WM_CreateTimer(pMsg->hWin, ID_PICTURECHANGE_TIMER, 0, 0); if (!G_Current) { G_Current = GUI_MEMDEV_Create(0, 0, UEZ_LCD_DISPLAY_WIDTH, UEZ_LCD_DISPLAY_HEIGHT); GUI_MEMDEV_Select(G_Current); GUI_BMP_Draw(G_CurrentImage, 0, 0); GUI_MEMDEV_Select(0); } WM_SetHasTrans(pMsg->hWin); message = IMAGE_INITILIZE; UEZQueueSend(G_ImageLoadQueue, (void*)&message, 50); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if( !LAFHandleEvent(PFMainLayout, pMsg, NCode, Id)){ //Handle special cases here } break; case WM_TIMER: NCode = pMsg->Data.v; if (G_Active) { if (NCode == G_OverlayTimer) { IHideButtonsAndText(pMsg); //Grab all the touches WM_SetCapture(pMsg->hWin, 0); } else if (NCode == G_PictureChangeTimer) { //put up new picture if(G_AutoPlayOn) { IHandleForward(pMsg, WM_NOTIFICATION_RELEASED, ID_FORWARD_BUTTON); WM_RestartTimer(G_PictureChangeTimer, 5000); } } else if (NCode == G_UpdateTimer) { IUpdateFields(pMsg); WM_RestartTimer(G_UpdateTimer, UPDATE_TIME_MS); } } break; case WM_TOUCH: p_touchState = (GUI_PID_STATE *)(pMsg->Data.p); if (!p_touchState->Pressed) { WM_RestartTimer(G_OverlayTimer, OVERLAY_TIMEOUT_MS); //Show all the hidden text on buttons hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_TIMEDATE_TEXT); WM_ShowWindow(hItem); WM_ReleaseCapture(); IUpdateFields(pMsg); } break; case WM_POST_PAINT: GUI_BMP_Draw(G_CurrentImage, 0, 0); break; case WM_APP_GAINED_FOCUS: G_Active = ETrue; WM_SetCapture(pMsg->hWin, 0); IHideButtonsAndText(pMsg); IUpdateFields(pMsg); break; case WM_APP_LOST_FOCUS: G_Active = EFalse; IHideButtonsAndText(pMsg); WM_ReleaseCapture(); G_AutoPlayOn = EFalse; break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog * * Purpose: Dialog callback routine */ static void _cbDialog(WM_MESSAGE *pMsg) { int NCode, Id; WM_HWIN hDlg; BUTTON_Handle hButton; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: WM_DefaultProc(pMsg); /* Handle dialog items */ /* After drawing the dialog items add some user drawn items to the window */ GUI_SetPenSize(10); GUI_SetColor(GUI_GREEN); GUI_DrawLine( 95, 5, 185, 95); GUI_SetColor(GUI_RED); GUI_DrawLine( 95, 95, 185, 5); break; case WM_INIT_DIALOG: hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); WM_SetHasTrans(hButton); /* Set transparency flag for button */ break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); if (Id == GUI_ID_BUTTON1) { /* Toggle callback */ if (_pcbCallback) { WM_SetCallback(hButton, _pcbCallback); _pcbCallback = 0; } else { _pcbCallback = WM_SetCallback(hButton, _cbButton); } WM_InvalidateWindow(hButton); } if (Id == GUI_ID_BUTTON2) { /* Toggle font */ if (_Font) { BUTTON_SetFont(hButton, &GUI_Font13_1); } else { BUTTON_SetFont(hButton, &GUI_Font8x16); } _Font ^= 1; } if (Id == GUI_ID_BUTTON3) { /* Toggle color */ if (_Color) { BUTTON_SetBkColor(hButton, 0, 0xaaaaaa); BUTTON_SetBkColor(hButton, 1, GUI_WHITE); BUTTON_SetTextColor(hButton, 0, GUI_BLACK); BUTTON_SetTextColor(hButton, 1, GUI_BLACK); } else { BUTTON_SetBkColor(hButton, 0, GUI_BLUE); BUTTON_SetBkColor(hButton, 1, GUI_RED); BUTTON_SetTextColor(hButton, 0, GUI_WHITE); BUTTON_SetTextColor(hButton, 1, GUI_YELLOW); } _Color ^= 1; } if (Id == GUI_ID_OK) { /* OK Button */ GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { /* Cancel Button */ GUI_EndDialog(hDlg, 1); } break; } break; default: WM_DefaultProc(pMsg); } }
static void _Graph_Sensor_Demo() { const WIDGET_EFFECT * pEffectOld; GRAPH_Handle hGraph; GRAPH_DATA_Handle hData[3]; // GRAPH_DATA_Handle hData; int xSize, ySize, i; int Graph_xSize, Graph_ySize, Data_ySize; int Graph_xPos, Graph_yPos; // set back screen black // GUI_SetColor(GUI_BLACK); // GUIDEMO_DrawBk(1); xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); // 256 pEffectOld = WIDGET_SetDefaultEffect(&WIDGET_Effect_Simple); // Return a poninter to the previous callback routine // Set Callback function for background window // The given window will be invalidated. This makes sure the window will be redrawn WM_SetCallback(WM_HBKWIN, _cbBk_test); // // Determine size of GRAPH // Graph_xSize = xSize - (DIST_TO_BORDER << 1); // xsize = Screen size subtracting twice the distance to the border of the screen Graph_ySize = ySize - INFO_SIZE_Y - (DIST_TO_WIN << 1); // ysize = Screen size subtracting the window sizes and twice the distance to the windows if (Graph_ySize > MAX_GRAPH_SIZE_Y) { // 181 Graph_ySize = MAX_GRAPH_SIZE_Y; // 140 if (Graph_xSize > (Graph_ySize * 20) / 11) { Graph_xSize = (Graph_ySize * 20) / 11; } } // // Create and configure GRAPH_WIDGET // Graph_xPos = (xSize - Graph_xSize) >> 1; Graph_yPos = (ySize - Graph_ySize) >> 1; if (Graph_yPos < INFO_SIZE_Y + DIST_TO_WIN) { Graph_yPos = INFO_SIZE_Y + DIST_TO_WIN; } // create a graph widget hGraph = GRAPH_CreateEx(Graph_xPos, Graph_yPos, Graph_xSize, Graph_ySize, WM_HBKWIN, WM_CF_SHOW | WM_CF_CONST_OUTLINE, 0, 0); GRAPH_SetBorder(hGraph, BORDER_LEFT, BORDER_TOP, BORDER_RIGHT, BORDER_BOTTOM); // set width of border WM_SetHasTrans (hGraph); // enbale tansparency for the given window GRAPH_SetColor (hGraph, COLOR_BK, GRAPH_CI_BK); // Sets the desired color of the given GRAPH widget GRAPH_SetColor (hGraph, COLOR_BORDER, GRAPH_CI_BORDER); GRAPH_SetColor (hGraph, COLOR_FRAME, GRAPH_CI_FRAME); GRAPH_SetColor (hGraph, COLOR_GRID, GRAPH_CI_GRID); // // Adjust grid // GRAPH_SetGridVis (hGraph, 1); // set grid visible GRAPH_SetGridDistX(hGraph, GRID_DIST_X); // set horizontal grid spacing GRAPH_SetGridDistY(hGraph, GRID_DIST_Y); // set vertical grid spacing WM_BringToBottom (hGraph); // Places hGraph underneath its siblings // // Create and configure GRAPH_DATA_YT object // for (i = 0; i < 3; i++) { // Create a point valude which include a X-axis value on the Y-axis hData[i] = GRAPH_DATA_YT_Create(_aColorData_sensor[i], xSize - (DIST_TO_BORDER << 1) - BORDER_LEFT, 0, 0); } // hData = GRAPH_DATA_YT_Create(_aColorData_sensor[0], xSize - (DIST_TO_BORDER << 1) - BORDER_LEFT, 0, 0); Data_ySize = Graph_ySize - BORDER_BOTTOM; // 131 // // Create and configure GRAPH_SCALE objects // _hScaleH_sensor = GRAPH_SCALE_Create(BORDER_BOTTOM >> 1, GUI_TA_VCENTER, GRAPH_SCALE_CF_HORIZONTAL, TICK_DIST_H); _hScaleV_sensor = GRAPH_SCALE_Create(BORDER_LEFT >> 1, GUI_TA_HCENTER, GRAPH_SCALE_CF_VERTICAL, TICK_DIST_V); GRAPH_SCALE_SetPos(_hScaleH_sensor, Graph_ySize - 4); // Sets the vertical position for showing the scale object with in the GRAPH widget GRAPH_SCALE_SetOff(_hScaleH_sensor, -5); // Sets an horizontal offset used to 'shift' the scale object in positive or negative direction // show sensor graph GUIDEMO_ShowInfo("sensor demo"); GRAPH_AttachScale(hGraph, _hScaleH_sensor); GRAPH_AttachScale(hGraph, _hScaleV_sensor); // _Data_Sensor_Adjust = (Data_ySize * 100) >> GRAPH_DIV; // (Data_ySize * 21) >> GRAPH_DIV GRAPH_SetGridOffY (hGraph, 6); // Add an offset used to show the horizontal grid lines // (((Data_ySize - BORDER_BOTTOM) * 260) >> GRAPH_DIV) GRAPH_SCALE_SetOff(_hScaleV_sensor, 75); _Show_Sensor_Graph(hGraph, hData); // // Clean up // GRAPH_DetachScale(hGraph, _hScaleH_sensor); GRAPH_DetachScale(hGraph, _hScaleV_sensor); GRAPH_SCALE_Delete(_hScaleH_sensor); GRAPH_SCALE_Delete(_hScaleV_sensor); for (i = 0; i < 3; i++) { GRAPH_DATA_YT_Delete(hData[i]); } // GRAPH_DATA_YT_Delete(hData); WM_DeleteWindow(hGraph); WIDGET_SetDefaultEffect(pEffectOld); }
/********************************************************************* * * _GraphDemo */ static void _GraphDemo(void) { const WIDGET_EFFECT * pEffectOld; GRAPH_DATA_Handle hData[MAX_NUM_DATA_OBJ]; GRAPH_Handle hGraph; unsigned i; int Graph_xSize; int Graph_ySize; int Graph_xPos; int Graph_yPos; int Data_ySize; int xSize; int ySize; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); pEffectOld = WIDGET_SetDefaultEffect(&WIDGET_Effect_Simple); // // Set Callback function for background window // WM_SetCallback(WM_HBKWIN, _cbBk); // // Determine size of GRAPH // Graph_xSize = xSize - (DIST_TO_BORDER << 1); // xsize = Screen size subtracting twice the distance to the border of the screen Graph_ySize = ySize - INFO_SIZE_Y - (DIST_TO_WIN << 1); // ysize = Screen size subtracting the window sizes and twice the distance to the windows if (Graph_ySize > MAX_GRAPH_SIZE_Y) { Graph_ySize = MAX_GRAPH_SIZE_Y; if (Graph_xSize > (Graph_ySize * 20) / 11) { Graph_xSize = (Graph_ySize * 20) / 11; } } // // Create and configure GRAPH_WIDGET // Graph_xPos = (xSize - Graph_xSize) / 2; Graph_yPos = (ySize - Graph_ySize) / 2; if (Graph_yPos < INFO_SIZE_Y + DIST_TO_WIN) { Graph_yPos = INFO_SIZE_Y + DIST_TO_WIN; } hGraph = GRAPH_CreateEx(Graph_xPos, Graph_yPos, Graph_xSize, Graph_ySize, WM_HBKWIN, WM_CF_SHOW | WM_CF_CONST_OUTLINE, 0, 0); GRAPH_SetBorder(hGraph, BORDER_LEFT, BORDER_TOP, BORDER_RIGHT, BORDER_BOTTOM); WM_SetHasTrans (hGraph); GRAPH_SetColor (hGraph, COLOR_BK, GRAPH_CI_BK); GRAPH_SetColor (hGraph, COLOR_BORDER, GRAPH_CI_BORDER); GRAPH_SetColor (hGraph, COLOR_FRAME, GRAPH_CI_FRAME); GRAPH_SetColor (hGraph, COLOR_GRID, GRAPH_CI_GRID); // // Adjust grid // GRAPH_SetGridVis (hGraph, 1); GRAPH_SetGridDistX(hGraph, GRID_DIST_X); GRAPH_SetGridDistY(hGraph, GRID_DIST_Y); WM_BringToBottom (hGraph); // // Create and configure GRAPH_DATA_YT object // for (i = 0; i < MAX_NUM_DATA_OBJ; i++) { hData[i] = GRAPH_DATA_YT_Create(_aColorData[i], xSize - (DIST_TO_BORDER << 1) - BORDER_LEFT, 0, 0); } Data_ySize = Graph_ySize - BORDER_BOTTOM; // // Create and configure GRAPH_SCALE objects // _hScaleH = GRAPH_SCALE_Create(BORDER_BOTTOM >> 1, GUI_TA_VCENTER, GRAPH_SCALE_CF_HORIZONTAL, TICK_DIST_H); _hScaleV = GRAPH_SCALE_Create(BORDER_LEFT >> 1, GUI_TA_HCENTER, GRAPH_SCALE_CF_VERTICAL, TICK_DIST_V); GRAPH_AttachScale(hGraph, _hScaleH); GRAPH_AttachScale(hGraph, _hScaleV); GRAPH_SCALE_SetPos(_hScaleH, Graph_ySize - SCALE_H_HEIGHT); GRAPH_SCALE_SetOff(_hScaleH, -5); // // Show some graphs // for (i = 0; i < GUI_COUNTOF(_aWave); i++) { GUIDEMO_ShowInfo(_aWave[i].pName); _DataAdjust = GUIDEMO_ShiftRight(Data_ySize * _aWave[i].DataVOff, GRAPH_DIV); GRAPH_SetGridOffY (hGraph, GUIDEMO_ShiftRight(Data_ySize * _aWave[i].GridVOff, GRAPH_DIV)); GRAPH_SCALE_SetOff(_hScaleV, GUIDEMO_ShiftRight((Data_ySize - BORDER_BOTTOM) * _aWave[i].ScaleVOff, GRAPH_DIV)); _ShowGraph(hGraph, hData, _aWave[i].NumWaves, _aWave[i].pfAddData); } // // Clean up // GRAPH_DetachScale(hGraph, _hScaleH); GRAPH_DetachScale(hGraph, _hScaleV); GRAPH_SCALE_Delete(_hScaleH); GRAPH_SCALE_Delete(_hScaleV); for (i = 0; i < MAX_NUM_DATA_OBJ; i++) { GRAPH_DATA_YT_Delete(hData[i]); } WM_DeleteWindow(hGraph); WIDGET_SetDefaultEffect(pEffectOld); }
WM_HWIN WIN_ConfirmCreate(void) { WM_HWIN hWin; hWin = WM_CreateWindow(200, 120, 400, 200,WM_CF_SHOW, _cbWindow, 4); WM_SetHasTrans(hWin); return hWin; }