| Index: cc/output/filter_operations.cc
|
| diff --git a/cc/output/filter_operations.cc b/cc/output/filter_operations.cc
|
| index e526f5c419bed3ae53cbab223109f19c85ec385b..92ddd684777ef9e71fab6cbd1a3805a0f0db3dd9 100644
|
| --- a/cc/output/filter_operations.cc
|
| +++ b/cc/output/filter_operations.cc
|
| @@ -59,7 +59,10 @@ void FilterOperations::GetOutsets(int* top,
|
| int* left) const {
|
| *top = *right = *bottom = *left = 0;
|
| for (size_t i = 0; i < operations_.size(); ++i) {
|
| - const FilterOperation op = operations_[i];
|
| + const FilterOperation& op = operations_[i];
|
| + // TODO(ajuma): Add support for reference filters once SkImageFilter
|
| + // reports its outsets.
|
| + DCHECK(op.type() != FilterOperation::REFERENCE);
|
| if (op.type() == FilterOperation::BLUR ||
|
| op.type() == FilterOperation::DROP_SHADOW) {
|
| int spread = SpreadForStdDeviation(op.amount());
|
| @@ -80,11 +83,14 @@ void FilterOperations::GetOutsets(int* top,
|
|
|
| bool FilterOperations::HasFilterThatMovesPixels() const {
|
| for (size_t i = 0; i < operations_.size(); ++i) {
|
| - const FilterOperation op = operations_[i];
|
| + const FilterOperation& op = operations_[i];
|
| + // TODO(ajuma): Once SkImageFilter reports its outsets, use those here to
|
| + // determine whether a reference filter really moves pixels.
|
| switch (op.type()) {
|
| case FilterOperation::BLUR:
|
| case FilterOperation::DROP_SHADOW:
|
| case FilterOperation::ZOOM:
|
| + case FilterOperation::REFERENCE:
|
| return true;
|
| case FilterOperation::OPACITY:
|
| case FilterOperation::COLOR_MATRIX:
|
| @@ -104,12 +110,15 @@ bool FilterOperations::HasFilterThatMovesPixels() const {
|
|
|
| bool FilterOperations::HasFilterThatAffectsOpacity() const {
|
| for (size_t i = 0; i < operations_.size(); ++i) {
|
| - const FilterOperation op = operations_[i];
|
| + const FilterOperation& op = operations_[i];
|
| + // TODO(ajuma): Make this smarter for reference filters. Once SkImageFilter
|
| + // can report affectsOpacity(), call that.
|
| switch (op.type()) {
|
| case FilterOperation::OPACITY:
|
| case FilterOperation::BLUR:
|
| case FilterOperation::DROP_SHADOW:
|
| case FilterOperation::ZOOM:
|
| + case FilterOperation::REFERENCE:
|
| return true;
|
| case FilterOperation::COLOR_MATRIX: {
|
| const SkScalar* matrix = op.matrix();
|
| @@ -135,6 +144,14 @@ bool FilterOperations::HasFilterThatAffectsOpacity() const {
|
| return false;
|
| }
|
|
|
| +bool FilterOperations::HasReferenceFilter() const {
|
| + for (size_t i = 0; i < operations_.size(); ++i) {
|
| + if (operations_[i].type() == FilterOperation::REFERENCE)
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| FilterOperations FilterOperations::Blend(const FilterOperations& from,
|
| double progress) const {
|
| FilterOperations blended_filters;
|
|
|