亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? radio.c

?? 一個在44b0上移植成功的ucgui
?? C
字號:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/GUI is protected by international copyright laws. Knowledge of the*              source code may not be used to write a similar product. This file may*              only be used in accordance with a license and should not be redistributed*              in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------
File        : RADIO.c
Purpose     : Template for new emWin GSC widgets
---------------------------END-OF-HEADER------------------------------
*/

#include <stdlib.h>
#include <string.h>
#include "GUI_Private.H"
#include "RADIO.h"
#include "Widget.h"

#if GUI_WINSUPPORT

/*********************************************************************
*
*       Private config defaults
*
**********************************************************************
*/

/* Define colors */
#ifndef RADIO_BKCOLOR0_DEFAULT
  #define RADIO_BKCOLOR0_DEFAULT 0xc0c0c0           /* Inactive color */
#endif

#ifndef RADIO_BKCOLOR1_DEFAULT
  #define RADIO_BKCOLOR1_DEFAULT GUI_WHITE          /* Active color */
#endif


/*********************************************************************
*
*       Object definition
*
**********************************************************************
*/

typedef struct {
  WIDGET Widget;
  GUI_COLOR aBkColor[2];
  I16 Sel;                   /* current selection */
  I16 Spacing;
  I16 Height;
  I16 NumItems;
  #if GUI_DEBUG_LEVEL >1
    int DebugId;
  #endif  
} RADIO_Obj;

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

static GUI_COLOR _aColor[] = {
     0xC0C0C0,0x808080,0x000000,0xFFFFFF
};

/*********************************************************************
*
*       Static const data
*
**********************************************************************
*/


const GUI_LOGPALETTE PalRadio0 = {
  4,	/* number of entries */
  0, 	/* No transparency */
  &_aColor[0]
};

const unsigned char acRadio0[] = {
  0x00, 0x55, 0x00,
  0x05, 0xAA, 0x50,
  0x1A, 0xFF, 0xAC,
  0x1B, 0xFF, 0xCC,
  0x6F, 0xFF, 0xF3,
  0x6F, 0xFF, 0xF3,
  0x6F, 0xFF, 0xF3,
  0x6F, 0xFF, 0xF3,
  0x1B, 0xFF, 0xCC,
  0x10, 0xFF, 0x0C,
  0x0F, 0x00, 0xF0,
  0x00, 0xFF, 0x00
};

const GUI_BITMAP _bmRadio0 = {
 12, /* XSize */
 12, /* YSize */
 3, /* BytesPerLine */
 2, /* BitsPerPixel */
 acRadio0,  /* Pointer to picture data (indices) */
 &PalRadio0  /* Pointer to palette */
};

const GUI_COLOR ColorsCheck1[] = {
     0xFFFFFF,0x000000
};

const GUI_LOGPALETTE PalCheck1 = {
  2,	/* number of entries */
  1, 	/* No transparency */
  &ColorsCheck1[0]
};

const unsigned char acCheck1[] = {
  _XX_____,
  XXXX____,
  XXXX____,
  _XX_____
};

const GUI_BITMAP _bmCheck1 = {
 4, /* XSize */
 4, /* YSize */
 1, /* BytesPerLine */
 1, /* BitsPerPixel */
 acCheck1,  /* Pointer to picture data (indices) */
 &PalCheck1  /* Pointer to palette */
};


/*********************************************************************
*
*       Macros for internal use
*
**********************************************************************
*/

#define RADIO_ID 0x4544   /* Magic numer, should be unique if possible */

#define RADIO_H2P(h) (RADIO_Obj*) WM_H2P(h)

#ifdef _DEBUG
  #define RADIO_ASSERT_IS_VALID_PTR(p) DEBUG_ERROROUT_IF(p->DebugId != RADIO_ID, "xxx.c: Wrong handle type or Object not init'ed")
  #define RADIO_INIT_ID(p)   p->DebugId = RADIO_ID
  #define RADIO_DEINIT_ID(p) p->DebugId = RADIO_ID+1
#else
  #define RADIO_ASSERT_IS_VALID_PTR(p)
  #define RADIO_INIT_ID(p)
  #define RADIO_DEINIT_ID(p)
#endif

/*********************************************************************
*
*       Static routines
*
**********************************************************************
*/

