| Index: src/gpu/GrClip.cpp
|
| diff --git a/src/gpu/GrClip.cpp b/src/gpu/GrClip.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0f8aac874953237dfd03323c516d2879b2edfc38
|
| --- /dev/null
|
| +++ b/src/gpu/GrClip.cpp
|
| @@ -0,0 +1,50 @@
|
| +/*
|
| + * Copyright 2010 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#include "GrClip.h"
|
| +
|
| +#include "GrSurface.h"
|
| +#include "SkRect.h"
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +
|
| +/**
|
| + * getConservativeBounds returns the conservative bounding box of the clip
|
| + * in device (as opposed to canvas) coordinates. If the bounding box is
|
| + * the result of purely intersections of rects (with an initial replace)
|
| + * isIntersectionOfRects will be set to true.
|
| + */
|
| +void GrClip::getConservativeBounds(int width, int height, SkIRect* devResult,
|
| + bool* isIntersectionOfRects) const {
|
| + switch (fClipType) {
|
| + default:
|
| + SkFAIL("incomplete switch\n");
|
| + case kWideOpen_ClipType: {
|
| + devResult->setLTRB(0, 0, width, height);
|
| + if (isIntersectionOfRects) {
|
| + *isIntersectionOfRects = true;
|
| + }
|
| + } break;
|
| + case kIRect_ClipType: {
|
| + *devResult = this->irect();
|
| + if (isIntersectionOfRects) {
|
| + *isIntersectionOfRects = true;
|
| + }
|
| + } break;
|
| + case kClipStack_ClipType: {
|
| + SkRect devBounds;
|
| + this->clipStack()->getConservativeBounds(-this->origin().fX,
|
| + -this->origin().fY,
|
| + width,
|
| + height,
|
| + &devBounds,
|
| + isIntersectionOfRects);
|
| + devBounds.roundOut(devResult);
|
| + } break;
|
| +
|
| + }
|
| +}
|
|
|