Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: sky/engine/core/rendering/RenderLayer.cpp

Issue 961553003: Remove dead code from RenderLayer and inline filter methods. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 RenderLayer::~RenderLayer() 100 RenderLayer::~RenderLayer()
101 { 101 {
102 removeFilterInfoIfNeeded(); 102 removeFilterInfoIfNeeded();
103 } 103 }
104 104
105 String RenderLayer::debugName() const 105 String RenderLayer::debugName() const
106 { 106 {
107 return renderer()->debugName(); 107 return renderer()->debugName();
108 } 108 }
109 109
110 bool RenderLayer::paintsWithFilters() const
111 {
112 // FIXME(sky): Remove
113 return renderer()->hasFilter();
114 }
115
116 bool RenderLayer::requiresFullLayerImageForFilters() const
117 {
118 if (!paintsWithFilters())
119 return false;
120 FilterEffectRenderer* filter = filterRenderer();
121 return filter ? filter->hasFilterThatMovesPixels() : false;
122 }
123
124 LayoutSize RenderLayer::subpixelAccumulation() const 110 LayoutSize RenderLayer::subpixelAccumulation() const
125 { 111 {
126 return m_subpixelAccumulation; 112 return m_subpixelAccumulation;
127 } 113 }
128 114
129 void RenderLayer::setSubpixelAccumulation(const LayoutSize& size) 115 void RenderLayer::setSubpixelAccumulation(const LayoutSize& size)
130 { 116 {
131 m_subpixelAccumulation = size; 117 m_subpixelAccumulation = size;
132 } 118 }
133 119
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 convertToLayerCoords(ancestorLayer, delta); 709 convertToLayerCoords(ancestorLayer, delta);
724 result.moveBy(delta); 710 result.moveBy(delta);
725 return result; 711 return result;
726 } 712 }
727 713
728 bool RenderLayer::shouldBeSelfPaintingLayer() const 714 bool RenderLayer::shouldBeSelfPaintingLayer() const
729 { 715 {
730 return m_layerType == NormalLayer; 716 return m_layerType == NormalLayer;
731 } 717 }
732 718
733 bool RenderLayer::hasNonEmptyChildRenderers() const
734 {
735 // Some HTML can cause whitespace text nodes to have renderers, like:
736 // <div>
737 // <img src=...>
738 // </div>
739 // so test for 0x0 RenderTexts here
740 for (RenderObject* child = renderer()->slowFirstChild(); child; child = chil d->nextSibling()) {
741 if (!child->hasLayer()) {
742 if (child->isRenderInline() || !child->isBox())
743 return true;
744
745 if (toRenderBox(child)->width() > 0 || toRenderBox(child)->height() > 0)
746 return true;
747 }
748 }
749 return false;
750 }
751
752 bool RenderLayer::hasBoxDecorationsOrBackground() const 719 bool RenderLayer::hasBoxDecorationsOrBackground() const
753 { 720 {
754 return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasB ackground(); 721 return renderer()->style()->hasBoxDecorations() || renderer()->style()->hasB ackground();
755 } 722 }
756 723
757 bool RenderLayer::hasVisibleBoxDecorations() const 724 bool RenderLayer::hasVisibleBoxDecorations() const
758 { 725 {
759 return hasBoxDecorationsOrBackground(); 726 return hasBoxDecorationsOrBackground();
760 } 727 }
761 728
762 bool RenderLayer::isVisuallyNonEmpty() const
763 {
764 if (hasNonEmptyChildRenderers())
765 return true;
766
767 if (renderer()->isReplaced())
768 return true;
769
770 if (hasVisibleBoxDecorations())
771 return true;
772
773 return false;
774 }
775
776 void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle) 729 void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle)
777 { 730 {
778 if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter())) 731 if (!newStyle->hasFilter() && (!oldStyle || !oldStyle->hasFilter()))
779 return; 732 return;
780 733
781 updateOrRemoveFilterClients();
782 updateOrRemoveFilterEffectRenderer();
783 }
784
785 void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle )
786 {
787 m_stackingNode->updateIsNormalFlowOnly();
788 m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle);
789
790 // Overlay scrollbars can make this layer self-painting so we need
791 // to recompute the bit once scrollbars have been updated.
792 m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
793
794 updateTransform(oldStyle, renderer()->style());
795 updateFilters(oldStyle, renderer()->style());
796 }
797
798 FilterOperations RenderLayer::computeFilterOperations(const RenderStyle* style)
799 {
800 return style->filter();
801 }
802
803 void RenderLayer::updateOrRemoveFilterClients()
804 {
805 if (!hasFilter()) { 734 if (!hasFilter()) {
806 removeFilterInfoIfNeeded(); 735 removeFilterInfoIfNeeded();
807 return; 736 return;
808 } 737 }
809 738
810 if (renderer()->style()->filter().hasReferenceFilter()) 739 if (renderer()->style()->filter().hasReferenceFilter())
811 ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->fi lter()); 740 ensureFilterInfo()->updateReferenceFilterClients(renderer()->style()->fi lter());
812 else if (hasFilterInfo()) 741 else if (hasFilterInfo())
813 filterInfo()->removeReferenceFilterClients(); 742 filterInfo()->removeReferenceFilterClients();
814 }
815 743
816 void RenderLayer::updateOrRemoveFilterEffectRenderer()
817 {
818 // FilterEffectRenderer is only used to render the filters in software mode, 744 // FilterEffectRenderer is only used to render the filters in software mode,
819 // so we always need to run updateOrRemoveFilterEffectRenderer after the com posited 745 // so we always need to run updateOrRemoveFilterEffectRenderer after the com posited
820 // mode might have changed for this layer. 746 // mode might have changed for this layer.
821 if (!paintsWithFilters()) { 747 if (!renderer()->hasFilter()) {
822 // Don't delete the whole filter info here, because we might use it 748 // Don't delete the whole filter info here, because we might use it
823 // for loading CSS shader files. 749 // for loading CSS shader files.
824 if (RenderLayerFilterInfo* filterInfo = this->filterInfo()) 750 if (RenderLayerFilterInfo* filterInfo = this->filterInfo())
825 filterInfo->setRenderer(nullptr); 751 filterInfo->setRenderer(nullptr);
826 752
827 return; 753 return;
828 } 754 }
829 755
830 RenderLayerFilterInfo* filterInfo = ensureFilterInfo(); 756 RenderLayerFilterInfo* filterInfo = ensureFilterInfo();
831 if (!filterInfo->renderer()) { 757 if (!filterInfo->renderer()) {
832 RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::crea te(); 758 RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::crea te();
833 filterInfo->setRenderer(filterRenderer.release()); 759 filterInfo->setRenderer(filterRenderer.release());
834 760
835 // We can optimize away code paths in other places if we know that there are no software filters. 761 // We can optimize away code paths in other places if we know that there are no software filters.
836 renderer()->document().view()->setHasSoftwareFilters(true); 762 renderer()->document().view()->setHasSoftwareFilters(true);
837 } 763 }
838 764
839 // If the filter fails to build, remove it from the layer. It will still att empt to 765 // If the filter fails to build, remove it from the layer. It will still att empt to
840 // go through regular processing (e.g. compositing), but never apply anythin g. 766 // go through regular processing (e.g. compositing), but never apply anythin g.
841 if (!filterInfo->renderer()->build(renderer(), computeFilterOperations(rende rer()->style()))) 767 if (!filterInfo->renderer()->build(renderer(), renderer()->style()->filter() ))
842 filterInfo->setRenderer(nullptr); 768 filterInfo->setRenderer(nullptr);
843 } 769 }
844 770
771 void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle )
772 {
773 m_stackingNode->updateIsNormalFlowOnly();
774 m_stackingNode->updateStackingNodesAfterStyleChange(oldStyle);
775
776 // Overlay scrollbars can make this layer self-painting so we need
777 // to recompute the bit once scrollbars have been updated.
778 m_isSelfPaintingLayer = shouldBeSelfPaintingLayer();
779
780 updateTransform(oldStyle, renderer()->style());
781 updateFilters(oldStyle, renderer()->style());
782 }
783
845 } // namespace blink 784 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698