OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2006 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 6 * (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
8 * Copyright (C) 2010 Google Inc. All rights reserved. | 8 * Copyright (C) 2010 Google Inc. All rights reserved. |
9 * Copyright (C) Research In Motion Limited 2011-2012. All rights reserved. | 9 * Copyright (C) Research In Motion Limited 2011-2012. All rights reserved. |
10 * | 10 * |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 #include "platform/graphics/GraphicsContextStateSaver.h" | 50 #include "platform/graphics/GraphicsContextStateSaver.h" |
51 | 51 |
52 using namespace std; | 52 using namespace std; |
53 | 53 |
54 namespace WebCore { | 54 namespace WebCore { |
55 | 55 |
56 using namespace HTMLNames; | 56 using namespace HTMLNames; |
57 | 57 |
58 RenderImage::RenderImage(Element* element) | 58 RenderImage::RenderImage(Element* element) |
59 : RenderReplaced(element, IntSize()) | 59 : RenderReplaced(element, IntSize()) |
60 , m_needsToSetSizeForAltText(false) | |
61 , m_didIncrementVisuallyNonEmptyPixelCount(false) | 60 , m_didIncrementVisuallyNonEmptyPixelCount(false) |
62 , m_isGeneratedContent(false) | 61 , m_isGeneratedContent(false) |
63 , m_imageDevicePixelRatio(1.0f) | 62 , m_imageDevicePixelRatio(1.0f) |
64 { | 63 { |
65 updateAltText(); | 64 updateAltText(); |
66 } | 65 } |
67 | 66 |
68 RenderImage* RenderImage::createAnonymous(Document* document) | 67 RenderImage* RenderImage::createAnonymous(Document* document) |
69 { | 68 { |
70 RenderImage* image = new RenderImage(0); | 69 RenderImage* image = new RenderImage(0); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 if (imageSize == intrinsicSize()) | 136 if (imageSize == intrinsicSize()) |
138 return false; | 137 return false; |
139 | 138 |
140 setIntrinsicSize(imageSize); | 139 setIntrinsicSize(imageSize); |
141 return true; | 140 return true; |
142 } | 141 } |
143 | 142 |
144 void RenderImage::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
le) | 143 void RenderImage::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
le) |
145 { | 144 { |
146 RenderReplaced::styleDidChange(diff, oldStyle); | 145 RenderReplaced::styleDidChange(diff, oldStyle); |
147 if (m_needsToSetSizeForAltText) { | |
148 if (!m_altText.isEmpty() && setImageSizeForAltText(m_imageResource->cach
edImage())) | |
149 imageDimensionsChanged(true /* imageSizeChanged */); | |
150 m_needsToSetSizeForAltText = false; | |
151 } | |
152 } | 146 } |
153 | 147 |
154 void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect) | 148 void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect) |
155 { | 149 { |
156 if (documentBeingDestroyed()) | 150 if (documentBeingDestroyed()) |
157 return; | 151 return; |
158 | 152 |
159 if (hasBoxDecorations() || hasMask()) | 153 if (hasBoxDecorations() || hasMask()) |
160 RenderReplaced::imageChanged(newImage, rect); | 154 RenderReplaced::imageChanged(newImage, rect); |
161 | 155 |
(...skipping 14 matching lines...) Expand all Loading... |
176 | 170 |
177 if (!m_didIncrementVisuallyNonEmptyPixelCount) { | 171 if (!m_didIncrementVisuallyNonEmptyPixelCount) { |
178 // At a zoom level of 1 the image is guaranteed to have an integer size. | 172 // At a zoom level of 1 the image is guaranteed to have an integer size. |
179 view()->frameView()->incrementVisuallyNonEmptyPixelCount(flooredIntSize(
m_imageResource->imageSize(1.0f))); | 173 view()->frameView()->incrementVisuallyNonEmptyPixelCount(flooredIntSize(
m_imageResource->imageSize(1.0f))); |
180 m_didIncrementVisuallyNonEmptyPixelCount = true; | 174 m_didIncrementVisuallyNonEmptyPixelCount = true; |
181 } | 175 } |
182 | 176 |
183 bool imageSizeChanged = false; | 177 bool imageSizeChanged = false; |
184 | 178 |
185 // Set image dimensions, taking into account the size of the alt text. | 179 // Set image dimensions, taking into account the size of the alt text. |
186 if (m_imageResource->errorOccurred() || !newImage) { | 180 if (m_imageResource->errorOccurred() || !newImage) |
187 if (!m_altText.isEmpty() && document().hasPendingStyleRecalc()) { | |
188 ASSERT(node()); | |
189 if (node()) { | |
190 m_needsToSetSizeForAltText = true; | |
191 node()->setNeedsStyleRecalc(LocalStyleChange, StyleChangeFromRen
derer); | |
192 } | |
193 return; | |
194 } | |
195 imageSizeChanged = setImageSizeForAltText(m_imageResource->cachedImage()
); | 181 imageSizeChanged = setImageSizeForAltText(m_imageResource->cachedImage()
); |
196 } | |
197 | 182 |
198 imageDimensionsChanged(imageSizeChanged, rect); | 183 imageDimensionsChanged(imageSizeChanged, rect); |
199 } | 184 } |
200 | 185 |
201 bool RenderImage::updateIntrinsicSizeIfNeeded(const LayoutSize& newSize, bool im
ageSizeChanged) | 186 bool RenderImage::updateIntrinsicSizeIfNeeded(const LayoutSize& newSize, bool im
ageSizeChanged) |
202 { | 187 { |
203 if (newSize == intrinsicSize() && !imageSizeChanged) | 188 if (newSize == intrinsicSize() && !imageSizeChanged) |
204 return false; | 189 return false; |
205 if (m_imageResource->errorOccurred() || !m_imageResource->hasImage()) | 190 if (m_imageResource->errorOccurred() || !m_imageResource->hasImage()) |
206 return imageSizeChanged; | 191 return imageSizeChanged; |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 return 0; | 631 return 0; |
647 | 632 |
648 ImageResource* cachedImage = m_imageResource->cachedImage(); | 633 ImageResource* cachedImage = m_imageResource->cachedImage(); |
649 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage(
)) | 634 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage(
)) |
650 return toSVGImage(cachedImage->image())->embeddedContentBox(); | 635 return toSVGImage(cachedImage->image())->embeddedContentBox(); |
651 | 636 |
652 return 0; | 637 return 0; |
653 } | 638 } |
654 | 639 |
655 } // namespace WebCore | 640 } // namespace WebCore |
OLD | NEW |