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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gui_touch_driveranalog.c

?? ucgui源碼3.32
?? C
字號(hào):
/*
*********************************************************************************************************
*                                                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        : 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
*
**********************************************************************
*/


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

typedef struct {int Min; int Max; } tMinMax;
static int xPhys, yPhys;

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 xPhys;
}

int  GUI_TOUCH_GetyPhys(void) {
  return 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;
}

void GUI_TOUCH_GetCalData(int Coord, int* pMin,int* pMax) {
  *pMin = xyMinMax[Coord].Min;
  *pMax = xyMinMax[Coord].Max; 
}
  

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

void GUI_TOUCH_Exec(void) {
  #ifndef WIN32
  static U8 ReadState;
  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_StoreUnstable(-1,-1);
    } else {
      x = AD2X(x);
      y = AD2Y(y);
      GUI_TOUCH_StoreUnstable(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 */


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女人18毛片水真多成人如厕| 综合激情网...| 91麻豆国产福利在线观看| 天天综合天天做天天综合| 亚洲国产高清aⅴ视频| 91精品国产色综合久久不卡蜜臀| 成人av电影在线| 极品瑜伽女神91| 亚洲va欧美va人人爽| 国产精品成人在线观看| 亚洲精品一线二线三线无人区| 欧洲精品在线观看| 99riav一区二区三区| 国产精品一二三在| 精品在线免费视频| 日韩黄色免费电影| 亚洲一区二区免费视频| 中文字幕中文在线不卡住| 久久免费视频色| 欧美mv和日韩mv国产网站| 91精品欧美一区二区三区综合在 | 国产激情一区二区三区桃花岛亚洲| 一区二区三区在线观看动漫| 国产精品色一区二区三区| 久久亚洲捆绑美女| 精品国产区一区| 欧美一区中文字幕| 欧美丰满少妇xxxbbb| 欧美日韩综合在线免费观看| 色婷婷综合久色| 一本一道波多野结衣一区二区| 成人深夜在线观看| 国产电影一区二区三区| 国产伦精品一区二区三区视频青涩 | 亚洲第一成年网| 国产精品污污网站在线观看| 精品国产乱码久久久久久1区2区| 欧美一区二区三区四区高清| 欧美高清视频不卡网| 在线观看网站黄不卡| 欧洲一区二区三区在线| 在线精品亚洲一区二区不卡| 欧美在线观看一区二区| 欧美影视一区在线| 欧美色视频一区| 99在线精品一区二区三区| 99精品久久久久久| 在线观看不卡一区| 欧美日本一区二区| 91.com在线观看| 欧美三级电影一区| 日韩欧美不卡在线观看视频| 日韩三级视频中文字幕| 精品久久久久久久久久久院品网 | 亚洲成人你懂的| 亚洲欧美日韩在线| 亚洲黄色小说网站| 亚洲国产精品久久不卡毛片 | 国产欧美精品国产国产专区| 欧美激情一区不卡| 亚洲麻豆国产自偷在线| 亚洲h动漫在线| 久久99精品久久久久久动态图 | 午夜精品久久久久| 琪琪久久久久日韩精品| 色哟哟一区二区| 国产亚洲欧美在线| 国产精品欧美久久久久一区二区| 日韩一区在线免费观看| 亚洲高清久久久| 全部av―极品视觉盛宴亚洲| 日本中文字幕一区二区有限公司| **欧美大码日韩| 亚洲第一搞黄网站| 九九**精品视频免费播放| 国产91精品一区二区麻豆亚洲| 91免费在线看| 日韩视频免费观看高清完整版| 欧美国产精品一区二区三区| 亚洲无线码一区二区三区| 韩国欧美国产一区| 色网综合在线观看| 久久综合九色综合97婷婷女人| 亚洲另类在线视频| 九色综合国产一区二区三区| 一本色道a无线码一区v| 精品人伦一区二区色婷婷| 亚洲日本欧美天堂| 国产麻豆精品视频| 欧美精品一级二级| 国产精品乱码人人做人人爱| 日韩专区在线视频| 色婷婷亚洲婷婷| 久久综合狠狠综合久久激情| 亚洲少妇最新在线视频| 国产综合色精品一区二区三区| 色视频成人在线观看免| 日韩精品在线一区| 亚洲欧美色图小说| 国产精品亚洲成人| 日本在线不卡视频| 成人一级视频在线观看| 69堂精品视频| 日韩毛片一二三区| 国产精品一区二区在线观看网站| 精品视频在线免费看| 国产精品青草综合久久久久99| 欧美aaaaaa午夜精品| 欧美亚洲综合色| 国产精品福利电影一区二区三区四区| 美女www一区二区| 欧美性生活大片视频| 自拍偷拍国产亚洲| 成人性视频网站| 久久久久久久久久久久久夜| 免费国产亚洲视频| 欧美日韩视频在线第一区| 亚洲色图一区二区| 成人av免费网站| 国产三级欧美三级日产三级99| 蜜臀久久久久久久| 欧美精品日韩精品| 亚洲国产美女搞黄色| 在线免费观看视频一区| 亚洲少妇最新在线视频| eeuss鲁片一区二区三区在线观看| 精品成人免费观看| 韩国av一区二区| 免费在线观看一区| 日韩一级片在线播放| 三级影片在线观看欧美日韩一区二区| 91女人视频在线观看| 自拍偷自拍亚洲精品播放| av电影在线观看完整版一区二区| 国产精品无人区| 99精品1区2区| 亚洲精品国产精华液| 在线看不卡av| 午夜精品免费在线观看| 欧美精品免费视频| 久久精品99国产精品日本| 日韩欧美在线123| 国精产品一区一区三区mba视频 | 麻豆精品在线播放| 欧美r级在线观看| 国产剧情在线观看一区二区| 日本一区二区三区国色天香| 成人黄色小视频| 亚洲欧美日韩在线| 欧美久久久久久久久久| 另类小说一区二区三区| 久久久久久久久久久久电影| 粉嫩av一区二区三区在线播放| 中文字幕一区二区三区不卡在线| 色婷婷久久久久swag精品| 亚洲第一成人在线| 日韩精品一区二| 成人免费看黄yyy456| 亚洲综合久久久久| 欧美一区二区视频网站| 国产一区二区免费视频| 日韩美女精品在线| 9191成人精品久久| 国产成人免费av在线| 亚洲欧美激情视频在线观看一区二区三区| 91精品福利视频| 久色婷婷小香蕉久久| 中文字幕精品一区二区精品绿巨人 | 欧美日韩的一区二区| 国产综合色精品一区二区三区| 亚洲天堂福利av| 欧美欧美午夜aⅴ在线观看| 精品一二三四区| 中文字幕一区二区三区四区| 欧美日韩国产影片| 国产高清不卡一区二区| 亚洲在线观看免费视频| 亚洲精品在线网站| 欧美性猛片xxxx免费看久爱| 美女视频一区在线观看| ...av二区三区久久精品| 4hu四虎永久在线影院成人| 成人中文字幕在线| 免费成人在线播放| 亚洲日本电影在线| 日韩区在线观看| 色婷婷综合五月| 国产成人精品三级麻豆| 偷拍与自拍一区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产综合一区二区| www.激情成人| 激情六月婷婷综合| 性做久久久久久久免费看| 国产精品久久久久久久岛一牛影视 | 亚洲电影中文字幕在线观看| 中文字幕成人网| 精品久久国产老人久久综合| 欧美色区777第一页| 不卡的av网站|