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

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

?? guichar.c

?? 汽車綜合監控儀——廣東省大學生電子設計大賽作品 (獲一等獎) 使用技術:ARM9(S3C2440)
?? 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        : 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();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
1024国产精品| 7777精品伊人久久久大香线蕉最新版| 久久女同精品一区二区| 久久99精品久久只有精品| 精品剧情v国产在线观看在线| 美国欧美日韩国产在线播放| 日韩精品一区二区三区视频播放 | 亚洲自拍与偷拍| 色综合一区二区三区| 亚洲成av人在线观看| 日韩一区二区免费视频| 国产精一品亚洲二区在线视频| 久久久电影一区二区三区| 成人高清在线视频| 亚洲韩国一区二区三区| 精品少妇一区二区三区在线视频| 激情另类小说区图片区视频区| 国产亚洲一本大道中文在线| 99国内精品久久| 日韩精品91亚洲二区在线观看| 精品欧美乱码久久久久久| 懂色av一区二区三区免费观看| 亚洲免费在线看| 欧美大片在线观看一区二区| 国产精品18久久久久久久久久久久 | 激情文学综合插| 国产精品国产三级国产普通话三级 | 中文字幕av资源一区| 欧洲一区二区三区在线| 激情偷乱视频一区二区三区| 日韩毛片高清在线播放| 91麻豆精品国产综合久久久久久 | 不卡视频一二三四| 午夜成人免费电影| 亚洲国产精品国自产拍av| 欧美精品1区2区| 不卡av在线免费观看| 热久久国产精品| 一区二区三区成人在线视频| 欧美不卡视频一区| 欧美色综合影院| 不卡欧美aaaaa| 久久99国产精品久久99| 亚洲综合在线视频| 国产亚洲美州欧州综合国| 欧美男生操女生| 91久久精品网| 懂色一区二区三区免费观看| 热久久国产精品| 亚洲一区二区三区四区在线观看 | 日本不卡中文字幕| 亚洲欧洲综合另类| 国产欧美日韩中文久久| 日韩一区二区在线观看视频| 色综合久久66| voyeur盗摄精品| 国产在线精品一区在线观看麻豆| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲一级二级三级在线免费观看| 国产精品欧美精品| 久久久噜噜噜久噜久久综合| 欧美一区二区视频免费观看| 欧美性生交片4| 色婷婷亚洲综合| 色婷婷av一区二区三区gif| av在线一区二区三区| 国产成人av一区二区三区在线| 日本亚洲欧美天堂免费| 午夜a成v人精品| 亚洲成人免费视| 亚洲3atv精品一区二区三区| 一区二区三区四区av| 国产精品久久毛片| 欧美激情一区二区三区在线| 久久久综合激的五月天| 精品国产一区二区亚洲人成毛片 | 91在线播放网址| 99久久久久久99| 91美女在线看| 在线看国产一区| 欧美亚洲一区三区| 欧美日韩精品三区| 欧美一二三四区在线| 精品免费国产二区三区| 久久综合久久久久88| 久久综合av免费| 欧美国产日产图区| 中文字幕亚洲精品在线观看| 亚洲欧美日韩国产综合| 亚洲一区二三区| 蜜桃视频在线观看一区| 国产一区在线精品| 成人av动漫在线| 欧美亚洲日本一区| 欧美日韩亚洲综合一区二区三区| 欧美日本一区二区| 久久这里都是精品| 国产精品久久久久久一区二区三区| 国产精品天美传媒沈樵| 亚洲精品久久嫩草网站秘色| 亚洲 欧美综合在线网络| 麻豆一区二区在线| 成人激情午夜影院| 欧美视频中文一区二区三区在线观看| 在线综合+亚洲+欧美中文字幕| 精品国产一区二区三区av性色| 国产日产欧美一区二区视频| 亚洲激情欧美激情| 激情五月婷婷综合网| eeuss鲁一区二区三区| 欧美日韩视频一区二区| 精品久久人人做人人爽| 亚洲日本欧美天堂| 青青国产91久久久久久| 成人性生交大片免费看在线播放 | 日韩一卡二卡三卡国产欧美| 久久精品一区二区三区不卡| 亚洲免费观看高清完整版在线| 日韩不卡在线观看日韩不卡视频| 国产·精品毛片| 欧美人与性动xxxx| 中文字幕第一区| 日韩成人免费电影| 91麻豆免费看| 久久久久一区二区三区四区| 亚洲一区在线视频观看| 国产a视频精品免费观看| 欧美日韩高清在线| 中文字幕一区二区三区精华液| 日韩精品91亚洲二区在线观看| 国产91精品一区二区麻豆亚洲| 欧美色偷偷大香| 成人欧美一区二区三区| 国内成人自拍视频| 制服丝袜国产精品| 亚洲精品国产视频| 国产成人精品亚洲午夜麻豆| 欧美一区二区福利视频| 亚洲乱码国产乱码精品精小说| 久久99热狠狠色一区二区| 在线观看亚洲专区| 国产精品欧美久久久久无广告| 免费成人在线观看| 欧美日韩国产综合一区二区三区 | 国产精品美女久久久久久久网站| 久久综合久久综合久久| 亚洲乱码国产乱码精品精的特点| 久久电影网站中文字幕| 欧美日韩性生活| 亚洲区小说区图片区qvod| 国产精一品亚洲二区在线视频| 91精品欧美久久久久久动漫| 亚洲精品老司机| 99这里只有久久精品视频| 国产香蕉久久精品综合网| 日产精品久久久久久久性色| 在线观看免费成人| 一区二区三区免费网站| 91麻豆产精品久久久久久| 国产精品国产三级国产普通话三级 | 韩国成人精品a∨在线观看| 欧美日韩免费观看一区二区三区 | 午夜精品视频在线观看| 色欧美片视频在线观看| 亚洲欧美色一区| 成人少妇影院yyyy| 中国色在线观看另类| 成人一级片在线观看| 国产精品麻豆99久久久久久| 菠萝蜜视频在线观看一区| 国产精品三级在线观看| 99精品热视频| 亚洲精品视频自拍| 欧日韩精品视频| 亚洲一区二区三区四区的| 欧美色视频一区| 日本亚洲天堂网| 精品国产亚洲一区二区三区在线观看| 久久99日本精品| 欧美国产日韩在线观看| 99re热这里只有精品视频| 亚洲人成7777| 欧美精品日韩一区| 精品在线你懂的| 国产精品欧美一区喷水| 97精品国产露脸对白| 一区二区日韩av| 欧美一级免费大片| 国产精品夜夜嗨| 亚洲人一二三区| 91精品福利在线一区二区三区| 另类欧美日韩国产在线| 国产喂奶挤奶一区二区三区| av动漫一区二区| 日韩精品电影在线| 国产亚洲欧美中文| 在线观看www91| 国产做a爰片久久毛片 | 亚洲综合图片区| 日韩三级在线观看|