#ifndef GraphicsContextCullSaver_h
#define GraphicsContextCullSaver_h

#include "sky/engine/platform/graphics/GraphicsContext.h"

namespace blink {

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 blink

#endif // GraphicsContextCullSaver_h
