浅析μC/GUI-v3.90a之GUI_DispString函数
来源:互联网 发布:进销存的软件 编辑:程序博客网 时间:2024/05/17 04:34
1.GUI_DispString()函数
gui/core/GUI_DispString.c
gui/core/GUI_DispString.c
void GUI_DispString(const char GUI_UNI_PTR *s) { int xAdjust, yAdjust, xOrg; int FontSizeY; if (!s) return; GUI_LOCK(); FontSizeY = GUI_GetFontDistY(); //Font的y大小,默认8 xOrg = GUI_Context.DispPosX; /* Adjust vertical position */ yAdjust = GUI_GetYAdjust(); //垂直对齐方式 GUI_Context.DispPosY -= yAdjust; for (; *s; s++) { GUI_RECT r; int LineNumChars = GUI__GetLineNumChars(s, 0x7fff); //获取一行\0或\n 8bits字节数[该版本只能显示英文] int xLineSize = GUI__GetLineDistX(s, LineNumChars); //这些数据所占用x轴上横向点阵数 /* 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; //该行字体显示矩形区域r GUI__DispLine(s, LineNumChars, &r); //显示该行数据 GUI_Context.DispPosY = r.y0; s += GUI_UC__NumChars2NumBytes(s, LineNumChars); //s指向下一行待显示的数据区 if ((*s == '\n') || (*s == '\r')) { switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) { case GUI_TA_CENTER: case GUI_TA_RIGHT: GUI_Context.DispPosX = xOrg; //居中和右对齐,传递函数原始位置xOrg break; default: GUI_Context.DispPosX = GUI_Context.LBorder; break; } if (*s == '\n') GUI_Context.DispPosY += FontSizeY; //回车,转入下一行 } else { GUI_Context.DispPosX = r.x0 + xLineSize; //接着上一行的结束位置,继续显示 } if (*s == 0) //待显示数据已经显示完毕 break; } GUI_Context.DispPosY += yAdjust; //将垂直对齐方式还原成未调用GUI_DispString之前值 GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL; //清除文本水平对齐方式 GUI_UNLOCK();}-------------------------------------------------------------------------------------2.GUI__DispLine()函数 2007-07-11 gliethttpgui/core/GUICharLine.cvoid GUI__DispLine(const char GUI_UNI_PTR *s, int MaxNumChars, const GUI_RECT* pr) { GUI_RECT r; { r = *pr; #if GUI_WINSUPPORT WM_ADDORG(r.x0, r.y0); WM_ADDORG(r.x1, r.y1); //将矩形(r.x0,r.y0)平移到(GUI_Context.xOff,GUI_Context.yOff)坐标处 WM_ITERATE_START(&r) { //计算剪切域,另用《浅析μC/GUI-v3.90a之WM_ITERATE_START剪切域计算宏》专门讨论 #endif GUI_Context.DispPosX = r.x0; GUI_Context.DispPosY = r.y0; /* Do the actual drawing via routine call. */ _DispLine(s, MaxNumChars, &r); #if GUI_WINSUPPORT } WM_ITERATE_END(); WM_SUBORG(GUI_Context.DispPosX, GUI_Context.DispPosY); #endif }}
- 浅析μC/GUI-v3.90a之GUI_DispString函数
- 浅析C语言之sprintf函数
- Android之GUI层浅析--开发者角度
- Android之GUI层浅析--开发者角度
- 【Unity3D入门教程】Unity3D之GUI浅析
- C语言函数浅析
- C++inline函数浅析
- 函数递归之a!+b!+c!
- cocos2d-x v3.3之HelloWorld浅析(windows)
- C ++之继承浅析
- μc/GUI学习笔记之二第一个程序
- irq-gic-v3.c之gic_of_init
- irq-gic-v3.c之set_handle_irq 分析
- class.c重要函数浅析
- BITACM 1056 A^B mod C v3.0
- linux之fork函数浅析
- shell编程之函数浅析
- object-c之NSdate浅析
- 矩阵分析(一)线性空间和线性变换
- HIbernate中Query.setDate()
- 【贪心】charge-station
- 火狐必备插件之--TAMPER DATA 使用
- perl详解
- 浅析μC/GUI-v3.90a之GUI_DispString函数
- cocos2dx之创建Button
- c++学习连载-堆排序学习及遇到问题
- ftw遍历目录树
- [ jQuery] jquery动态改变onclick属性失效的问题!
- js根据URL设置网站统一导航。
- C# 数字格式化 自动补0
- PL/SQL删除锁表的进程
- Linux下*.tar.gz文件解压缩命令