You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.8 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 Layer.h
//主要功能:
// 所有外扩类的基类由此类派生的类可由COne类进行管理使用CXy统一读写等
//
//程序编写: 2009-10-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "..\DrawModel\baseobject.h"
#include ".\xydc.h"
//从此类扩展的元素类型ID值必须>=100
class AFX_EXT_CLASS CBaseExtend :
public CBaseObject
{
public:
CBaseExtend(void);
virtual ~CBaseExtend(void);
/** @brief 绘制对象本身 */
virtual void Draw(CXyDC& dc);
/** @brief 克隆该对象*/
virtual CBaseExtend* CreateClone();
/** @brief 保存为DML格式 */
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
/** @brief 保存为PCG格式 */
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
/** @brief 根据偏移矩阵修改参数 */
virtual void Transform(CXyDC* pDC, float* matrix, BOOL bUndo);
/** @brief type为校正类型,比如两点校位、四点校位等;pValue为类对象指针如CCalibrate2、CCalibrate4等 */
virtual void Calibrate(int type, void* pValue);
/** @brief 交换XY坐标 */
virtual void ExchangeXY(void);
/** @brief 转换到指定投影坐标 */
virtual void ExchangeXY(CProjection& xyz);
virtual void ScaleProperty(double sx, double sy);
/** @brief mode=0:加1:减2:乘3:除 */
virtual void ScaleCoordinate(double sx, double sy, int mode);
virtual CXy* GetParentXY() { return NULL; } //ggff2025
virtual void SetParentXY(CXy* pxy) { } //ggff2025
virtual void Draw(CXyDC& dc, void* pHowToView) { };
virtual int ReadPCG(CFile &fr, const short& ver);
/** @brief 处理组合块符号没有加载到当前符号 */
virtual int ReadPCGEx(CFile &fr, const short &ver, void *pXy = nullptr);
virtual int ReadPCG(CKXmlParse& xp, const short& ver);
/** @brief 处理组合块符号没有加载到当前符号 */
virtual int ReadPCGEx(CKXmlParse& xp, const short &ver, void *pXy = nullptr);
};
class AFX_EXT_CLASS CBaseExtendType
{
public:
CBaseExtendType(void) {};
virtual CBaseExtend* CreateExtendObject(int nType) { return NULL; }; //根据指定类型生成对像类型ID号必须>=100
virtual int GetExtendType(LPCTSTR lpszKey) {return 0;}; //根据指定字符串生成对像类型类型ID号必须>=100
virtual CString GetTypeName() { return m_TypeName; };
virtual int GetTypeID() { return m_nType; };
CString m_TypeName; //ggff20250326 add
int m_nType;
};
class AFX_EXT_CLASS CBaseExtendManager
{
public:
CBaseExtendManager(void);
~CBaseExtendManager(void);
void AddBaseExtend(CBaseExtendType* pet);
void ClearBaseExtend();
CPtrList m_listExtend; //基础扩展类
CBaseExtend* CreateExtendObject(int nType);
int GetExtendType(LPCTSTR lpszKey);
CString GetTypeNameFromTypeID(int nType);
//BOOL IsExtendType(int nType);
};
extern CBaseExtendManager m_baseExtendManager;
extern "C" AFX_EXT_API CBaseExtendManager * WINAPI AfxGetBaseExtendManager();