⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brw_unit.c

📁 好记星的控件,包括button,list,对文件操作
💻 C
📖 第 1 页 / 共 2 页
字号:
			return (UINT16)fontInfo.wFontWidth;
		}
	}

	/*是否为遇到的第一个全角字的标记*/
	bFirst = TRUE;
	/*一个unit结束的标记有:空格,回车,数据结束,分割符*/
	while (1)
	{	
		CodeWidth = FontGetCharCodeWidth(pSur);
		/*是否为全角字符*/
		if (CodeWidth != 1)
		{
			/*是否为自造字*/
			if (BrowserJudgeUserFont(pSur))
			{
				/*自造字当作字母看待*/
				wMemLen = 2;
				bFirst = FALSE;
			}
			else
			{
				if (bFirst)
				{
					if(CodeWidth == 2)
					{/*全角字也是uint的结束标记*/
						*p++ = *pSur++;
						*p++ = *pSur++;
					}
					else if(CodeWidth == 4)
					{
						*p++ = *pSur++;
						*p++ = *pSur++;
						*p++ = *pSur++;
						*p++ = *pSur++;
					}
					(*wMoveLen) += CodeWidth;
				}
				break;
			}
		}
		else
		{
			if (BrowserUnitLegality(pSur))
			{
				wMemLen = 1;
				bFirst = FALSE;
			}
			else
			{
				break;
			}
		}
		/*复制字符到缓存*/
		if ((*wMoveLen + wMemLen) >= BROWSER_UNIT_MAXLEN)
		{
			break;
		}
		for (i=0;i<wMemLen;i++)
		{
			*p++ = *pSur++;
			(*wMoveLen) ++;
		}
	}
	*p = 0;
	/*计算显示长度,以点为单位 */
	FontGetStringRect(&ww,&hh,pUnitBuff);
	wUnitWidth = (UINT16)ww;
	wUnitHeight = (UINT16)hh;
	/*不可识别的字符,以' '替换*/
	if (wUnitWidth == 0)
	{
		UINT32 sLen,j;

		sLen = strlen(pUnitBuff);
		for(j = 0;j< sLen;j ++)
		{
			*(pUnitBuff+j) = ' ';
		}
		FontGetStringRect(&ww,&hh,pUnitBuff);
		wUnitHeight = (UINT16)hh;
		wUnitWidth = (UINT16)ww;
	}
	/*返回字符串宽度*/
	BROWSER_STACK_FREE(handle,sizeof(MUnitInfo));
	BROWSER_STACK_FREE(handle,BROWSER_UNIT_MAXLEN);
	return wUnitWidth;
}


/************************************************************************/
/* 函数名称: BrowserDrawOneUnit                                           */
/* 函数描述: 绘制一个显示单元                                           */
/* 当前版本: 1.0                                                        */
/* 作    者: gaolinhui                                                      */
/* 输入参数:                                                            */
/*			handle			- 对象句柄									*/
/*			pData			- 数据指针									*/
/*			pString			- 字符串									*/
/*			line			- 行										*/
/*			column			- 列										*/
/* 输出参数:                                                            */
/*          NONE					                                    */
/* 返回值  :                                                            */
/*          NONE	                                                    */
/* 更改记录:                                                            */
/* =====================================================================*/
/*    日期       人员       版本   描述                                 */
/* =====================================================================*/
/* 2006-3-1    gaolinhui      1.0    创建	                                */
/************************************************************************/
VOID BrowserDrawOneUnit(MBrowser *handle,UINT8 *pString,
					  UINT32 line,UINT16 column)
{
	UINT16 x,y,gain;
	UINT16 x0,y0;
	UINT16 wUnitWidth,wUnitHeight;
	UINT16 height;

	/*控件起始坐标*/
	x0 = handle->pBrwInfo->nX;
	y0 = handle->pBrwInfo->nY;
	/*根据状态设置相应字体*/
	BrowserSetFontID(handle);
	/*计算起始坐标*/
	BrowserLineColToXY(handle,line,column,&x,&y);
	/*计算显示长度*/
	FontGetStringRect(&wUnitWidth,&wUnitHeight,pString);
	/*显示字符串*/
	height = BrowserLinesHeight(handle,line + handle->pBrwInfo->dwTopLine,
		line + handle->pBrwInfo->dwTopLine);
	height -= handle->pBrwInfo->wLineSpace;
	//gain = (height - wUnitHeight) / 2;
	gain = height - wUnitHeight;
	y += gain;
	GraphDrawText(x0+x,y0+y,wUnitWidth,wUnitHeight,pString);
	wUnitHeight = height;
	/*制造特殊效果*/
	/*虚下划线*/
	if ((handle->pBrwInfo->wStates & BROWSER_STATE_DASHLINE))
	{
		UINT16 wPenStyle;
		wPenStyle = GraphSetPenStyle(PS_DASH);
		GraphDrawLine(x0+x,y0+y + wUnitHeight,
			x0+x + wUnitWidth,y0+y + wUnitHeight);
		GraphSetPenStyle(wPenStyle);
	}
	/*实下划线*/
	if (handle->pBrwInfo->wStates & BROWSER_STATE_UNDERLINE)
	{
		UINT16 wPenStyle;
		wPenStyle = GraphSetPenStyle(PS_SOLID);
		GraphDrawLine(x0+x,y0+y + wUnitHeight,
			x0+x + wUnitWidth,y0+y + wUnitHeight);
		GraphDrawLine(x0+x,y0+y + wUnitHeight + 1,
			x0+x + wUnitWidth,y0+y + wUnitHeight + 1);
		GraphSetPenStyle(wPenStyle);
	}
}



