Index: Source/core/rendering/RenderImage.cpp |
diff --git a/Source/core/rendering/RenderImage.cpp b/Source/core/rendering/RenderImage.cpp |
index 7fed328e648c9ddda67dd5ab8124dc25c2aa5f40..deb8cc7472f3cd8f95c071b0421011948e42d676 100644 |
--- a/Source/core/rendering/RenderImage.cpp |
+++ b/Source/core/rendering/RenderImage.cpp |
@@ -63,7 +63,6 @@ RenderImage::RenderImage(Element* element) |
, m_isGeneratedContent(false) |
, m_imageDevicePixelRatio(1.0f) |
{ |
- updateAltText(); |
ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->addRenderObject(this); |
} |
@@ -92,62 +91,6 @@ void RenderImage::setImageResource(PassOwnPtr<RenderImageResource> imageResource |
m_imageResource->initialize(this); |
} |
-// If we'll be displaying either alt text or an image, add some padding. |
-static const unsigned short paddingWidth = 4; |
-static const unsigned short paddingHeight = 4; |
- |
-// Alt text is restricted to this maximum size, in pixels. These are |
-// signed integers because they are compared with other signed values. |
-static const float maxAltTextWidth = 1024; |
-static const int maxAltTextHeight = 256; |
- |
-IntSize RenderImage::imageSizeForError(ImageResource* newImage) const |
-{ |
- ASSERT_ARG(newImage, newImage); |
- ASSERT_ARG(newImage, newImage->imageForRenderer(this)); |
- |
- IntSize imageSize; |
- if (newImage->willPaintBrokenImage()) { |
- float deviceScaleFactor = blink::deviceScaleFactor(frame()); |
- pair<Image*, float> brokenImageAndImageScaleFactor = ImageResource::brokenImage(deviceScaleFactor); |
- imageSize = brokenImageAndImageScaleFactor.first->size(); |
- imageSize.scale(1 / brokenImageAndImageScaleFactor.second); |
- } else |
- imageSize = newImage->imageForRenderer(this)->size(); |
- |
- // imageSize() returns 0 for the error image. We need the true size of the |
- // error image, so we have to get it by grabbing image() directly. |
- return IntSize(paddingWidth + imageSize.width() * style()->effectiveZoom(), paddingHeight + imageSize.height() * style()->effectiveZoom()); |
-} |
- |
-// Sets the image height and width to fit the alt text. Returns true if the |
-// image size changed. |
-bool RenderImage::setImageSizeForAltText(ImageResource* newImage /* = 0 */) |
-{ |
- IntSize imageSize; |
- if (newImage && newImage->imageForRenderer(this)) |
- imageSize = imageSizeForError(newImage); |
- else if (!m_altText.isEmpty() || newImage) { |
- // If we'll be displaying either text or an image, add a little padding. |
- imageSize = IntSize(paddingWidth, paddingHeight); |
- } |
- |
- // we have an alt and the user meant it (its not a text we invented) |
- if (!m_altText.isEmpty()) { |
- FontCachePurgePreventer fontCachePurgePreventer; |
- |
- const Font& font = style()->font(); |
- IntSize paddedTextSize(paddingWidth + std::min(ceilf(font.width(constructTextRun(this, font, m_altText, style()))), maxAltTextWidth), paddingHeight + std::min(font.fontMetrics().height(), maxAltTextHeight)); |
- imageSize = imageSize.expandedTo(paddedTextSize); |
- } |
- |
- if (imageSize == intrinsicSize()) |
- return false; |
- |
- setIntrinsicSize(imageSize); |
- return true; |
-} |
- |
void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect) |
{ |
if (documentBeingDestroyed()) |
@@ -173,13 +116,7 @@ void RenderImage::imageChanged(WrappedImagePtr newImage, const IntRect* rect) |
m_didIncrementVisuallyNonEmptyPixelCount = true; |
} |
- bool imageSizeChanged = false; |
- |
- // Set image dimensions, taking into account the size of the alt text. |
- if (m_imageResource->errorOccurred() || !newImage) |
- imageSizeChanged = setImageSizeForAltText(m_imageResource->cachedImage()); |
- |
- paintInvalidationOrMarkForLayout(imageSizeChanged, rect); |
+ repaintOrMarkForLayout(rect); |
} |
void RenderImage::updateIntrinsicSizeIfNeeded(const LayoutSize& newSize) |
@@ -198,7 +135,7 @@ void RenderImage::updateInnerContentRect() |
m_imageResource->setContainerSizeForRenderer(containerSize); |
} |
-void RenderImage::paintInvalidationOrMarkForLayout(bool imageSizeChangedToAccomodateAltText, const IntRect* rect) |
+void RenderImage::repaintOrMarkForLayout(const IntRect* rect) |
{ |
LayoutSize oldIntrinsicSize = intrinsicSize(); |
LayoutSize newIntrinsicSize = m_imageResource->intrinsicSize(style()->effectiveZoom()); |
@@ -211,7 +148,7 @@ void RenderImage::paintInvalidationOrMarkForLayout(bool imageSizeChangedToAccomo |
if (!containingBlock()) |
return; |
- bool imageSourceHasChangedSize = oldIntrinsicSize != newIntrinsicSize || imageSizeChangedToAccomodateAltText; |
+ bool imageSourceHasChangedSize = oldIntrinsicSize != newIntrinsicSize; |
if (imageSourceHasChangedSize) |
setPreferredLogicalWidthsDirty(); |
@@ -283,79 +220,16 @@ void RenderImage::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOf |
LayoutUnit cHeight = contentHeight(); |
GraphicsContext* context = paintInfo.context; |
- |
- if (!m_imageResource->hasImage() || m_imageResource->errorOccurred()) { |
+ if (!m_imageResource->hasImage()) { |
if (paintInfo.phase == PaintPhaseSelection) |
return; |
if (cWidth > 2 && cHeight > 2) { |
- const int borderWidth = 1; |
- |
- LayoutUnit leftBorder = borderLeft(); |
- LayoutUnit topBorder = borderTop(); |
- LayoutUnit leftPad = paddingLeft(); |
- LayoutUnit topPad = paddingTop(); |
- |
// Draw an outline rect where the image should be. |
context->setStrokeStyle(SolidStroke); |
context->setStrokeColor(Color::lightGray); |
context->setFillColor(Color::transparent); |
- context->drawRect(pixelSnappedIntRect(LayoutRect(paintOffset.x() + leftBorder + leftPad, paintOffset.y() + topBorder + topPad, cWidth, cHeight))); |
- |
- bool errorPictureDrawn = false; |
- LayoutSize imageOffset; |
- // When calculating the usable dimensions, exclude the pixels of |
- // the ouline rect so the error image/alt text doesn't draw on it. |
- LayoutUnit usableWidth = cWidth - 2 * borderWidth; |
- LayoutUnit usableHeight = cHeight - 2 * borderWidth; |
- |
- RefPtr<Image> image = m_imageResource->image(); |
- |
- if (m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) { |
- float deviceScaleFactor = blink::deviceScaleFactor(frame()); |
- // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution. |
- pair<Image*, float> brokenImageAndImageScaleFactor = ImageResource::brokenImage(deviceScaleFactor); |
- image = brokenImageAndImageScaleFactor.first; |
- IntSize imageSize = image->size(); |
- imageSize.scale(1 / brokenImageAndImageScaleFactor.second); |
- // Center the error image, accounting for border and padding. |
- LayoutUnit centerX = (usableWidth - imageSize.width()) / 2; |
- if (centerX < 0) |
- centerX = 0; |
- LayoutUnit centerY = (usableHeight - imageSize.height()) / 2; |
- if (centerY < 0) |
- centerY = 0; |
- imageOffset = LayoutSize(leftBorder + leftPad + centerX + borderWidth, topBorder + topPad + centerY + borderWidth); |
- context->drawImage(image.get(), pixelSnappedIntRect(LayoutRect(paintOffset + imageOffset, imageSize)), CompositeSourceOver, shouldRespectImageOrientation()); |
- errorPictureDrawn = true; |
- } |
- |
- if (!m_altText.isEmpty()) { |
- const Font& font = style()->font(); |
- const FontMetrics& fontMetrics = font.fontMetrics(); |
- LayoutUnit ascent = fontMetrics.ascent(); |
- LayoutPoint textRectOrigin = paintOffset; |
- textRectOrigin.move(leftBorder + leftPad + (paddingWidth / 2) - borderWidth, topBorder + topPad + (paddingHeight / 2) - borderWidth); |
- LayoutPoint textOrigin(textRectOrigin.x(), textRectOrigin.y() + ascent); |
- |
- // Only draw the alt text if it'll fit within the content box, |
- // and only if it fits above the error image. |
- TextRun textRun = constructTextRun(this, font, m_altText, style(), TextRun::AllowTrailingExpansion | TextRun::ForbidLeadingExpansion, DefaultTextRunFlags | RespectDirection); |
- float textWidth = font.width(textRun); |
- TextRunPaintInfo textRunPaintInfo(textRun); |
- textRunPaintInfo.bounds = FloatRect(textRectOrigin, FloatSize(textWidth, fontMetrics.height())); |
- context->setFillColor(resolveColor(CSSPropertyColor)); |
- if (textRun.direction() == RTL) { |
- int availableWidth = cWidth - static_cast<int>(paddingWidth); |
- textOrigin.move(availableWidth - ceilf(textWidth), 0); |
- } |
- if (errorPictureDrawn) { |
- if (usableWidth >= textWidth && fontMetrics.height() <= imageOffset.height()) |
- context->drawBidiText(font, textRunPaintInfo, textOrigin); |
- } else if (usableWidth >= textWidth && usableHeight >= fontMetrics.height()) { |
- context->drawBidiText(font, textRunPaintInfo, textOrigin); |
- } |
- } |
+ context->drawRect(pixelSnappedIntRect(LayoutRect(paintOffset.x() + borderLeft() + paddingLeft(), paintOffset.y() + borderTop() + paddingTop(), cWidth, cHeight))); |
esprehn
2014/09/05 00:47:52
What is this drawing?
rhogan
2014/09/08 19:52:43
This is for when an image has no src and no alt te
|
} |
} else if (m_imageResource->hasImage() && cWidth > 0 && cHeight > 0) { |
LayoutRect contentRect = contentBoxRect(); |
@@ -542,17 +416,6 @@ bool RenderImage::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu |
return inside; |
} |
-void RenderImage::updateAltText() |
-{ |
- if (!node()) |
- return; |
- |
- if (isHTMLInputElement(*node())) |
- m_altText = toHTMLInputElement(node())->altText(); |
- else if (isHTMLImageElement(*node())) |
- m_altText = toHTMLImageElement(node())->altText(); |
-} |
- |
void RenderImage::layout() |
{ |
LayoutRect oldContentRect = replacedContentRect(); |