1 #ifndef GraphicsContextCullSaver_h 2 #define GraphicsContextCullSaver_h 3 4 #include "platform/graphics/GraphicsContext.h" 5 6 namespace blink { 7 8 class FloatRect; 9 10 class GraphicsContextCullSaver { 11 WTF_MAKE_FAST_ALLOCATED; 12 public: 13 GraphicsContextCullSaver(GraphicsContext& context) 14 : m_context(context) 15 , m_cullApplied(false) 16 { 17 } 18 19 GraphicsContextCullSaver(GraphicsContext& context, const FloatRect& rect) 20 : m_context(context) 21 , m_cullApplied(true) 22 { 23 context.beginCull(rect); 24 } 25 26 ~GraphicsContextCullSaver() 27 { 28 if (m_cullApplied) 29 m_context.endCull(); 30 } 31 32 void cull(const FloatRect& rect) 33 { 34 ASSERT(!m_cullApplied); 35 m_context.beginCull(rect); 36 m_cullApplied = true; 37 } 38 39 private: 40 GraphicsContext& m_context; 41 bool m_cullApplied; 42 }; 43 44 } // namespace blink 45 46 #endif // GraphicsContextCullSaver_h 47