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

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

?? guichar.c

?? 一種可移植系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************************************************************************                                                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.C
Purpose     : Implementation of character and string services
----------------------------------------------------------------------
Version-Date---Author-Explanation
---------------------------END-OF-HEADER------------------------------
*/


#include <stddef.h>           /* needed for definition of NULL */
#include <stdio.h>
#include <string.h>
#include "GUI_Private.H"
#include "gb2312-unicode.h" 

/*
***********************************************************
*
*                       Static subroutines
*
***********************************************************
*/



/*********************************************************************
  HandleEOLine
  Is called when processing strings which may consist of
  multiple lines after a line has been processed. It will
  a) Swall the line feed character (if it is there)
  b) Return 1 if end of string, otherwise 0
*/
int GUI__HandleEOLine(const char* *ps) {
  const char *s = *ps;
  char c= *s++;
  if (c==0)
    return 1;
  if (c=='\n') {
    *ps = s;
  }
  return 0;
}

/*************** 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;
}

int GUI__GetFontSizeY(void) {
  return GUI_Context.pAFont->YSize * GUI_Context.pAFont->YMag;
}

/*************** GUI_GetLineLen ****************************
Returns the number of characters in a string
Note: The return value can be used as offset into the
string, 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;
}

int GUI_GetStringDistX(const char GUI_FAR *s) {
  return GUI_GetLineDistX(s, strlen(s));
}


/**********************************************************************
*
*       "GET"   routines    (information retrieval)
*
***********************************************************************

These routines all return a value like selected font, current display
position 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 application
program or emWin internally, while the routines without that prefix
are not supposed to be called from outside emWin.
The main reason is that GUI_LOCK has to be called before these
values 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;
}

/*
  Return X-component of current display position
*/

int GUI_GetDispPosX(void) {
  int r;
  GUI_LOCK();
  r = GUI_Context.DispPosX;
  GUI_UNLOCK();
  return r;
}

/*
  Return Y-component of current display position
*/
int GUI_GetDispPosY(void) {
  int r;
  GUI_LOCK();
  r = GUI_Context.DispPosY;
  GUI_UNLOCK();
  return r;
}

char GUI_IsInFont(const GUI_FONT*pFont, U16 c) {
  if (pFont==NULL)
    pFont = GUI_Context.pAFont;
  return pFont->pfIsInFont((void*)pFont, c);
}


/*
        *******************************************
        *                                         *
        *        Get Font Size Routines           *
        *                                         *
        *******************************************
*/


int GUI_GetFontSizeY(void) {
  int r;
  GUI_LOCK();
  r = GUI__GetFontSizeY();
  GUI_UNLOCK();
  return r;
}

int  GUI_GetYSizeOfFont(const GUI_FONT* pFont) {
  return pFont->YSize * pFont->YMag;
}

int  GUI_GetYDistOfFont(const GUI_FONT* pFont) {
  return pFont->YDist * pFont->YMag;
}

/*
        *******************************************
        *                                         *
        *        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;
}

/*
        *******************************************
        *                                         *
        *        Get selected font                *
        *                                         *
        *******************************************
*/

const GUI_FONT* GUI_GetFont(void) {
  const GUI_FONT* r;
  GUI_LOCK();
  r = GUI_Context.pAFont;
  GUI_UNLOCK();
  return r;
}


/*
      **************************************************
      *                                                *
      *             Setting Text Mode                  *
      *                                                *
      **************************************************
*/
int GUI_SetTextMode(int Mode) {
  int r;
  GUI_LOCK();
  r = GUI_Context.TextMode;
  GUI_Context.TextMode = Mode;
  GUI_UNLOCK();
  return r;
}

int GUI_GetTextMode(void) {
  int r;
  GUI_LOCK();
  r = GUI_Context.TextMode;
  GUI_UNLOCK();
  return r;
}

/*
      **************************************************
      *                                                *
      *             Setting Text Mode                  *
      *                                                *
      **************************************************
*/
int GUI_SetTextAlign(int Align) {
  int r;
  GUI_LOCK();
  r = GUI_Context.TextAlign;
  GUI_Context.TextAlign = Align;
  GUI_UNLOCK();
  return r;
}

int GUI_GetTextAlign(void) {
  int r;
  GUI_LOCK();
  r = GUI_Context.TextAlign;
  GUI_UNLOCK();
  return r;
}




/*
      *********************************
      *                               *
      *       Clear to end of line    *
      *                               *
      *********************************

*/

void GUI_DispCEOL(void) {
  int y = GUI_Context.DispPosY - GUI_GetYAdjust();
  GUI_ClearRect(GUI_Context.DispPosX,
                y,
                4000,             /* Max pos x */
                y + GUI_Context.pAFont->YDist-1);
}


