www.gusucode.com > VC++开源的SHP格式GIS地图查看软件源程序源码程序 > VC++开源的SHP格式GIS地图查看软件源程序源码程序\code\MapRender.cpp

    //Download by http://www.NewXing.com
#include "stdafx.h"
//#include "global.h"
#include "MapRender.h"
extern UINT MapRand(UINT nMax);

CMapRender::CMapRender()
{
	m_SimpleRender.FillColor = RGB(MapRand(255),MapRand(255),MapRand(255));
	m_SimpleRender.OutlineColor = RGB(0,0,0);
	m_SimpleRender.iIndex = 0;	
	m_RenderType = SIMPLE_RENDER;
	m_FieldIndex = -1;

}


CMapRender::~CMapRender()
{

	Clear();
}

void CMapRender::Add(RENDERINFO& rInfo )
{
	int i;
	RENDERINFO* pInfo;

	for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
    {

		pInfo = (RENDERINFO*)m_Render.GetAt(i);
	    if ( pInfo->csValue == rInfo.csValue )
			return;   
	} 
	pInfo = new RENDERINFO;
    if ( pInfo == NULL )
		return;
	pInfo->csValue = rInfo.csValue; 
    pInfo->clr =  rInfo.clr;
	m_Render.Add(pInfo); 


}

void  CMapRender::RemoveByValue(CString& csValue)
{
	int i;
	RENDERINFO* pInfo;

	for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
    {

		pInfo = (RENDERINFO*)m_Render.GetAt(i);
	    if ( pInfo->csValue == csValue )
        {   
			delete pInfo;
			m_Render.RemoveAt(i);
			break;
        }  
    } 

}

void  CMapRender::RemoveByIndex(int iIndex )
{


	RENDERINFO* pInfo;

	if ( iIndex < 0 || iIndex >= m_Render.GetSize())
		return ;
	
	pInfo = (RENDERINFO*)m_Render.GetAt(iIndex);
	delete pInfo;
	m_Render.RemoveAt(iIndex);


}

int  CMapRender::GetCount()
{

	return m_Render.GetSize();
	

}


RENDERINFO* CMapRender::GetByValue(CString& csValue)
{
	int i;
	RENDERINFO* pInfo;

	for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
    {

		pInfo = (RENDERINFO*)m_Render.GetAt(i);
	    if ( pInfo->csValue == csValue )
			return pInfo;
    } 
	return NULL;



}

RENDERINFO* CMapRender::GetByIndex(int iIndex)
{
	
	RENDERINFO* pInfo;

	if ( iIndex < 0 || iIndex >= m_Render.GetSize())
		return NULL;
	
	pInfo = (RENDERINFO*)m_Render.GetAt(iIndex);
	return pInfo;
}

void CMapRender::Clear()
{
	int i;
	RENDERINFO* pInfo;

	for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
    {

		pInfo = (RENDERINFO*)m_Render.GetAt(i);
		delete pInfo; 
    } 
	m_Render.RemoveAll(); 


}

void CMapRender::SetSimpleRender( SIMPLERENDER& simpleRender )
{
	m_SimpleRender.FillColor = simpleRender.FillColor;
	m_SimpleRender.OutlineColor = simpleRender.OutlineColor;
	m_SimpleRender.iIndex = simpleRender.iIndex;
		
 
}
void CMapRender::GetSimpleRender( SIMPLERENDER& simpleRender )
{

	simpleRender.FillColor  =	m_SimpleRender.FillColor; 
	simpleRender.OutlineColor = m_SimpleRender.OutlineColor;
	simpleRender.iIndex = m_SimpleRender.iIndex ;


}

void CMapRender::SetFieldIndex(int iIndex)
{
	m_FieldIndex = iIndex;

}

int CMapRender::GetFieldIndex()
{
	return m_FieldIndex ;

}

void CMapRender::Clone(CMapRender *pRender)
{
	int i;
	SIMPLERENDER simple;
	RENDERINFO   *pInfo;
	RENDERINFO   InfoNew;
	if ( pRender == NULL )
		return;
	pRender->SetRenderType(GetRenderType());
    GetSimpleRender(simple); 
	pRender->SetSimpleRender(simple);
	pRender->SetFieldIndex(GetFieldIndex());
	
    for ( i = 0 ; i < m_Render.GetSize() ; i++ )  	
    {
		pInfo = (RENDERINFO*)m_Render.GetAt(i);
		InfoNew.csValue = pInfo->csValue;
		InfoNew.clr  = pInfo->clr;
        pRender->Add(InfoNew);   

    }    
}