/************************************************************************/
/* 函数名称: BrowserDefaultRule	                                        */
/* 函数描述: 标记处理函数	                                            */
/* 当前版本: 1.0                                                        */
/* 作    者: gaolinhui                                                  */
/* 输入参数:                                                            */
/*			pDview			- 对象句柄									*/
/*			pString			- 数据指针									*/
/* 输出参数:                                                            */
/*          NONE					                                    */
/* 返回值  :                                                            */
/*          内存长度				                                    */
/* 更改记录:                                                            */
/* =====================================================================*/
/*    日期       人员       版本   描述                                 */
/* =====================================================================*/
/* 2006-3-1    gaolinhui      1.0    创建	                                */
/************************************************************************/
UINT BrowserDefaultRule(MBrowser *handle,UINT8 *pString,
						UINT uOption,MUnitInfo *pUnit)
{
	UINT8 ch,ch1;
	
	ch = *pString;
	ch1 = *(pString + 1);
	if (handle->pBrwInfo->byExtraType != BROWSER_EXTRA_NOTHING)
	{
		UINT32 dwOffset;

		dwOffset = pString - handle->pBrwInfo->pBuffer;
		if ((dwOffset >= handle->pBrwInfo->dwExtraStart)
			&& (dwOffset < handle->pBrwInfo->dwExtraEnd))
		{
			if (handle->pBrwInfo->byExtraType == BROWSER_EXTRA_BOLD)
			{
				handle->pBrwInfo->wStates |= BROWSER_STATE_BOLD;
			}
			else if (handle->pBrwInfo->byExtraType == BROWSER_EXTRA_ITALIC)
			{
				handle->pBrwInfo->wStates |= BROWSER_STATE_ITALIC;
			}
		}
		else
		{
			handle->pBrwInfo->wStates &= ~BROWSER_STATE_BOLD;
			handle->pBrwInfo->wStates &= ~BROWSER_STATE_ITALIC;
		}
	}
	if (ch == BROWSER_CHAR_RETURN)
	{
		if (ch1 == BROWSER_CHAR_NEWLINE)
		{
			pUnit->uMemLen = 2;
		}
		else
		{
			pUnit->uMemLen = 1;
		}
		pUnit->uType = BROWSER_UNIT_CONTROL;
		pUnit->mResource.uCtrlType = UNIT_CTRL_RETURN;
	}
	else if (ch == BROWSER_DATA_END)
	{
		pUnit->uType = BROWSER_UNIT_CONTROL;
		pUnit->mResource.uCtrlType = UNIT_CTRL_END;
	}
	else if( ch < 0x20 )
	{
		pUnit->uType = BROWSER_UNIT_CONTROL;
		pUnit->mResource.uCtrlType = UINT_CTRL_UNKNOWN;
		pUnit->uMemLen = 1;
	}
	else
	{
		pUnit->uType = BROWSER_UNIT_STRING;
	}
	return pUnit->uType;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -