/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrScissorState_DEFINED #define GrScissorState_DEFINED #include "SkRect.h" class GrScissorState { public: GrScissorState() : fEnabled(false) {} GrScissorState(const SkIRect& rect) : fEnabled(true), fRect(rect) {} void setDisabled() { fEnabled = false; } void set(const SkIRect& rect) { fRect = rect; fEnabled = true; } bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& rect) { if (!fEnabled) { this->set(rect); return true; } return fRect.intersect(rect); } bool operator==(const GrScissorState& other) const { return fEnabled == other.fEnabled && (false == fEnabled || fRect == other.fRect); } bool operator!=(const GrScissorState& other) const { return !(*this == other); } bool enabled() const { return fEnabled; } const SkIRect& rect() const { return fRect; } private: bool fEnabled; SkIRect fRect; }; #endif