# HG changeset patch # User Sebastien Jodogne # Date 1558698274 -7200 # Node ID b8dfd966b5f432ca30aa402f15b9f8bd0d3eb998 # Parent ed783cbc92d7eccc7c4d34c6ccb7dbe50ad00072 FloatTextureSceneLayer::SetInverted() diff -r ed783cbc92d7 -r b8dfd966b5f4 Framework/Scene2D/FloatTextureSceneLayer.cpp --- a/Framework/Scene2D/FloatTextureSceneLayer.cpp Fri May 24 11:04:41 2019 +0200 +++ b/Framework/Scene2D/FloatTextureSceneLayer.cpp Fri May 24 13:44:34 2019 +0200 @@ -86,6 +86,13 @@ } + void FloatTextureSceneLayer::SetInverted(bool inverted) + { + inverted_ = inverted; + IncrementRevision(); + } + + void FloatTextureSceneLayer::FitRange() { float minValue, maxValue; @@ -116,6 +123,7 @@ cloned->windowing_ = windowing_; cloned->customCenter_ = customCenter_; cloned->customWidth_ = customWidth_; + cloned->inverted_ = inverted_; return cloned.release(); } diff -r ed783cbc92d7 -r b8dfd966b5f4 Framework/Scene2D/FloatTextureSceneLayer.h --- a/Framework/Scene2D/FloatTextureSceneLayer.h Fri May 24 11:04:41 2019 +0200 +++ b/Framework/Scene2D/FloatTextureSceneLayer.h Fri May 24 13:44:34 2019 +0200 @@ -31,6 +31,7 @@ ImageWindowing windowing_; float customCenter_; float customWidth_; + bool inverted_; public: // The pixel format must be convertible to "Float32" @@ -49,6 +50,14 @@ return windowing_; } + // To achieve MONOCHROME1 photometric interpretation + void SetInverted(bool inverted); + + bool IsInverted() const + { + return inverted_; + } + void FitRange(); virtual ISceneLayer* Clone() const; diff -r ed783cbc92d7 -r b8dfd966b5f4 Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp --- a/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp Fri May 24 11:04:41 2019 +0200 +++ b/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp Fri May 24 13:44:34 2019 +0200 @@ -72,6 +72,11 @@ uint8_t vv = static_cast(v); + if (l.IsInverted()) + { + vv = 255 - vv; + } + q[0] = vv; q[1] = vv; q[2] = vv;