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

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

?? guidemo_touch.c

?? uCGUI
?? C
字號:
/*************************************************************************************************************
                                                   uC/GUI
                                               嵌入式通用圖形軟件
File        : GUIDEMO_Touch
Purpose     : Touch demo
*************************************************************************************************************/

#include "GUI.h"
#include "LCD_ConfDefaults.h"      /* valid LCD configuration */
#include "GUIDEMO.h"
#include "Button.h"
#include "Edit.h"

#if (GUI_WINSUPPORT && GUI_SUPPORT_TOUCH)

#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))

/*************************************************************************************************************
*       Static functions
*************************************************************************************************************/

static int _Log2Phys(int l, I32 l0, I32 l1, I32 p0, I32 p1) {
  return p0 + ((p1 - p0) * (l - l0)) / (l1 - l0);
}

static void _Calibrate(int Coord, int Log0, int Log1, int Phys0, int Phys1, int *p0, int *p1) {
  int l0 = 0;
  int l1 = (Coord == GUI_COORD_X) ? LCD_XSIZE - 1 : LCD_YSIZE - 1;
  *p0 = _Log2Phys(l0, Log0, Log1, Phys0, Phys1);
  *p1 = _Log2Phys(l1, Log0, Log1, Phys0, Phys1);
}

/*************************************************************************************************************
*       _ExecCalibration
*************************************************************************************************************/

void _ExecCalibration(void) {
  int ax_Phys[2],ay_Phys[2];
/* calculate log. Positions */
  int ax[2] = { 15, LCD_XSIZE -1-15};
//  const int ay[2] = { 15, LCD_YSIZE-1-15};
  int ay[2] = { LCD_YSIZE-1-15, 15};
  GUI_TOUCH_SetDefaultCalibration();
/* _Calibrate upper left */
  GUI_SetBkColor(GUI_RED);  
  GUI_Clear();
  GUI_SetColor(GUI_WHITE);  GUI_FillCircle(ax[0], ay[0], 10);
  GUI_SetColor(GUI_RED);    GUI_FillCircle(ax[0], ay[0], 5);
  GUI_SetColor(GUI_WHITE);
  GUI_DispStringAt("Press here", ax[0]+20, ay[0]);
  do {
    GUI_TOUCH_tState State;
    GUI_TOUCH_GetState(&State);
    if (State.Pressed) {
      ax_Phys[0] = GUI_TOUCH_GetxPhys();
      ay_Phys[0] = GUI_TOUCH_GetyPhys();
      break;
    }
    GUI_Delay (100);
  } while (1);
/* Tell user to release */
  GUI_Clear();
  GUI_DispStringAt("OK", ax[0]+20, ay[0]);
  do {
    GUI_TOUCH_tState State;
    GUI_TOUCH_GetState(&State);
    if (State.Pressed == 0) {
      break;
    }
    GUI_Delay (100);
  } while (1);
/* _Calibrate lower right */
  GUI_SetBkColor(GUI_RED);  
  GUI_Clear();
  GUI_SetColor(GUI_WHITE);  GUI_FillCircle(ax[1], ay[1], 10);
  GUI_SetColor(GUI_RED);    GUI_FillCircle(ax[1], ay[1], 5);
  GUI_SetColor(GUI_WHITE);
  GUI_SetTextAlign(GUI_TA_RIGHT);
  GUI_DispStringAt("Press here", ax[1]-20, ay[1]);
  do {
    GUI_TOUCH_tState State;
    GUI_TOUCH_GetState(&State);
    if (State.Pressed) {
      ax_Phys[1] = GUI_TOUCH_GetxPhys();
      ay_Phys[1] = GUI_TOUCH_GetyPhys();
      break;
    }
    GUI_Delay (100);
  } while (1);
  GUI_TOUCH_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1]);
  GUI_TOUCH_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1]);
  { /* calculate and display values for configuration file */
    int x0, x1;
    int y0, y1;
    GUI_Clear();
    _Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1], &x0, &x1);
    _Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1], &y0, &y1);
    GUI_DispStringAt("x0: ", 0, 0); GUI_DispDec(x0, 4); GUI_DispNextLine();
    GUI_DispString  ("x1: ");       GUI_DispDec(x1, 4); GUI_DispNextLine();
    GUI_DispString  ("y0: ");       GUI_DispDec(y0, 4); GUI_DispNextLine();
    GUI_DispString  ("y1: ");       GUI_DispDec(y1, 4); GUI_DispNextLine();
    GUI_DispString  ("Please touch display to continue...");
    GUI_Delay(1000);
    do {
      GUI_TOUCH_tState State;
      GUI_TOUCH_GetState(&State);
      if (State.Pressed)
        break;
      GUI_Delay (10);
    } while (1);
  }
}

