| 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 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1292 return style()->computedLineHeight(); | 1292 return style()->computedLineHeight(); |
| 1293 } | 1293 } |
| 1294 | 1294 |
| 1295 int RenderInline::baselinePosition(FontBaseline baselineType, bool firstLine, Li
neDirectionMode direction, LinePositionMode linePositionMode) const | 1295 int RenderInline::baselinePosition(FontBaseline baselineType, bool firstLine, Li
neDirectionMode direction, LinePositionMode linePositionMode) const |
| 1296 { | 1296 { |
| 1297 ASSERT(linePositionMode == PositionOnContainingLine); | 1297 ASSERT(linePositionMode == PositionOnContainingLine); |
| 1298 const FontMetrics& fontMetrics = style(firstLine)->fontMetrics(); | 1298 const FontMetrics& fontMetrics = style(firstLine)->fontMetrics(); |
| 1299 return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction,
linePositionMode) - fontMetrics.height()) / 2; | 1299 return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction,
linePositionMode) - fontMetrics.height()) / 2; |
| 1300 } | 1300 } |
| 1301 | 1301 |
| 1302 LayoutSize RenderInline::offsetForInFlowPositionedInline(const RenderBox* child)
const | 1302 LayoutSize RenderInline::offsetForInFlowPositionedInline(const RenderBox& child)
const |
| 1303 { | 1303 { |
| 1304 // FIXME: This function isn't right with mixed writing modes. | 1304 // FIXME: This function isn't right with mixed writing modes. |
| 1305 | 1305 |
| 1306 ASSERT(isInFlowPositioned()); | 1306 ASSERT(isInFlowPositioned()); |
| 1307 if (!isInFlowPositioned()) | 1307 if (!isInFlowPositioned()) |
| 1308 return LayoutSize(); | 1308 return LayoutSize(); |
| 1309 | 1309 |
| 1310 // When we have an enclosing relpositioned inline, we need to add in the off
set of the first line | 1310 // When we have an enclosing relpositioned inline, we need to add in the off
set of the first line |
| 1311 // box from the rest of the content, but only in the cases where we know we'
re positioned | 1311 // box from the rest of the content, but only in the cases where we know we'
re positioned |
| 1312 // relative to the inline itself. | 1312 // relative to the inline itself. |
| 1313 | 1313 |
| 1314 LayoutSize logicalOffset; | 1314 LayoutSize logicalOffset; |
| 1315 LayoutUnit inlinePosition; | 1315 LayoutUnit inlinePosition; |
| 1316 LayoutUnit blockPosition; | 1316 LayoutUnit blockPosition; |
| 1317 if (firstLineBox()) { | 1317 if (firstLineBox()) { |
| 1318 inlinePosition = LayoutUnit::fromFloatRound(firstLineBox()->logicalLeft(
)); | 1318 inlinePosition = LayoutUnit::fromFloatRound(firstLineBox()->logicalLeft(
)); |
| 1319 blockPosition = firstLineBox()->logicalTop(); | 1319 blockPosition = firstLineBox()->logicalTop(); |
| 1320 } else { | 1320 } else { |
| 1321 inlinePosition = layer()->staticInlinePosition(); | 1321 inlinePosition = layer()->staticInlinePosition(); |
| 1322 blockPosition = layer()->staticBlockPosition(); | 1322 blockPosition = layer()->staticBlockPosition(); |
| 1323 } | 1323 } |
| 1324 | 1324 |
| 1325 if (!child->style()->hasStaticInlinePosition(style()->isHorizontalWritingMod
e())) | 1325 if (!child.style()->hasStaticInlinePosition(style()->isHorizontalWritingMode
())) |
| 1326 logicalOffset.setWidth(inlinePosition); | 1326 logicalOffset.setWidth(inlinePosition); |
| 1327 | 1327 |
| 1328 // This is not terribly intuitive, but we have to match other browsers. Des
pite being a block display type inside | 1328 // This is not terribly intuitive, but we have to match other browsers. Des
pite being a block display type inside |
| 1329 // an inline, we still keep our x locked to the left of the relative positio
ned inline. Arguably the correct | 1329 // an inline, we still keep our x locked to the left of the relative positio
ned inline. Arguably the correct |
| 1330 // behavior would be to go flush left to the block that contains the inline,
but that isn't what other browsers | 1330 // behavior would be to go flush left to the block that contains the inline,
but that isn't what other browsers |
| 1331 // do. | 1331 // do. |
| 1332 else if (!child->style()->isOriginalDisplayInlineType()) | 1332 else if (!child.style()->isOriginalDisplayInlineType()) |
| 1333 // Avoid adding in the left border/padding of the containing block twice
. Subtract it out. | 1333 // Avoid adding in the left border/padding of the containing block twice
. Subtract it out. |
| 1334 logicalOffset.setWidth(inlinePosition - child->containingBlock()->border
AndPaddingLogicalLeft()); | 1334 logicalOffset.setWidth(inlinePosition - child.containingBlock()->borderA
ndPaddingLogicalLeft()); |
| 1335 | 1335 |
| 1336 if (!child->style()->hasStaticBlockPosition(style()->isHorizontalWritingMode
())) | 1336 if (!child.style()->hasStaticBlockPosition(style()->isHorizontalWritingMode(
))) |
| 1337 logicalOffset.setHeight(blockPosition); | 1337 logicalOffset.setHeight(blockPosition); |
| 1338 | 1338 |
| 1339 return style()->isHorizontalWritingMode() ? logicalOffset : logicalOffset.tr
ansposedSize(); | 1339 return style()->isHorizontalWritingMode() ? logicalOffset : logicalOffset.tr
ansposedSize(); |
| 1340 } | 1340 } |
| 1341 | 1341 |
| 1342 void RenderInline::imageChanged(WrappedImagePtr, const IntRect*) | 1342 void RenderInline::imageChanged(WrappedImagePtr, const IntRect*) |
| 1343 { | 1343 { |
| 1344 if (!parent()) | 1344 if (!parent()) |
| 1345 return; | 1345 return; |
| 1346 | 1346 |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1572 container = this; | 1572 container = this; |
| 1573 | 1573 |
| 1574 FloatPoint absPos = container->localToAbsolute(); | 1574 FloatPoint absPos = container->localToAbsolute(); |
| 1575 region.bounds.setX(absPos.x() + region.bounds.x()); | 1575 region.bounds.setX(absPos.x() + region.bounds.x()); |
| 1576 region.bounds.setY(absPos.y() + region.bounds.y()); | 1576 region.bounds.setY(absPos.y() + region.bounds.y()); |
| 1577 | 1577 |
| 1578 regions.append(region); | 1578 regions.append(region); |
| 1579 } | 1579 } |
| 1580 | 1580 |
| 1581 } // namespace WebCore | 1581 } // namespace WebCore |
| OLD | NEW |