#include "StdAfx.h"
#include "DXFMeta.h"
//图元名称
const string DXFMeta::NAMES[MetaTypes]={"OTHER","LINE","CIRCLE","POLYLINE"};
//************************************
// 图元对象是所有图元的基类,针对DXF的行和偏移
// 的字节数,利用虚函数读取相关图元信息来构建一
// 个图元对象
// Method: DXFMeta
// FullName: DXFMeta::DXFMeta
// Access: public
// Returns:
// Qualifier:
// Parameter: UINT rCount 所在DXF文件的行号
// Parameter: UINT seekBytes所在DXF文件的字节
// 偏移位置
// Author:zhengzhe 2011-11-22
//************************************
DXFMeta::DXFMeta(UINT rCount,UINT seekBytes)
{
m_rowEndIndex=m_rowStartIndex=rCount;
m_memSeekEndPos=m_memSeekStartPos=seekBytes;
type = OTHER;
}
DXFMeta::~DXFMeta(void)
{
}
//************************************
// 获取图元名称
// Method: GetName
// FullName: DXFMeta::GetName
// Access: public
// Returns: std::string
// Qualifier: const
// Author:zhengzhe 2011-11-22
//************************************
std::string DXFMeta::GetName() const
{
return NAMES[GetMetaType()];
}
//************************************
// 获取图元类型
// Method: GetMetaType
// FullName: DXFMeta::GetMetaType
// Access: public
// Returns: DXFMeta::DXFMetaType
// Qualifier: const
// Author:zhengzhe 2011-11-22
//************************************
DXFMeta::DXFMetaType DXFMeta::GetMetaType() const
{
return type;
}
//************************************
// 读取一行信息的更新操作,增加一行,并更新读写指针
// 偏移的字节数
// Method: IncrementCount
// FullName: DXFMeta::IncrementCount
// Access: public
// Returns: void
// Qualifier:
// Parameter: DXFMeta & meta
// Parameter: char * tmp
// Author:zhengzhe 2011-11-22
//************************************
void DXFMeta::IncrementCount( DXFMeta &meta, char * tmp )
{
++meta.m_rowEndIndex;
meta.m_memSeekEndPos+=(strlen(tmp)+1)*sizeof(char);
}
//************************************
// 获取线信息在文档中的结束位置的偏移字节数
// Method: GetSeekEndPos
// FullName: DXFLine::GetSeekEndPos
// Access: virtual public
// Returns: UINT
// Qualifier: const
// Author: zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetSeekEndPos() const
{
return m_memSeekEndPos;
}
//************************************
// 获取信息结束的行号
// Method: GetRowEndIndex
// FullName: DXFMeta::GetRowEndIndex
// Access: public
// Returns: UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetRowEndIndex() const
{
return m_rowEndIndex;
}
//************************************
// 获取信息开始的行号
// Method: GetRowStartIndex
// FullName: DXFMeta::GetRowStartIndex
// Access: public
// Returns: UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetRowStartIndex() const
{
return m_rowStartIndex;
}
//************************************
// 获取未修改前信息数据的字节大小
// Method: GetOrgByteSize
// FullName: DXFMeta::GetOrgByteSize
// Access: public
// Returns: UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetOrgByteSize() const
{
return m_orgByteSize;
}
//************************************
// 获取修改后信息数据的字节大小
// Method: GetCurByteSize
// FullName: DXFMeta::GetCurByteSize
// Access: public
// Returns: UINT 字节数
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetCurByteSize() const
{
return m_curByteSize;
}
//************************************
// 计算当前字节大小
// Method: CalCurByteSize
// FullName: DXFMeta::CalCurByteSize
// Access: public
// Returns: void
// Qualifier:
// Author:zhengzhe 2011-11-21
//************************************
void DXFMeta::CalCurByteSize()
{
m_curByteSize = m_memSeekEndPos-m_memSeekStartPos;
}
//************************************
// 获取该线段描述开始在文档中偏移的字节位置
// Method: GetSeekStartPos :
// FullName: DXFLine::GetSeekStartPos
// Access: virtual public
// Returns: UINT
// Qualifier: const
// Author:zhengzhe 2011-11-21
//************************************
UINT DXFMeta::GetSeekStartPos() const
{
return m_memSeekStartPos;
}
//************************************
// 显示图元基本信息
// Method: operator<<
// FullName: operator<<
// Access: public
// Returns: ostream&
// Qualifier:
// Parameter: ostream & os
// Parameter: const DXFMeta & meta
// Author:zhengzhe 2011-11-21
//************************************
ostream& operator<<( ostream& os,const DXFMeta& meta )
{
os<<"Meta Info:\n"
<<"----------------------------------"
<<"\n\tMeta Name:"<< meta.GetName()
<<"\n\tOrgInfo Byte Size:"<
http://blog.csdn.net/password318/article/details/7009939