/*************************************************************************************************************
*       _TestCalibration
*************************************************************************************************************/

void _TestCalibration(void) {
  int IdleCnt=0;
  BUTTON_Handle hButton;
  GUI_SetBkColor(GUI_RED);  
  GUI_SetColor(GUI_WHITE);  
  GUI_Clear();
  hButton =  BUTTON_Create( 225, 15, 80, 40, 1, BUTTON_CF_SHOW );
  BUTTON_SetText (hButton, "ABORT");
  BUTTON_SetFont (hButton, &GUI_FontComic18B_ASCII);
  while ((IdleCnt<50) && (GUI_GetKey()==0)) {
    static GUI_TOUCH_tState StateLast;
    GUI_TOUCH_tState State;
    GUI_TOUCH_GetState(&State);
    if ((StateLast.Pressed != State.Pressed) && (State.Pressed == 0)) {
      GUI_Clear();
    }
    if ((StateLast.x != State.x) || ((StateLast.y != State.y))) {
      if (State.Pressed) {
        GUI_FillCircle(State.x, State.y, 5);
      }
      StateLast = State;
    }
    if (State.Pressed) {
      IdleCnt =0;
    } else {
      IdleCnt++;
    }
    GUI_Delay (100);
  }
  EDIT_Delete(hButton);
}

/*************************************************************************************************************
*       _ExecKeyboard
*
**********************************************************************

This creates a sample keyboard.
The routine returns after ENTER or ESC has been pressed.
*/

#if (LCD_XSIZE == 320) && (LCD_YSIZE == 240)

static char _acText[] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '=',
                        0, 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P',
                        0, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Q',
                        0, 'Z', 'X', 'C', 'V', 'B', 'N', 'M', 0, 0, 0,
                        ' ', ' ', ' ', ' ', ' ', 0, 0
};