/*********************************************************************
*
*       _Paint
*/
static void _Paint(RADIO_Handle hObj, RADIO_Obj* pObj) {
  int IsEnabled;
  int i;
  IsEnabled = WIDGET__IsEnabled(&pObj->Widget);
  /* Clear inside  ... Just in case */
  /* Fill with parents background color */
  GUI_SetBkColor(WIDGET__GetBkColor(hObj));
  GUI_Clear();
  for (i = 0; i < pObj->NumItems; i++) {
    int y = i* pObj->Spacing;
    _aColor[3] = pObj->aBkColor[IsEnabled];
    GUI_DrawBitmap(&_bmRadio0, 2, 2 + y);
    if (pObj->Sel == i) {
      GUI_DrawBitmap(&_bmCheck1, 6, 6 + y);
    }
  }
  if (pObj->Widget.State & WIDGET_STATE_FOCUS) {
    GUI_RECT r;
    WIDGET__GetClientRect(&pObj->Widget, &r);
    GUI_SetColor(GUI_BLACK);
    WIDGET__DrawFocusRect(&pObj->Widget, &r, 0);
  }
}


/*********************************************************************
*
*       _OnTouch
*/
static void _OnTouch(RADIO_Handle hObj, RADIO_Obj* pObj, WM_MESSAGE*pMsg) {
  int Notification;
  int Hit = 0;
  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      int y = pState->y;
      int Sel = y / pObj->Spacing;
      y -= Sel * pObj->Spacing;
      if (pObj->Widget.State & WIDGET_STATE_ENABLED) {
        if (y < pObj->Height) {
          RADIO_SetValue(hObj, Sel);
        }
        WM_Invalidate(hObj);
        Notification = WM_NOTIFICATION_CLICKED;
        WM_SetFocus(hObj);
      }
    } else {
      Hit =1;
      Notification = WM_NOTIFICATION_RELEASED;
    }
  } else {
    Notification = WM_NOTIFICATION_MOVED_OUT;
  }
  WM_NotifyParent(hObj, Notification);
  if (Hit == 1) {
    GUI_DEBUG_LOG("RADIO: Hit\n");
    GUI_StoreKey(pObj->Widget.Id);
  }
}

/*********************************************************************
*
*       _OnKey
*/
static void  _OnKey(RADIO_Handle hObj, WM_MESSAGE*pMsg) {
  WM_KEY_INFO* pKeyInfo;
  int Key;
  pKeyInfo = (WM_KEY_INFO*)(pMsg->Data.p);
  Key = pKeyInfo->Key;
  if (pKeyInfo->PressedCnt > 0) {
    switch (Key) {
      case GUI_KEY_RIGHT:
      case GUI_KEY_DOWN:
        RADIO_Inc(hObj);
        break;                    /* Send to parent by not doing anything */
      case GUI_KEY_LEFT:
      case GUI_KEY_UP:
        RADIO_Dec(hObj);
        break;                    /* Send to parent by not doing anything */
      default:
        return;
    }
  }
}

/*********************************************************************
*
*       _Callback
*/
static void _RADIO_Callback (WM_MESSAGE *pMsg) {
  RADIO_Handle hObj;
  RADIO_Obj* pObj;
  hObj = pMsg->hWin;
  pObj = RADIO_H2P(hObj);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_PAINT:
    GUI_DEBUG_LOG("RADIO: _Callback(WM_PAINT)\n");
    _Paint(hObj, pObj);
    return;
  case WM_TOUCH:
    _OnTouch(hObj, pObj, pMsg);
    break;
  case WM_KEY:
    _OnKey(hObj, pMsg);
    break;
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Exported routines:  Create
*
**********************************************************************
*/

/* Note: the parameters to a create function may vary.
         Some widgets may have multiple create functions */


RADIO_Handle RADIO_Create (int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, unsigned Para) {
  RADIO_Handle hObj;
  unsigned NumItems;
  unsigned Spacing;
  int Height = 15;
  /* Create the window */
  WM_LOCK();
  /* Calculate helper variables */
  Spacing = (Para >> 8) & 255;
  if (Spacing == 0) {
    Spacing = 20;
  }
  NumItems = Para  & 255;
  if (NumItems == 0) {
    NumItems = 2;
  }
  if (ysize == 0) {
    ysize = Height + ((NumItems-1) * Spacing);
  }
  hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent,
                                Flags, _RADIO_Callback, sizeof(RADIO_Obj)-sizeof(WM_Obj));
  if (hObj) {
    RADIO_Obj* pObj = RADIO_H2P(hObj);
    /* init widget specific variables */
    WIDGET__Init(&pObj->Widget, WIDGET_STATE_FOCUSSABLE | WIDGET_STATE_ENABLED);
    pObj->Widget.Id     = Id;
    /* init member variables */
    RADIO_INIT_ID(pObj);
    pObj->aBkColor[0]   = RADIO_BKCOLOR0_DEFAULT;
    pObj->aBkColor[1]   = RADIO_BKCOLOR1_DEFAULT;
    pObj->NumItems   = NumItems;
    pObj->Spacing       = Spacing;
    pObj->Height = Height;
  } else {
    GUI_DEBUG_ERROROUT_IF(hObj==0, "RADIO_Create failed")
  }
  WM_UNLOCK();
  return hObj;
}

