summaryrefslogtreecommitdiff
path: root/source/dng_render.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/dng_render.h')
-rw-r--r--source/dng_render.h624
1 files changed, 312 insertions, 312 deletions
diff --git a/source/dng_render.h b/source/dng_render.h
index 4c9aec7..1a7ea02 100644
--- a/source/dng_render.h
+++ b/source/dng_render.h
@@ -1,312 +1,312 @@
-/*****************************************************************************/
-// Copyright 2006-2007 Adobe Systems Incorporated
-// All Rights Reserved.
-//
-// NOTICE: Adobe permits you to use, modify, and distribute this file in
-// accordance with the terms of the Adobe license agreement accompanying it.
-/*****************************************************************************/
-
-/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_render.h#2 $ */
-/* $DateTime: 2012/07/31 22:04:34 $ */
-/* $Change: 840853 $ */
-/* $Author: tknoll $ */
-
-/** \file
- * Classes for conversion of RAW data to final image.
- */
-
-/*****************************************************************************/
-
-#ifndef __dng_render__
-#define __dng_render__
-
-/*****************************************************************************/
-
-#include "dng_1d_function.h"
-#include "dng_auto_ptr.h"
-#include "dng_classes.h"
-#include "dng_spline.h"
-#include "dng_xy_coord.h"
-
-/******************************************************************************/
-
-/// \brief Curve for pre-exposure-compensation adjustment based on noise floor,
-/// shadows, and highlight level.
-
-class dng_function_exposure_ramp: public dng_1d_function
- {
-
- public:
-
- real64 fSlope; // Slope of straight segment.
-
- real64 fBlack; // Intercept of straight segment.
-
- real64 fRadius; // Rounding radius.
-
- real64 fQScale; // Quadradic scale.
-
- public:
-
- dng_function_exposure_ramp (real64 white,
- real64 black,
- real64 minBlack);
-
- virtual real64 Evaluate (real64 x) const;
-
- };
-
-/******************************************************************************/
-
-/// \brief Exposure compensation curve for a given compensation amount in stops using
-/// quadric for roll-off.
-
-class dng_function_exposure_tone: public dng_1d_function
- {
-
- protected:
-
- bool fIsNOP; // Is this a NOP function?
-
- real64 fSlope; // Slope for lower part of curve.
-
- real64 a; // Quadradic parameters for upper two f-stops.
- real64 b;
- real64 c;
-
- public:
-
- dng_function_exposure_tone (real64 exposure);
-
- /// Returns output value for a given input tone.
-
- virtual real64 Evaluate (real64 x) const;
-
- };
-
-/*****************************************************************************/
-
-/// Default ACR3 tone curve.
-
-class dng_tone_curve_acr3_default: public dng_1d_function
- {
-
- public:
-
- /// Returns output value for a given input tone.
-
- virtual real64 Evaluate (real64 x) const;
-
- /// Returns nearest input value for a given output tone.
-
- virtual real64 EvaluateInverse (real64 x) const;
-
- static const dng_1d_function & Get ();
-
- };
-
-/*****************************************************************************/
-
-/// \brief Encoding gamma curve for a given color space.
-
-class dng_function_gamma_encode: public dng_1d_function
- {
-
- protected:
-
- const dng_color_space &fSpace;
-
- public:
-
- dng_function_gamma_encode (const dng_color_space &space);
-
- virtual real64 Evaluate (real64 x) const;
-
- };
-
-/*****************************************************************************/
-
-/// \brief Class used to render digital negative to displayable image.
-
-class dng_render
- {
-
- protected:
-
- dng_host &fHost;
-
- const dng_negative &fNegative;
-
- dng_xy_coord fWhiteXY;
-
- real64 fExposure;
-
- real64 fShadows;
-
- const dng_1d_function *fToneCurve;
-
- const dng_color_space *fFinalSpace;
-
- uint32 fFinalPixelType;
-
- uint32 fMaximumSize;
-
- private:
-
- AutoPtr<dng_spline_solver> fProfileToneCurve;
-
- public:
-
- /// Construct a rendering instance that will be used to convert a given digital negative.
- /// \param host The host to use for memory allocation, progress updates, and abort testing.
- /// \param negative The digital negative to convert to a displayable image.
-
- dng_render (dng_host &host,
- const dng_negative &negative);
-
- virtual ~dng_render ()
- {
- }
-
- /// Set the white point to be used for conversion.
- /// \param white White point to use.
-
- void SetWhiteXY (const dng_xy_coord &white)
- {
- fWhiteXY = white;
- }
-
- /// Get the white point to be used for conversion.
- /// \retval White point to use.
-
- const dng_xy_coord WhiteXY () const
- {
- return fWhiteXY;
- }
-
- /// Set exposure compensation.
- /// \param exposure Compensation value in stops, positive or negative.
-
- void SetExposure (real64 exposure)
- {
- fExposure = exposure;
- }
-
- /// Get exposure compensation.
- /// \retval Compensation value in stops, positive or negative.
-
- real64 Exposure () const
- {
- return fExposure;
- }
-
- /// Set shadow clip amount.
- /// \param shadows Shadow clip amount.
-
- void SetShadows (real64 shadows)
- {
- fShadows = shadows;
- }
-
- /// Get shadow clip amount.
- /// \retval Shadow clip amount.
-
- real64 Shadows () const
- {
- return fShadows;
- }
-
- /// Set custom tone curve for conversion.
- /// \param curve 1D function that defines tone mapping to use during conversion.
-
- void SetToneCurve (const dng_1d_function &curve)
- {
- fToneCurve = &curve;
- }
-
- /// Get custom tone curve for conversion.
- /// \retval 1D function that defines tone mapping to use during conversion.
-
- const dng_1d_function & ToneCurve () const
- {
- return *fToneCurve;
- }
-
- /// Set final color space in which resulting image data should be represented.
- /// (See dng_color_space.h for possible values.)
- /// \param space Color space to use.
-
- void SetFinalSpace (const dng_color_space &space)
- {
- fFinalSpace = &space;
- }
-
- /// Get final color space in which resulting image data should be represented.
- /// \retval Color space to use.
-
- const dng_color_space & FinalSpace () const
- {
- return *fFinalSpace;
- }
-
- /// Set pixel type of final image data.
- /// Can be ttByte (default), ttShort, or ttFloat.
- /// \param type Pixel type to use.
-
- void SetFinalPixelType (uint32 type)
- {
- fFinalPixelType = type;
- }
-
- /// Get pixel type of final image data.
- /// Can be ttByte (default), ttShort, or ttFloat.
- /// \retval Pixel type to use.
-
- uint32 FinalPixelType () const
- {
- return fFinalPixelType;
- }
-
- /// Set maximum dimension, in pixels, of resulting image.
- /// If final image would have either dimension larger than maximum, the larger
- /// of the two dimensions is set to this maximum size and the smaller dimension
- /// is adjusted to preserve aspect ratio.
- /// \param size Maximum size to allow.
-
- void SetMaximumSize (uint32 size)
- {
- fMaximumSize = size;
- }
-
- /// Get maximum dimension, in pixels, of resulting image.
- /// If the final image would have either dimension larger than this maximum, the larger
- /// of the two dimensions is set to this maximum size and the smaller dimension
- /// is adjusted to preserve the image's aspect ratio.
- /// \retval Maximum allowed size.
-
- uint32 MaximumSize () const
- {
- return fMaximumSize;
- }
-
- /// Actually render a digital negative to a displayable image.
- /// Input digital negative is passed to the constructor of this dng_render class.
- /// \retval The final resulting image.
-
- virtual dng_image * Render ();
-
- private:
-
- // Hidden copy constructor and assignment operator.
-
- dng_render (const dng_render &render);
-
- dng_render & operator= (const dng_render &render);
-
- };
-
-/*****************************************************************************/
-
-#endif
-
-/*****************************************************************************/
+/*****************************************************************************/
+// Copyright 2006-2007 Adobe Systems Incorporated
+// All Rights Reserved.
+//
+// NOTICE: Adobe permits you to use, modify, and distribute this file in
+// accordance with the terms of the Adobe license agreement accompanying it.
+/*****************************************************************************/
+
+/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_render.h#2 $ */
+/* $DateTime: 2012/07/31 22:04:34 $ */
+/* $Change: 840853 $ */
+/* $Author: tknoll $ */
+
+/** \file
+ * Classes for conversion of RAW data to final image.
+ */
+
+/*****************************************************************************/
+
+#ifndef __dng_render__
+#define __dng_render__
+
+/*****************************************************************************/
+
+#include "dng_1d_function.h"
+#include "dng_auto_ptr.h"
+#include "dng_classes.h"
+#include "dng_spline.h"
+#include "dng_xy_coord.h"
+
+/******************************************************************************/
+
+/// \brief Curve for pre-exposure-compensation adjustment based on noise floor,
+/// shadows, and highlight level.
+
+class dng_function_exposure_ramp: public dng_1d_function
+ {
+
+ public:
+
+ real64 fSlope; // Slope of straight segment.
+
+ real64 fBlack; // Intercept of straight segment.
+
+ real64 fRadius; // Rounding radius.
+
+ real64 fQScale; // Quadradic scale.
+
+ public:
+
+ dng_function_exposure_ramp (real64 white,
+ real64 black,
+ real64 minBlack);
+
+ virtual real64 Evaluate (real64 x) const;
+
+ };
+
+/******************************************************************************/
+
+/// \brief Exposure compensation curve for a given compensation amount in stops using
+/// quadric for roll-off.
+
+class dng_function_exposure_tone: public dng_1d_function
+ {
+
+ protected:
+
+ bool fIsNOP; // Is this a NOP function?
+
+ real64 fSlope; // Slope for lower part of curve.
+
+ real64 a; // Quadradic parameters for upper two f-stops.
+ real64 b;
+ real64 c;
+
+ public:
+
+ dng_function_exposure_tone (real64 exposure);
+
+ /// Returns output value for a given input tone.
+
+ virtual real64 Evaluate (real64 x) const;
+
+ };
+
+/*****************************************************************************/
+
+/// Default ACR3 tone curve.
+
+class dng_tone_curve_acr3_default: public dng_1d_function
+ {
+
+ public:
+
+ /// Returns output value for a given input tone.
+
+ virtual real64 Evaluate (real64 x) const;
+
+ /// Returns nearest input value for a given output tone.
+
+ virtual real64 EvaluateInverse (real64 x) const;
+
+ static const dng_1d_function & Get ();
+
+ };
+
+/*****************************************************************************/
+
+/// \brief Encoding gamma curve for a given color space.
+
+class dng_function_gamma_encode: public dng_1d_function
+ {
+
+ protected:
+
+ const dng_color_space &fSpace;
+
+ public:
+
+ dng_function_gamma_encode (const dng_color_space &space);
+
+ virtual real64 Evaluate (real64 x) const;
+
+ };
+
+/*****************************************************************************/
+
+/// \brief Class used to render digital negative to displayable image.
+
+class dng_render
+ {
+
+ protected:
+
+ dng_host &fHost;
+
+ const dng_negative &fNegative;
+
+ dng_xy_coord fWhiteXY;
+
+ real64 fExposure;
+
+ real64 fShadows;
+
+ const dng_1d_function *fToneCurve;
+
+ const dng_color_space *fFinalSpace;
+
+ uint32 fFinalPixelType;
+
+ uint32 fMaximumSize;
+
+ private:
+
+ AutoPtr<dng_spline_solver> fProfileToneCurve;
+
+ public:
+
+ /// Construct a rendering instance that will be used to convert a given digital negative.
+ /// \param host The host to use for memory allocation, progress updates, and abort testing.
+ /// \param negative The digital negative to convert to a displayable image.
+
+ dng_render (dng_host &host,
+ const dng_negative &negative);
+
+ virtual ~dng_render ()
+ {
+ }
+
+ /// Set the white point to be used for conversion.
+ /// \param white White point to use.
+
+ void SetWhiteXY (const dng_xy_coord &white)
+ {
+ fWhiteXY = white;
+ }
+
+ /// Get the white point to be used for conversion.
+ /// \retval White point to use.
+
+ const dng_xy_coord WhiteXY () const
+ {
+ return fWhiteXY;
+ }
+
+ /// Set exposure compensation.
+ /// \param exposure Compensation value in stops, positive or negative.
+
+ void SetExposure (real64 exposure)
+ {
+ fExposure = exposure;
+ }
+
+ /// Get exposure compensation.
+ /// \retval Compensation value in stops, positive or negative.
+
+ real64 Exposure () const
+ {
+ return fExposure;
+ }
+
+ /// Set shadow clip amount.
+ /// \param shadows Shadow clip amount.
+
+ void SetShadows (real64 shadows)
+ {
+ fShadows = shadows;
+ }
+
+ /// Get shadow clip amount.
+ /// \retval Shadow clip amount.
+
+ real64 Shadows () const
+ {
+ return fShadows;
+ }
+
+ /// Set custom tone curve for conversion.
+ /// \param curve 1D function that defines tone mapping to use during conversion.
+
+ void SetToneCurve (const dng_1d_function &curve)
+ {
+ fToneCurve = &curve;
+ }
+
+ /// Get custom tone curve for conversion.
+ /// \retval 1D function that defines tone mapping to use during conversion.
+
+ const dng_1d_function & ToneCurve () const
+ {
+ return *fToneCurve;
+ }
+
+ /// Set final color space in which resulting image data should be represented.
+ /// (See dng_color_space.h for possible values.)
+ /// \param space Color space to use.
+
+ void SetFinalSpace (const dng_color_space &space)
+ {
+ fFinalSpace = &space;
+ }
+
+ /// Get final color space in which resulting image data should be represented.
+ /// \retval Color space to use.
+
+ const dng_color_space & FinalSpace () const
+ {
+ return *fFinalSpace;
+ }
+
+ /// Set pixel type of final image data.
+ /// Can be ttByte (default), ttShort, or ttFloat.
+ /// \param type Pixel type to use.
+
+ void SetFinalPixelType (uint32 type)
+ {
+ fFinalPixelType = type;
+ }
+
+ /// Get pixel type of final image data.
+ /// Can be ttByte (default), ttShort, or ttFloat.
+ /// \retval Pixel type to use.
+
+ uint32 FinalPixelType () const
+ {
+ return fFinalPixelType;
+ }
+
+ /// Set maximum dimension, in pixels, of resulting image.
+ /// If final image would have either dimension larger than maximum, the larger
+ /// of the two dimensions is set to this maximum size and the smaller dimension
+ /// is adjusted to preserve aspect ratio.
+ /// \param size Maximum size to allow.
+
+ void SetMaximumSize (uint32 size)
+ {
+ fMaximumSize = size;
+ }
+
+ /// Get maximum dimension, in pixels, of resulting image.
+ /// If the final image would have either dimension larger than this maximum, the larger
+ /// of the two dimensions is set to this maximum size and the smaller dimension
+ /// is adjusted to preserve the image's aspect ratio.
+ /// \retval Maximum allowed size.
+
+ uint32 MaximumSize () const
+ {
+ return fMaximumSize;
+ }
+
+ /// Actually render a digital negative to a displayable image.
+ /// Input digital negative is passed to the constructor of this dng_render class.
+ /// \retval The final resulting image.
+
+ virtual dng_image * Render ();
+
+ private:
+
+ // Hidden copy constructor and assignment operator.
+
+ dng_render (const dng_render &render);
+
+ dng_render & operator= (const dng_render &render);
+
+ };
+
+/*****************************************************************************/
+
+#endif
+
+/*****************************************************************************/