# HG changeset patch # User Sebastien Jodogne # Date 1621072075 -7200 # Node ID 6e81059421460d33231560d8d522e6774bb3ad2f # Parent 748bfa7df18b0444251b210ae0f2b5fa0d9876e8 safeguard in TextureBaseSceneLayer diff -r 748bfa7df18b -r 6e8105942146 OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.cpp --- a/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.cpp Sat May 15 11:41:58 2021 +0200 +++ b/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.cpp Sat May 15 11:47:55 2021 +0200 @@ -27,6 +27,16 @@ namespace OrthancStone { + void TextureBaseSceneLayer::CheckNoManualTransform() const + { + if (transform_.get() != NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls, + "A transform has been manually set, first call ClearTransform()"); + } + } + + void TextureBaseSceneLayer::SetTexture(Orthanc::ImageAccessor* texture) { if (texture == NULL) @@ -81,6 +91,8 @@ void TextureBaseSceneLayer::SetOrigin(double x, double y) { + CheckNoManualTransform(); + originX_ = x; originY_ = y; IncrementRevision(); @@ -90,6 +102,8 @@ void TextureBaseSceneLayer::SetPixelSpacing(double sx, double sy) { + CheckNoManualTransform(); + if (sx <= 0 || sy <= 0) { @@ -106,6 +120,8 @@ void TextureBaseSceneLayer::SetAngle(double angle) { + CheckNoManualTransform(); + angle_ = angle; IncrementRevision(); } @@ -120,6 +136,8 @@ void TextureBaseSceneLayer::SetFlipX(bool flip) { + CheckNoManualTransform(); + flipX_ = flip; IncrementRevision(); } @@ -127,6 +145,8 @@ void TextureBaseSceneLayer::SetFlipY(bool flip) { + CheckNoManualTransform(); + flipY_ = flip; IncrementRevision(); } diff -r 748bfa7df18b -r 6e8105942146 OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.h --- a/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.h Sat May 15 11:41:58 2021 +0200 +++ b/OrthancStone/Sources/Scene2D/TextureBaseSceneLayer.h Sat May 15 11:47:55 2021 +0200 @@ -46,6 +46,8 @@ uint64_t revision_; std::unique_ptr transform_; // Manually-specified transformation + void CheckNoManualTransform() const; + protected: void SetTexture(Orthanc::ImageAccessor* texture);