25#ifndef ODBASETRVECMODULE
26#define ODBASETRVECMODULE
101#define ODRX_DECLARE_PROPERTY_TRV(PropName) \
102 struct _##PropName##_PropDesc : public OdRxObjectImpl<OdRxPropDesc> \
104 OdTrVectorizerPropertyResolverPtr m_pResolver; \
105 static OdRxObjectPtr createObject(const OdTrVectorizerPropertyResolver *pResolver); \
106 static inline OdString _name(); \
107 OdString name() const; \
108 OdRxObjectPtr prop_get(const void* pThis) const; \
109 void prop_put(void* pThis, OdRxObject* pVal); \
112#define ODRX_GENERATE_PROPERTY_TRV(PropName) \
113 pInfo->putAt(_##PropName##_PropDesc::_name(), _##PropName##_PropDesc::createObject(m_pPropResolver));
115#define ODRX_INHERIT_PROPERTIES_TRV(BASE_CLASS) \
116 BASE_CLASS::generateProperties(pInfo);
118#define ODRX_DEFINE_PROPERTY_METHODS_PREFIX_TRV(ClassPrefix, PropName, PropHolder, getMethodName, putMethodName, accessFn) \
119 OdRxObjectPtr ClassPrefix _##PropName##_PropDesc::createObject(const OdTrVectorizerPropertyResolver *pResolver) \
121 OdRxObjectPtr pThis = OdRxObjectPtr(new _##PropName##_PropDesc, kOdRxObjAttach); \
122 static_cast<_##PropName##_PropDesc*>(pThis.get())->m_pResolver = pResolver; \
125 inline OdString ClassPrefix _##PropName##_PropDesc::_name() \
127 static OdString sName(OD_T(#PropName)); \
130 OdString ClassPrefix _##PropName##_PropDesc::name() const \
134 OdRxObjectPtr ClassPrefix _##PropName##_PropDesc::prop_get(const void* pThis) const \
136 return (OdRxObject*)OdRxVariantValue((static_cast<PropHolder*>(m_pResolver->hostByPropsDict((OdRxDictionary*)pThis)))->getMethodName()); \
138 void ClassPrefix _##PropName##_PropDesc::prop_put(void* pThis, OdRxObject* pVal) \
140 (static_cast<PropHolder*>(m_pResolver->hostByPropsDict((OdRxDictionary*)pThis)))->putMethodName(OdRxVariantValue(pVal)->accessFn()); \
143#define ODRX_DEFINE_PROPERTY_PREFIX_TRV(ClassPrefix, PropName, PropHolder, accessFn) \
144 ODRX_DEFINE_PROPERTY_METHODS_PREFIX_TRV(ClassPrefix, PropName, PropHolder, get_##PropName, put_##PropName, accessFn)
OdSmartPtr< OdRxDictionary > OdRxDictionaryPtr
OdSmartPtr< OdTrVectorizerPropertyResolver > OdTrVectorizerPropertyResolverPtr
OdSmartPtr< OdTrVectorizerModuleHost > OdTrVectorizerModuleHostPtr
OdSmartPtr< OdTrVisRendition > OdTrVisRenditionPtr
virtual OdTrVectorizerPropertyResolverPtr createPropertyResolver()
virtual OdSmartPtr< OdGsViewImpl > createVectorizeView()
virtual OdSmartPtr< OdGsBaseVectorizeDevice > createVectorizeDevice(OdTrVectorizerModuleHost *pModuleHost, OdTrVectorizerModuleHost::DeviceSetupType creationHint)
virtual void releasePropertyResolver()
virtual OdUInt8 * getDirectRenderBuffer(OdUInt32 *, OdUInt32 *, OdUInt32 *=NULL, OdUInt32 *=NULL)
void setRenderClient(OdTrVisRenderClient *pRenderClient, OdTrVectorizerPropertyResolver *pPropsResolver)
OdTrVisRenderClient * renderClient() const
OdTrVectorizerModuleHost()
virtual bool hasDirectRenderBuffer(bool *=NULL) const
virtual void onRenderingEnd(OdGsDCRect *=NULL, OdTrVectorizerUpdateHost *=NULL)
virtual void configureForPlatform(OdTrVisRenderClient *, DeviceSetupType)
virtual void generateProperties(OdRxDictionary *) const
OdTrVisRenderClient * m_pRenderClient
virtual OdTrVisRenditionPtr createRendition()
virtual OdRxDictionaryPtr createPropertiesContainer() const
virtual DeviceSetupType deviceSetupOverride() const
OdTrVectorizerPropertyResolverPtr m_pPropResolver
virtual bool onRenderingBegin(OdGsDCRect *=NULL, OdTrVectorizerUpdateHost *=NULL)
virtual OdTrVectorizerModuleHost * hostByPropsDict(OdRxDictionary *pInfo) const =0
virtual void hostUpdate(OdGsDCRect *pRect)=0