RADIO_Handle RADIO_CreateIndirect(const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hWinParent, int x0, int y0, WM_CALLBACK* cb) {
  RADIO_Handle  hThis;
  GUI_USE_PARA(cb);
  hThis = RADIO_Create(pCreateInfo->x0 + x0, pCreateInfo->y0 + y0, 16, 0,
                          hWinParent, pCreateInfo->Id, pCreateInfo->Flags, pCreateInfo->Para);
  return hThis;
}

/*********************************************************************
*
*       Exported routines:  Various methods
*
**********************************************************************
*/

void RADIO_AddValue(RADIO_Handle hObj, int Add) {
  RADIO_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = RADIO_H2P(hObj);
    RADIO_SetValue(hObj, pObj->Sel + Add);
    WM_UNLOCK();
  }
}

void RADIO_Dec(RADIO_Handle hObj) { RADIO_AddValue(hObj, -1); }
void RADIO_Inc(RADIO_Handle hObj) { RADIO_AddValue(hObj,  1); }

void RADIO_SetValue(RADIO_Handle hObj, int v) {
  RADIO_Obj* pObj;
  int Max;
  if (hObj) {
    WM_LOCK();
    pObj = RADIO_H2P(hObj);
    Max = pObj->NumItems - 1;
    if (Max < 0)
      Max =0;
    /* Put in min/max range */
    if (v < 0) {
      v = 0;
    }
    if (v > Max) {
      v = Max;
    }
    if (pObj->Sel != v) {
      pObj->Sel = v;
      WM_InvalidateWindow(hObj);
      WM_NotifyParent(hObj, WM_NOTIFICATION_VALUE_CHANGED);
    }
    WM_UNLOCK();
  }
}

/*********************************************************************
*
*       Exported routines:  Query state
*
**********************************************************************
*/

int RADIO_GetValue(RADIO_Handle hObj) {
  int r = 0;
  RADIO_Obj* pObj;
  if (hObj) {
    WM_LOCK();
    pObj = RADIO_H2P(hObj);
    r = pObj->Sel;
    WM_UNLOCK();
  }
  return r;
}



