/////////////////////////////////////////////////////////////////////////////// // 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 __OD_GI_VIEWPORT_TRAITS_DATA__ #define __OD_GI_VIEWPORT_TRAITS_DATA__ #include "TD_PackPush.h" #include "Ge/GeVector3d.h" #include "Gi/GiViewportTraits.h" #include "Gi/GiLightTraits.h" /** \details Library: TD_Gi */ class OdGiViewportTraitsData { OdDbStub* m_backgroundId; bool m_bDefLightOn; OdGiViewportTraits::DefaultLightingType m_lightType; OdGeVector3d m_userDefLightDir; double m_defLightIntensity; OdCmEntityColor m_defLightColor; OdGiShadowParameters m_defShadowParams; OdCmEntityColor m_colorAmbient; double m_dBrightness; double m_dContrast; OdDbStub* m_renderEnvId; OdDbStub* m_renderSettings; OdDbStub* m_visualStyle; OdGiToneOperatorParametersPtr m_pToneOperators; public: OdGiViewportTraitsData() : m_backgroundId(NULL) , m_bDefLightOn(false) , m_lightType(OdGiViewportTraits::kOneDistantLight) , m_userDefLightDir(OdGeVector3d::kZAxis) , m_defLightIntensity(0.5) , m_defLightColor(255, 255, 255) , m_defShadowParams() , m_colorAmbient() , m_dBrightness(50.0) , m_dContrast(50.0) , m_renderEnvId(NULL) , m_renderSettings(NULL) , m_visualStyle(NULL) { m_defShadowParams.setShadowsOn(false); m_pToneOperators = OdGiToneOperatorParameters::createObject(); } OdGiDrawable::DrawableType type() const { return OdGiDrawable::kViewport; } void setBackground(OdDbStub* backgroundId) { m_backgroundId = backgroundId; } OdDbStub* background() const { return m_backgroundId; } void setDefaultLightingOn(bool on) { m_bDefLightOn = on; } bool isDefaultLightingOn() const { return m_bDefLightOn; } void setDefaultLightingType(OdGiViewportTraits::DefaultLightingType typ) { m_lightType = typ; } OdGiViewportTraits::DefaultLightingType defaultLightingType() const { return m_lightType; } OdGeVector3d userDefinedLightDirection() const { return m_userDefLightDir; } void setUserDefinedLightDirection(const OdGeVector3d& lightDirection) { m_userDefLightDir = lightDirection; } double defaultLightingIntensity() const { return m_defLightIntensity; } void setDefaultLightingIntensity(double dIntensity) { m_defLightIntensity = dIntensity; } const OdCmEntityColor &defaultLightingColor() const { return m_defLightColor; } void setDefaultLightingColor(const OdCmEntityColor& color) { m_defLightColor = color; } const OdGiShadowParameters &defaultLightingShadowParameters() const { return m_defShadowParams; } void setDefaultLightingShadowParameters(const OdGiShadowParameters ¶ms) { m_defShadowParams = params; } void setAmbientLightColor(const OdCmEntityColor& clr) { m_colorAmbient = clr; } const OdCmEntityColor &ambientLightColor() const { return m_colorAmbient; } void setBrightness(double brightness) { m_dBrightness = brightness; } double brightness() const { return m_dBrightness; } void setContrast(double contrast) { m_dContrast = contrast; } double contrast() const { return m_dContrast; } void setRenderEnvironment(OdDbStub* renderEnvId) { m_renderEnvId = renderEnvId; } OdDbStub* renderEnvironment() const { return m_renderEnvId; } void setRenderSettings(OdDbStub* renderSettingsId) { m_renderSettings = renderSettingsId; } OdDbStub* renderSettings() const { return m_renderSettings; } void setVisualStyle(OdDbStub* visualStyleId) { m_visualStyle = visualStyleId; } OdDbStub* visualStyle() const { return m_visualStyle; } void setToneOperatorParameters(const OdGiToneOperatorParameters ¶ms) { if (params.isKindOf(OdGiPhotographicExposureParameters::desc())) { if (!m_pToneOperators->isKindOf(OdGiPhotographicExposureParameters::desc())) m_pToneOperators = OdGiPhotographicExposureParameters::createObject(); *static_cast(m_pToneOperators.get()) = static_cast(params); } else { if (m_pToneOperators->isKindOf(OdGiPhotographicExposureParameters::desc())) m_pToneOperators = OdGiToneOperatorParameters::createObject(); *m_pToneOperators = params; } } void toneOperatorParameters(OdGiToneOperatorParameters ¶ms) const { if (m_pToneOperators->isKindOf(OdGiPhotographicExposureParameters::desc()) && params.isKindOf(OdGiPhotographicExposureParameters::desc())) static_cast(params) = *static_cast(m_pToneOperators.get()); else params = *m_pToneOperators; } const OdGiToneOperatorParameters &toneOperatorParameters() const { return *m_pToneOperators; } static bool compareToneOps(const OdGiToneOperatorParametersPtr &op1, const OdGiToneOperatorParametersPtr &op2) { const bool bPhoto1 = op1->isKindOf(OdGiPhotographicExposureParameters::desc()); const bool bPhoto2 = op2->isKindOf(OdGiPhotographicExposureParameters::desc()); if (bPhoto1 && bPhoto2) return *static_cast(op1.get()) == *static_cast(op2.get()); else if (!bPhoto1 && !bPhoto2) return *op1 == *op2; return false; } bool operator ==(const OdGiViewportTraitsData &data2) const { return ((m_backgroundId == data2.m_backgroundId) && (m_bDefLightOn == data2.m_bDefLightOn) && (m_lightType == data2.m_lightType) && m_userDefLightDir.isEqualTo(data2.m_userDefLightDir) && (m_colorAmbient == data2.m_colorAmbient) && OdEqual(m_dBrightness, data2.m_dBrightness) && OdEqual(m_dContrast, data2.m_dContrast) && (m_renderEnvId == data2.m_renderEnvId) && (m_renderSettings == data2.m_renderSettings) && (m_visualStyle == data2.m_visualStyle) && compareToneOps(m_pToneOperators, data2.m_pToneOperators)); } bool operator !=(const OdGiViewportTraitsData &data2) const { return !(*this == data2); } }; #include "TD_PackPop.h" #endif // __OD_GI_VIEWPORT_TRAITS_DATA__