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.

72 lines
1.7 KiB
C

1 month ago
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//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<CPtrArray,CObjectMemoryPolyline*> m_linearray;
CTypedPtrArray<CPtrArray,CObjectMemoryFill*> m_fillarray;
CTypedPtrArray<CPtrArray,CRuntimeClass*> m_ClassArray;//ע<><D7A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
CTypedPtrArray<CPtrArray,CTypedPtrArray<CPtrArray,CGDFObject*>*> m_ObjectArrayArray;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ζ<EFBFBD><CEB6><EFBFBD>
//Operations
public:
CGDFObjectFill* CreateFill();
CObjectPolyline* CreateLine();
void DeleteObject(CGDFObject* pObject);
void DeleteObject(CTypedPtrArray<CPtrArray,CGDFObject*>& ObjectArray);
void RegisterClass(CRuntimeClass* pRuntimeClass);
private:
void DeleteFill(CGDFObjectFill* pFill);
void DeleteLine(CObjectPolyline* pLine);
};
extern "C" AFX_EXT_API CGDFObjectCreator* WINAPI AfxGetObjectFactory();