#endif  /* #if GUI_WINSUPPORT */



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜精品一区二区三区| 日韩国产一区二| 国产视频一区在线播放| 91精品视频网| 在线亚洲一区二区| 99国产精品久久久久久久久久| 国产一区二区三区日韩| 奇米一区二区三区| 日本vs亚洲vs韩国一区三区 | 91啪亚洲精品| 成人精品电影在线观看| 懂色av一区二区在线播放| 国产一区二区三区四| 国产在线视视频有精品| 激情图区综合网| 国产很黄免费观看久久| 成人综合婷婷国产精品久久 | 国产一区二区三区av电影| 久久精品久久久精品美女| 蜜桃在线一区二区三区| 麻豆精品视频在线观看视频| 日韩**一区毛片| 久久国内精品视频| 国产成人av电影在线| 不卡电影免费在线播放一区| 成人app软件下载大全免费| 一本大道久久a久久综合婷婷| 色八戒一区二区三区| 欧美剧情片在线观看| 日韩亚洲国产中文字幕欧美| ww亚洲ww在线观看国产| 国产精品人妖ts系列视频| 亚洲免费看黄网站| 五月天亚洲婷婷| 国产黑丝在线一区二区三区| 91视频.com| 国产成人h网站| 精品在线观看视频| 99re这里只有精品视频首页| 欧美日韩第一区日日骚| 国产亚洲精品7777| 亚洲精品国产成人久久av盗摄| 日韩av不卡在线观看| 成人毛片视频在线观看| 欧美精品久久久久久久多人混战| 精品国产伦一区二区三区免费 | 日韩欧美国产一区二区三区| 日本一区二区三区免费乱视频 | 精品国产三级电影在线观看| 中文字幕在线观看不卡视频| 香蕉久久一区二区不卡无毒影院 | 国产欧美一区二区精品性| 一区二区三区在线视频观看| 精品系列免费在线观看| 欧美中文字幕一区二区三区| 国产日韩综合av| 午夜精品成人在线视频| 成人av影院在线| 国产偷国产偷精品高清尤物| 天天综合天天做天天综合| 99九九99九九九视频精品| 欧美精品一区二区在线观看| 午夜精品久久久久久久久久久| 99这里都是精品| 日本一二三不卡| 精品综合免费视频观看| 在线电影欧美成精品| 一区二区三区在线视频免费| 不卡影院免费观看| 国产婷婷色一区二区三区在线| 久久91精品久久久久久秒播| 在线不卡一区二区| 一区二区在线观看免费视频播放| 成人中文字幕电影| 欧美激情一区在线观看| 国产suv一区二区三区88区| 精品99久久久久久| 精品在线播放免费| 精品久久久久久亚洲综合网 | 国产成人在线免费观看| 精品国产制服丝袜高跟| 国内精品免费**视频| 久久午夜羞羞影院免费观看| 国产乱码一区二区三区| 国产欧美日本一区二区三区| 福利一区在线观看| 亚洲丝袜美腿综合| 91福利在线观看| 五月激情六月综合| 久久亚洲综合av| 不卡高清视频专区| 亚洲一区在线观看免费观看电影高清| 欧美体内she精高潮| 日韩av中文字幕一区二区| 2022国产精品视频| 99久久er热在这里只有精品15| 一区二区三区在线视频免费| 久久综合av免费| 成人ar影院免费观看视频| 一区二区三区在线观看国产| 欧美视频一区二区三区在线观看| 日本v片在线高清不卡在线观看| 亚洲精品一线二线三线无人区| 免费成人深夜小野草| 欧美性猛交一区二区三区精品| 日韩av午夜在线观看| 国产偷国产偷亚洲高清人白洁 | 另类综合日韩欧美亚洲| 国产精品黄色在线观看| 91精品婷婷国产综合久久性色| 国产成人午夜视频| 偷窥国产亚洲免费视频| 国产精品无人区| 欧美一区二区成人6969| 高清不卡一二三区| 视频一区视频二区中文字幕| 国产精品国产三级国产有无不卡| 欧美男女性生活在线直播观看| 国产不卡在线播放| 喷水一区二区三区| 亚洲综合偷拍欧美一区色| 久久综合色8888| 欧美精品在线视频| 色乱码一区二区三区88| 国产精品一区二区91| 麻豆精品国产传媒mv男同| 夜夜精品视频一区二区 | 一区二区三区在线观看视频| 久久久99精品久久| 欧美一区二区不卡视频| 欧洲精品中文字幕| 91亚洲国产成人精品一区二三 | 久久先锋影音av鲁色资源| 欧美精品在线一区二区三区| 精品剧情在线观看| 欧美年轻男男videosbes| 在线视频国内自拍亚洲视频| 99国产精品99久久久久久| 国产91富婆露脸刺激对白| 国产美女娇喘av呻吟久久| 久久国产综合精品| 国产在线播放一区三区四| 久久成人羞羞网站| 国产主播一区二区| 国产精品99久久久久久久vr| 国产一区二区三区久久悠悠色av| 琪琪久久久久日韩精品| 日产国产欧美视频一区精品| 爽爽淫人综合网网站| 日韩二区三区四区| 天堂久久久久va久久久久| 日韩不卡免费视频| 玖玖九九国产精品| 国产iv一区二区三区| 成人看片黄a免费看在线| caoporn国产精品| 在线看一区二区| 欧美一二三在线| 2021中文字幕一区亚洲| 国产精品美女久久久久av爽李琼| 亚洲欧洲一区二区三区| 亚洲大片一区二区三区| 精品亚洲国内自在自线福利| 国产电影精品久久禁18| 色女孩综合影院| 欧美日韩dvd在线观看| 精品日韩一区二区三区免费视频| 久久久99免费| 亚洲福利视频一区二区| 久久精品国产99| 91国在线观看| 久久综合999| 午夜电影一区二区| 成人综合在线观看| 91麻豆精品国产自产在线| 中文在线资源观看网站视频免费不卡| 成人欧美一区二区三区黑人麻豆 | 一区二区三区日韩欧美| 老司机精品视频在线| 91美女视频网站| 久久亚洲综合色一区二区三区| 亚洲最新视频在线观看| 国产老妇另类xxxxx| 精品av综合导航| 国产欧美一区视频| 天天色天天操综合| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日本一区二区成人在线| 奇米精品一区二区三区在线观看一| 99精品欧美一区二区三区小说| 日韩美一区二区三区| 午夜精品久久一牛影视| 99精品国产91久久久久久| 国产拍揄自揄精品视频麻豆| 奇米777欧美一区二区| 欧美日韩国产综合一区二区 | 国产福利一区在线观看| 欧美一区二区三区播放老司机| 亚洲午夜久久久久久久久久久 | 欧美影视一区二区三区|