/*
|
* 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
|