int _ExecKeyboard(void) {
  int i;
  int Key;
  BUTTON_Handle ahButton[52];
  BUTTON_Handle hButtonESC;
  EDIT_Handle   hEdit;
  GUI_RECT rText = {000,0, LCD_XSIZE, 20};
  GUI_SetBkColor(GUI_RED);  
  GUI_Clear();
  GUI_DrawBitmap(&bmMicriumLogoWRed, 5, 5); 
  GUI_SetFont(&GUI_Font16B_1);
  GUI_SetColor(GUI_WHITE);
  GUI_DispStringInRect("礐/GUI", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
  rText.y0 +=20;
  rText.y1 +=20;
  GUI_DispStringInRect("Touch screen demo", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
  /* Create Keyboard Buttons */
  for (i=0; i< 51; i++) {
    int Pos = (i < 47) ? i : i+4;
    int x0 = 5  + 28*(Pos%11);
    int y0 = 100 + 28*(Pos/11);
    char c = _acText[i];
    int Id = c ? c : 1;
    char ac[2] = {0};
    char *s= ac;
    ac[0] = c;
    ahButton[i] = BUTTON_Create( x0, y0, 25, 25, Id,BUTTON_CF_SHOW );
    BUTTON_SetText   (ahButton[i], s);
    #if GUI_SUPPORT_MEMDEV
      BUTTON_EnableMemdev(ahButton[i]);
    #endif
  }
  ahButton[i] = BUTTON_Create( 89, 212, 109, 25, ' ',BUTTON_CF_SHOW );
  hButtonESC = BUTTON_Create( 230, 40, 80, 25, GUI_ID_CANCEL,BUTTON_CF_SHOW );
  BUTTON_SetText   (hButtonESC, "ESC");
  hEdit = EDIT_Create( 5, 70, 310, 25, ' ', 80, 0 );
  EDIT_SetFont(hEdit, &GUI_Font8x16);
  BUTTON_SetBkColor(ahButton[49], 0, GUI_RED);
  BUTTON_SetBkColor(ahButton[50], 0, GUI_BLUE);
  /* Handle Keyboard until ESC or ENTER is pressed */
  do {
    Key = GUIDEMO_WaitKey();
    switch (Key) {
    case 0:
    case GUI_ID_CANCEL:
     break;
    default:
      EDIT_AddKey(hEdit, Key);
    }
  } while ((Key != 'N') && (Key!=GUI_ID_CANCEL) && (Key!=0));
  /* Cleanup */
  for (i=0; i< countof(ahButton); i++) {
    BUTTON_Delete(ahButton[i]);
  }
  BUTTON_Delete(hButtonESC);
  EDIT_Delete(hEdit);
  return Key;
}

#else

static char _acText[] = {
  '7','8','9','/',
  '4','5','6','*',
  '1','2','3','-',
  '0',',','+','=',0
};

int _ExecKeyboard(void) {
  int y0 = 75;
  int XSize = LCD_GetXSize();
  int YSize = LCD_GetYSize();
  int XStep = XSize / 4;
  int YStep = (YSize - y0) / 4;
  int i;
  int Key;
  BUTTON_Handle ahButton[16];
  BUTTON_Handle hButtonESC;
  EDIT_Handle   hEdit;
  GUI_RECT rText = {0};
  rText.x1 = LCD_GetXSize() - 3;
  rText.y1 = 15;
  GUI_SetBkColor(GUI_RED);  
  GUI_Clear();
  GUI_SetFont(&GUI_Font16B_1);
  GUI_SetColor(GUI_WHITE);
  GUI_DispStringInRect("礐/GUI", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
  rText.y0 +=20;
  rText.y1 +=20;
  GUI_DispStringInRect("Touch screen demo", &rText, GUI_TA_RIGHT | GUI_TA_VCENTER);
  /* Create Keyboard Buttons */
  for (i=0; _acText[i]; i++) {
    int XPos = (i%4) * XStep + 3;
    int YPos = (i/4) * YStep + 3 + y0;
    char c = _acText[i];
    int Id = c ? c : 1;
    char ac[2] = {0};
    char *s= ac;
    ac[0] = c;
    ahButton[i] = BUTTON_Create( XPos, YPos, XStep - 5, YStep - 5, Id, BUTTON_CF_SHOW );
    BUTTON_SetText(ahButton[i], s);
    BUTTON_EnableMemdev(ahButton[i]);
  }
  hButtonESC = BUTTON_Create( 3, 3, 80, 25, GUI_ID_CANCEL, BUTTON_CF_SHOW );
  BUTTON_SetText(hButtonESC, "ESC");
  hEdit = EDIT_Create( 5, y0 - 30, XSize - 10, 25, ' ', 80, 0 );
  EDIT_SetFont(hEdit, &GUI_Font8x16);
  /* Handle Keyboard until ESC or ENTER is pressed */
  do {
    Key = GUIDEMO_WaitKey();
    switch (Key) {
    case 0:
    case GUI_ID_CANCEL:
     break;
    default:
      EDIT_AddKey(hEdit, Key);
    }
  } while ((Key != 'N') && (Key!=GUI_ID_CANCEL) && (Key!=0));
  /* Cleanup */
  for (i=0; i< countof(ahButton); i++) {
    BUTTON_Delete(ahButton[i]);
  }
  BUTTON_Delete(hButtonESC);
  EDIT_Delete(hEdit);
  return Key;
}

#endif

/*
**********************************************************************
*
*              USER_Task
*************************************************************************************************************/

#if GUIDEMO_LARGE

void GUIDEMO_Touch(void) {
  #define ID_KEYBOARD  1
  #define ID_TESTCAL   2
  #define ID_CALIBRATE 3
  int i, r;
  int XSize = LCD_GetXSize();
  int YSize = LCD_GetYSize();
  int XMid = XSize / 2;
  int YMid = YSize / 2;
  GUIDEMO_NotifyStartNext();
  GUIDEMO_HideInfoWin();
  do {
    GUI_RECT rText;/*= {0, 80, XSize, 120};*/
    BUTTON_Handle ahButton[3];
    rText.x0=0;
    rText.y0=60;
    rText.x1=XSize;
    rText.y1=100;
    GUI_SetBkColor(GUI_BLUE);
    GUI_Clear();
    GUI_DrawBitmap(&bmMicriumLogo, (XSize - 1 - bmMicriumLogo.XSize) / 2, 15);
    GUI_SetFont(&GUI_Font24B_1);
    GUI_DispStringInRect("礐/GUI Touch screen demo", &rText, GUI_TA_HCENTER | GUI_TA_VCENTER);
	GUI_SetFont(&GUI_Font16B_1);
	ahButton[0] =  BUTTON_Create( XMid - 50, YMid - 20, 100, 50, ID_CALIBRATE,BUTTON_CF_SHOW );
    ahButton[1] =  BUTTON_Create( XMid - 90, YMid + 40, 80, 30, ID_KEYBOARD, BUTTON_CF_SHOW );
    ahButton[2] =  BUTTON_Create( XMid + 10, YMid + 40, 80, 30, ID_TESTCAL,BUTTON_CF_SHOW );
    BUTTON_SetText (ahButton[0], "Calibrate");
    BUTTON_SetBkColor(ahButton[0], 0, GUI_RED);
    BUTTON_SetText (ahButton[1], "Keyboard");
    BUTTON_SetText (ahButton[2], "Test calibration");
    BUTTON_SetFont(ahButton[0], &GUI_FontComic18B_ASCII);
    r = GUIDEMO_WaitKey();
    if (r==0) {
      r = ID_KEYBOARD;
      BUTTON_SetState(ahButton[1],BUTTON_STATE_PRESSED);
      GUIDEMO_Delay(500);
    }
    for (i=0; i< countof(ahButton); i++) {
      BUTTON_Delete(ahButton[i]);
    }
    switch (r) {
    case ID_KEYBOARD:  r= _ExecKeyboard(); break;
    case ID_CALIBRATE: _ExecCalibration(); break;
    case ID_TESTCAL:   _TestCalibration(); break;
    }
  } while (r && (r!='n') && (r!='N'));
}

#else

void GUIDEMO_Touch(void) {}

#endif

#else

void GUIDEMO_Touch(void) {} /* avoid empty object files */

#endif /* #if GUI_WINSUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品白丝jk黑袜喷水| 欧美一区欧美二区| 亚洲精品五月天| 欧美一区永久视频免费观看| 国产精品一区在线观看你懂的| 久久久另类综合| 亚洲国产中文字幕在线视频综合| 日韩女优毛片在线| 91视频国产资源| 成人av在线资源网站| 精品免费视频.| 欧美福利视频导航| 在线观看国产91| 99riav一区二区三区| 国产sm精品调教视频网站| 久久精品99国产精品日本| 亚洲第一在线综合网站| 精品精品国产高清一毛片一天堂| 亚洲成人免费观看| 一区二区三区久久久| 久久精品视频在线看| 日韩无一区二区| 日韩一区二区免费视频| 国内精品伊人久久久久av一坑 | 亚洲电影在线免费观看| 欧美国产激情二区三区| 精品欧美黑人一区二区三区| 欧美在线一区二区三区| jlzzjlzz亚洲日本少妇| av电影在线观看一区| 丝袜美腿亚洲色图| 成人免费毛片嘿嘿连载视频| 欧美午夜影院一区| 国产色婷婷亚洲99精品小说| 一区二区三区高清不卡| 国产主播一区二区| 欧美在线一区二区| 中文字幕精品三区| 青青草视频一区| 91免费精品国自产拍在线不卡| 7777精品伊人久久久大香线蕉的| 国产夜色精品一区二区av| 一区二区三区精密机械公司| 国产精品一区免费在线观看| 在线观看一区不卡| 国产精品卡一卡二| 国内精品视频一区二区三区八戒| 欧美在线免费观看亚洲| 国产精品蜜臀在线观看| 久久精品国产99国产| 欧洲一区在线观看| 中文字幕一区二区三区四区不卡 | 亚洲午夜精品久久久久久久久| 国产尤物一区二区在线| 制服丝袜亚洲精品中文字幕| 亚洲欧美日韩在线| 丁香婷婷综合色啪| 久久久久久日产精品| 久久超碰97中文字幕| 欧美酷刑日本凌虐凌虐| 亚洲精品国产无天堂网2021| 国产精品白丝jk白祙喷水网站| 欧美在线一区二区三区| 亚洲乱码国产乱码精品精小说| 国产99久久久久| 久久久精品免费观看| 国产一区二区在线观看视频| 欧美一区二区三区男人的天堂| 夜夜揉揉日日人人青青一国产精品| 成人黄色小视频在线观看| 亚洲精品一区二区三区香蕉| 久久精品久久综合| 91精品麻豆日日躁夜夜躁| 日韩不卡在线观看日韩不卡视频| 欧洲人成人精品| 亚洲国产精品欧美一二99| 91福利社在线观看| 亚洲成人动漫av| 在线不卡免费av| 久久成人精品无人区| 精品国产乱码久久久久久夜甘婷婷| 日韩福利电影在线观看| 日韩亚洲欧美在线| 国产一区91精品张津瑜| 久久精品免视看| 99精品视频在线播放观看| 亚洲精品福利视频网站| 欧美日韩精品欧美日韩精品一综合| 亚洲国产精品影院| 欧美成人三级在线| 国产成人鲁色资源国产91色综| 国产片一区二区三区| aaa欧美色吧激情视频| 亚洲国产精品一区二区www在线| 欧美色欧美亚洲另类二区| 亚洲第一福利一区| 久久免费精品国产久精品久久久久| 九九国产精品视频| 国产精品国产三级国产专播品爱网| 一本大道久久a久久综合| 日韩黄色在线观看| 欧美高清在线一区| 欧美日韩一区成人| 国产精品香蕉一区二区三区| 亚洲精品免费播放| 亚洲精品一区二区三区蜜桃下载 | 亚洲摸摸操操av| 欧美一级日韩一级| 成人黄色电影在线| 亚洲第一激情av| 亚洲国产精品国自产拍av| 在线欧美一区二区| 韩国一区二区三区| 一二三区精品视频| 欧美成人精精品一区二区频| 福利电影一区二区| 水蜜桃久久夜色精品一区的特点| 久久久久久久久蜜桃| 成人午夜激情影院| 久久成人精品无人区| 一区二区在线观看免费| 久久久久亚洲蜜桃| 欧美一区二区在线播放| 91小宝寻花一区二区三区| 国产综合色在线视频区| 偷偷要91色婷婷| 亚洲欧美乱综合| 国产蜜臀av在线一区二区三区| 制服丝袜亚洲色图| 欧美性大战xxxxx久久久| 91小视频免费观看| 岛国一区二区在线观看| 免费精品视频最新在线| 亚洲国产精品人人做人人爽| 亚洲欧洲三级电影| 国产日韩欧美激情| 国产午夜久久久久| 久久婷婷成人综合色| 日韩美女一区二区三区| 欧美精三区欧美精三区| 在线观看一区不卡| 色八戒一区二区三区| 99精品视频免费在线观看| 粉嫩av一区二区三区粉嫩| 国产一区二区免费在线| 国内精品国产三级国产a久久| 免费在线观看日韩欧美| 美女一区二区在线观看| 日韩国产欧美视频| 日本不卡中文字幕| 七七婷婷婷婷精品国产| 免费一区二区视频| 精品亚洲porn| 国产裸体歌舞团一区二区| 狠狠色丁香久久婷婷综合_中| 另类小说图片综合网| 精品一区二区免费视频| 激情六月婷婷综合| 国产精品1024久久| 成人av在线资源| 色综合久久久久综合体桃花网| 91视频你懂的| 欧美日韩情趣电影| 日韩免费观看2025年上映的电影| 日韩精品资源二区在线| 国产午夜一区二区三区| 国产精品美女久久久久高潮| 一区在线观看免费| 亚洲成人一二三| 久久精品久久综合| 成人高清在线视频| 欧美三级中文字| 精品88久久久久88久久久 | 99riav一区二区三区| 91丨九色丨蝌蚪富婆spa| 欧美日韩亚洲国产综合| 欧美xxxxx裸体时装秀| 国产精品免费久久久久| 亚洲无线码一区二区三区| 久久精品国产亚洲5555| 成人高清在线视频| 91精品欧美久久久久久动漫| 欧美激情艳妇裸体舞| 亚洲国产美国国产综合一区二区| 免费在线观看精品| 色综合婷婷久久| 26uuu欧美| 亚洲午夜一二三区视频| 国产福利一区二区三区视频在线 | 亚洲私人影院在线观看| 日韩不卡一区二区三区| www.66久久| 欧美成人aa大片| 亚洲综合在线视频| 国产盗摄一区二区三区| 欧美年轻男男videosbes| 中文字幕va一区二区三区| 奇米777欧美一区二区| 色婷婷综合久久久久中文 | 99re成人精品视频|