//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ObjectFactory.h #pragma once #include "ObjectFill.h" #include "ObjectPolyline.h" class CGDFObject; class CGDFLayer; #define OBJECT_MEMORYSIZE 4096 #define OBJECT_MEMORYSIZEMIN 1024 class CObjectMemoryPolyline { public: CObjectMemoryPolyline(); ~CObjectMemoryPolyline(); CObjectPolyline m_linearray[OBJECT_MEMORYSIZE]; BYTE m_flag[OBJECT_MEMORYSIZE]; DWORD m_dwCount; CObjectPolyline* NewLine(); CObjectPolyline* NewLineNewPos(); BOOL DeleteLine(CObjectPolyline* pLine); }; class CObjectMemoryFill { public: CObjectMemoryFill(); ~CObjectMemoryFill(); CGDFObjectFill m_fillarray[OBJECT_MEMORYSIZEMIN]; BYTE m_flag[OBJECT_MEMORYSIZEMIN]; DWORD m_dwCount; CGDFObjectFill* NewFill(); CGDFObjectFill* NewFillNewPos(); BOOL DeleteFill(CGDFObjectFill* pFill); }; class CGDFObjectCreator { public: CGDFObjectCreator(); ~CGDFObjectCreator(); //Attributes private: CTypedPtrArray m_linearray; CTypedPtrArray m_fillarray; CTypedPtrArray m_ClassArray;//注册的图形类 CTypedPtrArray*> m_ObjectArrayArray;//保存废弃的图形对象 //Operations public: CGDFObjectFill* CreateFill(); CObjectPolyline* CreateLine(); void DeleteObject(CGDFObject* pObject); void DeleteObject(CTypedPtrArray& ObjectArray); void RegisterClass(CRuntimeClass* pRuntimeClass); private: void DeleteFill(CGDFObjectFill* pFill); void DeleteLine(CObjectPolyline* pLine); }; extern "C" AFX_EXT_API CGDFObjectCreator* WINAPI AfxGetObjectFactory();