From edc0b5e9db34f77086d510fa7159d2daf22488aa Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Wed, 22 Jul 2015 21:01:19 +0200 Subject: [PATCH] app_server: allow disabling affine transforms in DrawState * New method DrawState::SetTransformEnabled allows to temporarily disable all BAffineTransforms in the state stack (up to 'this'). Later, the same method can be used to reenable the transforms. Needed for layers support: when drawing the finished layer bitmap onto the view, the affine transforms must not be applied again -- they have already been applied while drawing the bitmap's contents. --- src/servers/app/DrawState.cpp | 16 ++++++++++++++++ src/servers/app/DrawState.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/servers/app/DrawState.cpp b/src/servers/app/DrawState.cpp index 9621cfa68e..2eaa39f5de 100644 --- a/src/servers/app/DrawState.cpp +++ b/src/servers/app/DrawState.cpp @@ -370,6 +370,22 @@ DrawState::SetTransform(BAffineTransform transform) } +/* Can be used to temporarily disable all BAffineTransforms in the state + stack, and later reenable them. +*/ +void +DrawState::SetTransformEnabled(bool enabled) +{ + if (enabled) { + BAffineTransform temp = fTransform; + SetTransform(BAffineTransform()); + SetTransform(temp); + } + else + fCombinedTransform = BAffineTransform(); +} + + DrawState* DrawState::Squash() { diff --git a/src/servers/app/DrawState.h b/src/servers/app/DrawState.h index 48a6f371c6..e67e1ed2af 100644 --- a/src/servers/app/DrawState.h +++ b/src/servers/app/DrawState.h @@ -68,6 +68,7 @@ public: { return fTransform; } BAffineTransform CombinedTransform() const { return fCombinedTransform; } + void SetTransformEnabled(bool enabled); DrawState* Squash();