#include "pch.h"
#include "MxHead.h"
#include "MxDxfData.h"

MxDxfData	MxDxfData::s_instance;

MxDxfData::MxDxfData(void)
{

}

MxDxfData::~MxDxfData(void)
{
}

void MxDxfData::Init()
{
	// 将来把系统变量的DXF Code初始化到这里。
	// 比如当前层系统变量的dxf Code 是 8.
	m_mapSysVarCodeDefault.insert(std::make_pair(_T("CLAYER"),8) );

	m_mapSysVarCodeDefault.insert(std::make_pair(_T("CELTSCALE"),40) );

	m_mapSysVarCodeDefault.insert(std::make_pair(_T("CELTYPE"),6) );

	m_mapSysVarCodeDefault.insert(std::make_pair(_T("TEXTSTYLE"),7) );
	
	m_mapSysVarCodeDefault.insert(std::make_pair(_T("CECOLOR"),62) );	
}


MxDxfData&	MxDxfData::Instance()
{
	return s_instance;
}

bool MxDxfData::GetSysVarCode(MxString sVarName,int& iCode)
{
	sVarName.MakeUpper();

	{
		std::map<MxString,int>::iterator iter
			= m_mapSysVarCodeDefault.find(sVarName);
		if(iter != m_mapSysVarCodeDefault.end() )
		{
			iCode = iter->second;
			return true;
		}
	}

	{
		std::map<MxString,int>::iterator iter
			= m_mapSysVarCode.find(sVarName);
		if(iter != m_mapSysVarCode.end() )
		{
			iCode = iter->second;
			return true;
		}
	}
	
	return false;
}

void MxDxfData::SetSysVarCode(MxString sVarName,int iCode)
{
	sVarName.MakeUpper();
	std::map<MxString,int>::iterator iter
		= m_mapSysVarCode.find(sVarName);

	if(iter != m_mapSysVarCode.end())
	{
		iter->second = iCode;
	}
	else
	{
		m_mapSysVarCode.insert(std::make_pair(sVarName,iCode) );
	}

}