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

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

?? gui_touch_driveranalog.c

?? uCGUI
?? C
字號:
/*************************************************************************************************************
                                                   uC/GUI
                                               嵌入式通用圖形軟件
File        : GUITOUCH.C
Purpose     : Touch screen manager
----------------------------------------------------------------------
This module handles the touch screen. It is configured in the file
GUITouch.conf.h (Should be located in the Config\ directory).
************************************************************************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "LCD_Private.H"      /* private modul definitions & config */
#include "GUI_Protected.h"

/* Generate code only if configuration says so ! */
#if GUI_SUPPORT_TOUCH

#include "GUITouchconf.h"    /* Located in GUIx, will include GUITouch.conf.h */

/*
**********************************************************************
*
*          Config defaults
*
**********************************************************************
*/
#ifndef GUI_TOUCH_AD_LEFT      /* max value returned by AD-converter */
  #define GUI_TOUCH_AD_LEFT 30   
#endif

#ifndef GUI_TOUCH_AD_RIGHT      /* min value returned by AD-converter */
  #define GUI_TOUCH_AD_RIGHT 220    
#endif

#ifndef GUI_TOUCH_AD_TOP       /* max value returned by AD-converter */
  #define GUI_TOUCH_AD_TOP 30
#endif

#ifndef GUI_TOUCH_AD_BOTTOM      /* min value returned by AD-converter */
  #define GUI_TOUCH_AD_BOTTOM 220
#endif

#ifndef GUI_TOUCH_SWAP_XY    /* Is XY of touch swapped ? */
  #define GUI_TOUCH_SWAP_XY 0
#endif

#ifndef GUI_TOUCH_MIRROR_X
  #define GUI_TOUCH_MIRROR_X 0
#endif

#ifndef GUI_TOUCH_MIRROR_Y
  #define GUI_TOUCH_MIRROR_Y 0
#endif

#ifndef GUI_TOUCH_YSIZE
  #define GUI_TOUCH_YSIZE LCD_YSIZE
#endif

#ifndef GUI_TOUCH_XSIZE
  #define GUI_TOUCH_XSIZE LCD_XSIZE
#endif

/*
**********************************************************************
*
*          Config check
*
**********************************************************************
*/

/*
  *****************************************************************
  *                                                               *
  *              Global data                                      *
  *                                                               *
  *****************************************************************

The global data below is for debugging purposes only. A "clean"
application should not use these values for any other purpose.
NEVER write into these values !
*/


//int GUI_TOUCH_yPhys, GUI_TOUCH_xPhys;

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

typedef struct {int Min; int Max; } tMinMax;

static tMinMax xyMinMax[2] = {
#if ((GUI_TOUCH_SWAP_XY==0) && (GUI_TOUCH_MIRROR_X==0)) || ((GUI_TOUCH_SWAP_XY) && (GUI_TOUCH_MIRROR_Y==0))
  { GUI_TOUCH_AD_LEFT, GUI_TOUCH_AD_RIGHT },
#else
  { GUI_TOUCH_AD_RIGHT, GUI_TOUCH_AD_LEFT },
#endif
#if ((GUI_TOUCH_SWAP_XY==0) && (GUI_TOUCH_MIRROR_Y==0)) || ((GUI_TOUCH_SWAP_XY) && (GUI_TOUCH_MIRROR_X==0))
  { GUI_TOUCH_AD_TOP,  GUI_TOUCH_AD_BOTTOM }
#else
  { GUI_TOUCH_AD_BOTTOM,  GUI_TOUCH_AD_TOP }
#endif
};

#ifndef WIN32
static int xMin;
static int xMax;
static int yMin;
static int yMax;
#endif

/*********************************************************************
*
*       Convert physical value into (logical) coordinates
*/
int AD2X(int adx) {
  I32 r = adx - xyMinMax[GUI_COORD_X].Min;
  r *= GUI_TOUCH_XSIZE - 1;
  return r / (xyMinMax[GUI_COORD_X].Max - xyMinMax[GUI_COORD_X].Min);    
}

int AD2Y(int ady) {
  I32 r = ady - xyMinMax[GUI_COORD_Y].Min;
  r *= GUI_TOUCH_YSIZE - 1;
  return r/(xyMinMax[GUI_COORD_Y].Max - xyMinMax[GUI_COORD_Y].Min);    
}

/*********************************************************************
*
*        Diagnostic routines
*/
int  GUI_TOUCH_GetxPhys(void) {
  return 0; //GUI_TOUCH_xPhys;
}

int  GUI_TOUCH_GetyPhys(void) {
  return 0; //GUI_TOUCH_yPhys;
}



/*********************************************************************
*
*              SetDefaultCalibration
*/

