X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcolorcurve.cpp;h=54fbc767bb77a75ce19356d446a7c38d13526b52;hp=f1c090308458b4edbf9360d5018a80d817389471;hb=0cacf19c2e6aaa182ae0fcc7dfaae345aedd0e74;hpb=444151a0c0c31eac99663c19dda87a7c543bee84 diff --git a/source/colorcurve.cpp b/source/colorcurve.cpp index f1c09030..54fbc767 100644 --- a/source/colorcurve.cpp +++ b/source/colorcurve.cpp @@ -18,7 +18,7 @@ ColorCurve::ColorCurve(): shdata.uniform("source", 0); shdata.uniform("curve", 1); - curve.storage(LUMINANCE, 256); + curve.storage(LUMINANCE, 256, 1); curve.set_min_filter(LINEAR); curve.set_wrap(CLAMP_TO_EDGE); texturing.attach(1, curve); @@ -88,5 +88,46 @@ void ColorCurve::render(Renderer &renderer, const Texture2D &color_buf, const Te quad.draw(renderer); } + +ColorCurve::Template::Template(): + exposure_adjust(0.0f), + brightness_response(0.4f), + gamma(1.0f), + srgb(false) +{ } + +ColorCurve *ColorCurve::Template::create(unsigned, unsigned) const +{ + RefPtr colorcurve = new ColorCurve; + colorcurve->set_exposure_adjust(exposure_adjust); + colorcurve->set_brightness_response(brightness_response); + if(srgb) + colorcurve->set_srgb(); + else + colorcurve->set_gamma(gamma); + return colorcurve.release(); +} + + +ColorCurve::Template::Loader::Loader(Template &t): + DataFile::DerivedObjectLoader(t) +{ + add("brightness_response", &Template::brightness_response); + add("exposure_adjust", &Template::exposure_adjust); + add("gamma", &Loader::gamma); + add("srgb", &Loader::srgb); +} + +void ColorCurve::Template::Loader::gamma(float g) +{ + obj.gamma = g; + obj.srgb = false; +} + +void ColorCurve::Template::Loader::srgb() +{ + obj.srgb = true; +} + } // namespace GL } // namespace Msp