/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _ODGIDUMMYGEOM_INCLUDED_ #define _ODGIDUMMYGEOM_INCLUDED_ #include "Gi/Gi.h" #include "Gi/GiBaseVectorizer.h" #include "Gi/GiViewportGeometry.h" #include "OdStack.h" #include "StaticRxObject.h" #include "DbBaseSubentId.h" #include "ModelerMarkers.h" #include "TD_PackPush.h" /** \details This class is a dummy template for OdGiGeometry. Library: TD_Gi */ template class OdGiWrapperGeometry : public T { OdGiGeometry *m_Geom; protected: void setGeom(OdGiGeometry &Geom) { m_Geom = &Geom; } OdGiGeometry &getGeom() { return *m_Geom; } public: virtual void pline(const OdGiPolyline& p, OdUInt32 i, OdUInt32 n) { m_Geom->pline(p, i, n); } virtual OdGeMatrix3d getModelToWorldTransform() const { return m_Geom->getModelToWorldTransform(); } virtual OdGeMatrix3d getWorldToModelTransform() const { return m_Geom->getWorldToModelTransform(); } virtual void pushModelTransform(const OdGeVector3d& vNormal) { m_Geom->pushModelTransform(vNormal); } virtual void pushModelTransform(const OdGeMatrix3d& xMat) { m_Geom->pushModelTransform(xMat); } virtual void popModelTransform() { m_Geom->popModelTransform(); } // For drawing various primitives. // virtual void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal) { m_Geom->circle(center, radius, normal); } virtual void circle(const OdGePoint3d& p1, const OdGePoint3d& p2, const OdGePoint3d& p3) { m_Geom->circle(p1, p2, p3); } virtual void circularArc(const OdGePoint3d& center, double radius, const OdGeVector3d& normal, const OdGeVector3d& startVector, double sweepAngle, OdGiArcType arcType = kOdGiArcSimple) { m_Geom->circularArc(center, radius, normal, startVector, sweepAngle, arcType); } virtual void circularArc(const OdGePoint3d& start, const OdGePoint3d& point, const OdGePoint3d& end, OdGiArcType arcType = kOdGiArcSimple) { m_Geom->circularArc(start, point, end, arcType); } virtual void polyline(OdInt32 nbPoints, const OdGePoint3d* pVertexList, const OdGeVector3d* pNormal = NULL, OdGsMarker lBaseSubEntMarker = -1) { m_Geom->polyline(nbPoints, pVertexList, pNormal, lBaseSubEntMarker); } virtual void polygon(OdInt32 nbPoints, const OdGePoint3d* pVertexList) { m_Geom->polygon(nbPoints, pVertexList); } virtual void mesh(OdInt32 rows, OdInt32 columns, const OdGePoint3d* pVertexList, const OdGiEdgeData* pEdgeData = NULL, const OdGiFaceData* pFaceData = NULL, const OdGiVertexData* pVertexData = NULL) { m_Geom->mesh(rows, columns, pVertexList, pEdgeData, pFaceData, pVertexData); } virtual void shell(OdInt32 nbVertex, const OdGePoint3d* pVertexList, OdInt32 faceListSize, const OdInt32* pFaceList, const OdGiEdgeData* pEdgeData = NULL, const OdGiFaceData* pFaceData = NULL, const OdGiVertexData* pVertexData = NULL) { m_Geom->shell(nbVertex, pVertexList, faceListSize, pFaceList, pEdgeData, pFaceData, pVertexData); } virtual void text(const OdGePoint3d& position, const OdGeVector3d& normal, const OdGeVector3d& direction, double height, double width, double oblique, const OdString& msg) { m_Geom->text(position, normal, direction, height, width, oblique, msg); } virtual void text(const OdGePoint3d& position, const OdGeVector3d& normal, const OdGeVector3d& direction, const OdChar* msg, OdInt32 length, bool raw, const OdGiTextStyle* pTextStyle) { m_Geom->text(position, normal, direction, msg, length, raw, pTextStyle); } void ray(const OdGePoint3d& first, const OdGePoint3d& second) { m_Geom->ray(first, second); } virtual void nurbs(const OdGeNurbCurve3d& nurbs) { m_Geom->nurbs(nurbs); } virtual void xline(const OdGePoint3d& p1, const OdGePoint3d& p2) { m_Geom->xline(p1, p2); } virtual void ellipArc(const OdGeEllipArc3d& arc, const OdGePoint3d* pEndPointsOverrides = 0, OdGiArcType arcType = kOdGiArcSimple) { m_Geom->ellipArc(arc, pEndPointsOverrides, arcType); } virtual void draw(const OdGiDrawable* pD) { m_Geom->draw(pD); } virtual void pushClipBoundary(OdGiClipBoundary* pBoundary) { m_Geom->pushClipBoundary(pBoundary); } virtual void popClipBoundary() { m_Geom->popClipBoundary(); } virtual void worldLine(const OdGePoint3d pnts[2]) { m_Geom->worldLine(pnts); } virtual void image(const OdGiImageBGRA32& img, const OdGePoint3d& origin, const OdGeVector3d& uVec, const OdGeVector3d& vVec, OdGiRasterImage::TransparencyMode trpMode = OdGiRasterImage::kTransparency8Bit) { m_Geom->image(img, origin, uVec, vVec, trpMode); } virtual void edge(const OdGiEdge2dArray& edges) { m_Geom->edge(edges); } virtual void polypoint(OdInt32 numPoints, const OdGePoint3d* vertexList, const OdCmEntityColor* pColors, const OdCmTransparency* pTransparency, const OdGeVector3d* pNormals, const OdGsMarker* pSubEntMarkers, OdInt32 nPointSize) { m_Geom->polypoint(numPoints, vertexList, pColors, pTransparency, pNormals, pSubEntMarkers, nPointSize); } virtual void rowOfDots(OdInt32 numPoints, const OdGePoint3d& startPoint, const OdGeVector3d& dirToNextPoint) { m_Geom->rowOfDots(numPoints, startPoint, dirToNextPoint); } }; /** \details Library: TD_Gi */ template class OdGiWrapperWorldGeometry : public OdGiWrapperGeometry< T > { public: virtual void setExtents(const OdGePoint3d *newExtents) { ((OdGiWorldGeometry&)(OdGiWrapperGeometry< T >::getGeom())).setExtents(newExtents); } virtual void startAttributesSegment() { ((OdGiWorldGeometry&)(OdGiWrapperGeometry< T >::getGeom())).startAttributesSegment(); } }; /** \details Library: TD_Gi */ template class OdGiWrapperViewportGeometry : public OdGiWrapperGeometry< T > { public: virtual void polylineEye( OdUInt32 numVertices, const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polylineEye(numVertices, vertexList); } virtual void polygonEye( OdUInt32 numVertices, const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polygonEye(numVertices, vertexList); } virtual void polylineDc( OdUInt32 numVertices, const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polylineDc(numVertices, vertexList); } virtual void polygonDc( OdUInt32 numVertices, const OdGePoint3d* vertexList) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).polygonDc(numVertices, vertexList); } virtual 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) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).rasterImageDc(origin,u,v,pImage, uvBoundary, numBoundPts,transparency,brightness,contrast,fade); } virtual void metafileDc( const OdGePoint3d& origin, const OdGeVector3d& u, const OdGeVector3d& v, const OdGiMetafile* pMetafile, bool dcAligned = true, bool allowClipping = false) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).metafileDc(origin,u,v,pMetafile,dcAligned,allowClipping); } virtual void ownerDrawDc( const OdGePoint3d& origin, const OdGeVector3d& u, const OdGeVector3d& v, const OdGiSelfGdiDrawable* pDrawable, bool dcAligned = true, bool allowClipping = false) { ((OdGiViewportGeometry&)(OdGiWrapperGeometry< T >::getGeom())).ownerDrawDc(origin,u,v,pDrawable,dcAligned,allowClipping); } }; /** \details Library: TD_Gi */ template class OdGiSubEntityTraitsWrapper : public T { OdGiSubEntityTraits *m_pTraits; protected: void setTraits(OdGiSubEntityTraits &pTraits) { m_pTraits = &pTraits; } OdGiSubEntityTraits &getTraits() { return *m_pTraits; } public: OdGiSubEntityTraitsWrapper() : m_pTraits(0) { } // no refcounting void addRef() { m_pTraits->addRef(); } // no refcounting void release() { m_pTraits->release(); } void setColor(OdUInt16 n) { m_pTraits->setColor(n); } void setTrueColor(const OdCmEntityColor& n) { m_pTraits->setTrueColor(n); } void setLayer(OdDbStub* n) { m_pTraits->setLayer(n); } void setLineType(OdDbStub* n) { m_pTraits->setLineType(n); } void setSelectionMarker(OdGsMarker n) { m_pTraits->setSelectionMarker(n); } void setFillType(OdGiFillType n) { m_pTraits->setFillType(n); } void setFillPlane(const OdGeVector3d* n= 0) { m_pTraits->setFillPlane(n); } void setLineWeight(OdDb::LineWeight n) { m_pTraits->setLineWeight(n); } void setLineTypeScale(double n = 1.0) { m_pTraits->setLineTypeScale(n); } void setThickness(double n) { m_pTraits->setThickness(n); } void setPlotStyleName(OdDb::PlotStyleNameType n, OdDbStub* m= 0) { m_pTraits->setPlotStyleName(n,m); } void setMaterial(OdDbStub* n) { m_pTraits->setMaterial(n); } void setMapper(const OdGiMapper * n) { m_pTraits->setMapper(n); } void setVisualStyle(const OdDbStub* n) { m_pTraits->setVisualStyle(n); } void setTransparency(const OdCmTransparency& transparency) { m_pTraits->setTransparency(transparency); } void setDrawFlags(OdUInt32 drawFlags) { m_pTraits->setDrawFlags(drawFlags); } void setSelectionGeom(bool bSelectionFlag) { m_pTraits->setSelectionGeom(bSelectionFlag); } void setShadowFlags(OdGiSubEntityTraits::ShadowFlags shadowFlags) { m_pTraits->setShadowFlags(shadowFlags); } void setSectionable(bool bSectionableFlag) { m_pTraits->setSectionable(bSectionableFlag); } void setSelectionFlags(OdGiSubEntityTraits::SelectionFlags selectionFlags) { m_pTraits->setSelectionFlags(selectionFlags); } void setSecondaryTrueColor(const OdCmEntityColor& n) { m_pTraits->setSecondaryTrueColor(n); } void setLineStyleModifiers(const OdGiDgLinetypeModifiers* pLSMod) { m_pTraits->setLineStyleModifiers(pLSMod); } void setFill(const OdGiFill* pFill) { m_pTraits->setFill(pFill); } OdUInt16 color() const { return m_pTraits->color(); } OdCmEntityColor trueColor() const { return m_pTraits->trueColor(); } OdDbStub* layer() const { return m_pTraits->layer(); } OdDbStub* lineType() const { return m_pTraits->lineType(); } OdGiFillType fillType() const { return m_pTraits->fillType(); } bool fillPlane(OdGeVector3d& n) { return m_pTraits->fillPlane(n); } OdDb::LineWeight lineWeight() const { return m_pTraits->lineWeight(); } double lineTypeScale() const { return m_pTraits->lineTypeScale(); } double thickness() const { return m_pTraits->thickness(); } OdDb::PlotStyleNameType plotStyleNameType() const { return m_pTraits->plotStyleNameType(); } OdDbStub* plotStyleNameId() const { return m_pTraits->plotStyleNameId(); } OdDbStub* material() const { return m_pTraits->material(); } const OdGiMapper* mapper() const { return m_pTraits->mapper(); } OdDbStub* visualStyle() const { return m_pTraits->visualStyle(); } OdCmTransparency transparency() const { return m_pTraits->transparency(); } OdUInt32 drawFlags() const { return m_pTraits->drawFlags(); } bool selectionGeom() const { return m_pTraits->selectionGeom(); } OdGiSubEntityTraits::ShadowFlags shadowFlags() const { return m_pTraits->shadowFlags(); } bool sectionable() const { return m_pTraits->sectionable(); } OdGiSubEntityTraits::SelectionFlags selectionFlags() const { return m_pTraits->selectionFlags(); } OdCmEntityColor secondaryTrueColor() const { return m_pTraits->secondaryTrueColor(); } const OdGiDgLinetypeModifiers* lineStyleModifiers() const { return m_pTraits->lineStyleModifiers(); } const OdGiFill* fill() const { return m_pTraits->fill(); } }; /** \details Library: TD_Gi */ template class OdGiWrapperCommonDraw : public T { OdGiCommonDraw *m_pD; protected: void setDraw(OdGiCommonDraw &pD) { m_pD = &pD; } OdGiCommonDraw *getDraw() const { return m_pD; } public: OdGiWrapperCommonDraw() : m_pD(0) {} virtual OdGiGeometry& rawGeometry() const { return m_pD->rawGeometry(); } virtual OdGiRegenType regenType() const { return m_pD->regenType(); } virtual bool regenAbort() const { return m_pD->regenAbort(); } virtual OdGiSubEntityTraits& subEntityTraits() const { return m_pD->subEntityTraits(); } virtual bool isDragging() const { return m_pD->isDragging(); } virtual OdGiContext* context() const { return m_pD->context(); } virtual OdUInt32 numberOfIsolines() const { return m_pD->numberOfIsolines(); } virtual const OdGiPathNode* currentGiPath() const { return m_pD->currentGiPath(); } virtual double deviation(const OdGiDeviationType t, const OdGePoint3d& p) const { return m_pD->deviation(t, p); } }; /** \details Library: TD_Gi */ template class OdGiWrapperViewportDraw : public OdGiWrapperCommonDraw< T > { public: virtual OdGiViewport& viewport() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->viewport(); } virtual OdGiViewportGeometry& geometry() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->geometry(); } virtual OdUInt32 sequenceNumber() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->sequenceNumber(); } virtual bool isValidId(const OdUInt32 viewportId) const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->isValidId(viewportId); } virtual OdDbStub* viewportObjectId() const { return ((OdGiViewportDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->viewportObjectId(); } }; /** \details Library: TD_Gi */ template class OdGiWrapperWorldDraw : public OdGiWrapperCommonDraw< T > { public: virtual OdGiWorldGeometry& geometry() const { return ((OdGiWorldDraw*)(OdGiWrapperCommonDraw< T >::getDraw()))->geometry(); } }; /** \details Library: TD_Gi */ class OdGiViewportDraw_Stub : public OdGiWrapperViewportDraw , public OdGiWrapperViewportGeometry , public OdGiSubEntityTraitsWrapper { public: ODRX_USING_HEAP_OPERATORS( OdGiWrapperViewportDraw ); OdGiViewportDraw_Stub(OdGiViewportDraw &pVD, OdGiViewportGeometry &pVG, OdGiSubEntityTraits &pST) { setDraw(pVD); setGeom(pVG); setTraits(pST); } virtual OdGiGeometry& rawGeometry() const { return *static_cast(const_cast(this)); } virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast(const_cast(this)); } virtual OdGiViewportGeometry& geometry() const { return *static_cast(const_cast(this)); } void addRef() { } void release() { } }; /** \details Library: TD_Gi */ class OdGiWorldDraw_Stub : public OdGiWrapperWorldDraw , public OdGiWrapperWorldGeometry , public OdGiSubEntityTraitsWrapper { public: ODRX_USING_HEAP_OPERATORS( OdGiWrapperWorldDraw ); OdGiWorldDraw_Stub(OdGiWorldDraw &pVD, OdGiWorldGeometry &pVG, OdGiSubEntityTraits &pST) { setDraw(pVD); setGeom(pVG); setTraits(pST); } virtual OdGiGeometry& rawGeometry() const { return *static_cast(const_cast(this)); } virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast(const_cast(this)); } virtual OdGiWorldGeometry& geometry() const { return *static_cast(const_cast(this)); } void addRef() { } void release() { } }; /** \details Library: TD_Gi */ template class OdGiDummyGeometry : public T { public: void circle(const OdGePoint3d& /*center*/, double /*radius*/, const OdGeVector3d& /*normal*/) {} void circle(const OdGePoint3d& /*firstPoint*/, const OdGePoint3d& /*secondPoint*/, const OdGePoint3d& /*thirdPoint*/) {} void circularArc(const OdGePoint3d& /*center*/, double /*radius*/, const OdGeVector3d& /*normal*/, const OdGeVector3d& /*startVector*/, double /*sweepAngle*/, OdGiArcType /*arcType*/ = kOdGiArcSimple) {} void circularArc(const OdGePoint3d& /*firstPoint*/, const OdGePoint3d& /*secondPoint*/, const OdGePoint3d& /*thirdPoint*/, OdGiArcType /*arcType */= kOdGiArcSimple) {} void polyline(OdInt32 /*numVertices*/, const OdGePoint3d* /*vertexList*/, const OdGeVector3d* /*pNormal */= 0, OdGsMarker /*baseSubEntMarker */= -1) {} void polygon(OdInt32 /*numVertices*/, const OdGePoint3d* /*vertexList*/) {} void pline(const OdGiPolyline& /*polylPine*/, OdUInt32 /*fromIndex */= 0, OdUInt32 /*numSegs */= 0) {} void shape(const OdGePoint3d& /*position*/, const OdGeVector3d& /*normal*/, const OdGeVector3d& /*direction*/, int /*shapeNumber*/, const OdGiTextStyle* /*pTextStyle*/) {} void text(const OdGePoint3d& /*position*/, const OdGeVector3d& /*normal*/, const OdGeVector3d& /*direction*/, double /*height*/, double /*width*/, double /*oblique*/, const OdString& /*msg*/) {} void text(const OdGePoint3d& /*position*/, const OdGeVector3d& /*normal*/, const OdGeVector3d& /*direction*/, const OdChar* /*msg*/, OdInt32 /*length*/, bool /*raw*/, const OdGiTextStyle* /*pTextStyle*/) {} void xline(const OdGePoint3d& /*firstPoint*/, const OdGePoint3d& /*secondPoint*/) {} void ray(const OdGePoint3d& /*basePoint*/, const OdGePoint3d& /*throughPoint */) {} void nurbs(const OdGeNurbCurve3d& /*nurbsCurve*/) {} void ellipArc(const OdGeEllipArc3d& /*ellipArc*/, const OdGePoint3d* /*endPointsOverrides */= 0, OdGiArcType /*arcType */= kOdGiArcSimple) {} void mesh(OdInt32 /*numRows*/, OdInt32 /*numColumns*/, const OdGePoint3d* /*vertexList*/, const OdGiEdgeData* /*pEdgeData */= 0, const OdGiFaceData* /*pFaceData */= 0, const OdGiVertexData* /*pVertexData */= 0) {} 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 worldLine(const OdGePoint3d /*points*/[2]) {} void image(const OdGiImageBGRA32& /*img*/, const OdGePoint3d& /*origin*/, const OdGeVector3d& /*uVec*/, const OdGeVector3d& /*vVec*/, OdGiRasterImage::TransparencyMode /*trpMode*/ = OdGiRasterImage::kTransparency8Bit) {} virtual void edge(const OdGiEdge2dArray& /*edges*/) {} void polypoint(OdInt32 /*numPoints*/, const OdGePoint3d* /*vertexList*/, const OdCmEntityColor* /*pColors*/, const OdCmTransparency* /*pTransparency*/, const OdGeVector3d* /*pNormals*/, const OdGsMarker* /*pSubEntMarkers*/, OdInt32 /*nPointSize*/) {} void rowOfDots(OdInt32 /*numPoints*/, const OdGePoint3d& /*startPoint*/, const OdGeVector3d& /*dirToNextPoint*/) {} void setExtents(const OdGePoint3d * /*newExtents*/) {} void pushClipBoundary(OdGiClipBoundary* /*pBoundary*/) {} void popClipBoundary() {} void draw(const OdGiDrawable* /*pDrawable*/) {} void pushModelTransform(const OdGeMatrix3d& /*xMat*/) { } void pushModelTransform(const OdGeVector3d& /*normal*/) { } void popModelTransform() { } OdGeMatrix3d getModelToWorldTransform() const { return OdGeMatrix3d::kIdentity; } OdGeMatrix3d getWorldToModelTransform() const { return OdGeMatrix3d::kIdentity; } }; /** \details Library: TD_Gi */ template class OdGiDummyWorldGeometry : public OdGiDummyGeometry< T > { public: virtual void setExtents( const OdGePoint3d * /*newExtents*/) { } virtual void startAttributesSegment() {} }; /** \details Library: TD_Gi */ template class OdGiDummyViewportGeometry : public OdGiDummyGeometry< T > { public: virtual void polylineEye( OdUInt32 , const OdGePoint3d* ) { } virtual void polygonEye( OdUInt32 , const OdGePoint3d* ) { } virtual void polylineDc( OdUInt32 , const OdGePoint3d* ) { } virtual void polygonDc( OdUInt32 , const OdGePoint3d* ) { } virtual void rasterImageDc( const OdGePoint3d& , const OdGeVector3d& , const OdGeVector3d& , const OdGiRasterImage* , const OdGePoint2d* , OdUInt32 , bool = false, double = 50.0, double = 50.0, double = 0.0) { } virtual void metafileDc( const OdGePoint3d& , const OdGeVector3d& , const OdGeVector3d& , const OdGiMetafile* , bool = true, bool = false) { } virtual void ownerDrawDc( const OdGePoint3d& , const OdGeVector3d& , const OdGeVector3d& , const OdGiSelfGdiDrawable* , bool = true, bool = false) { } }; // OdGiSubEntityTraits dummy template /** \details Library: TD_Gi */ template class OdGiDummySubEntityTraits : public T { public: void setColor(OdUInt16 ) { } void setTrueColor(const OdCmEntityColor& ) { } void setLayer(OdDbStub* ) { } void setLineType(OdDbStub* ) { } void setSelectionMarker(OdGsMarker ) { } void setFillType(OdGiFillType ) { } void setFillPlane(const OdGeVector3d* = 0) {} void setLineWeight(OdDb::LineWeight ) { } void setLineTypeScale(double = 1.0) { } void setThickness(double ) { } void setPlotStyleName(OdDb::PlotStyleNameType, OdDbStub* = 0) { } void setMaterial(OdDbStub* ) { } void setMapper(const OdGiMapper * /*pMapper*/) { } void setVisualStyle(const OdDbStub* /*visualStyleId*/) { } void setTransparency(const OdCmTransparency& /*transparency*/) { } void setDrawFlags(OdUInt32 /*drawFlags*/) { } void setSelectionGeom(bool /*bSelectionFlag*/) { } void setShadowFlags(OdGiSubEntityTraits::ShadowFlags /*shadowFlags*/) { } void setSectionable(bool /*bSectionableFlag*/) { } void setSelectionFlags(OdGiSubEntityTraits::SelectionFlags /*selectionFlags*/) { } OdUInt16 color() const { return 0; } OdCmEntityColor trueColor() const { return OdCmEntityColor(); } OdDbStub* layer() const { return NULL; } OdDbStub* lineType() const { return NULL; } OdGiFillType fillType() const { return kOdGiFillNever; } bool fillPlane(OdGeVector3d& /*normal*/) { return false; } OdDb::LineWeight lineWeight() const { return OdDb::kLnWt000; } double lineTypeScale() const { return 0.0; } double thickness() const { return 0.0; } OdDb::PlotStyleNameType plotStyleNameType() const { return OdDb::kPlotStyleNameByBlock; } OdDbStub* plotStyleNameId() const { return NULL; } OdDbStub* material() const { return NULL; } const OdGiMapper* mapper() const { return NULL; } void addLight(const OdDbStub* /*lightId*/) { } OdCmTransparency transparency() const { return OdCmTransparency(); } OdUInt32 drawFlags() const { return 0; } bool selectionGeom() const { return false; } OdGiSubEntityTraits::ShadowFlags shadowFlags() const { return OdGiSubEntityTraits::kShadowsCastAndReceive; } bool sectionable() const { return false; } OdGiSubEntityTraits::SelectionFlags selectionFlags() const { return OdGiSubEntityTraits::kNoSelectionFlags; } }; /** \details Library: TD_Gi */ template class OdGiDummyCommonDraw : public T { public: virtual OdGiRegenType regenType() const { return kOdGiStandardDisplay; } // dont change from kOdGiStandardDisplay virtual bool regenAbort() const { return false; } virtual bool isDragging() const { return false; } virtual OdUInt32 numberOfIsolines() const { return 4; } virtual double deviation(const OdGiDeviationType t, const OdGePoint3d& p) const { return 0.; } }; /** \details Library: TD_Gi */ template class OdGiDummyViewportDraw : public OdGiDummyCommonDraw< T > { public: virtual OdUInt32 sequenceNumber() const { return 0; } virtual bool isValidId(const OdUInt32 viewportId) const { return false; } virtual OdDbStub* viewportObjectId() const { return (OdDbStub*)1; } // something non NULL }; /** \details Library: TD_Gi */ template class OdGiDummyWorldDraw : public OdGiDummyCommonDraw< T > { public: }; /** \details Library: TD_Gi */ template class OdGiDummyContext : public T { public: virtual OdDbBaseDatabase* database() const { return 0;} virtual OdGiDrawablePtr openDrawable(OdDbStub* ) { return OdGiDrawablePtr(); } }; /** \details Library: TD_Gi */ template class OdGiDummyViewport : public T { public: virtual OdGeMatrix3d getModelToEyeTransform() const { return OdGeMatrix3d::kIdentity; } virtual OdGeMatrix3d getEyeToModelTransform() const { return OdGeMatrix3d::kIdentity; } virtual OdGeMatrix3d getWorldToEyeTransform() const { return OdGeMatrix3d::kIdentity; } virtual OdGeMatrix3d getEyeToWorldTransform() const { return OdGeMatrix3d::kIdentity; } virtual bool isPerspective() const { return false; } virtual bool doPerspective(OdGePoint3d& /*p*/) const { return false; } virtual bool doInversePerspective(OdGePoint3d& /*p*/) const { return false; } virtual void getNumPixelsInUnitSquare(const OdGePoint3d& /*givenWorldpt*/, OdGePoint2d& /*pixelArea*/, bool /*includePerspective*/ = true) const { } virtual OdGePoint3d getCameraLocation() const { return OdGePoint3d::kOrigin; } virtual OdGePoint3d getCameraTarget() const { return OdGePoint3d::kOrigin + OdGeVector3d::kZAxis; } virtual OdGeVector3d getCameraUpVector() const { return OdGeVector3d::kYAxis; } virtual OdGeVector3d viewDir() const { return getCameraTarget() - getCameraLocation(); } virtual OdUInt32 viewportId() const { return 0xFFFFFFFF; } virtual OdInt16 acadWindowId() const { return -1; } virtual void getViewportDcCorners(OdGePoint2d& lower_left, OdGePoint2d& upper_right) const { lower_left.set(0,0); upper_right.set(100,100); } virtual bool getFrontAndBackClipValues(bool& clip_front, bool& clip_back, double& /*front*/, double& /*back*/) const { clip_front = clip_back = false; return false; } virtual double linetypeScaleMultiplier() const { return 1.0; } virtual double linetypeGenerationCriteria() const { return 1.0; } virtual bool layerVisible(OdDbStub* /*idLayer*/) const { return true; } }; /** \details This class is a dummy template for OdGiViewport. Library: TD_Gi */ template class OdGiWrapperViewport : public T { const OdGiViewport* m_ref; protected: void set(const OdGiViewport& ref) { m_ref = &ref; } const OdGiViewport &get() const { return *m_ref; } public: virtual OdGeMatrix3d getModelToEyeTransform() const { return get().getModelToEyeTransform(); } virtual OdGeMatrix3d getEyeToModelTransform() const { return get().getEyeToModelTransform(); } virtual OdGeMatrix3d getWorldToEyeTransform() const { return get().getWorldToEyeTransform(); } virtual OdGeMatrix3d getEyeToWorldTransform() const { return get().getEyeToWorldTransform(); } virtual bool isPerspective() const { return get().isPerspective(); } virtual bool doPerspective(OdGePoint3d& p) const { return get().doPerspective(p); } virtual bool doInversePerspective(OdGePoint3d& p) const { return get().doInversePerspective(p); } virtual void getNumPixelsInUnitSquare(const OdGePoint3d& givenWorldpt, OdGePoint2d& pixelArea, bool includePerspective = true) const { get().getNumPixelsInUnitSquare(givenWorldpt, pixelArea, includePerspective); } virtual OdGePoint3d getCameraLocation() const { return get().getCameraLocation(); } virtual OdGePoint3d getCameraTarget() const { return get().getCameraTarget(); } virtual OdGeVector3d getCameraUpVector() const { return get().getCameraUpVector(); } virtual OdGeVector3d viewDir() const { return get().viewDir(); } virtual OdUInt32 viewportId() const { return get().viewportId(); } virtual OdInt16 acadWindowId() const { return get().acadWindowId(); } virtual void getViewportDcCorners(OdGePoint2d& lower_left, OdGePoint2d& upper_right) const { get().getViewportDcCorners(lower_left, upper_right); } virtual bool getFrontAndBackClipValues(bool& clip_front, bool& clip_back, double& front, double& back) const { return get().getFrontAndBackClipValues(clip_front, clip_back, front, back); } virtual double linetypeScaleMultiplier() const { return get().linetypeScaleMultiplier(); } virtual double linetypeGenerationCriteria() const { return get().linetypeGenerationCriteria(); } virtual bool layerVisible(OdDbStub* idLayer) const { return get().layerVisible(idLayer); } }; /** \details Library: TD_Gi */ class OdGiViewportDraw_Dummy : public OdGiDummySubEntityTraits< OdGiSubEntityTraits > , public OdGiDummyViewportDraw< OdGiViewportDraw > , public OdGiDummyViewportGeometry< OdGiViewportGeometry > , public OdGiDummyContext< OdGiContext > , public OdGiDummyViewport< OdGiViewport > { OdDbBaseDatabase *m_pDb; public: ODRX_USING_HEAP_OPERATORS( OdGiDummySubEntityTraits< OdGiSubEntityTraits > ); OdGiViewportDraw_Dummy(OdDbBaseDatabase *pDb = 0) : m_pDb(pDb) { } virtual OdDbBaseDatabase* database() const { return m_pDb; } virtual OdGiGeometry& rawGeometry() const { return *static_cast(const_cast(this)); } virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast(const_cast(this)); } virtual OdGiViewport& viewport() const { return *static_cast(const_cast(this)); } virtual OdGiViewportGeometry& geometry() const { return *static_cast(const_cast(this)); } virtual OdGiContext* context() const { return static_cast(const_cast(this)); } void addRef() { } void release() { } }; /** \details Library: TD_Gi */ class OdGiWorldDraw_Dummy : public OdGiDummySubEntityTraits< OdGiSubEntityTraits > , public OdGiDummyWorldDraw< OdGiWorldDraw > , public OdGiDummyWorldGeometry< OdGiWorldGeometry > , public OdGiDummyContext< OdGiContext > { OdDbBaseDatabase *m_pDb; public: ODRX_USING_HEAP_OPERATORS( OdGiDummySubEntityTraits< OdGiSubEntityTraits > ); OdGiWorldDraw_Dummy(OdDbBaseDatabase *pDb = 0) : m_pDb(pDb) { } virtual OdDbBaseDatabase* database() const { return m_pDb; } virtual OdGiGeometry& rawGeometry() const { return *static_cast(const_cast(this)); } virtual OdGiSubEntityTraits& subEntityTraits() const { return *static_cast(const_cast(this)); } virtual OdGiWorldGeometry& geometry() const { return *static_cast(const_cast(this)); } virtual OdGiContext* context() const { return static_cast(const_cast(this)); } void addRef() { } void release() { } }; /** \details Library: TD_Gi */ template class OdGeomGrabber : public T { OdGsMarker m_curSelMarker; WRA &wires; OdGeomGrabber(); protected: virtual OdGsMarker getCurSelMarker() const { return m_curSelMarker; } public: OdGeomGrabber(WRA &pW, DRAW &pVd) : T(pVd, pVd.geometry(), pVd.subEntityTraits()) , m_curSelMarker(0) , wires(pW) { } virtual void setSelectionMarker(OdGsMarker n) { m_curSelMarker = n; T::setSelectionMarker(n); } virtual WR *appendWire() { WR *pWire = wires.append(); pWire->selMarker = OdIntToGsMarker(-getFaceIndex(m_curSelMarker)); pWire->color = T::subEntityTraits().trueColor(); return pWire; } virtual void circle(const OdGePoint3d& center, double radius, const OdGeVector3d& normal) { appendWire()->circle(center, radius, normal); T::circle(center, radius, normal); } virtual void circle(const OdGePoint3d& p1, const OdGePoint3d& p2, const OdGePoint3d& p3) { appendWire()->circle(p1, p2, p3); T::circle(p1, p2, p3); } virtual void circularArc(const OdGePoint3d& center, double radius, const OdGeVector3d& normal, const OdGeVector3d& startVector, double sweepAngle, OdGiArcType arcType = kOdGiArcSimple) { appendWire()->circularArc(center, radius, normal, startVector, sweepAngle); T::circularArc(center, radius, normal, startVector, sweepAngle, arcType); } virtual void circularArc(const OdGePoint3d& start, const OdGePoint3d& point, const OdGePoint3d& end, OdGiArcType arcType = kOdGiArcSimple) { appendWire()->circularArc(start, point, end); T::circularArc(start, point, end, arcType); } virtual void polyline(OdInt32 nbPoints, const OdGePoint3d* pVertexList, const OdGeVector3d* pNormal = NULL, OdGsMarker lBaseSubEntMarker = -1) { appendWire()->polyline(nbPoints, pVertexList); T::polyline(nbPoints, pVertexList, pNormal, lBaseSubEntMarker); } virtual void nurbs(const OdGeNurbCurve3d& nurbs) { appendWire()->nurbs(nurbs); T::nurbs(nurbs); } }; /** \details Library: TD_Gi */ template class OdShellGrabber : public T { OdGsMarker m_curSelMarker; WRA &wires; OdShellGrabber(); public: OdShellGrabber(WRA &pW, DRAW &pVd) : T(pVd, pVd.geometry(), pVd.subEntityTraits()) , m_curSelMarker(0) , wires(pW) { } virtual OdGiRegenType regenType() const { return kOdGiHideOrShadeCommand; } virtual void setSelectionMarker(OdGsMarker n) { m_curSelMarker = n; T::setSelectionMarker(n); } virtual void shell( OdInt32 numVertices, const OdGePoint3d* vertexList, OdInt32 faceListSize, const OdInt32* faceList, const OdGiEdgeData* pEdgeData = 0, const OdGiFaceData* pFaceData = 0, const OdGiVertexData* pVertexData = 0) { WR *pWire = wires.append(); pWire->selMarker = m_curSelMarker; pWire->color = T::subEntityTraits().trueColor(); pWire->shell( numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData); T::shell( numVertices, vertexList, faceListSize, faceList, pEdgeData, pFaceData, pVertexData); } }; typedef OdStaticRxObject< OdGiDummySubEntityTraits< OdGiSubEntityTraits > > OdGiSubEntityTraits_Stub; #include "TD_PackPop.h" #endif // #ifndef _ODGIDUMMYGEOM_INCLUDED_