| Index: src/core/SkBBoxHierarchyRecord.cpp
|
| diff --git a/src/core/SkBBoxHierarchyRecord.cpp b/src/core/SkBBoxHierarchyRecord.cpp
|
| deleted file mode 100644
|
| index a9cd05d85ff1dc3cf1028ac29982025e44b50d53..0000000000000000000000000000000000000000
|
| --- a/src/core/SkBBoxHierarchyRecord.cpp
|
| +++ /dev/null
|
| @@ -1,132 +0,0 @@
|
| -
|
| -/*
|
| - * Copyright 2012 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "SkBBoxHierarchyRecord.h"
|
| -#include "SkPictureStateTree.h"
|
| -
|
| -SkBBoxHierarchyRecord::SkBBoxHierarchyRecord(const SkISize& size,
|
| - uint32_t recordFlags,
|
| - SkBBoxHierarchy* h)
|
| - : INHERITED(size, recordFlags) {
|
| - fStateTree = SkNEW(SkPictureStateTree);
|
| - fBoundingHierarchy = h;
|
| - fBoundingHierarchy->ref();
|
| - fBoundingHierarchy->setClient(this);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::handleBBox(const SkRect& bounds) {
|
| - SkPictureStateTree::Draw* draw = fStateTree->appendDraw(this->writeStream().bytesWritten());
|
| - fBoundingHierarchy->insert(draw, bounds, true);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::willSave() {
|
| - fStateTree->appendSave();
|
| - this->INHERITED::willSave();
|
| -}
|
| -
|
| -SkCanvas::SaveLayerStrategy SkBBoxHierarchyRecord::willSaveLayer(const SkRect* bounds,
|
| - const SkPaint* paint,
|
| - SaveFlags flags) {
|
| - // For now, assume all filters affect transparent black.
|
| - // FIXME: This could be made less conservative as an optimization.
|
| - bool paintAffectsTransparentBlack = paint &&
|
| - ((paint->getImageFilter()) ||
|
| - (paint->getColorFilter()));
|
| - bool needToHandleBBox = paintAffectsTransparentBlack;
|
| - if (!needToHandleBBox && paint) {
|
| - // Unusual Xfermodes require us to process a saved layer
|
| - // even with operations outisde the clip.
|
| - // For example, DstIn is used by masking layers.
|
| - // https://code.google.com/p/skia/issues/detail?id=1291
|
| - SkXfermode* xfermode = paint->getXfermode();
|
| - SkXfermode::Mode mode;
|
| - // SrcOver is the common case with a NULL xfermode, so we should
|
| - // make that the fast path and bypass the mode extraction and test.
|
| - if (xfermode && xfermode->asMode(&mode)) {
|
| - switch (mode) {
|
| - case SkXfermode::kClear_Mode:
|
| - case SkXfermode::kSrc_Mode:
|
| - case SkXfermode::kSrcIn_Mode:
|
| - case SkXfermode::kDstIn_Mode:
|
| - case SkXfermode::kSrcOut_Mode:
|
| - case SkXfermode::kDstATop_Mode:
|
| - case SkXfermode::kModulate_Mode:
|
| - needToHandleBBox = true;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -
|
| - SkRect drawBounds;
|
| - if (needToHandleBBox) {
|
| - SkIRect deviceBounds;
|
| - this->getClipDeviceBounds(&deviceBounds);
|
| - drawBounds.set(deviceBounds);
|
| - }
|
| - fStateTree->appendSaveLayer(this->writeStream().bytesWritten());
|
| - SkCanvas::SaveLayerStrategy strategy = this->INHERITED::willSaveLayer(bounds, paint, flags);
|
| - if (needToHandleBBox) {
|
| - this->handleBBox(drawBounds);
|
| - this->addNoOp();
|
| - }
|
| - return strategy;
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::willRestore() {
|
| - fStateTree->appendRestore();
|
| - this->INHERITED::willRestore();
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::didConcat(const SkMatrix& matrix) {
|
| - fStateTree->appendTransform(getTotalMatrix());
|
| - INHERITED::didConcat(matrix);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::didSetMatrix(const SkMatrix& matrix) {
|
| - fStateTree->appendTransform(getTotalMatrix());
|
| - INHERITED::didSetMatrix(matrix);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::onClipRect(const SkRect& rect,
|
| - SkRegion::Op op,
|
| - ClipEdgeStyle edgeStyle) {
|
| - fStateTree->appendClip(this->writeStream().bytesWritten());
|
| - this->INHERITED::onClipRect(rect, op, edgeStyle);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::onClipRegion(const SkRegion& region,
|
| - SkRegion::Op op) {
|
| - fStateTree->appendClip(this->writeStream().bytesWritten());
|
| - this->INHERITED::onClipRegion(region, op);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::onClipPath(const SkPath& path,
|
| - SkRegion::Op op,
|
| - ClipEdgeStyle edgeStyle) {
|
| - fStateTree->appendClip(this->writeStream().bytesWritten());
|
| - this->INHERITED::onClipPath(path, op, edgeStyle);
|
| -}
|
| -
|
| -void SkBBoxHierarchyRecord::onClipRRect(const SkRRect& rrect,
|
| - SkRegion::Op op,
|
| - ClipEdgeStyle edgeStyle) {
|
| - fStateTree->appendClip(this->writeStream().bytesWritten());
|
| - this->INHERITED::onClipRRect(rrect, op, edgeStyle);
|
| -}
|
| -
|
| -bool SkBBoxHierarchyRecord::shouldRewind(void* data) {
|
| - // SkBBoxHierarchy::rewindInserts is called by SkPicture after the
|
| - // SkPicture has rewound its command stream. To match that rewind in the
|
| - // BBH, we rewind all draws that reference commands that were recorded
|
| - // past the point to which the SkPicture has rewound, which is given by
|
| - // writeStream().bytesWritten().
|
| - SkPictureStateTree::Draw* draw = static_cast<SkPictureStateTree::Draw*>(data);
|
| - return draw->fOffset >= writeStream().bytesWritten();
|
| -}
|
|
|