void GUI_TOUCH_SetDefaultCalibration(void) {
  xyMinMax[0].Min = GUI_TOUCH_AD_LEFT;
  xyMinMax[0].Max = GUI_TOUCH_AD_RIGHT;
  xyMinMax[1].Min = GUI_TOUCH_AD_TOP;
  xyMinMax[1].Max = GUI_TOUCH_AD_BOTTOM;
}

/*********************************************************************
*
*              Calibration
*/


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

int GUI_TOUCH_Calibrate(int Coord, int Log0, int Log1, int Phys0, int Phys1) {
  int l0 = 0;
  int l1 = (Coord==GUI_COORD_X) ? LCD_XSIZE-1 : LCD_YSIZE-1;
  if (labs(Phys0-Phys1) < 20)
    return 1;
  if (labs(Log0-Log1) < 20)
    return 1;
  xyMinMax[Coord].Min = Log2Phys(l0, Log0, Log1, Phys0, Phys1);
  xyMinMax[Coord].Max = Log2Phys(l1, Log0, Log1, Phys0, Phys1);
  return 0;
}


/*********************************************************************
*
*              GUI_TOUCH_Exec
*/

void GUI_TOUCH_Exec(void) {
  #ifndef WIN32
  static U8 ReadState;
  static int xPhys, yPhys;
  int x,y;
  /* calculate Min / Max values */
  if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
    xMin = xyMinMax[GUI_COORD_X].Min;
    xMax = xyMinMax[GUI_COORD_X].Max;
  } else {
    xMax = xyMinMax[GUI_COORD_X].Min;
    xMin = xyMinMax[GUI_COORD_X].Max;
  }
  if (xyMinMax[GUI_COORD_Y].Min < xyMinMax[GUI_COORD_Y].Max) {
    yMin = xyMinMax[GUI_COORD_Y].Min;
    yMax = xyMinMax[GUI_COORD_Y].Max;
  } else {
    yMax = xyMinMax[GUI_COORD_Y].Min;
    yMin = xyMinMax[GUI_COORD_Y].Max;
  }
  /* Execute the state machine which reads the touch */
  switch (ReadState) {
  case 0:
    yPhys = TOUCH_X_MeasureY();
    TOUCH_X_ActivateY();  /* Prepare X- measurement */
    ReadState++;
    break;
  default:
    xPhys = TOUCH_X_MeasureX();
    TOUCH_X_ActivateX();  /* Prepare Y- measurement */
    /* Convert values into logical values */
      #if !GUI_TOUCH_SWAP_XY   /* Is X/Y swapped ? */
        x = xPhys;
        y = yPhys;
      #else
        x = yPhys;
        y = xPhys;
      #endif

    if ((x <xMin) | (x>xMax)  | (y <yMin) | (y>yMax)) {
      GUI_TOUCH_StoreState(-1,-1);
    } else {
      x = AD2X(x);
      y = AD2Y(y);
      GUI_TOUCH_StoreState(x,y);
    }
    /* Reset state machine */
    ReadState=0;
    break;
  }
  #endif /* WIN32 */
}


#else
void GUI_TOUCH_DriverAnalog_C(void) {}

