X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcolorcurve.h;h=dac0ac08ab689382ace03041070d4db77ec873e2;hp=2b854bec8b6f8ac5392f010e64a06b5269b83415;hb=c895aa82dd405146f648e5ca3fcfaa326eab9b87;hpb=d1e3975c163694d7bca6417463462be950019e5e diff --git a/source/colorcurve.h b/source/colorcurve.h index 2b854bec..dac0ac08 100644 --- a/source/colorcurve.h +++ b/source/colorcurve.h @@ -12,8 +12,8 @@ namespace GL { /** Processes oversaturated colors to preserve hues. When one color component -exceeds 1.0, the others are scaled towards white. A transition curve is also -applied near 1.0 to prevent the abrupt change in the gradient. +exceeds 1.0, the overflow is distributed to the other components, scaling the +color towards white. Gamma or sRGB correction can also be applied to the output. It can be used to improve color reproduction by performing lighting calculations in linear color @@ -21,6 +21,29 @@ space and converting to sRGB for display. */ class ColorCurve: public PostProcessor { +public: + struct Template: public PostProcessor::Template + { + class Loader: public DataFile::DerivedObjectLoader + { + public: + Loader(Template &); + + private: + void gamma(float); + void srgb(); + }; + + float exposure_adjust; + float brightness_response; + float gamma; + bool srgb; + + Template(); + + virtual ColorCurve *create(unsigned, unsigned) const; + }; + private: Program shprog; ProgramData shdata; @@ -31,12 +54,15 @@ private: public: ColorCurve(); - /// Sets the size of the peak zone. Must be between 0 and 1, inclusive. - void set_peak(float); + /** Set exposure adjustment in EV units. Positive values brighten the + image, negative values darken it. Zero is neutral. */ + void set_exposure_adjust(float); - /** Sets brightness for oversaturated colors. Must be >= 1. Suggested - values are between 1.5 and 2.0; a value of 1.0 will clamp colors to the - saturated value. */ + /** Sets the exponent of the */ + void set_brightness_response(float); + + // Deprecated functions + void set_peak(float); void set_brightness(float); /** Sets the gamma value used for mapping output colors. Allowed range is