/********************************************************** * HSD_SLIDER_CreateEx * */ SLIDER_Handle HSD_SLIDER_CreateEx(int x0, int y0, int xSize, int ySize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id) { SLIDER_Handle hObj; WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xSize, ySize, hParent, WinFlags, HSD_SLIDER_Callback, sizeof(SLIDER_Obj)-sizeof(WM_Obj)); if(hObj) { SLIDER_Obj* pObj = SLIDER_H2P(hObj); U16 InitState; InitState = WIDGET_STATE_FOCUSSABLE; if(ExFlags & SLIDER_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } WIDGET__Init(&pObj->Widget, Id, InitState); pObj->aBkColor[0] = GUI_GRAY; pObj->aBkColor[1] = GUI_DARKCYAN; pObj->aColor[0] = GUI_BLACK; pObj->aColor[1] = GUI_ORANGE; pObj->Width = 16; pObj->Max = 6; pObj->Min = 0; pObj->NumTicks = -1; } else { //INFO("Slider create failed!"); } WM_UNLOCK(); return hObj; }
SLIDER_Handle SLIDER_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int WinFlags, int SpecialFlags) { SLIDER_Handle hObj; /* Create the window */ WM_LOCK(); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _SLIDER_Callback, sizeof(SLIDER_Obj)-sizeof(WM_Obj)); if (hObj) { SLIDER_Obj* pObj = SLIDER_H2P(hObj); U16 InitState; /* Handle SpecialFlags */ InitState = WIDGET_STATE_ENABLED; if (SpecialFlags & SLIDER_CF_VERTICAL) { InitState |= WIDGET_CF_VERTICAL; } /* init widget specific variables */ WIDGET__Init(&pObj->Widget, InitState); /* init member variables */ SLIDER_INIT_ID(pObj); pObj->Widget.Id = Id; pObj->aBkColor[0] = SLIDER_BKCOLOR0_DEFAULT; pObj->aBkColor[1] = SLIDER_BKCOLOR1_DEFAULT; pObj->aColor[0] = SLIDER_COLOR0_DEFAULT; pObj->aColor[1] = SLIDER_COLOR1_DEFAULT; pObj->Width = 8; pObj->Max =100; pObj->Min =0; pObj->NumSections = 10; } else { GUI_DEBUG_ERROROUT_IF(hObj==0, "SLIDER_Create failed") } WM_UNLOCK(); return hObj; }
/********************************************************************* * * SLIDER_SetNumTicks */ void SLIDER_SetNumTicks(SLIDER_Handle hObj, int NumTicks) { if (hObj && (NumTicks >= 0)) { SLIDER_Obj* pObj; WM_LOCK(); pObj = SLIDER_H2P(hObj); pObj->NumTicks = NumTicks; WM_InvalidateWindow(hObj); WM_UNLOCK(); } }
/********************************************************************* * * SLIDER_GetValue */ int SLIDER_GetValue(SLIDER_Handle hObj) { int r = 0; SLIDER_Obj* pObj; if (hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); r = pObj->v; WM_UNLOCK(); } return r; }
void SLIDER_SetRange(SLIDER_Handle hObj, int Min, int Max) { SLIDER_Obj* pObj; if (hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); pObj->Min = Min; pObj->Max = Max; WM_InvalidateWindow(hObj); WM_UNLOCK(); } }
/********************************************************************* * * SLIDER_SetWidth */ void SLIDER_SetWidth(SLIDER_Handle hObj, int Width) { SLIDER_Obj* pObj; if (hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); if (pObj->Width != Width) { pObj->Width = Width; WM_InvalidateWindow(hObj); } WM_UNLOCK(); } }
/********************************************************************* * * SLIDER_Inc */ void SLIDER_Inc(SLIDER_Handle hObj) { SLIDER_Obj* pObj; if (hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); if (pObj->v < pObj->Max) { pObj->v++; WM_InvalidateWindow(hObj); WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED); } WM_UNLOCK(); } }
/********************************************************************* * * HSD_SLIDER_Loop */ void HSD_SLIDER_Loop(SLIDER_Handle hObj) { SLIDER_Obj * pObj; if(hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); pObj->v = (pObj->v + 1 - pObj->Min) % (pObj->Max - pObj->Min + 1) + pObj->Min; WM_InvalidateWindow(hObj); WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED); WM_UNLOCK(); } }
/********************************************************************* * * SLIDER_SetFocusColor */ GUI_COLOR SLIDER_SetFocusColor(SLIDER_Handle hObj, GUI_COLOR Color) { GUI_COLOR OldColor = 0; if (hObj) { SLIDER_Obj* pObj; WM_LOCK(); pObj = SLIDER_H2P(hObj); if (Color != pObj->Props.FocusColor) { OldColor = pObj->Props.FocusColor; pObj->Props.FocusColor = Color; WM_InvalidateWindow(hObj); } WM_UNLOCK(); } return OldColor; }
/********************************************************************* * * HSD_SLIDER_Dec */ void HSD_SLIDER_Dec(SLIDER_Handle hObj) { SLIDER_Obj * pObj; if(hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); if(pObj->v > pObj->Min) { pObj->v--; WM_InvalidateWindow(hObj); WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED); } WM_UNLOCK(); } }
/********************************************************************* * * 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(); } }
/********************************************************************* * * SLIDER_SetRange */ void SLIDER_SetRange(SLIDER_Handle hObj, int Min, int Max) { if (hObj) { SLIDER_Obj* pObj; WM_LOCK(); pObj = SLIDER_H2P(hObj); if (Max < Min) { Max = Min; } pObj->Min = Min; pObj->Max = Max; if (pObj->v < Min) { pObj->v = Min; } if (pObj->v > Max) { pObj->v = Max; } WM_InvalidateWindow(hObj); WM_UNLOCK(); } }
/********************************************************************* * * SLIDER_SetValue */ void SLIDER_SetValue(SLIDER_Handle hObj, int v) { SLIDER_Obj* pObj; if (hObj) { WM_LOCK(); pObj = SLIDER_H2P(hObj); /* Put in min/max range */ if (v < pObj->Min) { v = pObj->Min; } if (v > pObj->Max) { v = pObj->Max; } if (pObj->v != v) { pObj->v = v; WM_InvalidateWindow(hObj); WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED); } WM_UNLOCK(); } }
/********************************************************** * _SLIDER_Callback * */ void HSD_SLIDER_Callback(WM_MESSAGE * pMsg) { SLIDER_Handle hObj; SLIDER_Obj * pObj; hObj = pMsg->hWin; pObj = SLIDER_H2P(hObj); if(WIDGET_HandleActive(hObj, pMsg) == 0) { return ; } switch(pMsg->MsgId) { case WM_PAINT: _Paint(pObj, hObj); return; case WM_KEY: _OnKey(hObj, pMsg); break; } WM_DefaultProc(pMsg); }
/********************************************************************* * * _SLIDER_Callback */ static void _SLIDER_Callback (WM_MESSAGE *pMsg) { SLIDER_Handle hObj; SLIDER_Obj* pObj; hObj = pMsg->hWin; pObj = SLIDER_H2P(hObj); /* Let widget handle the standard messages */ if (WIDGET_HandleActive(hObj, pMsg) == 0) { return; } switch (pMsg->MsgId) { case WM_PAINT: GUI_DEBUG_LOG("SLIDER: _Callback(WM_PAINT)\n"); _Paint(pObj); return; case WM_TOUCH: _OnTouch(hObj, pObj, pMsg); break; case WM_KEY: _OnKey(hObj, pMsg); break; } WM_DefaultProc(pMsg); }