/////////////////////////////////////////////////////////////////////////////// // 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 __ODDBMATERIAL_H__ #define __ODDBMATERIAL_H__ #include "TD_PackPush.h" #include "Gi/GiMaterial.h" #include "DbObject.h" /** \details This class represents Material properties for shaded entities. */ class TOOLKIT_EXPORT OdDbMaterial : public OdDbObject { public: ODDB_DECLARE_MEMBERS(OdDbMaterial); OdDbMaterial(); /** \details Sets the name of this Material object. \param name [in] Name. \remarks Returns eOk if successful, or an appropriate error code if not. */ virtual OdResult setName( const OdString& name); /** \details Returns the name of this Material object. */ virtual OdString name() const; /** \details Sets the description of this Material object. \param description [in] Description. \remarks Returns eOk if successful, or an appropriate error code if not. */ virtual void setDescription( const OdString& description); /** \details Returns the description of this Material object. */ virtual OdString description() const; /** \details Sets the ambient (shadow) component of this Material object. \param ambientColor [in] Ambient color. */ virtual void setAmbient( const OdGiMaterialColor& ambientColor); /** \details Returns the ambient (shadow) component of this Material object. \param ambientColor [out] Receives the ambient color. */ virtual void ambient( OdGiMaterialColor& ambientColor) const; /** \details Sets the diffuse (main) component of this Material object. \param diffuseColor [in] Diffuse color. \param diffuseMap [in] Diffuse map. */ virtual void setDiffuse( const OdGiMaterialColor& diffuseColor, const OdGiMaterialMap& diffuseMap); /** \details Returns the diffuse (main) component of this Material object. \param diffuseColor [out] Receives the diffuse color. \param diffuseMap [out] Receives the diffuse map. */ virtual void diffuse( OdGiMaterialColor& diffuseColor, OdGiMaterialMap& diffuseMap) const; /** \details Sets the specular (reflection) component of this Material object. \param specularColor [in] Specular color. \param specularMap [in] Specular map. \param glossFactor [in] Gloss factor. \remarks The specular component is viewpoint dependent, and most apparent when the entity is highlighted. */ virtual void setSpecular( const OdGiMaterialColor& specularColor, const OdGiMaterialMap& specularMap, double glossFactor); /** \details Returns the specular (reflection) component of this Material object. \param specularColor [out] Receives the specular color. \param specularMap [out] Receives the specular map. \param glossFactor [out] Receives the gloss factor. \remarks The specular component is viewpoint dependent, and most apparent when the entity is highlighted. */ virtual void specular( OdGiMaterialColor& specularColor, OdGiMaterialMap& specularMap, double& glossFactor) const; /** \details Sets the reflection component of this Material object. \param reflectionMap [in] Reflection map. \remarks The reflection component creates a mirror finish on the entity. */ virtual void setReflection(const OdGiMaterialMap& reflectionMap); /** \details Returns the reflection component of this Material object. \param reflectionMap [out] Receives the reflection map. \remarks The reflection component creates a mirror finish on the entity . */ virtual void reflection(OdGiMaterialMap& reflectionMap) const; /** \details Sets the opacity component of this Material object. \param opacityPercentage [in] Opacity percentage. \param opacityMap [in] Opacity map. */ virtual void setOpacity( double opacityPercentage, const OdGiMaterialMap& opacityMap); /** \details Returns the opacity component of this Material object. \param opacityPercentage [out] Receives the opacity percentage. \param opacityMap [out] Receives the opacity map. */ virtual void opacity( double& opacityPercentage, OdGiMaterialMap& opacityMap) const; /** \details Sets the bump component of this Material object. \param bumpMap [in] Bump map. */ virtual void setBump(const OdGiMaterialMap& bumpMap); /** \details Returns the bump component of this Material object. \param bumpMap [out] Receives the bump map. */ virtual void bump(OdGiMaterialMap& map) const; /** \details Sets the refraction component of this Material object. \param refractionIndex [in] Refraction index. \param refractionMap [in] Refraction map. */ virtual void setRefraction( double refractionIndex, const OdGiMaterialMap& refractionMap); /** \details Returns the refraction component of this Material object. \param refractionIndex [out] Receives the refraction index. \param refractionMap [out] Receives the refraction map. */ virtual void refraction( double& refractionIndex, OdGiMaterialMap& refractionMap) const; virtual OdResult dwgInFields(OdDbDwgFiler* pFiler); virtual void dwgOutFields(OdDbDwgFiler* pFiler) const; virtual OdResult dxfInFields(OdDbDxfFiler* pFiler); virtual void dxfOutFields(OdDbDxfFiler* pFiler) const; virtual OdGiDrawable* drawable(); virtual OdUInt32 subSetAttributes(OdGiDrawableTraits* pTraits) const; /*-------------- New in AC21--------------------*/ /** \details Returns the translucence of this Material object. */ virtual double translucence() const; /** \details Sets the translucence of this Material object. \param translucence [in] Translucense. */ virtual void setTranslucence(double translucence); /** \details Returns the self-illumination of this Material object. */ virtual double selfIllumination() const; /** \details Sets the self-illumination of this material object \param selfIllumination [in] Self-illumination. */ virtual void setSelfIllumination(double selfIllumination); /** \details Returns the refelectivity of this Material object. */ virtual double reflectivity() const; /** \details Sets the reflectivity of this Material object. \param reflectivity [in] Reflectivity. */ virtual void setReflectivity(double reflectivity); /** \details Returns the mode of this Material object. */ virtual OdGiMaterialTraits::Mode mode() const; /** \details Sets the mode of this Material object. \param mode [in] Mode. */ virtual void setMode(OdGiMaterialTraits::Mode mode); /** \details Returns the channel flags of this material object. */ virtual OdGiMaterialTraits::ChannelFlags channelFlags() const; /** \details Sets the channel flags for this material object. \remarks This allows multiple channels to be added to a material and each channel to be enabled or disabled individually. \param channelFlags [in] channel flags. */ virtual void setChannelFlags(OdGiMaterialTraits::ChannelFlags channelFlags); /** \details Returns the illumination model of this Material object. \remarks The illumination model determines the type of shader used to render this Material object. */ virtual OdGiMaterialTraits::IlluminationModel illuminationModel() const; /** \details Sets the illumination model of this Material object. \param illuminationModel [in] Illumination model. */ virtual void setIlluminationModel(OdGiMaterialTraits::IlluminationModel illuminationMode); /*---- Advanced material properties in AC21 XRec ----*/ /** \details Returns the color bleed scale of this Material object. */ virtual double colorBleedScale() const; /** \details Sets the color bleed scale of this Material object. \param scale [in] Color bleed scale. */ virtual void setColorBleedScale(double scale); /** \details Returns the indirect bump scale of this Material object. */ virtual double indirectBumpScale() const; /** \details Sets the indirect bump scale of this Material object. \param scale [in] Indirect bump scale. */ virtual void setIndirectBumpScale(double scale); /** \details Returns the reflectance scale of this Material object. */ virtual double reflectanceScale() const; /** \details Sets the reflectance scale of this Material object. \param scale [in] Reflectance scale. */ virtual void setReflectanceScale(double scale); /** \details Returns the transmittance scale of this Material object. */ virtual double transmittanceScale() const; /** \details Sets the transmittance scale of this Material object. \param scale [in] Transmittance scale. */ virtual void setTransmittanceScale(double scale); /** \details Returns the two sided mode of this Material object. */ virtual bool twoSided() const; /** \details Sets the two sided mode of this Material object. \param flag [in] Two sided mode flag. */ virtual void setTwoSided(bool flag); /** \details Returns the luminance mode of this Material object. */ virtual OdGiMaterialTraits::LuminanceMode luminanceMode() const; /** \details Sets the luminance mode of this Material object. \param mode [in] Luminance mode. */ virtual void setLuminanceMode(OdGiMaterialTraits::LuminanceMode mode); /** \details Returns the luminance of this Material object. */ virtual double luminance() const; /** \details Sets the luminance of this Material object. \param value [in] Luminance value. */ virtual void setLuminance(double value); /** \details Returns the shininess of this Material object. \remarks See also specular gloss factor. */ virtual double shininess() const; /** \details Sets the shininess of this Material object. \remarks See also specular gloss factor. \param value [in] Shinincess value. */ virtual void setShininess(double value); /** \details Returns the normalMap component of this Material object. \param normalMap [out] Receives the normalMap. \param method [out] Receives normal map method. \param strength [out] Receives normal map strength factor. */ virtual void normalMap(OdGiMaterialMap &normalMap, OdGiMaterialTraits::NormalMapMethod &method, double &strength) const; /** \details Sets the normalMap component of this Material object. \param normalMap [in] Normal map. \param method [in] Normal map method. \param strength [in] Normal map strength factor. */ virtual void setNormalMap(const OdGiMaterialMap &normalMap, OdGiMaterialTraits::NormalMapMethod method, double strength); /** \details Returns the anonymous material mode of this Material object. */ virtual bool isAnonymous() const; /** \details Sets the anonymous material mode of this Material object. \param flag [in] Anonymous mode flag. */ virtual void setAnonymous(bool flag); /** \details Returns the global illumination mode of this Material object. */ virtual OdGiMaterialTraits::GlobalIlluminationMode globalIllumination() const; /** \details Sets the global illumination mode of this Material object. \param mode [in] Global illumination mode. */ virtual void setGlobalIllumination(OdGiMaterialTraits::GlobalIlluminationMode mode); /** \details Returns the final gather mode of this Material object. */ virtual OdGiMaterialTraits::FinalGatherMode finalGather() const; /** \details Sets the final gather mode of this Material object. \param mode [in] Final gather mode. */ virtual void setFinalGather(OdGiMaterialTraits::FinalGatherMode mode); virtual OdResult subGetClassID(void* pClsid) const; OdResult subErase( bool erasing ); }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbMaterial object pointers. */ typedef OdSmartPtr OdDbMaterialPtr; #include "TD_PackPop.h" #endif