OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 | 75 |
76 PassOwnPtr<GraphicsLayer> GraphicsLayer::create(GraphicsLayerFactory* factory, G
raphicsLayerClient* client) | 76 PassOwnPtr<GraphicsLayer> GraphicsLayer::create(GraphicsLayerFactory* factory, G
raphicsLayerClient* client) |
77 { | 77 { |
78 return factory->createGraphicsLayer(client); | 78 return factory->createGraphicsLayer(client); |
79 } | 79 } |
80 | 80 |
81 GraphicsLayer::GraphicsLayer(GraphicsLayerClient* client) | 81 GraphicsLayer::GraphicsLayer(GraphicsLayerClient* client) |
82 : m_client(client) | 82 : m_client(client) |
83 , m_backgroundColor(Color::transparent) | 83 , m_backgroundColor(Color::transparent) |
84 , m_opacity(1) | 84 , m_opacity(1) |
85 , m_zPosition(0) | |
86 , m_blendMode(blink::WebBlendModeNormal) | 85 , m_blendMode(blink::WebBlendModeNormal) |
87 , m_hasTransformOrigin(false) | 86 , m_hasTransformOrigin(false) |
88 , m_contentsOpaque(false) | 87 , m_contentsOpaque(false) |
89 , m_shouldFlattenTransform(true) | 88 , m_shouldFlattenTransform(true) |
90 , m_backfaceVisibility(true) | 89 , m_backfaceVisibility(true) |
91 , m_masksToBounds(false) | 90 , m_masksToBounds(false) |
92 , m_drawsContent(false) | 91 , m_drawsContent(false) |
93 , m_contentsVisible(true) | 92 , m_contentsVisible(true) |
94 , m_isRootForIsolatedGroup(false) | 93 , m_isRootForIsolatedGroup(false) |
95 , m_hasScrollParent(false) | 94 , m_hasScrollParent(false) |
96 , m_hasClipParent(false) | 95 , m_hasClipParent(false) |
97 , m_paintingPhase(GraphicsLayerPaintAllWithOverflowClip) | 96 , m_paintingPhase(GraphicsLayerPaintAllWithOverflowClip) |
98 , m_contentsOrientation(CompositingCoordinatesTopDown) | |
99 , m_parent(0) | 97 , m_parent(0) |
100 , m_maskLayer(0) | 98 , m_maskLayer(0) |
101 , m_contentsClippingMaskLayer(0) | 99 , m_contentsClippingMaskLayer(0) |
102 , m_replicaLayer(0) | 100 , m_replicaLayer(0) |
103 , m_replicatedLayer(0) | 101 , m_replicatedLayer(0) |
104 , m_paintCount(0) | 102 , m_paintCount(0) |
105 , m_contentsLayer(0) | 103 , m_contentsLayer(0) |
106 , m_contentsLayerId(0) | 104 , m_contentsLayerId(0) |
107 , m_scrollableArea(0) | 105 , m_scrollableArea(0) |
108 , m_3dRenderingContext(0) | 106 , m_3dRenderingContext(0) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 resetTrackedRepaints(); | 140 resetTrackedRepaints(); |
143 ASSERT(!m_parent); | 141 ASSERT(!m_parent); |
144 } | 142 } |
145 | 143 |
146 void GraphicsLayer::setParent(GraphicsLayer* layer) | 144 void GraphicsLayer::setParent(GraphicsLayer* layer) |
147 { | 145 { |
148 ASSERT(!layer || !layer->hasAncestor(this)); | 146 ASSERT(!layer || !layer->hasAncestor(this)); |
149 m_parent = layer; | 147 m_parent = layer; |
150 } | 148 } |
151 | 149 |
| 150 #if ASSERT_ENABLED |
| 151 |
152 bool GraphicsLayer::hasAncestor(GraphicsLayer* ancestor) const | 152 bool GraphicsLayer::hasAncestor(GraphicsLayer* ancestor) const |
153 { | 153 { |
154 for (GraphicsLayer* curr = parent(); curr; curr = curr->parent()) { | 154 for (GraphicsLayer* curr = parent(); curr; curr = curr->parent()) { |
155 if (curr == ancestor) | 155 if (curr == ancestor) |
156 return true; | 156 return true; |
157 } | 157 } |
158 | 158 |
159 return false; | 159 return false; |
160 } | 160 } |
161 | 161 |
| 162 #endif |
| 163 |
162 bool GraphicsLayer::setChildren(const GraphicsLayerVector& newChildren) | 164 bool GraphicsLayer::setChildren(const GraphicsLayerVector& newChildren) |
163 { | 165 { |
164 // If the contents of the arrays are the same, nothing to do. | 166 // If the contents of the arrays are the same, nothing to do. |
165 if (newChildren == m_children) | 167 if (newChildren == m_children) |
166 return false; | 168 return false; |
167 | 169 |
168 removeAllChildren(); | 170 removeAllChildren(); |
169 | 171 |
170 size_t listSize = newChildren.size(); | 172 size_t listSize = newChildren.size(); |
171 for (size_t i = 0; i < listSize; ++i) | 173 for (size_t i = 0; i < listSize; ++i) |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 } | 330 } |
329 | 331 |
330 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) | 332 void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const I
ntRect& clip) |
331 { | 333 { |
332 if (!m_client) | 334 if (!m_client) |
333 return; | 335 return; |
334 incrementPaintCount(); | 336 incrementPaintCount(); |
335 m_client->paintContents(this, context, m_paintingPhase, clip); | 337 m_client->paintContents(this, context, m_paintingPhase, clip); |
336 } | 338 } |
337 | 339 |
338 void GraphicsLayer::setZPosition(float position) | |
339 { | |
340 m_zPosition = position; | |
341 } | |
342 | |
343 void GraphicsLayer::updateChildList() | 340 void GraphicsLayer::updateChildList() |
344 { | 341 { |
345 WebLayer* childHost = m_layer->layer(); | 342 WebLayer* childHost = m_layer->layer(); |
346 childHost->removeAllChildren(); | 343 childHost->removeAllChildren(); |
347 | 344 |
348 clearContentsLayerIfUnregistered(); | 345 clearContentsLayerIfUnregistered(); |
349 | 346 |
350 if (m_contentsLayer) { | 347 if (m_contentsLayer) { |
351 // FIXME: add the contents layer in the correct order with negative z-or
der children. | 348 // FIXME: add the contents layer in the correct order with negative z-or
der children. |
352 // This does not cause visible rendering issues because currently conten
ts layers are only used | 349 // This does not cause visible rendering issues because currently conten
ts layers are only used |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 ts << repaintRectsCopy[i].x() << " "; | 677 ts << repaintRectsCopy[i].x() << " "; |
681 ts << repaintRectsCopy[i].y() << " "; | 678 ts << repaintRectsCopy[i].y() << " "; |
682 ts << repaintRectsCopy[i].width() << " "; | 679 ts << repaintRectsCopy[i].width() << " "; |
683 ts << repaintRectsCopy[i].height(); | 680 ts << repaintRectsCopy[i].height(); |
684 ts << ")\n"; | 681 ts << ")\n"; |
685 } | 682 } |
686 writeIndent(ts, indent + 1); | 683 writeIndent(ts, indent + 1); |
687 ts << ")\n"; | 684 ts << ")\n"; |
688 } | 685 } |
689 | 686 |
690 if ((flags & LayerTreeIncludesPaintingPhases) && paintingPhase()) { | 687 if ((flags & LayerTreeIncludesPaintingPhases) && m_paintingPhase) { |
691 writeIndent(ts, indent + 1); | 688 writeIndent(ts, indent + 1); |
692 ts << "(paintingPhases\n"; | 689 ts << "(paintingPhases\n"; |
693 if (paintingPhase() & GraphicsLayerPaintBackground) { | 690 if (m_paintingPhase & GraphicsLayerPaintBackground) { |
694 writeIndent(ts, indent + 2); | 691 writeIndent(ts, indent + 2); |
695 ts << "GraphicsLayerPaintBackground\n"; | 692 ts << "GraphicsLayerPaintBackground\n"; |
696 } | 693 } |
697 if (paintingPhase() & GraphicsLayerPaintForeground) { | 694 if (m_paintingPhase & GraphicsLayerPaintForeground) { |
698 writeIndent(ts, indent + 2); | 695 writeIndent(ts, indent + 2); |
699 ts << "GraphicsLayerPaintForeground\n"; | 696 ts << "GraphicsLayerPaintForeground\n"; |
700 } | 697 } |
701 if (paintingPhase() & GraphicsLayerPaintMask) { | 698 if (m_paintingPhase & GraphicsLayerPaintMask) { |
702 writeIndent(ts, indent + 2); | 699 writeIndent(ts, indent + 2); |
703 ts << "GraphicsLayerPaintMask\n"; | 700 ts << "GraphicsLayerPaintMask\n"; |
704 } | 701 } |
705 if (paintingPhase() & GraphicsLayerPaintChildClippingMask) { | 702 if (m_paintingPhase & GraphicsLayerPaintChildClippingMask) { |
706 writeIndent(ts, indent + 2); | 703 writeIndent(ts, indent + 2); |
707 ts << "GraphicsLayerPaintChildClippingMask\n"; | 704 ts << "GraphicsLayerPaintChildClippingMask\n"; |
708 } | 705 } |
709 if (paintingPhase() & GraphicsLayerPaintOverflowContents) { | 706 if (m_paintingPhase & GraphicsLayerPaintOverflowContents) { |
710 writeIndent(ts, indent + 2); | 707 writeIndent(ts, indent + 2); |
711 ts << "GraphicsLayerPaintOverflowContents\n"; | 708 ts << "GraphicsLayerPaintOverflowContents\n"; |
712 } | 709 } |
713 if (paintingPhase() & GraphicsLayerPaintCompositedScroll) { | 710 if (m_paintingPhase & GraphicsLayerPaintCompositedScroll) { |
714 writeIndent(ts, indent + 2); | 711 writeIndent(ts, indent + 2); |
715 ts << "GraphicsLayerPaintCompositedScroll\n"; | 712 ts << "GraphicsLayerPaintCompositedScroll\n"; |
716 } | 713 } |
717 writeIndent(ts, indent + 1); | 714 writeIndent(ts, indent + 1); |
718 ts << ")\n"; | 715 ts << ")\n"; |
719 } | 716 } |
720 | 717 |
721 if (flags & LayerTreeIncludesClipAndScrollParents) { | 718 if (flags & LayerTreeIncludesClipAndScrollParents) { |
722 if (m_hasScrollParent) { | 719 if (m_hasScrollParent) { |
723 writeIndent(ts, indent + 1); | 720 writeIndent(ts, indent + 1); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
964 if (m_isRootForIsolatedGroup == isolated) | 961 if (m_isRootForIsolatedGroup == isolated) |
965 return; | 962 return; |
966 m_isRootForIsolatedGroup = isolated; | 963 m_isRootForIsolatedGroup = isolated; |
967 platformLayer()->setIsRootForIsolatedGroup(isolated); | 964 platformLayer()->setIsRootForIsolatedGroup(isolated); |
968 } | 965 } |
969 | 966 |
970 void GraphicsLayer::setContentsNeedsDisplay() | 967 void GraphicsLayer::setContentsNeedsDisplay() |
971 { | 968 { |
972 if (WebLayer* contentsLayer = contentsLayerIfRegistered()) { | 969 if (WebLayer* contentsLayer = contentsLayerIfRegistered()) { |
973 contentsLayer->invalidate(); | 970 contentsLayer->invalidate(); |
974 addRepaintRect(contentsRect()); | 971 addRepaintRect(m_contentsRect); |
975 } | 972 } |
976 } | 973 } |
977 | 974 |
978 void GraphicsLayer::setNeedsDisplay() | 975 void GraphicsLayer::setNeedsDisplay() |
979 { | 976 { |
980 if (drawsContent()) { | 977 if (drawsContent()) { |
981 m_layer->layer()->invalidate(); | 978 m_layer->layer()->invalidate(); |
982 addRepaintRect(FloatRect(FloatPoint(), m_size)); | 979 addRepaintRect(FloatRect(FloatPoint(), m_size)); |
983 for (size_t i = 0; i < m_linkHighlights.size(); ++i) | 980 for (size_t i = 0; i < m_linkHighlights.size(); ++i) |
984 m_linkHighlights[i]->invalidate(); | 981 m_linkHighlights[i]->invalidate(); |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 #ifndef NDEBUG | 1229 #ifndef NDEBUG |
1233 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) | 1230 void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) |
1234 { | 1231 { |
1235 if (!layer) | 1232 if (!layer) |
1236 return; | 1233 return; |
1237 | 1234 |
1238 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); | 1235 String output = layer->layerTreeAsText(WebCore::LayerTreeIncludesDebugInfo); |
1239 fprintf(stderr, "%s\n", output.utf8().data()); | 1236 fprintf(stderr, "%s\n", output.utf8().data()); |
1240 } | 1237 } |
1241 #endif | 1238 #endif |
OLD | NEW |