Home | History | Annotate | Download | only in gpu
      1 /*
      2  * Copyright 2016 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef GrScissorState_DEFINED
      9 #define GrScissorState_DEFINED
     10 
     11 #include "SkRect.h"
     12 
     13 class GrScissorState {
     14 public:
     15     GrScissorState() : fEnabled(false) {}
     16     GrScissorState(const SkIRect& rect) : fEnabled(true), fRect(rect) {}
     17     void setDisabled() { fEnabled = false; }
     18     void set(const SkIRect& rect) { fRect = rect; fEnabled = true; }
     19     bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& rect) {
     20         if (!fEnabled) {
     21             this->set(rect);
     22             return true;
     23         }
     24         return fRect.intersect(rect);
     25     }
     26     bool operator==(const GrScissorState& other) const {
     27         return fEnabled == other.fEnabled &&
     28                 (false == fEnabled || fRect == other.fRect);
     29     }
     30     bool operator!=(const GrScissorState& other) const { return !(*this == other); }
     31 
     32     bool enabled() const { return fEnabled; }
     33     const SkIRect& rect() const { return fRect; }
     34 
     35 private:
     36     bool    fEnabled;
     37     SkIRect fRect;
     38 };
     39 
     40 #endif
     41