Index: services/gfx/compositor/graph/transform_pair.h |
diff --git a/services/gfx/compositor/graph/transform_pair.h b/services/gfx/compositor/graph/transform_pair.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5cdcb49089ce869a993966ce9e4276b53315a434 |
--- /dev/null |
+++ b/services/gfx/compositor/graph/transform_pair.h |
@@ -0,0 +1,36 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef SERVICES_GFX_COMPOSITOR_GRAPH_TRANSFORM_PAIR_H_ |
+#define SERVICES_GFX_COMPOSITOR_GRAPH_TRANSFORM_PAIR_H_ |
+ |
+#include "third_party/skia/include/utils/SkMatrix44.h" |
+ |
+namespace compositor { |
+ |
+// Contains information about a transformation and its inverse. |
+// The inverse is computed lazily and cached. |
+class TransformPair { |
+ public: |
+ TransformPair(const SkMatrix44& forward); |
+ ~TransformPair(); |
+ |
+ // Gets the forward transformation. |
+ const SkMatrix44& forward() const { return forward_; } |
+ |
+ // Gets the inverse transformation. |
+ const SkMatrix44& GetInverse() const; |
+ |
+ // Maps a point using the inverse transformation. |
+ const SkPoint InverseMapPoint(const SkPoint& point) const; |
+ |
+ private: |
+ const SkMatrix44 forward_; |
+ mutable SkMatrix44 cached_inverse_; |
+ mutable bool cached_inverse_valid_ = false; |
+}; |
+ |
+} // namespace compositor |
+ |
+#endif // SERVICES_GFX_COMPOSITOR_GRAPH_TRANSFORM_PAIR_H_ |