| 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 25 matching lines...) Expand all Loading... |
| 36 #include "core/frame/LocalFrame.h" | 36 #include "core/frame/LocalFrame.h" |
| 37 #include "core/html/HTMLAreaElement.h" | 37 #include "core/html/HTMLAreaElement.h" |
| 38 #include "core/html/HTMLImageElement.h" | 38 #include "core/html/HTMLImageElement.h" |
| 39 #include "core/html/HTMLInputElement.h" | 39 #include "core/html/HTMLInputElement.h" |
| 40 #include "core/html/HTMLMapElement.h" | 40 #include "core/html/HTMLMapElement.h" |
| 41 #include "core/inspector/InspectorInstrumentation.h" | 41 #include "core/inspector/InspectorInstrumentation.h" |
| 42 #include "core/inspector/InspectorTraceEvents.h" | 42 #include "core/inspector/InspectorTraceEvents.h" |
| 43 #include "core/rendering/HitTestResult.h" | 43 #include "core/rendering/HitTestResult.h" |
| 44 #include "core/rendering/PaintInfo.h" | 44 #include "core/rendering/PaintInfo.h" |
| 45 #include "core/rendering/RenderView.h" | 45 #include "core/rendering/RenderView.h" |
| 46 #include "core/rendering/TextRunConstructor.h" |
| 46 #include "core/svg/graphics/SVGImage.h" | 47 #include "core/svg/graphics/SVGImage.h" |
| 47 #include "platform/fonts/Font.h" | 48 #include "platform/fonts/Font.h" |
| 48 #include "platform/fonts/FontCache.h" | 49 #include "platform/fonts/FontCache.h" |
| 49 #include "platform/graphics/GraphicsContext.h" | 50 #include "platform/graphics/GraphicsContext.h" |
| 50 #include "platform/graphics/GraphicsContextStateSaver.h" | 51 #include "platform/graphics/GraphicsContextStateSaver.h" |
| 51 | 52 |
| 52 namespace WebCore { | 53 namespace WebCore { |
| 53 | 54 |
| 54 float deviceScaleFactor(LocalFrame*); | 55 float deviceScaleFactor(LocalFrame*); |
| 55 | 56 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 else if (!m_altText.isEmpty() || newImage) { | 124 else if (!m_altText.isEmpty() || newImage) { |
| 124 // If we'll be displaying either text or an image, add a little padding. | 125 // If we'll be displaying either text or an image, add a little padding. |
| 125 imageSize = IntSize(paddingWidth, paddingHeight); | 126 imageSize = IntSize(paddingWidth, paddingHeight); |
| 126 } | 127 } |
| 127 | 128 |
| 128 // we have an alt and the user meant it (its not a text we invented) | 129 // we have an alt and the user meant it (its not a text we invented) |
| 129 if (!m_altText.isEmpty()) { | 130 if (!m_altText.isEmpty()) { |
| 130 FontCachePurgePreventer fontCachePurgePreventer; | 131 FontCachePurgePreventer fontCachePurgePreventer; |
| 131 | 132 |
| 132 const Font& font = style()->font(); | 133 const Font& font = style()->font(); |
| 133 IntSize paddedTextSize(paddingWidth + std::min(ceilf(font.width(RenderBl
ockFlow::constructTextRun(this, font, m_altText, style()))), maxAltTextWidth), p
addingHeight + std::min(font.fontMetrics().height(), maxAltTextHeight)); | 134 IntSize paddedTextSize(paddingWidth + std::min(ceilf(font.width(construc
tTextRun(this, font, m_altText, style()))), maxAltTextWidth), paddingHeight + st
d::min(font.fontMetrics().height(), maxAltTextHeight)); |
| 134 imageSize = imageSize.expandedTo(paddedTextSize); | 135 imageSize = imageSize.expandedTo(paddedTextSize); |
| 135 } | 136 } |
| 136 | 137 |
| 137 if (imageSize == intrinsicSize()) | 138 if (imageSize == intrinsicSize()) |
| 138 return false; | 139 return false; |
| 139 | 140 |
| 140 setIntrinsicSize(imageSize); | 141 setIntrinsicSize(imageSize); |
| 141 return true; | 142 return true; |
| 142 } | 143 } |
| 143 | 144 |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 if (!m_altText.isEmpty()) { | 325 if (!m_altText.isEmpty()) { |
| 325 const Font& font = style()->font(); | 326 const Font& font = style()->font(); |
| 326 const FontMetrics& fontMetrics = font.fontMetrics(); | 327 const FontMetrics& fontMetrics = font.fontMetrics(); |
| 327 LayoutUnit ascent = fontMetrics.ascent(); | 328 LayoutUnit ascent = fontMetrics.ascent(); |
| 328 LayoutPoint textRectOrigin = paintOffset; | 329 LayoutPoint textRectOrigin = paintOffset; |
| 329 textRectOrigin.move(leftBorder + leftPad + (paddingWidth / 2) -
borderWidth, topBorder + topPad + (paddingHeight / 2) - borderWidth); | 330 textRectOrigin.move(leftBorder + leftPad + (paddingWidth / 2) -
borderWidth, topBorder + topPad + (paddingHeight / 2) - borderWidth); |
| 330 LayoutPoint textOrigin(textRectOrigin.x(), textRectOrigin.y() +
ascent); | 331 LayoutPoint textOrigin(textRectOrigin.x(), textRectOrigin.y() +
ascent); |
| 331 | 332 |
| 332 // Only draw the alt text if it'll fit within the content box, | 333 // Only draw the alt text if it'll fit within the content box, |
| 333 // and only if it fits above the error image. | 334 // and only if it fits above the error image. |
| 334 TextRun textRun = RenderBlockFlow::constructTextRun(this, font,
m_altText, style(), TextRun::AllowTrailingExpansion | TextRun::ForbidLeadingExpa
nsion, DefaultTextRunFlags | RespectDirection); | 335 TextRun textRun = constructTextRun(this, font, m_altText, style(
), TextRun::AllowTrailingExpansion | TextRun::ForbidLeadingExpansion, DefaultTex
tRunFlags | RespectDirection); |
| 335 float textWidth = font.width(textRun); | 336 float textWidth = font.width(textRun); |
| 336 TextRunPaintInfo textRunPaintInfo(textRun); | 337 TextRunPaintInfo textRunPaintInfo(textRun); |
| 337 textRunPaintInfo.bounds = FloatRect(textRectOrigin, FloatSize(te
xtWidth, fontMetrics.height())); | 338 textRunPaintInfo.bounds = FloatRect(textRectOrigin, FloatSize(te
xtWidth, fontMetrics.height())); |
| 338 context->setFillColor(resolveColor(CSSPropertyColor)); | 339 context->setFillColor(resolveColor(CSSPropertyColor)); |
| 339 if (textRun.direction() == RTL) { | 340 if (textRun.direction() == RTL) { |
| 340 int availableWidth = cWidth - static_cast<int>(paddingWidth)
; | 341 int availableWidth = cWidth - static_cast<int>(paddingWidth)
; |
| 341 textOrigin.move(availableWidth - ceilf(textWidth), 0); | 342 textOrigin.move(availableWidth - ceilf(textWidth), 0); |
| 342 } | 343 } |
| 343 if (errorPictureDrawn) { | 344 if (errorPictureDrawn) { |
| 344 if (usableWidth >= textWidth && fontMetrics.height() <= imag
eOffset.height()) | 345 if (usableWidth >= textWidth && fontMetrics.height() <= imag
eOffset.height()) |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 return 0; | 622 return 0; |
| 622 | 623 |
| 623 ImageResource* cachedImage = m_imageResource->cachedImage(); | 624 ImageResource* cachedImage = m_imageResource->cachedImage(); |
| 624 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage(
)) | 625 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage(
)) |
| 625 return toSVGImage(cachedImage->image())->embeddedContentBox(); | 626 return toSVGImage(cachedImage->image())->embeddedContentBox(); |
| 626 | 627 |
| 627 return 0; | 628 return 0; |
| 628 } | 629 } |
| 629 | 630 |
| 630 } // namespace WebCore | 631 } // namespace WebCore |
| OLD | NEW |