/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // Rendition contents recorder #ifndef ODTRVISRENDITIONRECORDER #define ODTRVISRENDITIONRECORDER #include "TD_PackPush.h" #include "TrVisRendition.h" /** \details */ class OdTrVisRenditionRecorder : public OdTrVisRenditionDef, protected OdTrVisRendition::IdRegistrator { public: struct CallRecord { CallRecord *m_pNextRecord; CallRecord() : m_pNextRecord(NULL) { } virtual ~CallRecord() { } virtual void reDrop(OdTrVisRendition *pRendition) = 0; }; protected: CallRecord *m_pFirstRecord; CallRecord *m_pLastRecord; public: OdTrVisRenditionRecorder(); ~OdTrVisRenditionRecorder() override; void appendRecord(CallRecord *pRecord); void playRecords(OdTrVisRendition *pRendition, bool bClear = false); void clearRecords(); bool hasRecords() const { return (m_pFirstRecord != NULL); } // High-level callbacks // Multithread processing flags MtHandlerType mtDataTypeProcessing(DataType & /*type*/) const override { return kMtGlobal; } // Returns Id registrator, or NULL if no registration supported OdTrVisRendition::IdRegistrator *idRegistrator() const override; // Mid-level callbacks // Surface // Called when output render surface parameters changed. void onSurfaceChanged(const OdTrVisSurfaceDef &pDef) override; // Called when rendering surface needs to be invalidated forcibly. void onSurfaceInvalidated() override; // Overlays // Called when new overlay added into device. void onOverlayAdded(OdTrVisOverlayId overlayId, const OdTrVisOverlayDef &pDef) override; // Called when exist overlay removed from device. void onOverlayDeleted(OdTrVisOverlayId overlayId) override; // Called when overlay visibility changed. void onOverlayVisibilityChanged(OdTrVisOverlayId overlayId, bool bVisibility) override; // Called when overlay rendering order changed. void onOverlayRenderOrderChanged(OdTrVisOverlayId overlayId, OdInt16 nRenderOrder) override; // Viewports // Called when new viewport added into device. void onViewportAdded(OdTrVisViewportId viewportId, const OdTrVisViewportDef &pDef) override; // Called when viewport inserted in list with some index. void onViewportInserted(OdTrVisViewportId viewportId, int nIndex, const OdTrVisViewportDef &pDef) override; // Called when viewport removed from device. void onViewportDeleted(OdTrVisViewportId viewportId) override; // Called when viewport visibility changed. void onViewportVisibilityChanged(OdTrVisViewportId viewportId, bool bVisibility) override; // Primary viewports configuration // Called when viewport view parameters is modified. void onViewportViewParamsModified(OdTrVisViewportId viewportId, const OdTrVisViewParamsDef &pDef) override; // Called when viewport linestyle settings is modified. void onViewportLineStylesModified(OdTrVisViewportId viewportId, const OdTrVisViewportLineStyleDef &pDef) override; // Called when viewport fading settings is modified. void onViewportFadingModified(OdTrVisViewportId viewportId, const OdTrVisViewportFadingDef &pDef) override; // Called when viewport lineweight settings is modified. void onViewportLineweightsModified(OdTrVisViewportId viewportId, const OdTrVisViewportLineweightsDef &pDef) override; // Called when viewport rendering mode is modified. void onViewportShadingModified(OdTrVisViewportId viewportId, const OdTrVisViewportShadingDef &pDef) override; // Called when viewport clipping region is modified. void onViewportClipModified(OdTrVisViewportId viewportId, const OdTrVisViewportClipDef &pDef, bool bNrcClipModified = true, bool bBorderModified = true) override; // Extended viewports configuration // Called when background stream in viewport is changed. void onViewportBackgroundChanged(OdTrVisViewportId viewportId, const OdTrVisBackgroundDef &pDef) override; // Called when viewport fog changed. void onViewportFogChanged(OdTrVisViewportId viewportId, const OdTrVisFogDef &pDef) override; // Called when viewport render settings changed. void onViewportRenderSettingsChanged(OdTrVisViewportId viewportId, const OdTrVisRenderSettingsDef &pDef) override; // Called when viewport sectioning modified. void onViewportSectioningChanged(OdTrVisViewportId viewportId, const OdTrVisSectionDef &pDef) override; // Called when viewport anti-aliasing setting changed. void onViewportAntiAliasingChanged(OdTrVisViewportId viewportId, OdUInt32 nAntiAliasing) override; // Called when viewport ssao setting changed. void onViewportSSAOChanged(OdTrVisViewportId viewportId, bool bSSAO) ODRX_OVERRIDE; // Viewport default lights configuration // Called when viewport ambient light setting modified. void onViewportAmbientLightChanged(OdTrVisViewportId viewportId, const OdTrVisMaterialColor &ambientLight) override; // Called when viewport default light setting modified. void onViewportDefaultLightsChanged(OdTrVisViewportId viewportId, bool bDefaultLightsOn, const OdTrVisLightDef *pLightsList = NULL, OdUInt32 nLightsListEntries = 0) override; // Viewport lights management // Called when light source added into viewport light sources list. void onViewportLightAttached(OdTrVisViewportId viewportId, OdTrVisLightId lightId, OdUInt32 nOverrides = 0, const OdTrVisLightDef &pOverrides = OdTrVisLightDef()) override; // Called when light source removed from viewport light sources list. void onViewportLightDetached(OdTrVisViewportId viewportId, OdTrVisLightId lightId) override; // Per-overlay viewport overrides // Called when viewport needs override view parameters for specific overlay. void onOverlayViewParamsOverride(OdTrVisViewportId viewportId, OdTrVisOverlayId overlayId, bool bOverride, const OdTrVisViewParamsDef &pDef = OdTrVisViewParamsDef()) override; // Called when viewport extents changed. void onOverlayExtentsOverride(OdTrVisViewportId viewportId, OdTrVisOverlayId overlayId, const OdTrVisExtentsDef &pDef) override; // Viewports ordering lists // Called when order of metafiles in viewport is changed. void onMetafileOrderChanged(OdTrVisViewportId viewportId, OdTrVisOverlayId overlayId, const OdTrVisDisplayId *pList, OdUInt32 nEntries) override; // Called when order of metafiles in viewport is changed (for obtain modified part of list by renderer). void onMetafileOrderChanged(OdTrVisViewportId viewportId, OdTrVisOverlayId overlayId, OdUInt32 nInvalidFrom, OdUInt32 nInvalidLen, const OdTrVisDisplayId *pValidFrom, OdUInt32 nValidLen) override; // Called when order of metafiles can be inherit from other source. void onMetafileOrderInheritance( OdTrVisViewportId viewportId1, OdTrVisOverlayId overlayId1, OdTrVisViewportId viewportId2 ) override; // Metafiles // Called when new metafile added (returns visualId, equal to metafileId by default). OdTrVisDisplayId onMetafileAdded(OdTrVisMetafileId metafileId, const OdTrVisMetafileDef &pDef) override; // Called when exist metafile deleted. void onMetafileDeleted(OdTrVisMetafileId metafileId) override; // Called when exist metafile changed. //virtual void onMetafileModified(OdTrVisMetafileId metafileId, const OdTrVisMetafileDef &pDef); // Called when exist metafile extents updated (affected by transformation state branches). void onMetafileExtentsUpdated(OdTrVisMetafileId metafileId, const OdGeExtents3d &extents) override; // Called when exist metafile visibility changed. void onMetafileVisibilityChanged(OdTrVisMetafileId metafileId, bool bVisibility) override; // Called when exist metafile highlighting changed. void onMetafileHighlightingChanged(OdTrVisMetafileId metafileId, bool bHighlight) override; // Called when exist metafile fading changed. void onMetafileFadingChanged(OdTrVisMetafileId metafileId, bool bFade) override; // Lights // Called when new light source added. void onLightAdded(OdTrVisLightId lightId, const OdTrVisLightDef &pDef) override; // Called when exist light source modified. void onLightModified(OdTrVisLightId lightId, OdUInt32 nKindOfMod, const OdTrVisLightDef &pDef) override; // Called when exist light source deleted. void onLightDeleted(OdTrVisLightId lightId) override; // State branches (highlighting, hide, transform) // Called when new state branch added. void onStateBranchAdded(OdTrVisStateBranchId stateBranchId, const OdTrVisStateBranchDef &pDef) override; // Called when exist state branch modified. void onStateBranchModified(OdTrVisStateBranchId stateBranchId, const OdTrVisStateBranchDef &pDef, bool bChildsModified, bool bMarkersModified) override; // Called when exist state branch deleted. void onStateBranchDeleted(OdTrVisStateBranchId stateBranchId) override; // Called to attach additional data to range of state branch markers. void onStateBranchMarkersRangeDataAdded(OdTrVisStateBranchId stateBranchId, const OdTrVisStateBranchMarkersRange &range, const OdTrVisPropertyDef &propDef) override; // Called to detach additional data from state branch markers range. void onStateBranchMarkersRangeDataRemoved(OdTrVisStateBranchId stateBranchId, const OdTrVisStateBranchMarkersRange &range) override; // Textures // Called when new texture added. void onTextureAdded(OdTrVisTextureId textureId, const OdTrVisTextureDef &pDef) override; // Called when exist texture deleted. void onTextureDeleted(OdTrVisTextureId textureId) override; // Called when texture flags modified. void onTextureFlagsModified(OdTrVisTextureId textureId, OdUInt32 newFlags) override; // Materials // Called when new material added. void onMaterialAdded(OdTrVisMaterialId materialId, const OdTrVisMaterialDef &pDef) override; // Called when exist material deleted. void onMaterialDeleted(OdTrVisMaterialId materialId) override; // Called when new material reflection plane added. void onMaterialRefPlaneAdded(OdTrVisRefPlaneId refPlaneId, const OdTrVisRefPlaneDef &pDef) override; // Called when exist material reflection plane deleted. void onMaterialRefPlaneDeleted(OdTrVisRefPlaneId refPlaneId) override; // Visual Styles // Called when new visual style added. void onVisualStyleAdded(OdTrVisVisualStyleId visualStyleId, const OdTrVisVisualStyle &pDef) override; // Called when exist visual style modified. void onVisualStyleModified(OdTrVisVisualStyleId visualStyleId, const OdTrVisVisualStyle &pDef) override; // Called when exist visual style deleted. void onVisualStyleDeleted(OdTrVisVisualStyleId visualStyleId) override; // Layers // Called when new layer added. void onLayerAdded(OdTrVisLayerId layerId, const OdTrVisLayerDef &pDef) override; // Called when exist layer modified. //virtual void onLayerModified(OdTrVisLayerId layerId, const OdTrVisLayerDef &pDef); // Called when exist layer deleted. void onLayerDeleted(OdTrVisLayerId layerId) override; // Called when exist layer visibility changed. void onLayerVisibilityChanged(OdTrVisLayerId layerId, bool bVisibility) override; // Called when exist layer fading changed. void onLayerFadingChanged(OdTrVisLayerId layerId, bool bFade) override; // Called when layer viewport-dependent properties changed. void onLayerVpDepPropsOverride(OdTrVisLayerId layerId, OdTrVisViewportId viewportId, bool bOverride, const OdTrVisLayerProps &pProps = OdTrVisLayerProps()) override; // Extension objects // Called when new extension object added. void onExtensionObjectAdded(OdTrVisExtensionId extId, const OdTrVisExtensionObject *pObj) override; // Called when exist extension object deleted. void onExtensionObjectDeleted(OdTrVisExtensionId extId) override; // Called to send special extension object specific data. void onExtensionObjectSpecificData(OdTrVisExtensionId extId, OdUInt32 nDataId, const OdTrVisPropertyDef &propDef) override; // Called to change extension object visibility. void onExtensionObjectVisibilityChanged(OdTrVisExtensionId extId, bool bVisibility) override; // Blocks // Called when new block added. void onBlockAdded(OdTrVisBlockId blockId, const OdTrVisDisplayId *pList, OdUInt32 nEntries) override; // Called when block display list changed. void onBlockModified(OdTrVisBlockId blockId, OdUInt32 nInvalidFrom, OdUInt32 nInvalidLen, const OdTrVisDisplayId *pValidFrom, OdUInt32 nValidLen) override; // Called when exist block deleted. void onBlockDeleted(OdTrVisBlockId blockId) override; // Groups // Called when new group added. void onGroupAdded(OdTrVisGroupId groupId) override; // Called when exist group deleted. void onGroupDeleted(OdTrVisGroupId groupId) override; // Called to attach metafiles to group. void onGroupMetafilesAttached(OdTrVisGroupId groupId, const OdTrVisMetafileId *pMetafilesList, OdUInt32 nMetafiles) override; // Called to detach metafiles from group (if no metafiles specified - clear entire list of groupped metafiles). void onGroupMetafilesDetached(OdTrVisGroupId groupId, const OdTrVisMetafileId *pMetafilesList, OdUInt32 nMetafiles) override; // Called to delete all groupped metafiles from graphics scene. //virtual void onGroupMetafilesDeleted(OdTrVisGroupId groupId); // Called to change visibility state for all groupped metafiles. void onGroupMetafilesVisibilityChanged(OdTrVisGroupId groupId, bool bVisibility) override; // Called to change highlighting state for all groupped metafiles. void onGroupMetafilesHighlightingChanged(OdTrVisGroupId groupId, bool bHighlight) override; // Called to change fading state for all groupped metafiles. void onGroupMetafilesFadingChanged(OdTrVisGroupId groupId, bool bFade) override; // Properties // Metafile-related properties. // Called to attach property to metafile. void onMetafilePropertyAttached(OdTrVisMetafileId metafileId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from metafile. void onMetafilePropertyDetached(OdTrVisMetafileId metafileId, OdTrVisPropertyDef::PropertyType propType) override; // Group-related properties. // Called to attach property to group. void onGroupPropertyAttached(OdTrVisGroupId groupId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from group. void onGroupPropertyDetached(OdTrVisGroupId groupId, OdTrVisPropertyDef::PropertyType propType) override; // Layer-related properties. // Called to attach property to layer. void onLayerPropertyAttached(OdTrVisLayerId layerId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from layer. void onLayerPropertyDetached(OdTrVisLayerId layerId, OdTrVisPropertyDef::PropertyType propType) override; // VisualStyle-related properties. // Called to attach property to visual style. void onVisualStylePropertyAttached(OdTrVisVisualStyleId visualStyleId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from visual style. void onVisualStylePropertyDetached(OdTrVisVisualStyleId visualStyleId, OdTrVisPropertyDef::PropertyType propType) override; // Material-related properties. // Called to attach property to material. void onMaterialPropertyAttached(OdTrVisMaterialId materialId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from material. void onMaterialPropertyDetached(OdTrVisMaterialId materialId, OdTrVisPropertyDef::PropertyType propType) override; // Texture-related properties. // Called to attach property to texture. void onTexturePropertyAttached(OdTrVisTextureId textureId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from texture. void onTexturePropertyDetached(OdTrVisTextureId textureId, OdTrVisPropertyDef::PropertyType propType) override; // Light-related properties. // Called to attach property to light source. void onLightPropertyAttached(OdTrVisLightId lightId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from light source. void onLightPropertyDetached(OdTrVisLightId lightId, OdTrVisPropertyDef::PropertyType propType) override; // StateBranch-related properties. // Called to attach property to state branch. void onStateBranchPropertyAttached(OdTrVisStateBranchId stateBranchId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from state branch. void onStateBranchPropertyDetached(OdTrVisStateBranchId stateBranchId, OdTrVisPropertyDef::PropertyType propType) override; // Viewport-related properties. // Called to attach property to viewport. void onViewportPropertyAttached(OdTrVisViewportId viewportId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from viewport. void onViewportPropertyDetached(OdTrVisViewportId viewportId, OdTrVisPropertyDef::PropertyType propType) override; // Overlay-related properties. // Called to attach property to overlay. void onOverlayPropertyAttached(OdTrVisOverlayId overlayId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from overlay. void onOverlayPropertyDetached(OdTrVisOverlayId overlayId, OdTrVisPropertyDef::PropertyType propType) override; // ExtensionObject-related properties. // Called to attach property to extension object. void onExtensionObjectPropertyAttached(OdTrVisExtensionId extId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from extension object. void onExtensionObjectPropertyDetached(OdTrVisExtensionId extId, OdTrVisPropertyDef::PropertyType propType) override; // Block-related properties. // Called to attach property to block. void onBlockPropertyAttached(OdTrVisBlockId blockId, const OdTrVisPropertyDef &propDef) override; // Called to detach property from viewport. void onBlockPropertyDetached(OdTrVisBlockId blockId, OdTrVisPropertyDef::PropertyType propType) override; protected: // IdRegistrator overrides void reg(DataType type, OdTrVisId id, OdDbStub *pPersId) override; void reg(DataType type, OdTrVisId id, const OdGiDrawable *pTransId) override; void reg(DataType type, OdTrVisId id, const OdTrVisUniqueID &uId) override; void kill(DataType type, OdTrVisId id) override; OdTrVisUniqueID *get(DataType type, OdTrVisId id, bool bKill = false) const override; }; #include "TD_PackPop.h" #endif // ODTRVISRENDITIONRECORDER