/////////////////////////////////////////////////////////////////////////////// // 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 __ODGSMODEL_H_INCLUDED_ #define __ODGSMODEL_H_INCLUDED_ #include "Gs/Gs.h" class OdGiPathNode; #include "TD_PackPush.h" /** \details Library: TD_Gs */ class FIRSTDLL_EXPORT ODRX_ABSTRACT OdGsCache : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdGsCache); /** \details Returns pointer to the Model object associated with this Cache object. */ virtual OdGsModel* model() const = 0; /** \details Reset pointer to the underlying GiDrawable object associated with this Cache object. */ virtual void setDrawableNull() = 0; /** \details Returns the extents of the underlying GiDrawable object(s) associated with this Cache object. \param extents [out] Receives the extents. \remarks Returns true if and only if the GiDrawable object(s) have extents. */ virtual bool extents(OdGeExtents3d& extents) const = 0; }; typedef OdGiDrawablePtr (*OdGiOpenDrawableFn)(OdDbStub* id); class OdGsModelReactor; /** \details The class represents collections of drawable objects in the Teigha framework. Library: TD_Gs */ class FIRSTDLL_EXPORT ODRX_ABSTRACT OdGsModel : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdGsModel); /** \details Specifies the function called by open() for this Model object. \param openDrawableFn [in] Function to be called. */ virtual void setOpenDrawableFn(OdGiOpenDrawableFn openDrawableFn) = 0; /** \details Notification function called whenever a drawable object is added to this Model object. \param pAdded [in] Pointer to the added Drawable object. \param pParent [in] Pointer to the parent of the added Drawable object. */ virtual void onAdded(OdGiDrawable* pAdded, OdGiDrawable* pParent) = 0; /** \param parentID [in] Object ID of the parent of the added Drawable object. */ virtual void onAdded(OdGiDrawable* pAdded, OdDbStub* parentID) = 0; /** \details Notification function called whenever a drawable object is modified in this Model object. \param pModified [in] Pointer to the modified Drawable object. \param pParent [in] Pointer to the parent of the modified Drawable object. */ virtual void onModified(OdGiDrawable* pModified, OdGiDrawable* pParent) = 0; /** \param parentID [in] Object ID of the parent of the modified Drawable object. */ virtual void onModified(OdGiDrawable* pModified, OdDbStub* parentID) = 0; /** \details Notification function called whenever a drawable object is erased from this Model object. \param pErased [in] Pointer to the erased Drawable object. \param pParent [in] Pointer to the parent of the erased Drawable object. */ virtual void onErased(OdGiDrawable* pErased, OdGiDrawable* pParent) = 0; /** \param parentID [in] Object ID of the parent of the erased Drawable object. */ virtual void onErased(OdGiDrawable* pErased, OdDbStub* parentID) = 0; // Invalidation Hint enum InvalidationHint { kInvalidateIsolines = 0, kInvalidateViewportCache = 1, kInvalidateAll = 2, kInvalidateMaterials = 3, kInvalidateLinetypes = 4 }; /** \details Invalidates the specified cached data contained in this Model object. \param pView [in] Pointer to the VectorizeView object for which data are to be invalidated. \param hint [in] Invalidation hint. \remarks hint must be one of the following: Name Value kInvalidateIsolines 0 kInvalidateViewportCache 1 kInvalidateAll 2
*/ virtual void invalidate(InvalidationHint hint) = 0; virtual void invalidate(OdGsView* pView) = 0; virtual void setTransform(const OdGeMatrix3d&) = 0; virtual OdGeMatrix3d transform() const = 0; virtual void highlight(const OdGiPathNode& path, bool bDoIt = true, const OdGsView* pView = 0) = 0; enum RenderType { kMain = 0, // Use main Z-buffer kSprite, // Use alternate Z-buffer (for sprites) kDirect, // Render on device directly kHighlight, // Render on device directly (skipping frame buffer and Z-buffer) kHighlightSelection, // Render on device directly using highlighting style (skipping frame buffer and Z-buffer) kDirectTopmost, // Render on top of all other render types without Z-buffer kContrast, // Render with contrast style kUser1, kUser2, kUser3, kCount // Count of RenderTypes }; virtual void setRenderType(RenderType renderType) = 0; virtual RenderType renderType() const = 0; //virtual bool addSceneGraphRoot(OdGiDrawable* pRoot) = 0; //virtual bool eraseSceneGraphRoot(OdGiDrawable* pRoot) = 0; //virtual void onPaletteModified() = 0; //virtual bool getTransformAt(const OdGsPath*, OdGeMatrix3d &) = 0; //virtual void setExtents(const OdGePoint3d&, const OdGePoint3d&) = 0; //virtual void setViewClippingOverride(bool bOverride) = 0; //virtual void setMaterialsOverride(bool bOverride) = 0; virtual void setRenderModeOverride(OdGsView::RenderMode mode = OdGsView::kNone) = 0; enum AdditionMode { kAddDrawable = 0, // Add new drawable kUneraseDrawable // Added drawables are unerased }; virtual void setAdditionMode(AdditionMode mode) = 0; virtual AdditionMode additionMode() const = 0; virtual void setBackground(OdDbStub *backgroundId) = 0; virtual OdDbStub *background() const = 0; virtual void setVisualStyle(OdDbStub *visualStyleId) = 0; virtual OdDbStub *visualStyle() const = 0; virtual void setVisualStyle(const OdGiVisualStyle &visualStyle) = 0; virtual bool visualStyle(OdGiVisualStyle &visualStyle) const = 0; virtual void addModelReactor(OdGsModelReactor *pReactor) = 0; virtual void removeModelReactor(OdGsModelReactor *pReactor) = 0; virtual void setEnableSectioning(bool bEnable) = 0; virtual bool isSectioningEnabled() const = 0; virtual bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector) = 0; virtual bool setSectioning(const OdGePoint3dArray &points, const OdGeVector3d &upVector, double dTop, double dBottom) = 0; virtual void setSectioningVisualStyle(OdDbStub *visualStyleId) = 0; }; /** \details GsModel reactor. Library: TD_Gs */ class OdGsModelReactor { public: OdGsModelReactor() { } virtual ~OdGsModelReactor() { } //virtual bool onSceneGraphRootAdded(OdGsModel *pModel, OdGiDrawable *pAdded) { return true; } //virtual bool onSceneGraphRootErased(OdGsModel *pModel, OdGiDrawable *pErased) { return true; } virtual bool onAdded(OdGsModel *pModel, OdGiDrawable *pAdded, OdGiDrawable *pParent) { return true; } virtual bool onAdded(OdGsModel *pModel, OdGiDrawable *pAdded, OdDbStub *parentID) { return true; } virtual bool onErased(OdGsModel *pModel, OdGiDrawable *pErased, OdGiDrawable *pParent) { return true; } virtual bool onErased(OdGsModel *pModel, OdGiDrawable *pErased, OdDbStub *parentID) { return true; } virtual bool onModified(OdGsModel *pModel, OdGiDrawable *pModified, OdGiDrawable *pParent) { return true; } virtual bool onModified(OdGsModel *pModel, OdGiDrawable *pModified, OdDbStub *parentID) { return true; } }; #include "TD_PackPop.h" #endif // __ODGSMODEL_H_INCLUDED_