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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 3215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3226 computedValues.m_extent += bordersPlusPadding; | 3226 computedValues.m_extent += bordersPlusPadding; |
3227 } | 3227 } |
3228 | 3228 |
3229 static void computeLogicalLeftPositionedOffset(LayoutUnit& logicalLeftPos, const
RenderBox* child, LayoutUnit logicalWidthValue, const RenderBoxModelObject* con
tainerBlock, LayoutUnit containerLogicalWidth) | 3229 static void computeLogicalLeftPositionedOffset(LayoutUnit& logicalLeftPos, const
RenderBox* child, LayoutUnit logicalWidthValue, const RenderBoxModelObject* con
tainerBlock, LayoutUnit containerLogicalWidth) |
3230 { | 3230 { |
3231 // Deal with differing writing modes here. Our offset needs to be in the co
ntaining block's coordinate space. If the containing block is flipped | 3231 // Deal with differing writing modes here. Our offset needs to be in the co
ntaining block's coordinate space. If the containing block is flipped |
3232 // along this axis, then we need to flip the coordinate. This can only happ
en if the containing block is both a flipped mode and perpendicular to us. | 3232 // along this axis, then we need to flip the coordinate. This can only happ
en if the containing block is both a flipped mode and perpendicular to us. |
3233 if (containerBlock->isHorizontalWritingMode() != child->isHorizontalWritingM
ode() && containerBlock->style()->isFlippedBlocksWritingMode()) { | 3233 if (containerBlock->isHorizontalWritingMode() != child->isHorizontalWritingM
ode() && containerBlock->style()->isFlippedBlocksWritingMode()) { |
3234 logicalLeftPos = containerLogicalWidth - logicalWidthValue - logicalLeft
Pos; | 3234 logicalLeftPos = containerLogicalWidth - logicalWidthValue - logicalLeft
Pos; |
3235 logicalLeftPos += (child->isHorizontalWritingMode() ? containerBlock->bo
rderRight() : containerBlock->borderBottom()); | 3235 logicalLeftPos += (child->isHorizontalWritingMode() ? containerBlock->bo
rderRight() : containerBlock->borderBottom()); |
3236 } else if (child->isHorizontalWritingMode()) { | |
3237 RenderStyle* blockStyle = containerBlock->style(); | |
3238 bool containerBlockIsLTR = isLeftToRightDirection(blockStyle->direction(
)); | |
3239 ETextAlign textAlignForContainerBlock = containerBlock->simplifiedTextAl
ign(blockStyle->textAlign()); | |
3240 if (containerBlockIsLTR && textAlignForContainerBlock == RIGHT) { | |
3241 logicalLeftPos = containerLogicalWidth - (logicalWidthValue + child-
>borderLogicalWidth() + child->style()->logicalRight().value()); | |
3242 logicalLeftPos += containerBlock->borderLogicalRight(); | |
3243 } else if (!containerBlockIsLTR && textAlignForContainerBlock == LEFT) { | |
3244 logicalLeftPos += containerBlock->borderAndPaddingLogicalLeft() + lo
gicalWidthValue; | |
3245 } else { | |
3246 logicalLeftPos += containerBlock->borderLeft(); | |
3247 } | |
3248 } else { | 3236 } else { |
3249 logicalLeftPos += containerBlock->borderTop(); | 3237 logicalLeftPos += (child->isHorizontalWritingMode() ? containerBlock->bo
rderLeft() : containerBlock->borderTop()); |
3250 } | 3238 } |
3251 } | 3239 } |
3252 | 3240 |
3253 void RenderBox::shrinkToFitWidth(const LayoutUnit availableSpace, const LayoutUn
it logicalLeftValue, const LayoutUnit bordersPlusPadding, LogicalExtentComputedV
alues& computedValues) const | 3241 void RenderBox::shrinkToFitWidth(const LayoutUnit availableSpace, const LayoutUn
it logicalLeftValue, const LayoutUnit bordersPlusPadding, LogicalExtentComputedV
alues& computedValues) const |
3254 { | 3242 { |
3255 // FIXME: would it be better to have shrink-to-fit in one step? | 3243 // FIXME: would it be better to have shrink-to-fit in one step? |
3256 LayoutUnit preferredWidth = maxPreferredLogicalWidth() - bordersPlusPadding; | 3244 LayoutUnit preferredWidth = maxPreferredLogicalWidth() - bordersPlusPadding; |
3257 LayoutUnit preferredMinWidth = minPreferredLogicalWidth() - bordersPlusPaddi
ng; | 3245 LayoutUnit preferredMinWidth = minPreferredLogicalWidth() - bordersPlusPaddi
ng; |
3258 LayoutUnit availableWidth = availableSpace - logicalLeftValue; | 3246 LayoutUnit availableWidth = availableSpace - logicalLeftValue; |
3259 computedValues.m_extent = min(max(preferredMinWidth, availableWidth), prefer
redWidth); | 3247 computedValues.m_extent = min(max(preferredMinWidth, availableWidth), prefer
redWidth); |
(...skipping 1432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4692 return 0; | 4680 return 0; |
4693 | 4681 |
4694 if (!layoutState && !flowThreadContainingBlock()) | 4682 if (!layoutState && !flowThreadContainingBlock()) |
4695 return 0; | 4683 return 0; |
4696 | 4684 |
4697 RenderBlock* containerBlock = containingBlock(); | 4685 RenderBlock* containerBlock = containingBlock(); |
4698 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4686 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
4699 } | 4687 } |
4700 | 4688 |
4701 } // namespace WebCore | 4689 } // namespace WebCore |
OLD | NEW |