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