Index: Source/platform/graphics/GraphicsContextCullSaver.h |
diff --git a/Source/platform/graphics/GraphicsContextCullSaver.h b/Source/platform/graphics/GraphicsContextCullSaver.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1b1023ddea8cdaa31ee49dbe6bc466e8acf1af59 |
--- /dev/null |
+++ b/Source/platform/graphics/GraphicsContextCullSaver.h |
@@ -0,0 +1,46 @@ |
+#ifndef GraphicsContextCullSaver_h |
+#define GraphicsContextCullSaver_h |
+ |
+#include "platform/graphics/GraphicsContext.h" |
+ |
+namespace WebCore { |
+ |
+class FloatRect; |
+ |
+class GraphicsContextCullSaver { |
+ WTF_MAKE_FAST_ALLOCATED; |
+public: |
+ GraphicsContextCullSaver(GraphicsContext& context) |
+ : m_context(context) |
+ , m_cullApplied(false) |
+ { |
+ } |
+ |
+ GraphicsContextCullSaver(GraphicsContext& context, const FloatRect& rect) |
+ : m_context(context) |
+ , m_cullApplied(true) |
+ { |
+ context.beginCull(rect); |
+ } |
+ |
+ ~GraphicsContextCullSaver() |
+ { |
+ if (m_cullApplied) |
+ m_context.endCull(); |
+ } |
+ |
+ void cull(const FloatRect& rect) |
+ { |
+ ASSERT(!m_cullApplied); |
+ m_context.beginCull(rect); |
+ m_cullApplied = true; |
+ } |
+ |
+private: |
+ GraphicsContext& m_context; |
+ bool m_cullApplied; |
+}; |
+ |
+} // namespace WebCore |
+ |
+#endif // GraphicsContextCullSaver_h |