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++
72 lines
1.7 KiB
C++
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//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;//注册的图形类
|
|
CTypedPtrArray<CPtrArray,CTypedPtrArray<CPtrArray,CGDFObject*>*> m_ObjectArrayArray;//保存废弃的图形对象
|
|
//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();
|
|
|