CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GiMetafiler.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24#ifndef __OD_GI_METAFILER__
25#define __OD_GI_METAFILER__
26
27#include "Gi/GiConveyorNode.h"
28#include "ChunkAllocator.h"
29#include "Ge/GeDoubleArray.h"
30
31class OdGiDeviation;
32
33#include "TD_PackPush.h"
34
40class ODGI_EXPORT OdGiGeometryMetafile : public OdRxObject
41{
42public:
43 //DOM-IGNORE-BEGIN
45
47 //DOM-IGNORE-END
48
52 class Record
53 {
54 protected:
55 //DOM-IGNORE-BEGIN
57 public:
59 //DOM-IGNORE-END
60
65 : m_pTail(0)
66 {}
67
71 virtual ~Record() {}
72
80 {
81 return m_pTail;
82 }
83
90 const Record* tail() const
91 {
92 return m_pTail;
93 }
94
100 void setTail(Record* pTail)
101 {
102 m_pTail = pTail;
103 }
104
108 inline void deleteList()
109 {
110 Record* pCurr = this;
111 while(pCurr)
112 {
113 Record* pTail = pCurr->m_pTail;
114 delete pCurr;
115 pCurr = pTail;
116 }
117 }
118
125 virtual void play(OdGiConveyorGeometry* pGeom, OdGiConveyorContext* pCtx) const = 0;
126
133 virtual OdUInt64 recordSize() const { return (OdUInt64)sizeof(*this); }
134 };
135
136private:
137 //DOM-IGNORE-BEGIN
138 Record* m_pHead;
139
140 void destroyRecords()
141 {
142 if(m_pHead)
143 {
144 m_pHead->deleteList();
145 m_pHead = NULL;
146 }
147 }
148 //DOM-IGNORE-END
149public:
157
162
166 void clear();
167
175
182 void play(OdGiConveyorOutput& output, OdGiConveyorContext* pCtx) const;
183
190 virtual OdUInt64 metafileSize() const;
191
197 void setRecords(Record* pRec)
198 {
199 ODA_ASSERT(m_pHead == 0);
200 m_pHead = pRec;
201 }
202
209 bool isEmpty() const { return m_pHead == 0; }
210
217 Record *firstRecord() const { return m_pHead; }
218
226};
227
233
240{
241public:
242 //DOM-IGNORE-BEGIN
244 //DOM-IGNORE-END
245
251 virtual void setMetafile(OdGiGeometryMetafile* pMetafile) = 0;
252
260
266 virtual void exchangeMetafile(OdGiGeometryMetafile* pMetafile) = 0;
267
273 virtual void setDeviation(const OdGeDoubleArray& deviations) = 0;
274
280 virtual void setDeviation(const OdGiDeviation* pDeviation) = 0;
281
287 virtual void setDrawContext(OdGiConveyorContext* pDrawCtx) = 0;
288
305
311 virtual void setCoordinatesType(CoordType ct) = 0;
312
320 virtual CoordType coordinatesType() const = 0;
321
331 virtual bool saveTraits(const OdGiSubEntityTraitsData& entTraits, const OdGiSubEntityTraitsData *byBlockTraits = NULL) = 0;
332
341 virtual bool saveTraits(const OdGiSubEntityTraitsData *byBlockTraits) = 0;
342
349 virtual bool saveTraits() = 0;
350
356 virtual void flush(bool bForceTraits = true) = 0;
357
363 virtual void add(OdGiGeometryMetafile::Record* pRec) = 0;
364
379
385 virtual void setOptions(OdUInt32 options) {}
386
393 virtual OdUInt32 options() const { return 0; }
394};
395
401
403{
404public:
419 const OdGePoint3d* pVertexList,
421 const OdInt32* pFaceList,
422 const OdGiEdgeData* pEdgeData,
423 const OdGiFaceData* pFaceData,
424 const OdGiVertexData* pVertexData);
425
430
437 OdInt32 numVertices() const { return m_nbVertex; }
438
445 OdInt32 faceListSize() const { return m_faceListSize; }
446
447
454 const OdGePoint3d* vertices() const { return m_pVertexList; }
455
462 const OdInt32* faceList() const { return m_pFaceList; }
463
470 const OdGiEdgeData* edgeData() const { return m_pEdgeData; }
471
478 const OdGiFaceData* faceData() const { return m_pFaceData; }
479
486 const OdGiVertexData* vertexData() const { return m_pVertexData; }
487
488private:
489 OdInt32 m_nbVertex;
490 OdInt32 m_faceListSize;
491
492 OdGePoint3d* m_pVertexList;
493 OdInt32* m_pFaceList;
494
495 OdGiEdgeData* m_pEdgeData;
496 OdGiFaceData* m_pFaceData;
497 OdGiVertexData* m_pVertexData;
498
499 OdGiEdgeData m_edgeData;
500 OdGiFaceData m_faceData;
501 OdGiVertexData m_vertexData;
502};
503
504#include "TD_PackPop.h"
505
506#endif //#ifndef __OD_GI_METAFILER__
#define ODA_ASSERT(exp)
Definition DebugStuff.h:57
OdArray< double, OdMemoryAllocator< double > > OdGeDoubleArray
#define ODGI_EXPORT
Definition GiExport.h:35
OdSmartPtr< OdGiMetafiler > OdGiMetafilerPtr
OdSmartPtr< OdGiGeometryMetafile > OdGiGeometryMetafilePtr
unsigned int OdUInt32
int OdInt32
void setTail(Record *pTail)
const Record * tail() const
Definition GiMetafiler.h:90
virtual OdUInt64 recordSize() const
virtual void play(OdGiConveyorGeometry *pGeom, OdGiConveyorContext *pCtx) const =0
ODRX_DECLARE_MEMBERS(OdGiGeometryMetafile)
Record * lastRecord() const
void play(OdGiConveyorOutput &output, OdGiConveyorContext *pCtx) const
void setRecords(Record *pRec)
void play(OdGiConveyorGeometry *pGeom, OdGiConveyorContext *pCtx) const
Record * firstRecord() const
bool isEmpty() const
virtual ~OdGiGeometryMetafile()
virtual OdUInt64 metafileSize() const
virtual OdGiGeometryMetafile * metafile()=0
virtual OdUInt32 options() const
ODRX_DECLARE_MEMBERS(OdGiMetafiler)
virtual bool saveTraits()=0
virtual void add(OdGiGeometryMetafile::Record *pRec)=0
virtual void flush(bool bForceTraits=true)=0
virtual void setDrawContext(OdGiConveyorContext *pDrawCtx)=0
virtual void setCoordinatesType(CoordType ct)=0
virtual CoordType coordinatesType() const =0
virtual bool saveTraits(const OdGiSubEntityTraitsData &entTraits, const OdGiSubEntityTraitsData *byBlockTraits=NULL)=0
virtual bool saveTraits(const OdGiSubEntityTraitsData *byBlockTraits)=0
virtual void setDeviation(const OdGeDoubleArray &deviations)=0
virtual void exchangeMetafile(OdGiGeometryMetafile *pMetafile)=0
virtual void setOptions(OdUInt32 options)
virtual void setMetafile(OdGiGeometryMetafile *pMetafile)=0
virtual void setDeviation(const OdGiDeviation *pDeviation)=0
const OdGiFaceData * faceData() const
const OdGePoint3d * vertices() const
const OdGiVertexData * vertexData() const
const OdInt32 * faceList() const
OdInt32 faceListSize() const
const OdGiEdgeData * edgeData() const
OdInt32 numVertices() const
OdGiShell(OdInt32 nbVertex, const OdGePoint3d *pVertexList, OdInt32 faceListSize, const OdInt32 *pFaceList, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData, const OdGiVertexData *pVertexData)