/********************************************************************* * Function: GFX_GOL_Picture_StreamSet(BUTTON *button, XCHAR *pText) * * * Notes: Sets the text used in the button. * ********************************************************************/ bool GFX_GOL_PictureStreamSet(GFX_GOL_PICTURECONTROL *picture, uint32_t* pStream, uint8_t count, uint8_t delayMs) { if(picture->count != 0) return false; picture->count = count; picture->delay = delayMs; picture->stream = pStream; GFX_GOL_ObjectStateSet(picture, GFX_GOL_PICTURECONTROL_STREAM_STATE|GFX_GOL_PICTURECONTROL_DRAW_STATE); return true; }
// ***************************************************************************** void GFX_GOL_CheckBoxActionSet( GFX_GOL_TRANSLATED_ACTION translatedMsg, void *pObject, GFX_GOL_MESSAGE *pMessage) { GFX_GOL_CHECKBOX *pCb; pCb = (GFX_GOL_CHECKBOX *)pObject; #ifndef GFX_CONFIG_FOCUS_DISABLE #ifndef GFX_CONFIG_USE_TOUCHSCREEN_DISABLE if(pMsg->type == TYPE_TOUCHSCREEN) { if(!GFX_GOL_ObjectStateGet(pCb, GFX_GOL_CHECKBOX_FOCUSED_STATE)) { GFX_GOL_ObjectFocusSet((OBJ_HEADER *)pCb); } } #endif #endif switch(translatedMsg) { case GFX_GOL_CHECKBOX_ACTION_CHECKED: // Set checked and redraw GFX_GOL_ObjectStateSet( pCb, GFX_GOL_CHECKBOX_CHECKED_STATE | GFX_GOL_CHECKBOX_DRAW_CHECK_STATE); break; case GFX_GOL_CHECKBOX_ACTION_UNCHECKED: // Reset check GFX_GOL_ObjectStateClear(pCb, GFX_GOL_CHECKBOX_CHECKED_STATE); // Redraw GFX_GOL_ObjectStateSet(pCb, GFX_GOL_CHECKBOX_DRAW_CHECK_STATE); break; default: // do nothing return; } }
// ***************************************************************************** void GFX_GOL_EditBoxActionSet( GFX_GOL_TRANSLATED_ACTION translatedMsg, void *pObject, GFX_GOL_MESSAGE *pMessage) { GFX_GOL_EDITBOX *pEb; pEb = (GFX_GOL_EDITBOX *)pObject; #if defined(GFX_LIB_CFG_USE_FOCUS) #ifndef GFX_CONFIG_USE_TOUCHSCREEN_DISABLE if(pMessage->type == TYPE_TOUCHSCREEN) { if(!GFX_GOL_ObjectStateGet(pEb,GFX_GOL_EDITBOX_FOCUSED_STATE)){ GFX_GOL_ObjectFocusSet((OBJ_HEADER*)pEb); } } #endif #endif switch(translatedMsg) { case GFX_GOL_EDITBOX_ACTION_ADD_CHAR: GFX_GOL_EditBoxCharAdd(pEb,(GFX_XCHAR)pMessage->param2); GFX_GOL_ObjectStateSet(pEb, GFX_GOL_EDITBOX_DRAW_STATE); break; case GFX_GOL_EDITBOX_ACTION_DEL_CHAR: GFX_GOL_EditBoxCharRemove(pEb); GFX_GOL_ObjectStateSet(pEb, GFX_GOL_EDITBOX_DRAW_STATE); break; default: // do nothing break; } }
///////////////////////////////////////////////////////////////////////////// // Function: WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg) // Input: objMsg - translated message for the object, // pObj - pointer to the object, // pMsg - pointer to the non-translated, raw GOL message // Output: if the function returns non-zero the message will be processed by default // Overview: it's a user defined function. GOLMsg() function calls it each // time the valid message for the object received ///////////////////////////////////////////////////////////////////////////// bool GFX_GOL_MessageCallback(GFX_GOL_TRANSLATED_ACTION objMsg, GFX_GOL_OBJ_HEADER *pObj, GFX_GOL_MESSAGE *pMsg) { uint16_t objID; // check first if we need to exit the selected demo (if applicable) if ((objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) && (pObj->ID == ID_BACK)) { // check if the button is indeed pressed if (GFX_GOL_ObjectStateGet(pObj, GFX_GOL_BUTTON_PRESSED_STATE)) { screenState = CREATE_MAINMENU; return 1; } } // process messages for demo screens switch(screenState) { case DISPLAY_MAINMENU: // In this portion, all management of the Button states are // done here. This portion will always return 0 to inhibit // the button default message processing to take place. objID = GFX_GOL_ObjectIDGet(pObj); if ((objID == ID_ICON1) || (objID == ID_ICON2) || (objID == ID_ICON3) || (objID == ID_ICON4)) { if(objMsg == GFX_GOL_BUTTON_ACTION_PRESSED) { // check if button is pressed and show pressed icon GFX_GOL_ObjectStateSet(pObj, GFX_GOL_BUTTON_PRESSED_STATE); } else if(objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) { // check if button is released and show release icon GFX_GOL_ObjectStateClear(pObj, GFX_GOL_BUTTON_PRESSED_STATE); if (objID == ID_ICON1) { while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE); PIPDemo(); screenState = CREATE_MAINMENU; } else if (objID == ID_ICON2) { while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE); SpeedDemo(); screenState = CREATE_MAINMENU; } else if (objID == ID_ICON3) { screenState = CREATE_ALPHABLEND; } else if (objID == ID_ICON4) { while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE); PagingDemo(); screenState = CREATE_MAINMENU; } else // this should not happen screenState = DISPLAY_MAINMENU; } else if(objMsg == GFX_GOL_BUTTON_ACTION_STILLPRESSED) { // do not do anything since it is already pressed return 0; } else { // check if button is released and show release icon GFX_GOL_ObjectStateClear(pObj, GFX_GOL_BUTTON_PRESSED_STATE); // reset pressed } GFX_GOL_ObjectStateSet(pObj, GFX_GOL_BUTTON_DRAW_STATE); return 0; } if ((objID == ID_SCROLL1) || (objID == ID_SCROLL2) || (objID == ID_SCROLL3) || (objID == ID_SCROLL4)) { if(objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) { switch(objID) //Up = 1, Down = 2, Left = 3, Right = 4 { case ID_SCROLL1: ScrollScreen(3,10); break; case ID_SCROLL2: ScrollScreen(1,10); break; case ID_SCROLL3: ScrollScreen(4,10); break; case ID_SCROLL4: ScrollScreen(2,10); break; } } } break; case DISPLAY_ALPHABLEND: return (MsgAlphaBlendScreenCallback(objMsg, pObj, pMsg)); default: break; } return (1); }