CFx SDK Documentation  2022 SP0
GiBaseVectorizer.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, 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 Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 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 // GiBaseVectorizer.h: interface for the OdGiBaseVectorizer class.
25 //
27 
28 #ifndef _ODGIBASEVECTORIZER_INCLUDED_
29 #define _ODGIBASEVECTORIZER_INCLUDED_
30 
31 #include "Gi/GiDrawImpl.h"
32 #include "Gs/Gs.h"
33 #include "Ge/GeExtents3d.h"
34 #include "Gi/GiViewport.h"
35 #include "Gi/GiXform.h"
36 #include "Gi/GiModelToViewProc.h"
38 #include "Gi/GiConveyorConnector.h"
39 #include "Gi/GiDeviation.h"
40 #include "Ge/GePlane.h"
41 #include "Gi/GiDgLinetype.h"
42 #include "Gi/GiOrthoClipper.h"
43 #include "Gi/GiExtAccum.h"
45 #include "Gi/GiTextStyle.h"
46 #include "Gi/GiLayerTraitsData.h"
48 #include "Gi/GiTraitsCache.h"
49 #include "Gi/GiDummyGeometry.h"
50 
51 class OdGiVisualStyle;
52 
53 class OdGiBaseVectorizer;
54 
55 class OdDbStub;
56 
58 
59 #include "TD_PackPush.h"
60 
61 // Enable traits optimization
62 #define ENABLE_GITRAITSOPTIMIZATION
63 
64 //FELIX_CHANGE_BEGIN
65 //TODO: review XENON highlight geometry support
66 #ifdef XENON
67 #undef ENABLE_GITRAITSOPTIMIZATION
68 #endif
69 //FELIX_CHANGE_END
70 
80  , public OdGiSubEntityTraits
81 {
82 protected:
84 
87 
89 public:
95  virtual void setContext(OdGiContext* pUserContext);
97 
98  OdUInt16 color() const;
100  OdDbStub* layer() const;
101  OdDbStub* lineType() const;
104  double lineTypeScale() const;
105  double thickness() const;
107  OdDbStub* plotStyleNameId() const;
108  OdDbStub* material() const;
109  const OdGiMapper* mapper() const;
110  OdDbStub* visualStyle() const;
113  bool selectionGeom() const;
115  bool sectionable() const;
119  const OdGiFill* fill() const;
120 
121  void setTrueColor(const OdCmEntityColor& color);
122  void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub* pPlotStyleNameId = 0);
123  void setColor(OdUInt16 color);
124  void setLayer(OdDbStub* layerId);
125  void setLineType(OdDbStub* lineTypeId);
126  void setFillType(OdGiFillType fillType);
127  void setLineWeight(OdDb::LineWeight lineWeight);
128  void setLineTypeScale(double lineTypeScale);
129  void setThickness(double thickness);
130  void setSelectionMarker(OdGsMarker selectionMarker);
131  void setMaterial(OdDbStub* pMaterialId);
132  void setMapper(const OdGiMapper *pMapper);
133  void setVisualStyle(const OdDbStub* visualStyleId);
134  void setTransparency(const OdCmTransparency &transparency);
135  void setDrawFlags(OdUInt32 drawFlags);
136  void setSelectionGeom(bool bSelectionFlag);
137  void setShadowFlags(ShadowFlags shadowFlags);
138  void setSectionable(bool bSectionableFlag);
139  void setSelectionFlags(SelectionFlags selectionFlags);
142  void setFill(const OdGiFill* pFill);
143 
145  // OdGiCommonDraw Overrides
146 
148 
150 
152 
154 };
155 
167  , public OdGiViewportDraw_
168  , public OdGiConveyorContext
169  , public OdGiDeviation
171 {
172 protected:
174 
176 
178 
179  mutable OdDbStub* m_layerId;
181 #if (TD_MAJOR_VERSION > 4) || (TD_MINOR_VERSION > 3)
182 #pragma MARKMESSAGE("4.3 -> 4.4 : AMark : Remove preprocessor condition.");
183  struct LayerTraitsCache : public OdGiLayerTraitsData
184  { OdDbStub* m_effectiveLayerId;
185  LayerTraitsCache() : m_effectiveLayerId(NULL) {} };
186  typedef std::map<OdDbStub*, LayerTraitsCache> LayerTraitsCacheMap;
187  mutable LayerTraitsCacheMap m_layerTraitsCache;
188 #endif
189 
191  mutable OdDbStub* m_materialId;
192  mutable OdDbStub* m_byLayerMaterialId;
193  mutable OdDbStub* m_byBlockMaterialId;
196  mutable OdDbStub* m_effectiveMaterialId;
197  void actualizeMaterialAttributes(OdDbStub* materialId) const;
198 
199  virtual OdDbStub* switchLayer(OdDbStub* layerId) const;
201  mutable OdDbStub* m_effectiveLayerId;
202 
205 
208 
211 
213 
214  virtual bool layerVisible(OdDbStub* layerId) const;
219  void updateLayerTraits(OdGiSubEntityTraitsData& subEntityTraits) const;
220 
221 public:
225  bool isEntityTraitsDataChanged(int bit = kSomeChanged) const { return GETBIT(m_entityTraitsDataChanged, bit); }
226 
230  virtual void setEntityTraitsDataChanged() { m_entityTraitsDataChanged = kAllChanged; }
234  virtual void setEntityTraitsDataChanged(int bit, bool value = true) { SETBIT(m_entityTraitsDataChanged, bit, value); }
235 
239  void clearEntityTraitsDataChanged() const { m_entityTraitsDataChanged = 0; }
240 
250  bool effectivelyVisible() const
251  {
252  const OdGiSubEntityTraitsData& traits = effectiveTraits();
253  return (
254  (GETBIT(m_flags, kDrawLayerOff ) || !traits.isLayerOff()) &&
255  (GETBIT(m_flags, kDrawLayerFrozen) || !traits.isLayerFrozen())
256  );
257  }
258 
259 public:
261  // OdGiConveyorContext Overrides
262 
266  const OdGiViewport* giViewport() const;
267  const OdGsView* gsView() const;
268 
270 
271 private:
272  // Data Members
273 
274  OdGiConveyorEntryPoint m_dcEntryPoint;
275  OdGiTextStyle m_textStyle;
276  OdGePlane m_primitivePlane;
277  OdGeVector3d m_extrusion;
278  OdGiXformPtr m_pDcInputToOutput;
279 #ifdef ENABLE_GITRAITSOPTIMIZATION
280  bool m_bResetEntityTraitsData; //reset them before setAttributes()
281 #endif
282 protected:
286 
301  const OdGeVector3d* extrusion(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint, const OdGePoint3d& thirdPoint);
302  const OdGeVector3d* extrusion(const OdGeVector3d& normal);
303  const OdGeVector3d* extrusion(const OdGeVector3d* pNormal)
304  {
305  if(pNormal)
306  return extrusion(*pNormal);
307  return 0;
308  }
309  const OdGeVector3d* extrusion(const OdGePoint3d& origin, const OdGeVector3d& u, const OdGeVector3d& v);
310 
313 
316 
317 public:
320  const OdGiDrawableDesc *drawableDesc() const { return m_pDrawableDesc; }
321 protected:
322 
323  enum Flags
324  {
325  kFirstFlag = 1,
326 
327  kSuppressViewportDraw = kFirstFlag << 0,
328  kDrawInvisibleEnts = kFirstFlag << 1,
329  kDrawLayerOff = kFirstFlag << 2,
330  kDrawLayerFrozen = kFirstFlag << 3,
331  kIgnoreFillPlane = kFirstFlag << 4,
332  kSelectionMode = kFirstFlag << 5,
333  kAttributesSegment = kFirstFlag << 6,
334  kXrefOverride = kFirstFlag << 7,
335 
336  kLastFlag = kXrefOverride
337  };
338  mutable OdUInt32 m_flags;
340 
342 
353  virtual void affectTraits(const OdGiSubEntityTraitsData* pSource, OdGiSubEntityTraitsData& destination) const;
354 
358  virtual double linetypeGenerationCriteria() const;
359 
360 #ifdef ENABLE_GITRAITSOPTIMIZATION
361  inline void resetEntityTraitsData();
362 #endif
363 public:
365  // OdGiConveyorContext Override
366 
370  virtual const OdGiSubEntityTraitsData& effectiveTraits() const;
371 
372  virtual void setEffectiveTraits(const OdGiSubEntityTraitsData& traits,
373  const OdGeVector3d* fillNormal = NULL);
374 
376 protected:
377 
386  static OdRxClass* desc() { return ::OdRxObject::desc(); }
387 
397  virtual void selectionMarkerOnChange(OdGsMarker nSelectionMarker);
398 
399 public:
402 
411  OdRxClass* isA() const;
412 
418  OdRxObject* queryX(const OdRxClass* pProtocolClass) const;
419 
424 
430 
435 
441 
448  OdGiConveyorContext* drawContext() { return this; }
449 
450  const OdGiConveyorContext* drawContext() const { return this; }
451 
455  virtual void beginViewVectorization();
456 
460  virtual void endViewVectorization();
461 
463  // OdGiSubEntityTraits Overrides
464 
465  void setTrueColor(const OdCmEntityColor& trueColor);
486  void setPlotStyleNameId(OdDbStub* plotStyleNameId);
487  void setColor(OdUInt16 color);
488  void setLayer(OdDbStub* layerId);
489  void setLineType(OdDbStub* lineTypeId);
490  void setFillType(OdGiFillType fillType);
491  void setLineWeight(OdDb::LineWeight lineWeight);
492  void setLineTypeScale(double lineTypeScale);
493  void setThickness(double thickness);
494 
495  void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub* pPlotStyleNameId= 0);
496  void setSelectionMarker(OdGsMarker selectionMarker);
497  void setMaterial(OdDbStub* pMaterialId);
498  void setMapper(const OdGiMapper *pMapper);
499  void setVisualStyle(const OdDbStub* pVisualStyleId);
500  void setTransparency(const OdCmTransparency& transparency);
501  void setDrawFlags(OdUInt32 drawFlags);
502  void setSelectionGeom(bool bSelectionFlag);
503  void setShadowFlags(ShadowFlags shadowFlags);
504  void setSectionable(bool bSectionableFlag);
505  void setSelectionFlags(SelectionFlags selectionFlags);
506 
509 
510  void setFill(const OdGiFill* pFill);
511 
513 
515  // OdGiCommonDraw Overrides
516 
518  bool regenAbort() const;
520  double deviation(const OdGiDeviationType deviationType, const OdGePoint3d& pointOnCurve) const;
524  bool isDragging() const;
525 
527 
529  void setDrawContextFlags(OdUInt32 flags, bool bFlag);
530 
532  // OdGiViewportDraw Override
533  //
534 
539 
543  bool isValidId(const OdUInt32 viewportId) const;
544 
548  OdDbStub* viewportObjectId() const;
549 
551 
553 
554 
556  // OdGiGeometry Overrides
557 
558  void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal);
559 
560  void circle(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint, const OdGePoint3d& thirdPoint);
561 
562  void circularArc(const OdGePoint3d& center,
563  double radius,
564  const OdGeVector3d& normal,
565  const OdGeVector3d& startVector,
566  double sweepAngle,
567  OdGiArcType arcType = kOdGiArcSimple);
568 
569  void circularArc(const OdGePoint3d& firstPoint,
570  const OdGePoint3d& secondPoint,
571  const OdGePoint3d& thirdPoint,
572  OdGiArcType arcType = kOdGiArcSimple);
573 
574  void polyline(OdInt32 numVertices,
575  const OdGePoint3d* vertexList,
576  const OdGeVector3d* pNormal = 0,
577  OdGsMarker baseSubEntMarker = -1);
578 
579  void polygon(OdInt32 numVertices, const OdGePoint3d* vertexList);
580  void polygon(OdInt32 numVertices, const OdGePoint3d* vertexList, const OdGeVector3d* pNormal);
581 
582  void pline(const OdGiPolyline& polyline, OdUInt32 fromIndex = 0, OdUInt32 numSegs = 0);
583 
593  void shape(const OdGePoint3d& position,
594  const OdGeVector3d& normal, const OdGeVector3d& direction,
595  int shapeNumber, const OdGiTextStyle* pTextStyle);
596 
597  void text(const OdGePoint3d& position,
598  const OdGeVector3d& normal, const OdGeVector3d& direction,
599  double height, double width, double oblique, const OdString& msg);
600 
601  void text(const OdGePoint3d& position,
602  const OdGeVector3d& normal, const OdGeVector3d& direction,
603  const OdChar* msg, OdInt32 length, bool raw, const OdGiTextStyle* pTextStyle);
604 
605  void xline(const OdGePoint3d& firstPoint, const OdGePoint3d& secondPoint);
606 
607  void ray(const OdGePoint3d& basePoint, const OdGePoint3d& throughPoint );
608 
609  void nurbs(const OdGeNurbCurve3d& nurbsCurve);
610 
611  void ellipArc(const OdGeEllipArc3d& ellipArc,
612  const OdGePoint3d* endPointsOverrides = 0,
613  OdGiArcType arcType = kOdGiArcSimple);
614 
615  void mesh(OdInt32 numRows,
616  OdInt32 numColumns,
617  const OdGePoint3d* vertexList,
618  const OdGiEdgeData* pEdgeData = 0,
619  const OdGiFaceData* pFaceData = 0,
620  const OdGiVertexData* pVertexData = 0);
621 
622  void shell(OdInt32 numVertices,
623  const OdGePoint3d* vertexList,
624  OdInt32 faceListSize,
625  const OdInt32* faceList,
626  const OdGiEdgeData* pEdgeData = 0,
627  const OdGiFaceData* pFaceData = 0,
628  const OdGiVertexData* pVertexData = 0);
629 
630  void worldLine(const OdGePoint3d points[2]);
631 
632  void image(const OdGiImageBGRA32& img,
633  const OdGePoint3d& origin,
634  const OdGeVector3d& uVec,
635  const OdGeVector3d& vVec,
637 
638  void edge(const OdGiEdge2dArray& edges);
639 
640  void polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors, const OdCmTransparency* pTransparency,
641  const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers, OdInt32 nPointSize);
642 
643  void rowOfDots(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint);
644 
649  bool isClipping() const;
650 
652  void pushModelTransform(const OdGeVector3d& normal);
654 
657 
658  bool isXrefOverride() const { return GETBIT(m_flags, kXrefOverride); }
659  void setXrefOverride(bool bSet) { SETBIT(m_flags, kXrefOverride, bSet); }
660 
661  void draw(const OdGiDrawable* pDrawable);
662 
663  const OdGiPathNode* currentGiPath() const;
664 
666 
673  virtual OdUInt32 setAttributes(const OdGiDrawable* pDrawable);
674 
678  OdUInt32 drawableAttributes() const { return m_nDrawableAttributes; }
679 
687  bool needDraw(OdUInt32 drawableFlags);
688 
700  virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable* pDrawable);
701 
703  // OdGiWorldGeometry Override
704 
705  void setExtents(const OdGePoint3d *newExtents);
708 
710 
712  // OdGiViewportGeometry
713 
715  const OdGePoint3d& origin,
716  const OdGeVector3d& u,
717  const OdGeVector3d& v,
718  const OdGiRasterImage* pImage,
719  const OdGePoint2d* uvBoundary,
720  OdUInt32 numBoundPts,
721  bool transparency = false,
722  double brightness = 50.0,
723  double contrast = 50.0,
724  double fade = 0.0);
725 
727  const OdGePoint3d& origin,
728  const OdGeVector3d& u,
729  const OdGeVector3d& v,
730  const OdGiMetafile* pMetafile,
731  bool bDcAligned = true,
732  bool bAllowClipping = false);
733 
734  void polylineEye(OdUInt32 numVertices, const OdGePoint3d* vertexList);
735  void polygonEye(OdUInt32 numVertices, const OdGePoint3d* vertexList);
736 
737  void polylineDc(OdUInt32 numVertices, const OdGePoint3d* vertexList);
738  void polygonDc(OdUInt32 numVertices, const OdGePoint3d* vertexList);
739 
740 
742  // OdGiConveyorContext Overrides
743 
744  virtual void onTraitsModified();
745 
747 
759  const OdGiDeviation& eyeDeviation() const;
760 
761  // materials
764  void setEffectiveMaterialTraitsData(OdDbStub *materialId, const OdGiMaterialTraitsData &data, bool bForce = false);
765 
770 
771  const OdGiSubEntityTraitsData *byBlockTraits() const { return m_pByBlock; }
772  void setByBlockTraits(const OdGiSubEntityTraitsData *pByBlock) { m_pByBlock = pByBlock; }
774 };
775 
782 {
783 protected:
784  bool m_BBoxSet;
786 
787 public:
788 
790  virtual ~OdGiExtCalc();
791 
793  bool regenAbort() const;
794  void draw(const OdGiDrawable* pDrawable);
795  void setExtents(const OdGePoint3d *newExtents);
799  void resetExtents();
800 
805  void getExtents(OdGeExtents3d& extents) const;
806 
807  void setContext(OdGiContext* pUserContext);
808 
809  // optimization
810 
812  void affectTraits(const OdGiSubEntityTraitsData* pSource, OdGiSubEntityTraitsData& destination) const;
813 
814  bool isSetExtentsCalled() const { return false; } //FELIX_CHANGE //TODO: remove this and check OdGiFastExtCalc also!
815 };
816 
817 #ifdef ENABLE_GITRAITSOPTIMIZATION
819 {
820  m_bResetEntityTraitsData = false;
823 }
824 #endif
825 
827  const OdGeVector3d& normal,
828  const OdGeVector3d& direction,
829  double height,
830  double width,
831  double oblique,
832  bool bMirrorX = false,
833  bool bMirrorY = false);
835 
836 #include "TD_PackPop.h"
837 
838 #endif // #ifndef _ODGIBASEVECTORIZER_INCLUDED_
OdGiFillType
Definition: Gi.h:40
ODGI_EXPORT const OdGiTextStyle * odgiPrepareTextStyle(const OdGiTextStyle *pStyle, OdGiTextStyle &res)
ODGI_EXPORT void odgiCalculateTextBasis(OdGeVector3d &u, OdGeVector3d &v, const OdGeVector3d &normal, const OdGeVector3d &direction, double height, double width, double oblique, bool bMirrorX=false, bool bMirrorY=false)
OdSmartPtr< OdGiFill > OdGiFillPtr
OdGiRegenType
Definition: GiCommonDraw.h:50
OdGiDeviationType
Definition: GiCommonDraw.h:64
#define ODGI_EXPORT
Definition: GiExport.h:35
#define ODGI_EXPORT_STATIC
Definition: GiExport.h:36
OdGiArcType
Definition: GiGeometry.h:683
@ kOdGiArcSimple
Definition: GiGeometry.h:684
#define NULL
Definition: GsProperties.h:177
ptrdiff_t OdGsMarker
unsigned int OdUInt32
unsigned short OdUInt16
int OdInt32
#define ODRX_ABSTRACT
wchar_t OdChar
#define SETBIT(flags, bit, value)
Definition: OdaDefs.h:497
#define GETBIT(flags, bit)
Definition: OdaDefs.h:498
virtual ~OdGiBaseVectorizer()
virtual void selectionMarkerOnChange(OdGsMarker nSelectionMarker)
bool isAttributesSegmentEnabled()
virtual OdDbStub * switchLayer(OdDbStub *layerId) const
OdDbStub * m_effectiveMaterialId
void setSecondaryTrueColor(const OdCmEntityColor &color)
void image(const OdGiImageBGRA32 &img, const OdGePoint3d &origin, const OdGeVector3d &uVec, const OdGeVector3d &vVec, OdGiRasterImage::TransparencyMode trpMode=OdGiRasterImage::kTransparency8Bit)
void effectiveMaterialTraitsData(OdGiMaterialTraitsData &data) const
void rowOfDots(OdInt32 numPoints, const OdGePoint3d &startPoint, const OdGeVector3d &dirToNextPoint)
const OdGiDeviation & eyeDeviation() const
void nurbs(const OdGeNurbCurve3d &nurbsCurve)
bool isXrefOverride() const
bool isValidId(const OdUInt32 viewportId) const
OdGiMapper m_materialMapper
OdRxObjectPtr m_pGiReserved
void setLineWeight(OdDb::LineWeight lineWeight)
void setEffectiveMaterialTraitsData(OdDbStub *materialId, const OdGiMaterialTraitsData &data, bool bForce=false)
OdUInt32 sequenceNumber() const
virtual void setEntityTraitsDataChanged()
OdDbStub * m_byLayerMaterialId
bool isClipping() const
virtual bool doDraw(OdUInt32 drawableFlags, const OdGiDrawable *pDrawable)
OdGiMapper * m_pCurMaterialMapper
void xline(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint)
bool isDragging() const
bool isEntityTraitsDataChanged(int bit=kSomeChanged) const
void setVisualStyle(const OdDbStub *pVisualStyleId)
OdGiTraitsCache< OdGiMaterialTraitsData, OdGiMaterialTraitsTaker, OdGiMaterialTraits::kByBlock|OdGiMaterialTraits::kByLayer > OdGiMaterialTraitsCache
OdGiRegenType regenType() const
void setThickness(double thickness)
void setLineType(OdDbStub *lineTypeId)
virtual double linetypeGenerationCriteria() const
const OdGeVector3d * extrusion(const OdGeVector3d &normal)
const OdGeVector3d * extrusion(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint)
OdUInt32 m_entityTraitsDataChanged
void eyeToOutputTransform(OdGeMatrix3d &xfm) const
void setSectionable(bool bSectionableFlag)
void metafileDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiMetafile *pMetafile, bool bDcAligned=true, bool bAllowClipping=false)
void polypoint(OdInt32 numPoints, const OdGePoint3d *vertexList, const OdCmEntityColor *pColors, const OdCmTransparency *pTransparency, const OdGeVector3d *pNormals, const OdGsMarker *pSubEntMarkers, OdInt32 nPointSize)
void polygonDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual void affectTraits(const OdGiSubEntityTraitsData *pSource, OdGiSubEntityTraitsData &destination) const
void setMapper(const OdGiMapper *pMapper)
void pline(const OdGiPolyline &polyline, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)
const OdGeVector3d * extrusion(const OdGeVector3d *pNormal)
OdUInt32 numberOfIsolines() const
OdGiConveyorConnector m_eyeEntryPoint
virtual bool layerVisible(OdDbStub *layerId) const
void pushModelTransform(const OdGeMatrix3d &xfm)
OdGeMatrix3d getWorldToModelTransform() const
void setLineStyleModifiers(const OdGiDgLinetypeModifiers *pLSMod)
void setFill(const OdGiFill *pFill)
OdGiLayerTraitsTaker m_effectiveLayerTraits
void clearEntityTraitsDataChanged() const
void pushClipBoundary(OdGiClipBoundary *pBoundary)
OdGiContext * context() const
void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, double height, double width, double oblique, const OdString &msg)
const OdGiDrawable * currentDrawable() const
virtual void setEntityTraitsDataChanged(int bit, bool value=true)
OdGiDrawableDesc * m_pDrawableDesc
const OdGiDrawableDesc * currentDrawableDesc() const
bool effectivelyVisible() const
virtual const OdGiSubEntityTraitsData & effectiveTraits() const
OdDbStub * viewportObjectId() const
void setSelectionGeom(bool bSelectionFlag)
OdUInt32 m_nDrawableAttributes
OdGsMarker m_nPrevSelectionMarker
virtual void setEffectiveTraits(const OdGiSubEntityTraitsData &traits, const OdGeVector3d *fillNormal=NULL)
bool needDraw(OdUInt32 drawableFlags)
OdGiModelToViewProcPtr m_pModelToEyeProc
void setXrefOverride(bool bSet)
OdGiConveyorConnector * m_pActiveEntryPoint
const OdGiPathNode * currentGiPath() const
void polygonEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
OdGeMatrix3d getModelToWorldTransform() const
virtual void onTraitsModified()
void setTransparency(const OdCmTransparency &transparency)
void polygon(OdInt32 numVertices, const OdGePoint3d *vertexList)
void circularArc(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint, OdGiArcType arcType=kOdGiArcSimple)
void circle(const OdGePoint3d &firstPoint, const OdGePoint3d &secondPoint, const OdGePoint3d &thirdPoint)
void pushClipBoundary(OdGiClipBoundary *pBoundary, OdGiAbstractClipBoundary *pClipInfo)
void setColor(OdUInt16 color)
OdGiDgLinetypeModifiers m_lsModifiers
const OdGiMaterialTraitsData & effectiveMaterialTraitsData() const
void shape(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, int shapeNumber, const OdGiTextStyle *pTextStyle)
void ray(const OdGePoint3d &basePoint, const OdGePoint3d &throughPoint)
OdGiSubEntityTraits & subEntityTraits() const
void polyline(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal=0, OdGsMarker baseSubEntMarker=-1)
void updateLayerTraits(OdGiSubEntityTraitsData &subEntityTraits) const
bool regenAbort() const
virtual OdGiConveyorOutput & output()
void setExtents(const OdGePoint3d *newExtents)
OdGiContext & giContext() const
const OdGiSubEntityTraitsData * m_pByBlock
void mesh(OdInt32 numRows, OdInt32 numColumns, const OdGePoint3d *vertexList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
const OdGeVector3d * extrusion(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v)
void actualizeMaterialAttributes(OdDbStub *materialId) const
const OdGiDeviation & modelDeviation() const
void text(const OdGePoint3d &position, const OdGeVector3d &normal, const OdGeVector3d &direction, const OdChar *msg, OdInt32 length, bool raw, const OdGiTextStyle *pTextStyle)
void setLayer(OdDbStub *layerId)
void setDrawFlags(OdUInt32 drawFlags)
virtual void beginViewVectorization()
void ellipArc(const OdGeEllipArc3d &ellipArc, const OdGePoint3d *endPointsOverrides=0, OdGiArcType arcType=kOdGiArcSimple)
const OdGsView * gsView() const
const OdGiSubEntityTraitsData * byBlockTraits() const
void setSelectionFlags(SelectionFlags selectionFlags)
void setByBlockTraits(const OdGiSubEntityTraitsData *pByBlock)
void setMaterial(OdDbStub *pMaterialId)
void circularArc(const OdGePoint3d &center, double radius, const OdGeVector3d &normal, const OdGeVector3d &startVector, double sweepAngle, OdGiArcType arcType=kOdGiArcSimple)
void setTrueColor(const OdCmEntityColor &trueColor)
void polylineDc(OdUInt32 numVertices, const OdGePoint3d *vertexList)
virtual const OdGiLayerTraitsData & effectiveLayerTraits() const
void drawClipBoundary(OdGiClipBoundary *pBoundary, OdGiAbstractClipBoundary *pClipInfo)
void setShadowFlags(ShadowFlags shadowFlags)
void shell(OdInt32 numVertices, const OdGePoint3d *vertexList, OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0, const OdGiVertexData *pVertexData=0)
void polylineEye(OdUInt32 numVertices, const OdGePoint3d *vertexList)
void setEyeToOutputTransform(const OdGeMatrix3d &xfm)
virtual void endViewVectorization()
void setPlotStyleNameType(OdDb::PlotStyleNameType plotStyleNameType)
OdDbStub * m_byBlockMaterialId
OdGiConveyorConnector m_output
void rasterImageDc(const OdGePoint3d &origin, const OdGeVector3d &u, const OdGeVector3d &v, const OdGiRasterImage *pImage, const OdGePoint2d *uvBoundary, OdUInt32 numBoundPts, bool transparency=false, double brightness=50.0, double contrast=50.0, double fade=0.0)
void circle(const OdGePoint3d &center, double radius, const OdGeVector3d &normal)
const OdGiConveyorContext * drawContext() const
OdGiSubEntityTraitsData m_effectiveEntityTraitsData
OdGiConveyorConnector m_modelEntryPoint
void polygon(OdInt32 numVertices, const OdGePoint3d *vertexList, const OdGeVector3d *pNormal)
void edge(const OdGiEdge2dArray &edges)
OdUInt32 drawContextFlags() const
void draw(const OdGiDrawable *pDrawable)
void worldLine(const OdGePoint3d points[2])
void setSelectionMarker(OdGsMarker selectionMarker)
double deviation(const OdGiDeviationType deviationType, const OdGePoint3d &pointOnCurve) const
OdGiGeometry & rawGeometry() const
void setDrawContextFlags(OdUInt32 flags, bool bFlag)
void setPlotStyleNameId(OdDbStub *plotStyleNameId)
OdGiMaterialTraitsCache m_effectiveMaterialTraitsData
OdGiDgLinetypeModifiers * m_pCurLSModifiers
const OdGiDeviation & worldDeviation() const
OdUInt32 drawableAttributes() const
const OdGiViewport * giViewport() const
void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub *pPlotStyleNameId=0)
OdGsMarker selectionMarker() const
const OdGiDrawableDesc * drawableDesc() const
OdGiConveyorContext * drawContext()
void pushModelTransform(const OdGeVector3d &normal)
void setLineTypeScale(double lineTypeScale)
OdRxObjectPtr saveByBlockTraits()
void startAttributesSegment()
const OdGeMatrix3d & eyeToOutputTransform() const
static OdRxClass * desc()
OdRxObject * queryX(const OdRxClass *pProtocolClass) const
OdGsMarker m_nSelectionMarker
virtual OdUInt32 setAttributes(const OdGiDrawable *pDrawable)
OdGiViewport & viewport() const
static ODGI_EXPORT_STATIC const OdGiSubEntityTraitsData g_entityTraitsDataReset
OdRxClass * isA() const
void setFillType(OdGiFillType fillType)
OdDbStub * m_effectiveLayerId
void setContext(OdGiContext *pUserContext)
bool regenAbort() const
void setExtents(const OdGePoint3d *newExtents)
void getExtents(OdGeExtents3d &extents) const
OdGiRegenType regenType() const
void affectTraits(const OdGiSubEntityTraitsData *pSource, OdGiSubEntityTraitsData &destination) const
void draw(const OdGiDrawable *pDrawable)
bool isSetExtentsCalled() const
const OdGiSubEntityTraitsData & effectiveTraits() const
virtual ~OdGiExtCalc()
OdGiExtAccumPtr m_pExtAccum
void resetExtents()
OdDbStub * lineType() const
void setLineStyleModifiers(const OdGiDgLinetypeModifiers *pLSMod)
OdGiSubEntityTraits & subEntityTraits() const
void setShadowFlags(ShadowFlags shadowFlags)
void setSectionable(bool bSectionableFlag)
OdGiContext * m_pContext
void setTrueColor(const OdCmEntityColor &color)
void setSelectionFlags(SelectionFlags selectionFlags)
void setVisualStyle(const OdDbStub *visualStyleId)
virtual void setContext(OdGiContext *pUserContext)
void setTransparency(const OdCmTransparency &transparency)
const OdGiDgLinetypeModifiers * lineStyleModifiers() const
void setMapper(const OdGiMapper *pMapper)
OdGiSubEntityTraitsData m_entityTraitsData
void setColor(OdUInt16 color)
OdCmTransparency transparency() const
OdDbStub * material() const
ODRX_USING_HEAP_OPERATORS(OdGiDummyCommonDraw< OdGiWorldDraw_ >)
void setMaterial(OdDbStub *pMaterialId)
void setLayer(OdDbStub *layerId)
void setSelectionGeom(bool bSelectionFlag)
const OdGiFill * fill() const
void setFillType(OdGiFillType fillType)
OdUInt32 numberOfIsolines() const
OdGiContext * context() const
void setLineType(OdDbStub *lineTypeId)
void setFill(const OdGiFill *pFill)
void setLineTypeScale(double lineTypeScale)
void setSecondaryTrueColor(const OdCmEntityColor &color)
static OdGiContext * dummyGiContext()
void setSelectionMarker(OdGsMarker selectionMarker)
OdDb::PlotStyleNameType plotStyleNameType() const
double lineTypeScale() const
OdDbStub * layer() const
void setThickness(double thickness)
bool sectionable() const
void setPlotStyleName(OdDb::PlotStyleNameType plotStyleNameType, OdDbStub *pPlotStyleNameId=0)
void setDrawFlags(OdUInt32 drawFlags)
OdUInt16 color() const
SelectionFlags selectionFlags() const
OdGiGeometry & rawGeometry() const
OdCmEntityColor secondaryTrueColor() const
const OdGiMapper * mapper() const
void setLineWeight(OdDb::LineWeight lineWeight)
double thickness() const
OdDbStub * plotStyleNameId() const
OdDbStub * visualStyle() const
OdGiFillType fillType() const
OdCmEntityColor trueColor() const
OdUInt32 drawFlags() const
OdDb::LineWeight lineWeight() const
ShadowFlags shadowFlags() const
bool selectionGeom() const
Definition: Gs.h:133
GLint GLenum GLsizei width
Definition: gles2_ext.h:110
GLint GLenum GLsizei GLsizei GLint GLsizei const void * data
Definition: gles2_ext.h:110
const GLfloat * v
Definition: gles2_ext.h:315
GLuint GLsizei GLsizei * length
Definition: gles2_ext.h:274
GLint GLenum GLsizei GLsizei height
Definition: gles2_ext.h:110
GLsizei const GLfloat * value
Definition: gles2_ext.h:302
FMGEOMETRY_API Body extrusion(const Profile2D &rBase, const OdGeMatrix3d &mBasePlane, const OdGeVector3d &vDir, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
PlotStyleNameType
Definition: OdaDefs.h:413
LineWeight
Definition: OdaDefs.h:382