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

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

?? guichar.c

?? 基于arm7內(nèi)核的S3C44B0X的UCGUI應(yīng)用程序
?? 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        : GUIChar.CPurpose     : Implementation of character and string services---------------------------END-OF-HEADER------------------------------*/#include <stddef.h>           /* needed for definition of NULL */#include <stdio.h>#include <string.h>#include "GUI_Private.H" /************************************************************        Public code*************************************************************//*************************************************************       GUI_DispChar*/void GL_DispChar(U16 c) {  /* check for control characters */  if (c == '\n') {    GUI_DispNextLine();  } else {    if (c != '\r') {      GUI_Context.pAFont->pfDispChar(c);    }  }}/*************** GUI_GetStringDistX ****************************This routine is used to calculate the length of a string in pixels.*/int GUI_GetLineDistX(const char GUI_FAR *s, int Len) {  int Dist =0;  if (s) {    if (GUI_Context.pAFont->pafEncode) {      return GUI_Context.pAFont->pafEncode->pfGetLineDistX(s, Len);    }#if (GUI_SUPPORT_UNICODE)    {      U8 c0;      char UCActive=0;      while (((c0=*(U8*)s) !=0) && Len >0) {        s++; Len--;        if (UCActive) {          if (c0 == GUI_UC_ENDCHAR)            UCActive = 0;          else {            U8  c1 = *(U8*)s++;            Len--;            Dist += GUI_GetCharDistX(GUI_DB2UC(c0, c1));          }        } else { /* Unicode not active */          if (c0 == GUI_UC_STARTCHAR)            UCActive = 1;          else            Dist += GUI_GetCharDistX(c0);        }      }    }#else    while (--Len>=0) {      Dist += GUI_GetCharDistX(*(U8*)s++);    }#endif  }  return Dist;}/*************** GUI_GetLineLen ****************************Returns the number of characters in a stringNote: The return value can be used as offset into thestring, which means that double characters count double*/int GUI__GetLineLen(const char GUI_FAR *s, int MaxLen) {  int Len =0;  if (!s)    return 0;  if (GUI_Context.pAFont->pafEncode) {    return GUI_Context.pAFont->pafEncode->pfGetLineLen(s, MaxLen);  }#if (GUI_SUPPORT_UNICODE)  {    U8 c0;    char UCActive=0;    while (((c0=*(U8*)s) !=0) && Len < MaxLen) {      s++;      if (UCActive) {        switch (c0) {        case GUI_UC_ENDCHAR: UCActive = 0; break;        default: Len++; s++;        }      } else { /* Unicode not active */        switch (c0) {        case GUI_UC_STARTCHAR: UCActive = 1; break;        case '\n': return Len;        case '\r': return Len;        }      }      Len++;    }  }#else  for (;Len<MaxLen; Len++) {    U8 Data = *(U8*)s++;    if ((Data == 0) || (Data == '\n'))      break;  }#endif  return Len;}/************************************************************************       "GET"   routines    (information retrieval)************************************************************************These routines all return a value like selected font, current displayposition in x/y direction, window size in x/y direction,font size and matrix in x/y.The routines prefixed with GUI_ can be called from the applicationprogram or emWin internally, while the routines without that prefixare not supposed to be called from outside emWin.The main reason is that GUI_LOCK has to be called before thesevalues can be reliably retrieved in a multitasking environment.*//*------------------------------------------------------------------  GUI_GetYAdjust  --- returns adjustment in vertical (Y) direction                  The return value needs to be subtracted from                  the y-position of the character*/int GUI_GetYAdjust(void) {  switch (GUI_Context.TextAlign&GUI_TA_VERTICAL) {	case GUI_TA_BOTTOM:		return GUI_Context.pAFont->YSize-1;	case GUI_TA_VCENTER:		return GUI_Context.pAFont->YSize/2;	case GUI_TA_BASELINE:		return GUI_Context.pAFont->YSize/2;	}  return 0;}/*        *******************************************        *                                         *        *        Get Font Spacing routines        *        *                                         *        ********************************************/int GUI_GetFontDistY(void) {  int r;  GUI_LOCK();  r = GUI_Context.pAFont->YDist * GUI_Context.pAFont->YMag;  GUI_UNLOCK();  return r;}/*        *******************************************        *                                         *        *        Get Char spacing routines        *        *                                         *        ********************************************/int GUI_GetCharDistX(U16 c) {  int r;  GUI_LOCK();  r = GUI_Context.pAFont->pfGetCharDistX(c);  GUI_UNLOCK();  return r;}/*      *********************************      *                               *      *       Linefeed                *      *                               *      **********************************/void GUI_DispNextLine(void) {  GUI_Context.DispPosY +=GUI_GetFontDistY();  GUI_Context.DispPosX = GUI_Context.LBorder;}/*        ************************************************************        *                                                          *        *             Set the write position                       *        *                                                          *        ************************************************************Sets the write position. The routines routine 1 if it is clear thatthe current write position is in an area outside the current windowand will therefor not be written.*/static char _GotoY(int y) {  GUI_Context.DispPosY = y;  return 0;}static char _GotoX(int x) {  GUI_Context.DispPosX = x;  return 0;}char GUI_GotoY(int y) {  char r;  GUI_LOCK();  r = _GotoY(y);  GUI_UNLOCK();  return r;}char GUI_GotoX(int x) {  char r;  GUI_LOCK();  r = _GotoX(x);  GUI_UNLOCK();  return r;}char GUI_GotoXY(int x, int y) {  char r;  GUI_LOCK();  r  = GUI_GotoX(x);  r |= GUI_GotoY(y);  GUI_UNLOCK();  return r;}/***********************************************************                Display line**********************************************************/void GL_DispLine(const char GUI_FAR *s, int Len, const GUI_RECT *pRect) {  /*    Check if we have anything to do at all ...    If the window manager has already set the clipping rect, it does not    make sense to due this. So it makes sense only if    a) The window manager is not used (-> Configuration)      or    b) The window manager is inactive (-> Memory device active)  */  if (GUI_Context.pClipRect_HL) {    if (GUI_RectsIntersect(GUI_Context.pClipRect_HL, pRect) == 0)      return;  }  if (GUI_Context.pAFont->pafEncode) {    GUI_Context.pAFont->pafEncode->pfDispLine(s, Len);    return;  }#if (GUI_SUPPORT_UNICODE)  {    U8 c0;    char UCActive=0;    while (--Len >=0) {      c0=*(U8*)s++;      if (UCActive) {        if (c0 == GUI_UC_ENDCHAR)          UCActive = 0;        else {          U8  c1 = *(U8*)s++;          Len--;          GL_DispChar (GUI_DB2UC(c0, c1));        }      } else { /* Unicode not active */        if (c0 == GUI_UC_STARTCHAR)          UCActive = 1;        else          GL_DispChar(c0);      }    }  }#else  {    while (--Len >=0) {      GL_DispChar(*(U8*)s++);    }  }#endif}void GUI__DispLine(const char GUI_FAR *s, int Len, const GUI_RECT* pr) {  GUI_RECT r;  r = *pr;  #if GUI_WINSUPPORT  WM_ADDORG(r.x0,r.y0);  WM_ADDORG(r.x1,r.y1);  WM_ITERATE_START(&r) {  #endif     GUI_Context.DispPosX = r.x0;     GUI_Context.DispPosY = r.y0;  /* Do the actual drawing via routine call. */     GL_DispLine(s, Len, &r);  #if GUI_WINSUPPORT  } WM_ITERATE_END();  WM_SUBORG(GUI_Context.DispPosX, GUI_Context.DispPosY);  #endif}/**********************************************************************                Display String***********************************************************************/void GUI_DispString(const char GUI_FAR *s) {  int xAdjust, yAdjust, xOrg;  int FontSizeY;  if (!s)    return;  GUI_LOCK();  FontSizeY = GUI_Context.pAFont->YDist;  xOrg = GUI_Context.DispPosX; /* Adjust vertical position */  yAdjust = GUI_GetYAdjust();  GUI_Context.DispPosY -= yAdjust;  for (; *s; s++) {    GUI_RECT r;    int LineLen= GUI__GetLineLen(s,0x7fff);    int xLineSize = GUI_GetLineDistX(s, LineLen);  /* Check if x-position needs to be changed due to h-alignment */    switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {     case GUI_TA_CENTER: xAdjust= xLineSize/2; break;    case GUI_TA_RIGHT:  xAdjust= xLineSize; break;    default:            xAdjust= 0;    }    r.x0 = GUI_Context.DispPosX -= xAdjust;    r.x1 = r.x0 + xLineSize-1;        r.y0 = GUI_Context.DispPosY;    r.y1 = r.y0 + FontSizeY-1;        GUI__DispLine(s, LineLen, &r);    GUI_Context.DispPosY = r.y0;    s += LineLen;    if ((*s=='\n') || (*s=='\r')) {      switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {       case GUI_TA_CENTER:      case GUI_TA_RIGHT:        GUI_Context.DispPosX = xOrg;        break;      default:        GUI_Context.DispPosX = GUI_Context.LBorder;        break;      }      if (*s=='\n')        GUI_Context.DispPosY += GUI_GetFontDistY();    } else {      GUI_Context.DispPosX = r.x0+xLineSize;    }    if (*s==0)    /* end of string (last line) reached ? */      break;  }  GUI_Context.DispPosY += yAdjust;  GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL;  GUI_UNLOCK();}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄页毛片网站| 久久久亚洲综合| 色哟哟亚洲精品| 国产综合色在线| 天天综合日日夜夜精品| 亚洲少妇30p| 中文字幕精品三区| 国产亚洲成年网址在线观看| 6080日韩午夜伦伦午夜伦| 色综合网站在线| 91丨porny丨蝌蚪视频| 99这里只有久久精品视频| 国产高清在线精品| 狠狠色丁香久久婷婷综| 日本欧美一区二区三区乱码| 午夜一区二区三区在线观看| 国产一区二区三区观看| 奇米影视一区二区三区| 亚洲国产成人高清精品| 亚洲成人自拍一区| 亚欧色一区w666天堂| 亚洲成av人综合在线观看| 亚洲免费资源在线播放| 亚洲欧美电影院| 亚洲在线中文字幕| 肉肉av福利一精品导航| 天天av天天翘天天综合网| 亚洲成人你懂的| 男男视频亚洲欧美| 精品一区二区久久| 成人激情电影免费在线观看| 91一区二区在线| 欧美日韩免费电影| 精品国产亚洲在线| 国产精品天美传媒| 亚洲午夜精品网| 美女一区二区久久| 国产精品66部| 在线观看日韩精品| 日韩亚洲欧美成人一区| 国产日产欧美一区二区三区| 自拍偷拍国产精品| 视频在线观看91| 国产成人综合在线观看| 日本道精品一区二区三区| 7777精品伊人久久久大香线蕉完整版| 亚洲免费资源在线播放| 青青草视频一区| 不卡一区二区三区四区| 欧美日韩亚洲另类| 国产日韩精品一区二区三区| 一区二区在线免费| 国产精品一品二品| 欧美精品视频www在线观看| 久久久久9999亚洲精品| 视频在线观看一区| 色综合久久久久网| 国产亚洲一区二区在线观看| 婷婷一区二区三区| av中文字幕不卡| 久久综合色一综合色88| 亚洲国产aⅴ成人精品无吗| 国产.精品.日韩.另类.中文.在线.播放| 欧美午夜免费电影| 国产精品国产三级国产| 精品一区二区免费| 3d动漫精品啪啪1区2区免费| 尤物在线观看一区| 99视频有精品| 国产精品久久久久天堂| 国产精品88av| 久久精品一区四区| 精品无人码麻豆乱码1区2区| 制服丝袜av成人在线看| 亚洲综合一区二区三区| 94-欧美-setu| 国产精品福利一区| 99精品偷自拍| 中文字幕在线观看一区| 成人免费观看视频| 日本一区免费视频| 国产mv日韩mv欧美| 中文字幕精品三区| 欧美电视剧免费观看| 日本大胆欧美人术艺术动态| 日韩亚洲欧美一区| 久久电影国产免费久久电影| 精品国产乱码久久久久久夜甘婷婷 | 激情国产一区二区| 国产日本欧洲亚洲| 成人精品鲁一区一区二区| 欧美国产精品劲爆| 99久久精品国产导航| 亚洲摸摸操操av| 欧美撒尿777hd撒尿| 日本不卡一区二区| 精品久久一二三区| 成人午夜看片网址| 一区二区三区四区蜜桃| 欧美日韩国产高清一区二区| 日韩av不卡在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 国产成人午夜高潮毛片| 亚洲日本在线天堂| 91精品国产91久久久久久一区二区| 美女性感视频久久| 中文字幕一区三区| 日韩一区二区三区电影在线观看 | 一本大道av一区二区在线播放| 亚洲国产一区在线观看| 精品国产sm最大网站| 99视频精品全部免费在线| 免费在线观看成人| 国产精品国模大尺度视频| 91精品在线观看入口| 国产成人综合在线观看| 首页国产欧美久久| 中文字幕一区在线| 精品91自产拍在线观看一区| 97超碰欧美中文字幕| 全国精品久久少妇| 国产91精品一区二区麻豆亚洲| 亚洲男人的天堂在线观看| 精品久久久久久久久久久久久久久 | 99精品偷自拍| 捆绑调教美女网站视频一区| 一区二区三区欧美亚洲| 精品国产乱码久久久久久浪潮 | 国产欧美一区二区在线| 欧美精品日韩一区| 色系网站成人免费| 国产传媒欧美日韩成人| 蜜桃一区二区三区四区| 亚洲另类色综合网站| 国产日韩亚洲欧美综合| 欧美变态tickling挠脚心| 不卡一区二区三区四区| 麻豆精品新av中文字幕| 国产精品毛片久久久久久久| 日韩一区二区免费在线观看| 欧美影院午夜播放| 91成人看片片| 91网上在线视频| 99久久精品国产观看| 99久久精品国产毛片| 不卡的av在线播放| 972aa.com艺术欧美| 色噜噜夜夜夜综合网| 色嗨嗨av一区二区三区| 在线日韩av片| 欧美无乱码久久久免费午夜一区| 99视频在线观看一区三区| 99精品久久99久久久久| 色婷婷av一区二区| 欧美日韩精品一区二区三区蜜桃| 欧美片网站yy| 精品久久一区二区| 国产精品美女久久久久久久久| 麻豆精品新av中文字幕| 激情都市一区二区| 成人免费视频网站在线观看| jlzzjlzz欧美大全| 欧美在线你懂的| 欧美电影免费观看高清完整版在线 | 久久99热狠狠色一区二区| 国产一区二区影院| 99精品热视频| 欧美人体做爰大胆视频| 久久免费国产精品| 亚洲精品免费一二三区| 爽爽淫人综合网网站| 成人午夜精品一区二区三区| 色女孩综合影院| 26uuu欧美| 亚洲黄色片在线观看| 黄色精品一二区| 成人爱爱电影网址| 欧洲精品在线观看| 日韩女优毛片在线| 自拍偷拍国产精品| 激情都市一区二区| 欧美综合亚洲图片综合区| 国产三级三级三级精品8ⅰ区| 一区二区三区日本| 国产乱码字幕精品高清av | 国产剧情一区在线| 欧洲中文字幕精品| 日本一区二区成人| 久久成人久久鬼色| 制服丝袜亚洲播放| 亚洲一区二区三区在线| eeuss鲁片一区二区三区 | 婷婷中文字幕综合| 欧美在线观看视频一区二区三区| 国产色爱av资源综合区| 蜜桃av噜噜一区| 欧美一区二区在线播放| 国产精品18久久久久久久久| 日韩欧美国产午夜精品| 亚洲成人动漫在线免费观看|