www.pudn.com > UCGUI390a.rar > GPS_DrawLibs.c


// 
// 
 
#include "GUI.h" 
#include "GPS_TypeDefine.h" 
 
extern int isShowFigure(int iTypeID); 
extern int isShowName(int iTypeID); 
extern const GUI_FONT GUI_FontHZ_SimSun_12; 
 
//--------------------------------------------------------------------------- 
//函数功能: 
//	根据地图显示配置表决定是否画折线,是否显示名称.地图显示配置表 
//		GPS_MapShowCfgTbl参见GPS_TypeDefine.h 
//	根据折线的类型决定线的粗细 
//输入参数: 
//	PolyLineSet:参考PolyLineSet数据结构的定义 
//输出:整形 
//	1	: 找不到显示配置,默认全显示 
//	2	: 配置要求不显示 
//	0	: OK 
//	-1	: 输入参数错误	 
//	-9	: 其他错误 
//---------------------------------------------------------------------------- 
int GPS_DrawPolyLine(PolyLineSet* pPlineSet) 
{ 
	// 
	int iPLCount, i; 
	int iShowName; 
	int x,y; 
 
	if( !isShowFigure(pPlineSet->type_id) ) 
	{ 
		return  2; 
	} 
 
	iShowName = isShowName(pPlineSet->type_id); 
	iPLCount = pPlineSet->iPLCount; 
	//GUI_SetDrawMode(GUI_DM_NORMAL); 
	for(i=0; icolor); 
		//画线 
		GUI_DrawPolyLine(pPlineSet->pPLs[i].points, pPlineSet->pPLs[i].count, 0, 0); 
		if( iShowName ) 
		{	 
			//显示名称 
			GUI_SetTextMode(GUI_DRAWMODE_XOR); 
			GUI_SetFont(&GUI_FontHZ_SimSun_12); 
			x = pPlineSet->pPLs[i].points[pPlineSet->pPLs[i].count>>1].x; 
			y = pPlineSet->pPLs[i].points[pPlineSet->pPLs[i].count>>1].y; 
			GUI_DispStringHCenterAt(pPlineSet->pPLs[i].name, x, y+6); 
			GUI_SetTextMode(GUI_DRAWMODE_NORMAL); 
		} 
	} 
 
	return 0; 
} 
 
//--------------------------------------------------------------------------- 
//函数功能: 
//	根据地图显示配置表决定是否画点,是否显示名称.地图显示配置表 
//		GPS_MapShowCfgTbl参见GPS_TypeDefine.h 
//	根据点的类型决定线的粗细 
//输入参数: 
//	PositionSet:参考PositionSet数据结构的定义 
//输出:整形 
//	1	: 找不到显示配置,默认全显示 
//	2	: 配置要求不显示 
//	0	: OK 
//	-1	: 输入参数错误	 
//	-9	: 其他错误 
//---------------------------------------------------------------------------- 
extern int _Width; 
int GPS_DrawPosition(PositionSet* pPt) 
{ 
	// 
	int i = 0; 
	if(!isShowFigure(pPt->type_id)) 
	{ 
		return 2; 
	} 
	 
	for( ; iiPtsCount; i++) 
	{ 
		GUI_SetColor(pPt->color); 
		GUI_FillCircle(pPt->pPts[i].x, pPt->pPts[i].y, ((int)(4*_Width/960)+1)); 
		GUI_SetColor(GUI_BLACK); 
		if (isShowName(pPt->type_id)) 
		{ 
			GUI_SetTextMode(GUI_DRAWMODE_XOR); 
			GUI_SetFont(&GUI_FontHZ_SimSun_12); 
			GUI_DispStringAt(pPt->pPts[i].name, pPt->pPts[i].x, pPt->pPts[i].y+6); 
			GUI_SetTextMode(GUI_DRAWMODE_NORMAL); 
		} 
	} 
	 
	return 0; 
} 
 
int GPS_DrawPolygon(PolygonSet* pPolySet) 
{ 
	// 
	int iPolys; 
	int iShowName; 
	int x, y, i, tmp; 
 
	if (!isShowFigure(pPolySet->type_id)) 
	{ 
		return 2; 
	} 
 
	iPolys = pPolySet->iPolyCount; 
	iShowName = isShowName(pPolySet->type_id); 
	//GUI_SetDrawMode(GUI_DM_NORMAL); 
	for (i=0; icolor); 
		//画区域 
		GUI_FillPolygon(pPolySet->pPoly[i].outline->points, pPolySet->pPoly[i].outline->count, 0, 0); 
		//GUI_DrawPolygon(pPolySet->pPoly[i].outline->points, pPolySet->pPoly[i].outline->count, 0, 0); 
		if( iShowName ) 
		{	 
			//显示名称 
			tmp = pPolySet->pPoly[i].outline->count; 
			x = (pPolySet->pPoly[i].outline->points[100&tmp-1].x + pPolySet->pPoly[i].outline->points[tmp>>1].x)>>1; 
			y = (pPolySet->pPoly[i].outline->points[100&tmp-1].y + pPolySet->pPoly[i].outline->points[tmp>>1].y)>>1; 
			GUI_SetTextMode(GUI_DRAWMODE_XOR); 
			GUI_SetFont(&GUI_FontHZ_SimSun_12); 
			GUI_DispStringHCenterAt(pPolySet->pPoly[i].name, x, y); 
			GUI_SetTextMode(GUI_DRAWMODE_NORMAL); 
		} 
	} 
 
	return 0; 
}