| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 2602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2613 { | 2613 { |
| 2614 const FilterOperations& filters = style.filter(); | 2614 const FilterOperations& filters = style.filter(); |
| 2615 if (filters.hasReferenceFilter()) { | 2615 if (filters.hasReferenceFilter()) { |
| 2616 for (size_t i = 0; i < filters.size(); ++i) { | 2616 for (size_t i = 0; i < filters.size(); ++i) { |
| 2617 FilterOperation* filterOperation = filters.operations().at(i).get(); | 2617 FilterOperation* filterOperation = filters.operations().at(i).get(); |
| 2618 if (filterOperation->type() != FilterOperation::REFERENCE) | 2618 if (filterOperation->type() != FilterOperation::REFERENCE) |
| 2619 continue; | 2619 continue; |
| 2620 ReferenceFilterOperation& referenceOperation = toReferenceFilterOper
ation(*filterOperation); | 2620 ReferenceFilterOperation& referenceOperation = toReferenceFilterOper
ation(*filterOperation); |
| 2621 // FIXME: Cache the ReferenceFilter if it didn't change. | 2621 // FIXME: Cache the ReferenceFilter if it didn't change. |
| 2622 RefPtrWillBeRawPtr<ReferenceFilter> referenceFilter = ReferenceFilte
r::create(style.effectiveZoom()); | 2622 RefPtrWillBeRawPtr<ReferenceFilter> referenceFilter = ReferenceFilte
r::create(style.effectiveZoom()); |
| 2623 referenceFilter->setLastEffect(ReferenceFilterBuilder::build(referen
ceFilter.get(), *layoutObject(), referenceFilter->sourceGraphic(), | 2623 referenceFilter->setLastEffect(ReferenceFilterBuilder::build(referen
ceFilter.get(), toElement(enclosingElement()), referenceFilter->sourceGraphic(), |
| 2624 referenceOperation)); | 2624 referenceOperation)); |
| 2625 referenceOperation.setFilter(referenceFilter.release()); | 2625 referenceOperation.setFilter(referenceFilter.release()); |
| 2626 } | 2626 } |
| 2627 } | 2627 } |
| 2628 | 2628 |
| 2629 return filters; | 2629 return filters; |
| 2630 } | 2630 } |
| 2631 | 2631 |
| 2632 void DeprecatedPaintLayer::updateOrRemoveFilterClients() | 2632 void DeprecatedPaintLayer::updateOrRemoveFilterClients() |
| 2633 { | 2633 { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2655 | 2655 |
| 2656 return; | 2656 return; |
| 2657 } | 2657 } |
| 2658 | 2658 |
| 2659 DeprecatedPaintLayerFilterInfo* filterInfo = ensureFilterInfo(); | 2659 DeprecatedPaintLayerFilterInfo* filterInfo = ensureFilterInfo(); |
| 2660 if (!filterInfo->builder()) | 2660 if (!filterInfo->builder()) |
| 2661 filterInfo->setBuilder(FilterEffectBuilder::create()); | 2661 filterInfo->setBuilder(FilterEffectBuilder::create()); |
| 2662 | 2662 |
| 2663 // If the filter fails to build, remove it from the layer. It will still att
empt to | 2663 // If the filter fails to build, remove it from the layer. It will still att
empt to |
| 2664 // go through regular processing (e.g. compositing), but never apply anythin
g. | 2664 // go through regular processing (e.g. compositing), but never apply anythin
g. |
| 2665 if (!filterInfo->builder()->build(layoutObject(), computeFilterOperations(la
youtObject()->styleRef()))) | 2665 float zoom = layoutObject()->style() ? layoutObject()->style()->effectiveZoo
m() : 1.0f; |
| 2666 if (!filterInfo->builder()->build(toElement(enclosingElement()), computeFilt
erOperations(layoutObject()->styleRef()), zoom)) |
| 2666 filterInfo->setBuilder(nullptr); | 2667 filterInfo->setBuilder(nullptr); |
| 2667 } | 2668 } |
| 2668 | 2669 |
| 2669 void DeprecatedPaintLayer::filterNeedsPaintInvalidation() | 2670 void DeprecatedPaintLayer::filterNeedsPaintInvalidation() |
| 2670 { | 2671 { |
| 2671 { | 2672 { |
| 2672 DeprecatedScheduleStyleRecalcDuringLayout marker(layoutObject()->documen
t().lifecycle()); | 2673 DeprecatedScheduleStyleRecalcDuringLayout marker(layoutObject()->documen
t().lifecycle()); |
| 2673 // It's possible for scheduleSVGFilterLayerUpdateHack to schedule a styl
e recalc, which | 2674 // It's possible for scheduleSVGFilterLayerUpdateHack to schedule a styl
e recalc, which |
| 2674 // is a problem because this function can be called while performing lay
out. | 2675 // is a problem because this function can be called while performing lay
out. |
| 2675 // Presumably this represents an illegal data flow of layout or composit
ing | 2676 // Presumably this represents an illegal data flow of layout or composit
ing |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2740 | 2741 |
| 2741 void showLayerTree(const blink::LayoutObject* layoutObject) | 2742 void showLayerTree(const blink::LayoutObject* layoutObject) |
| 2742 { | 2743 { |
| 2743 if (!layoutObject) { | 2744 if (!layoutObject) { |
| 2744 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); | 2745 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); |
| 2745 return; | 2746 return; |
| 2746 } | 2747 } |
| 2747 showLayerTree(layoutObject->enclosingLayer()); | 2748 showLayerTree(layoutObject->enclosingLayer()); |
| 2748 } | 2749 } |
| 2749 #endif | 2750 #endif |
| OLD | NEW |