/////////////////////////////////////////////////////////////////////////////// // 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 __ODGICONTEXTUALCOLORS_H__ #define __ODGICONTEXTUALCOLORS_H__ #include "Gi/GiExport.h" #include "RxObject.h" #include "CmColor.h" #include "TD_PackPush.h" /** \details Define colors depend from vectorization context. \sa TD_Gi */ class ODGI_EXPORT OdGiContextualColors : public OdRxObject { public: ODRX_DECLARE_MEMBERS(OdGiContextualColors); // Color accessors // Grid virtual OdCmEntityColor gridMajorLines() const; virtual OdCmEntityColor gridMinorLines() const; virtual OdCmEntityColor gridAxisLines() const; virtual bool gridMajorLineTintXYZ() const; virtual bool gridMinorLineTintXYZ() const; virtual bool gridAxisLineTintXYZ() const; // Light virtual OdCmEntityColor lightGlyphs() const; virtual OdCmEntityColor lightHotspot() const; virtual OdCmEntityColor lightFalloff() const; virtual OdCmEntityColor lightStartLimit() const; virtual OdCmEntityColor lightEndLimit() const; virtual OdCmEntityColor lightShapeColor() const; virtual OdCmEntityColor lightDistanceColor() const; virtual OdCmEntityColor webMeshColor() const; virtual OdCmEntityColor webMeshMissingColor() const; // Camera virtual OdCmEntityColor cameraGlyphs() const; virtual OdCmEntityColor cameraFrustrum() const; virtual OdCmEntityColor cameraClipping() const; // Runtime parameters virtual void setContextFlags(OdUInt32 nFlags, bool bSet = true) = 0; virtual bool flagsSet(OdUInt32 nFlags) const = 0; // This part is for internal use. Provides interface extensibility feature. enum ColorType { kGridMajorLinesColor = 0, kGridMinorLinesColor, kGridAxisLinesColor, kLightGlyphsColor, kLightHotspotColor, kLightFalloffColor, kLightStartLimitColor, kLightEndLimitColor, kLightShapeColor, kLightDistanceColor, kWebMeshColor, kWebMeshMissingColor, kCameraGlyphsColor, kCameraFrustrumColor, kCameraClippingColor, kNumColors }; enum ColorTint { kGridMajorLineTint = 0, kGridMinorLineTint, kGridAxisLineTint, kNumTintFlags }; virtual OdCmEntityColor contextualColor(ColorType /*type*/) const { return OdCmEntityColor(OdCmEntityColor::kForeground); } virtual bool contextualColorTint(ColorTint /*type*/) const { return false; } }; typedef OdSmartPtr OdGiContextualColorsPtr; // Default implementations of OdGiContextualColors accessor methods inline OdCmEntityColor OdGiContextualColors::gridMajorLines() const { return contextualColor(kGridMajorLinesColor); } inline OdCmEntityColor OdGiContextualColors::gridMinorLines() const { return contextualColor(kGridMinorLinesColor); } inline OdCmEntityColor OdGiContextualColors::gridAxisLines() const { return contextualColor(kGridAxisLinesColor); } inline bool OdGiContextualColors::gridMajorLineTintXYZ() const { return contextualColorTint(kGridMajorLineTint); } inline bool OdGiContextualColors::gridMinorLineTintXYZ() const { return contextualColorTint(kGridMinorLineTint); } inline bool OdGiContextualColors::gridAxisLineTintXYZ() const { return contextualColorTint(kGridAxisLineTint); } inline OdCmEntityColor OdGiContextualColors::lightGlyphs() const { return contextualColor(kLightGlyphsColor); } inline OdCmEntityColor OdGiContextualColors::lightHotspot() const { return contextualColor(kLightHotspotColor); } inline OdCmEntityColor OdGiContextualColors::lightFalloff() const { return contextualColor(kLightFalloffColor); } inline OdCmEntityColor OdGiContextualColors::lightStartLimit() const { return contextualColor(kLightStartLimitColor); } inline OdCmEntityColor OdGiContextualColors::lightEndLimit() const { return contextualColor(kLightEndLimitColor); } inline OdCmEntityColor OdGiContextualColors::lightShapeColor() const { return contextualColor(kLightShapeColor); } inline OdCmEntityColor OdGiContextualColors::lightDistanceColor() const { return contextualColor(kLightDistanceColor); } inline OdCmEntityColor OdGiContextualColors::webMeshColor() const { return contextualColor(kWebMeshColor); } inline OdCmEntityColor OdGiContextualColors::webMeshMissingColor() const { return contextualColor(kWebMeshMissingColor); } inline OdCmEntityColor OdGiContextualColors::cameraGlyphs() const { return contextualColor(kCameraGlyphsColor); } inline OdCmEntityColor OdGiContextualColors::cameraFrustrum() const { return contextualColor(kCameraFrustrumColor); } inline OdCmEntityColor OdGiContextualColors::cameraClipping() const { return contextualColor(kCameraClippingColor); } /** \details Provides default implementation for OdGiContextualColors. \sa TD_Gi */ class ODGI_EXPORT OdGiContextualColorsImpl : public OdGiContextualColors { public: ODRX_DECLARE_MEMBERS(OdGiContextualColorsImpl); enum VisualType { kVisualTypeNotSet = -1, k2dModel = 0, kLayout, k3dParallel, k3dPerspective, kBlock, kNumVisualTypes }; virtual void setVisualType(VisualType type) = 0; virtual VisualType visualType() const = 0; virtual void setContextualColor(ColorType type, const OdCmEntityColor &color) = 0; void setContextualColor(ColorType type, ODCOLORREF color) { setContextualColor(type, ODTOCMCOLOR(color)); } virtual void setContextualColorTint(ColorTint type, bool bSet) = 0; virtual void setDefaultForType() = 0; }; typedef OdSmartPtr OdGiContextualColorsImplPtr; /** \details Provides redirection ability for OdGiContextualColors. \sa TD_Gi */ class ODGI_EXPORT OdGiContextualColorsRedir : public OdGiContextualColors { public: ODRX_DECLARE_MEMBERS(OdGiContextualColorsRedir); virtual void setRedirectionObject(OdGiContextualColors *pObj) = 0; virtual const OdGiContextualColors *redirectionObject() const = 0; virtual OdGiContextualColors *redirectionObject() = 0; }; typedef OdSmartPtr OdGiContextualColorsRedirPtr; #include "TD_PackPop.h" #endif // __ODGICONTEXTUALCOLORS_H__