OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 2004, 2005, 2010 Rob Buis <buis@kde.org> | 3 2004, 2005, 2010 Rob Buis <buis@kde.org> |
4 Copyright (C) Research In Motion Limited 2010. All rights reserved. | 4 Copyright (C) Research In Motion Limited 2010. All rights reserved. |
5 | 5 |
6 Based on khtml code by: | 6 Based on khtml code by: |
7 Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) | 7 Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
8 Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) | 8 Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) |
9 Copyright (C) 2002-2003 Dirk Mueller (mueller@kde.org) | 9 Copyright (C) 2002-2003 Dirk Mueller (mueller@kde.org) |
10 Copyright (C) 2002 Apple Computer, Inc. | 10 Copyright (C) 2002 Apple Computer, Inc. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 misc = other->misc; | 117 misc = other->misc; |
118 resources = other->resources; | 118 resources = other->resources; |
119 } | 119 } |
120 | 120 |
121 StyleDifference SVGRenderStyle::diff(const SVGRenderStyle* other) const | 121 StyleDifference SVGRenderStyle::diff(const SVGRenderStyle* other) const |
122 { | 122 { |
123 StyleDifference styleDifference; | 123 StyleDifference styleDifference; |
124 | 124 |
125 if (diffNeedsLayout(other)) | 125 if (diffNeedsLayout(other)) |
126 styleDifference.setNeedsFullLayout(); | 126 styleDifference.setNeedsFullLayout(); |
127 else if (diffNeedsRepaintOnly(other)) | 127 if (diffNeedsRepaint(other)) |
128 styleDifference.setNeedsRepaintObject(); | 128 styleDifference.setNeedsRepaintObject(); |
129 | 129 |
130 return styleDifference; | 130 return styleDifference; |
131 } | 131 } |
132 | 132 |
133 bool SVGRenderStyle::diffNeedsLayout(const SVGRenderStyle* other) const | 133 bool SVGRenderStyle::diffNeedsLayout(const SVGRenderStyle* other) const |
134 { | 134 { |
135 // If resources change, we need a relayout, as the presence of resources inf
luences the repaint rect. | 135 // If resources change, we need a relayout, as the presence of resources inf
luences the repaint rect. |
136 if (resources != other->resources) | 136 if (resources != other->resources) |
137 return true; | 137 return true; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 || stroke->dashOffset != other->stroke->dashOffset | 174 || stroke->dashOffset != other->stroke->dashOffset |
175 || stroke->visitedLinkPaintColor != other->stroke->visitedLinkPaintC
olor | 175 || stroke->visitedLinkPaintColor != other->stroke->visitedLinkPaintC
olor |
176 || stroke->visitedLinkPaintUri != other->stroke->visitedLinkPaintUri | 176 || stroke->visitedLinkPaintUri != other->stroke->visitedLinkPaintUri |
177 || stroke->visitedLinkPaintType != other->stroke->visitedLinkPaintTy
pe) | 177 || stroke->visitedLinkPaintType != other->stroke->visitedLinkPaintTy
pe) |
178 return true; | 178 return true; |
179 } | 179 } |
180 | 180 |
181 return false; | 181 return false; |
182 } | 182 } |
183 | 183 |
184 bool SVGRenderStyle::diffNeedsRepaintOnly(const SVGRenderStyle* other) const | 184 bool SVGRenderStyle::diffNeedsRepaint(const SVGRenderStyle* other) const |
185 { | 185 { |
186 if (stroke != other->stroke) { | 186 if (stroke->opacity != other->stroke->opacity) |
187 // Only the stroke-opacity case remains, where we only need a repaint. | |
188 ASSERT(stroke->opacity != other->stroke->opacity); | |
189 return true; | 187 return true; |
190 } | |
191 | 188 |
192 // Painting related properties only need repaints. | 189 // Painting related properties only need repaints. |
193 if (misc != other->misc) { | 190 if (misc != other->misc) { |
194 if (misc->floodColor != other->misc->floodColor | 191 if (misc->floodColor != other->misc->floodColor |
195 || misc->floodOpacity != other->misc->floodOpacity | 192 || misc->floodOpacity != other->misc->floodOpacity |
196 || misc->lightingColor != other->misc->lightingColor) | 193 || misc->lightingColor != other->misc->lightingColor) |
197 return true; | 194 return true; |
198 } | 195 } |
199 | 196 |
200 // If fill changes, we just need to repaint. Fill boundaries are not influen
ced by this, only by the Path, that RenderSVGPath contains. | 197 // If fill changes, we just need to repaint. Fill boundaries are not influen
ced by this, only by the Path, that RenderSVGPath contains. |
(...skipping 25 matching lines...) Expand all Loading... |
226 } | 223 } |
227 | 224 |
228 EPaintOrderType SVGRenderStyle::paintOrderType(unsigned index) const | 225 EPaintOrderType SVGRenderStyle::paintOrderType(unsigned index) const |
229 { | 226 { |
230 ASSERT(index < ((1 << kPaintOrderBitwidth)-1)); | 227 ASSERT(index < ((1 << kPaintOrderBitwidth)-1)); |
231 unsigned pt = (paintOrder() >> (kPaintOrderBitwidth*index)) & ((1u << kPaint
OrderBitwidth) - 1); | 228 unsigned pt = (paintOrder() >> (kPaintOrderBitwidth*index)) & ((1u << kPaint
OrderBitwidth) - 1); |
232 return (EPaintOrderType)pt; | 229 return (EPaintOrderType)pt; |
233 } | 230 } |
234 | 231 |
235 } | 232 } |
OLD | NEW |