/*
      *********************************
      *                               *
      *       Linefeed                *
      *                               *
      *********************************

*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线播放一区| 亚洲国产一二三| 日韩二区三区在线观看| 国产福利一区在线| 69堂精品视频| 亚洲欧美日韩电影| 国产精品456露脸| 欧美丰满少妇xxxxx高潮对白 | 成人一区二区在线观看| 欧美色窝79yyyycom| 精品对白一区国产伦| 黄色日韩网站视频| 亚洲精品一区二区三区香蕉| 国产一区日韩二区欧美三区| 欧美剧在线免费观看网站| 日韩一级二级三级| 国产午夜精品久久久久久久 | 中文字幕永久在线不卡| 国产精品一级片在线观看| 日韩欧美国产一区二区三区| 国产一区二区美女| 精品嫩草影院久久| 国产精品国产三级国产a| 日韩电影在线观看电影| 91福利在线播放| 一区二区三区成人在线视频| 欧美电影在哪看比较好| 欧美不卡激情三级在线观看| 国产精品久久久久天堂| 国产精品嫩草影院av蜜臀| 麻豆精品国产传媒mv男同 | 大桥未久av一区二区三区中文| 精品久久国产老人久久综合| 精品一区二区久久久| 久久老女人爱爱| 色av一区二区| 久久国产综合精品| 日韩毛片一二三区| 欧美高清性hdvideosex| 国模一区二区三区白浆| 国产一区二区福利视频| 欧美成人在线直播| 极品销魂美女一区二区三区| 日韩欧美高清一区| 久草中文综合在线| 久久久久久久国产精品影院| 国产乱淫av一区二区三区 | 国产电影一区二区三区| 久久久不卡影院| 成人美女在线视频| 国产精品乱人伦中文| 91蜜桃婷婷狠狠久久综合9色| 日韩毛片精品高清免费| 91成人国产精品| 亚洲大尺度视频在线观看| 欧美三级日韩三级| 热久久久久久久| 精品动漫一区二区三区在线观看| 国产精品白丝jk黑袜喷水| 中文av一区二区| 色婷婷精品大在线视频| 亚洲mv大片欧洲mv大片精品| 91精品国产综合久久香蕉的特点| 久久精品国产精品亚洲综合| 久久精品水蜜桃av综合天堂| 波多野结衣中文字幕一区| 日韩毛片在线免费观看| 欧美日韩一卡二卡| 精品亚洲国内自在自线福利| 国产亚洲成av人在线观看导航| 午夜精品福利一区二区三区av| 成人国产精品免费观看| 伊人一区二区三区| 91精品国产一区二区三区| 国产精品自在欧美一区| 中文字幕一区二区视频| 欧美日本在线一区| 国产精品伊人色| 亚洲品质自拍视频网站| 欧美精品亚洲一区二区在线播放| 韩国午夜理伦三级不卡影院| 成人欧美一区二区三区黑人麻豆| 欧美另类z0zxhd电影| 国产曰批免费观看久久久| 亚洲视频一区二区免费在线观看| 在线播放欧美女士性生活| 国产精品911| 亚洲国产一区二区三区青草影视| 日韩欧美视频一区| 91美女在线看| 激情深爱一区二区| 亚洲精品国产a久久久久久 | 成人午夜视频免费看| 亚洲国产一区视频| 久久精品人人做人人爽人人| 色老汉一区二区三区| 韩国欧美国产一区| 亚洲乱码中文字幕| 久久尤物电影视频在线观看| 91网站最新网址| 国产一区二区三区免费播放| 亚洲一区二区三区四区五区中文| 久久一区二区视频| 欧美无乱码久久久免费午夜一区| 黄色日韩网站视频| 午夜私人影院久久久久| 国产精品污www在线观看| 91精品婷婷国产综合久久竹菊| 成人免费毛片高清视频| 免费成人小视频| 亚洲一卡二卡三卡四卡五卡| 国产欧美一区二区精品秋霞影院| 777a∨成人精品桃花网| 色综合久久中文综合久久97| 国产一区日韩二区欧美三区| 日韩精品一二三| 一区二区三区国产精华| 久久久久久一二三区| 在线成人av网站| 91色在线porny| 国产成人免费视频网站| 免费的国产精品| 亚洲影视资源网| 亚洲欧洲99久久| 久久久不卡影院| 精品国产髙清在线看国产毛片| 欧美唯美清纯偷拍| 色悠悠久久综合| www.99精品| 丁香网亚洲国际| 国产一区二区三区四区在线观看| 成人午夜精品在线| 欧美精品三级日韩久久| 色综合中文综合网| 亚洲你懂的在线视频| 中国av一区二区三区| 久久这里只有精品首页| 日韩免费一区二区三区在线播放| 欧美日本一区二区| 欧美色综合天天久久综合精品| 91蜜桃网址入口| 91同城在线观看| 99国产欧美另类久久久精品| 岛国精品在线观看| 国产成人亚洲综合a∨婷婷图片| 奇米一区二区三区av| 五月激情六月综合| 香蕉成人伊视频在线观看| 亚洲午夜久久久| 亚洲小说春色综合另类电影| 亚洲精品久久久蜜桃| 亚洲欧美日韩国产综合| 亚洲美女免费在线| 亚洲综合色噜噜狠狠| 一区二区视频在线| 亚洲精品国产成人久久av盗摄| 亚洲欧美国产三级| 亚洲美女屁股眼交| 亚洲一区在线观看网站| 亚洲午夜电影网| 午夜精品久久一牛影视| 日韩精品电影一区亚洲| 日本成人在线网站| 久久精品国产精品亚洲精品| 久久99精品国产91久久来源| 狠狠色丁香婷婷综合久久片| 国产精品1区2区3区在线观看| 粉嫩蜜臀av国产精品网站| 成人国产精品免费观看| 一本到不卡免费一区二区| 色老头久久综合| 91麻豆精品国产91久久久久久 | 精品国产青草久久久久福利| 久久蜜臀精品av| 国产精品理论片在线观看| 最近中文字幕一区二区三区| 玉足女爽爽91| 日本中文在线一区| 国产中文字幕一区| 成人综合日日夜夜| 在线精品视频免费播放| 538prom精品视频线放| 精品日韩在线观看| 国产欧美久久久精品影院| 亚洲人成精品久久久久久| 首页国产丝袜综合| 老司机午夜精品| av在线不卡免费看| 国产伦精一区二区三区| 国产精品系列在线观看| 91视频免费播放| 欧美卡1卡2卡| 亚洲国产精品t66y| 一区二区三区日韩欧美精品| 日本午夜一区二区| 国产69精品久久久久777| 色婷婷激情综合| 精品国产免费一区二区三区四区| 中文字幕人成不卡一区| 日韩主播视频在线|