CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GsBaseVectorizeView.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 ODGSBASEVECTORIZEVIEW_INC
25#define ODGSBASEVECTORIZEVIEW_INC
26
27#include "TD_PackPush.h"
28
29#include <stdlib.h>
30#include <utility>
31
32#include "Gs/GsViewImpl.h"
33#include "Ge/GeExtents3d.h"
34#include "Gs/GsViewPropsDef.h"
36
53{
54public:
59
64
65public:
68
75
78
85 virtual OdGiContext* userGiContext() const;
86
92 virtual void setUserGiContext(OdGiContext* pUserGiContext);
93
97 virtual void update();
98
108 virtual void select(const OdGePoint2d* aPtDc, int numPoints, OdGsSelectionReactor* pReactor,
111
119 virtual bool viewExtents(OdGeBoundBlock3d& extents) const;
120
129 bool sceneDept(double& zNear, double& zFar, OdGsOverlayId nOverlay) const;
130
142 bool sceneDept(double& zNear, double& zFar) const;
143
159 virtual void collide( OdGiPathNode const*const* pInputList, OdUInt32 nInputListSize, OdGsCollisionDetectionReactor* pReactor, OdGiPathNode const*const* pCollisionWithList = NULL, OdUInt32 nCollisionWithListSize = 0, const OdGsCollisionDetectionContext* pCtx = NULL );
160
171 virtual void rayTrace(const OdGePoint3d &rayOrigin, const OdGeVector3d &rayDirection,
172 OdGsRayTraceReactor *pReactor, bool bSortedSelection = false,
173 OdGiPathNode const* const* pObjectList = NULL, OdUInt32 nObjectListSize = 0);
174protected:
175
177
180public:
184 virtual OdUInt32 numVectorizers() const = 0;
185
186protected:
187 virtual OdGsBaseVectorizer* getVectorizer(bool bDisplay) = 0;
188 virtual void releaseVectorizer(OdGsBaseVectorizer* pVect) = 0;
189
190 virtual void updateGeometry();
191 virtual void updateScreen();
192
193private:
194 void setVectThreadIndex(OdGsBaseVectorizer* pVect, bool bAssignIndex, int idx = -1);
195
196 //data
197protected:
199
200private:
202 friend class VectorizerAutoPtr;
203 friend class BaseVectScheduler;
204};
205
210
218{
219public:
226 VectorizerAutoPtr(OdGsBaseVectorizeView& view, bool bDisplay): m_view(view), m_obj(NULL)
227 {
228 m_obj = m_view.getVectorizer(bDisplay);
229 if(m_obj && bDisplay)
230 m_view.setVectThreadIndex(m_obj, true);
231 }
232
240 {
241 if(m_obj)
242 {
243 m_view.setVectThreadIndex(m_obj, false);
244 m_view.releaseVectorizer(m_obj);
245 }
246 }
247
252 {
253 return static_cast<OdGsBaseVectorizer*>(m_obj);
254 }
255
260 {
261 return const_cast<const OdGsBaseVectorizer*>(m_obj);
262 }
263
267 const OdGsBaseVectorizer* get() const
268 {
269 return const_cast<const OdGsBaseVectorizer*>(m_obj);
270 }
271
276 {
277 return static_cast<OdGsBaseVectorizer*>(m_obj);
278 }
279
280protected:
283};
284
285#include "TD_PackPop.h"
286
287#define IMPL_VECTORIZER_DEFAULT()\
288 virtual OdUInt32 numVectorizers() const { return 1; }\
289 virtual OdGsBaseVectorizer* getVectorizer(bool /*bDisplay*/)\
290 { return this; }\
291 virtual void releaseVectorizer(OdGsBaseVectorizer* pVect)\
292 {ODA_VERIFY(pVect == (OdGsBaseVectorizer*)this); }
293
294#define IMPL_VECTORIZER_DEFAULT_EX()\
295 IMPL_VECTORIZER_DEFAULT()\
296 virtual void clearLinetypeCache(){ OdGiBaseVectorizerImpl::clearLinetypeCache(); }\
297 ODRX_USING_HEAP_OPERATORS(OdGiBaseVectorizer);
298
299#endif // ODGSBASEVECTORIZEVIEW_INC
#define GS_TOOLKIT_EXPORT
Definition GsExport.h:37
OdGsOverlayId
unsigned int OdUInt32
virtual OdGsBaseVectorizer * getVectorizer(bool bDisplay)=0
bool sceneDept(double &zNear, double &zFar, OdGsOverlayId nOverlay) const
virtual void select(const OdGePoint2d *aPtDc, int numPoints, OdGsSelectionReactor *pReactor, OdGsView::SelectionMode mode=OdGsView::kCrossing)
static OdGsBaseVectorizeView * safeCast(OdGsView *pView)
virtual void collide(OdGiPathNode const *const *pInputList, OdUInt32 nInputListSize, OdGsCollisionDetectionReactor *pReactor, OdGiPathNode const *const *pCollisionWithList=NULL, OdUInt32 nCollisionWithListSize=0, const OdGsCollisionDetectionContext *pCtx=NULL)
virtual void rayTrace(const OdGePoint3d &rayOrigin, const OdGeVector3d &rayDirection, OdGsRayTraceReactor *pReactor, bool bSortedSelection=false, OdGiPathNode const *const *pObjectList=NULL, OdUInt32 nObjectListSize=0)
virtual void updateGeometry()
virtual OdGiContext * userGiContext() const
virtual void setUserGiContext(OdGiContext *pUserGiContext)
virtual void releaseVectorizer(OdGsBaseVectorizer *pVect)=0
virtual OdUInt32 numVectorizers() const =0
virtual void update()
OdSmartPtr< OdGiContext > m_userGiContext
bool sceneDept(double &zNear, double &zFar) const
virtual bool viewExtents(OdGeBoundBlock3d &extents) const
virtual void updateGeometryByDevice()
virtual void updateScreen()
TD_USING(OdGsViewImpl::select)
Definition Gs.h:141
SelectionMode
Definition Gs.h:174
@ kCrossing
Definition Gs.h:176
virtual void select(const OdGsDCPoint *points, int numPoints, OdGsSelectionReactor *pReactor, SelectionMode mode=kCrossing)
virtual RenderMode mode() const
friend class OdGsBaseVectorizer
static OdGsViewImpl * safeCast(OdGsView *pView)
const T * get() const
Definition SmartPtr.h:315
OdGsBaseVectorizer * m_obj
OdGsBaseVectorizer * get()
VectorizerAutoPtr(OdGsBaseVectorizeView &view, bool bDisplay)
OdGsBaseVectorizer * operator->()
OdGsBaseVectorizeView & m_view
const OdGsBaseVectorizer * get() const