OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 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 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 11 matching lines...) Expand all Loading... |
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 */ | 27 */ |
28 | 28 |
29 #include "config.h" | 29 #include "config.h" |
30 #include "core/rendering/RenderReplica.h" | 30 #include "core/rendering/RenderReplica.h" |
31 | 31 |
| 32 #include "core/paint/ReplicaPainter.h" |
32 #include "core/rendering/GraphicsContextAnnotator.h" | 33 #include "core/rendering/GraphicsContextAnnotator.h" |
33 #include "core/rendering/RenderLayer.h" | 34 #include "core/rendering/RenderLayer.h" |
34 | 35 |
35 namespace blink { | 36 namespace blink { |
36 | 37 |
37 RenderReplica::RenderReplica() | 38 RenderReplica::RenderReplica() |
38 : RenderBox(0) | 39 : RenderBox(0) |
39 { | 40 { |
40 // This is a hack. Replicas are synthetic, and don't pick up the attributes
of the | 41 // This is a hack. Replicas are synthetic, and don't pick up the attributes
of the |
41 // renderers being replicated, so they always report that they are inline, n
on-replaced. | 42 // renderers being replicated, so they always report that they are inline, n
on-replaced. |
(...skipping 23 matching lines...) Expand all Loading... |
65 | 66 |
66 void RenderReplica::computePreferredLogicalWidths() | 67 void RenderReplica::computePreferredLogicalWidths() |
67 { | 68 { |
68 m_minPreferredLogicalWidth = parentBox()->width(); | 69 m_minPreferredLogicalWidth = parentBox()->width(); |
69 m_maxPreferredLogicalWidth = m_minPreferredLogicalWidth; | 70 m_maxPreferredLogicalWidth = m_minPreferredLogicalWidth; |
70 clearPreferredLogicalWidthsDirty(); | 71 clearPreferredLogicalWidthsDirty(); |
71 } | 72 } |
72 | 73 |
73 void RenderReplica::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) | 74 void RenderReplica::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
74 { | 75 { |
75 ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this); | 76 ReplicaPainter(*this).paint(paintInfo, paintOffset); |
76 | |
77 if (paintInfo.phase != PaintPhaseForeground && paintInfo.phase != PaintPhase
Mask) | |
78 return; | |
79 | |
80 LayoutPoint adjustedPaintOffset = paintOffset + location(); | |
81 | |
82 if (paintInfo.phase == PaintPhaseForeground) { | |
83 // Turn around and paint the parent layer. Use temporary clipRects, so t
hat the layer doesn't end up caching clip rects | |
84 // computing using the wrong rootLayer | |
85 RenderLayer* rootPaintingLayer = layer()->transform() ? layer()->parent(
) : layer()->enclosingTransformedAncestor(); | |
86 LayerPaintingInfo paintingInfo(rootPaintingLayer, paintInfo.rect, PaintB
ehaviorNormal, LayoutSize(), 0); | |
87 PaintLayerFlags flags = PaintLayerHaveTransparency | PaintLayerAppliedTr
ansform | PaintLayerUncachedClipRects | PaintLayerPaintingReflection; | |
88 layer()->parent()->paintLayer(paintInfo.context, paintingInfo, flags); | |
89 } else if (paintInfo.phase == PaintPhaseMask) | |
90 paintMask(paintInfo, adjustedPaintOffset); | |
91 } | 77 } |
92 | 78 |
93 } // namespace blink | 79 } // namespace blink |
OLD | NEW |