#endif    /* defined(GUI_SUPPORT_TOUCH) && GUI_SUPPORT_TOUCH */


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区电影| 粉嫩蜜臀av国产精品网站| 波多野结衣中文字幕一区二区三区| 在线播放亚洲一区| 一区二区三区电影在线播| 成人av在线资源网站| 久久九九全国免费| 毛片一区二区三区| 91精品国产综合久久小美女| 中文字幕av一区二区三区| 日韩高清欧美激情| 色综合久久综合网| 国产精品毛片久久久久久久| 六月丁香婷婷久久| 91色综合久久久久婷婷| 日韩美女视频一区| 国产美女主播视频一区| 337p亚洲精品色噜噜噜| 日本不卡的三区四区五区| 欧美一级在线免费| 欧美aaaaa成人免费观看视频| 欧美一级高清大全免费观看| 亚洲精品菠萝久久久久久久| 欧美区一区二区三区| 视频一区视频二区中文字幕| 在线成人免费视频| 国产在线播放一区三区四| 26uuu国产日韩综合| 国产成人免费在线观看不卡| 中文字幕精品综合| 色综合久久久网| 婷婷丁香久久五月婷婷| 欧美日韩一区二区电影| 国产一级精品在线| 亚洲欧美日韩一区| 精品视频资源站| 免费成人美女在线观看.| 精品av久久707| 成人国产精品免费观看动漫| 亚洲欧美综合网| 欧洲一区在线电影| 久久电影网电视剧免费观看| 国产欧美日韩在线看| 色综合夜色一区| 日韩不卡手机在线v区| 精品国产欧美一区二区| 成人av免费在线播放| 亚洲aaa精品| 欧美激情中文字幕| 欧美色精品天天在线观看视频| 调教+趴+乳夹+国产+精品| 精品理论电影在线观看| 一本大道av一区二区在线播放| 亚洲综合免费观看高清在线观看| 精品成人佐山爱一区二区| 91福利社在线观看| 韩国精品在线观看| 亚洲伊人伊色伊影伊综合网| 欧美xxx久久| 日本久久一区二区三区| 国产一区二区在线观看免费| 亚洲激情六月丁香| 久久嫩草精品久久久精品一| 色吧成人激情小说| 国产精一区二区三区| 亚洲成人精品一区| 国产精品毛片高清在线完整版| 欧美猛男超大videosgay| 成人精品视频一区二区三区| 免费高清成人在线| 亚洲一区二区黄色| 国产精品亲子伦对白| 日韩女优视频免费观看| 成人h精品动漫一区二区三区| 亚洲免费视频中文字幕| 色综合激情五月| 激情综合一区二区三区| 亚洲国产中文字幕| 亚洲欧美日本韩国| 欧美国产日韩一二三区| 日韩一区二区在线看| 欧美图片一区二区三区| 91美女片黄在线| 成人国产精品免费观看视频| 国产一区二区在线观看免费| 日韩国产精品大片| 天天影视涩香欲综合网| 亚洲免费大片在线观看| 国产欧美精品一区二区色综合| 欧美另类久久久品| 91日韩一区二区三区| 国产在线精品免费| 精品制服美女丁香| 奇米影视7777精品一区二区| 天天免费综合色| 亚洲一区免费观看| 亚洲一区二区影院| 亚洲综合一区二区精品导航| 亚洲欧美日韩一区二区三区在线观看| 国产亚洲1区2区3区| 精品成人免费观看| 久久无码av三级| 久久网这里都是精品| 久久久精品国产99久久精品芒果| 精品国产欧美一区二区| 国产日韩在线不卡| 国产精品国产馆在线真实露脸 | 精品一区二区三区在线观看 | 欧美高清在线精品一区| 国产清纯在线一区二区www| 欧美一区二区三区日韩| 91精品国产日韩91久久久久久| gogo大胆日本视频一区| 成人av中文字幕| 91成人在线精品| 欧美日韩国产区一| 6080亚洲精品一区二区| 亚洲精品在线三区| 国产日韩视频一区二区三区| 国产精品私人影院| 亚洲资源中文字幕| 首页国产欧美日韩丝袜| 国产精品中文欧美| 日本韩国视频一区二区| 色婷婷综合五月| 欧美一区二区三区性视频| 久久久久国产精品厨房| 最新欧美精品一区二区三区| 国产精品传媒入口麻豆| 日韩av一级片| 国产成人综合视频| 欧美亚洲国产bt| 精品电影一区二区三区| 亚洲欧美欧美一区二区三区| 午夜国产不卡在线观看视频| 国内精品国产成人| 色哟哟国产精品| 日韩欧美一二区| 欧美成人一级视频| 337p亚洲精品色噜噜狠狠| 中文字幕五月欧美| 热久久免费视频| 成人黄色大片在线观看| 欧美一区二区在线免费播放| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久精品99久久久| 91亚洲永久精品| 日韩欧美成人一区| 亚洲婷婷在线视频| 美女尤物国产一区| 91免费国产在线| 久久久精品tv| 一区二区三区美女| 成人亚洲一区二区一| 欧美人xxxx| 成人欧美一区二区三区小说| 另类中文字幕网| 欧美揉bbbbb揉bbbbb| 国产三级精品三级| 男男视频亚洲欧美| 欧美少妇性性性| 国产欧美日韩在线| 精品一二线国产| 正在播放一区二区| 亚洲国产精品久久人人爱蜜臀| 成人动漫一区二区在线| 国产视频一区不卡| 久久精品国产亚洲5555| 欧美性大战久久久久久久蜜臀| 欧美高清在线精品一区| 精久久久久久久久久久| 欧美久久高跟鞋激| 亚洲在线免费播放| 91色九色蝌蚪| 亚洲日本在线天堂| 91片黄在线观看| 国产精品传媒在线| 成人午夜碰碰视频| 欧美激情综合在线| 国内精品伊人久久久久影院对白| 欧美少妇性性性| 亚洲图片欧美综合| 一本大道久久a久久精品综合| 亚洲国产精品ⅴa在线观看| 亚洲成人7777| 3d成人动漫网站| 久久精品国产亚洲a| 日韩欧美电影在线| 久久精品国产色蜜蜜麻豆| 欧美一区二区私人影院日本| 水蜜桃久久夜色精品一区的特点| 欧美日韩一区 二区 三区 久久精品 | 国产精品一品视频| 亚洲精品一区二区三区在线观看 | 亚洲成年人影院| 欧美日韩国产色站一区二区三区| 国产精品不卡一区| av在线不卡网| 一区二区三区四区不卡视频| 在线精品视频免费观看|