25#ifndef ODTRVECRESOURCESHARINGPROVIDER
26#define ODTRVECRESOURCESHARINGPROVIDER
32#include "ExDrawOrderBase.h"
38class OdTrVecVisualStyleContainer;
39class OdTrVecLayerContainer;
40class OdTrVecRefPlanesContainer;
41class OdTrVisMetafilesPool;
42class OdTrVisMtContext;
48 ,
public OdDrawOrderBaseDeviceMCCallback
58 static bool isAttached(
const OdDrawOrderMetafileBase &bitSet,
const OdTrVecDevice *pDevice);
60 static void attach(OdDrawOrderMetafileBase &bitSet,
const OdTrVecDevice *pDevice);
62 static void detach(OdDrawOrderMetafileBase &bitSet,
const OdTrVecDevice *pDevice);
64 static void eliminate(OdDrawOrderMetafileBase &bitSet,
const OdTrVecDevice *pDevice);
67 static void clear(OdDrawOrderMetafileBase &bitSet);
116 virtual void onDeleteRequest(onDeleteRequestProc pReqProc,
void *pData,
void *pArg =
nullptr);
146 OdTrVecDevice *
findUsage(
const OdDrawOrderMetafileBase &bitSet, OdTrVecDevice *pStartFrom = NULL)
const;
149 virtual bool shareMetafile(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet,
153 virtual bool shareGroup(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet,
154 OdTrVisGroupId groupId,
void *pInternalDataPtr,
void *pOriginatorPtr);
157 virtual bool shareTexture(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet,
161 virtual bool shareMaterial(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet,
165 virtual bool shareMetafile(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom,
168 virtual bool shareGroup(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom,
169 OdTrVisGroupId groupId,
void *pInternalDataPtr,
void *pOriginatorPtr);
171 virtual bool shareTexture(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom,
174 virtual bool shareMaterial(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom,
225#define OdTrVecResourceDependency_queryX(TypeOf, BaseClass) \
226 OdRxObject *queryX(const OdRxClass* pClass) const \
228 if (pClass == OdTrVecResourceSharingProvider::ResourceDependency::desc()) \
229 return reinterpret_cast<OdRxObject*>((OdTrVecResourceSharingProvider::ResourceDependency*)this); \
230 return BaseClass::queryX(pClass); \
232 TypeOfResource resourceType() const { return TypeOf; }
OdSmartPtr< OdTrVecResourceSharingProvider > OdTrVecResourceSharingProviderPtr
OdTrVisId OdTrVisMaterialId
OdTrVisId OdTrVisTextureId
OdTrVisId OdTrVisMetafileId
virtual OdTrVisId resourceId() const =0
virtual OdDrawOrderMetafileBase & resourceBitSet()=0
virtual TypeOfResource resourceType() const =0
static OdRxClass * desc()
OdGsDevice * gsDevice(OdTrVecDevice *pRequestFor) const
OdTrVecTtfFontsCache * m_pTtfCache
OdTrVisRenderClient * renderClient(OdTrVecDevice *pRequestFor) const
OdTrVisMetafilesPool * m_pMetafilesPool
virtual void closeResourceSharing(OdTrVecDevice *pDevice, bool bTemporaryDisconnect=false)
void mtLockMetafilesPool(OdTrVecDevice *pDevice)
virtual void onDeleteRequest(onDeleteRequestProc pReqProc, void *pData, void *pArg=nullptr)
OdTrVecLayerContainer * m_pLayerCache
OdRxObjectPtr m_pSrvMetafilesPool
OdRxObject * serverMetafilesPool(OdTrVecDevice *pDevice)
OdUInt32 m_nSharedDevices
OdTrVecLayerContainer * layersCache(OdTrVecDevice *pDevice)
void broadcastFunction(const OdDrawOrderMetafileBase &bitSet, broadcastProc pProc, void *pArg) const
OdTrVecVisualStyleContainer * m_pVSCache
OdTrVecDevice * findUsage(const OdDrawOrderMetafileBase &bitSet, OdTrVecDevice *pStartFrom=NULL) const
ODRX_USING_HEAP_OPERATORS(OdTrVisSharingProviderClient)
virtual bool shareMetafile(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisMetafileId metafileId, void *pInternalDataPtr, void *pOriginatorPtr)
virtual bool shareTexture(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet, OdTrVisTextureId textureId, void *pInternalDataPtr, void *pOriginatorPtr)
void shareIdRegistration(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisId id, OdInt32 type)
virtual void openResourceSharing(OdTrVecDevice *pDevice)
OdTrVecRefPlanesContainer * m_pRefPlanes
virtual bool shareMaterial(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet, OdTrVisMaterialId materialId, void *pInternalDataPtr, void *pOriginatorPtr)
void broadcastFunctionForAll(broadcastProc pProc, void *pArg, const OdTrVecDevice *pExclusion=NULL) const
virtual bool shareMetafile(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet, OdTrVisMetafileId metafileId, void *pInternalDataPtr, void *pOriginatorPtr)
virtual bool shareMaterial(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisMaterialId materialId, void *pInternalDataPtr, void *pOriginatorPtr)
virtual bool shareTexture(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisTextureId textureId, void *pInternalDataPtr, void *pOriginatorPtr)
OdTrVisRendition * rendition(OdTrVecDevice *pRequestFor) const
OdTrVisMtContext * m_pMfPoolMtCtx
OdTrVecTtfFontsCache * ttfFontsCache(OdTrVecDevice *pDevice)
virtual bool shareGroup(OdTrVecDevice *pRequestedFor, OdDrawOrderMetafileBase &bitSet, OdTrVisGroupId groupId, void *pInternalDataPtr, void *pOriginatorPtr)
OdTrVecResourceSharingProvider()
OdRefCounter m_nMfPoolEntrances
OdTrVecVisualStyleContainer * visualStylesCache(OdTrVecDevice *pDevice)
virtual bool shareGroup(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisGroupId groupId, void *pInternalDataPtr, void *pOriginatorPtr)
bool materialTexturesProc(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisMaterialId materialId, void *pInternalDataPtr, void *pOriginatorPtr)
OdTrVecRefPlanesContainer * refPlanesCache(OdTrVecDevice *pDevice)
bool internalTextureProc(OdTrVecDevice *pRequestedFor, OdTrVecDevice *pRequestedFrom, OdTrVisTextureId textureId, void *pInternalDataPtr, void *pOriginatorPtr, OdTrVisTextureDef &resTexture, bool &bCreated)
~OdTrVecResourceSharingProvider()
void mtUnlockMetafilesPool(OdTrVecDevice *pDevice)
void(* broadcastProc)(OdDrawOrderBaseDevice *pDevice, void *pData)
const OdTrVisRendition::ClientSettings & clientSettings(const OdTrVecDevice *pRequestFor) const
OdTrVisMetafilesPool * metafilesPool(OdTrVecDevice *pDevice)
bool isResourceSharingOpened(OdTrVecDevice *pDevice) const
static OdSmartPtr< OdTrVecResourceSharingProvider > createObject()
OdArray< DeviceEntry > m_rmDevices
bool hasSharedResources() const
void setServerMetafilesPool(OdTrVecDevice *pDevice, OdRxObject *pMfPool)
OdTrVisSharingProviderClient()
typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture)
GLuint GLsizei GLsizei GLint GLenum * type
static const OdUInt32 g_nMaxBit
static void attach(OdDrawOrderMetafileBase &bitSet, const OdTrVecDevice *pDevice)
static void clear(OdDrawOrderMetafileBase &bitSet)
static void compress(OdDrawOrderMetafileBase &bitSet, OdUInt32 nBit)
static bool isAttached(const OdDrawOrderMetafileBase &bitSet, const OdTrVecDevice *pDevice)
static void detach(OdDrawOrderMetafileBase &bitSet, const OdTrVecDevice *pDevice)
static const OdUInt32 g_nBitSys
static void eliminate(OdDrawOrderMetafileBase &bitSet, const OdTrVecDevice *pDevice)
DeviceEntry(OdTrVecDevice *pDevice)
OdTrVecDevice * m_pDevice