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 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. 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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 while (cb->isAnonymous()) | 180 while (cb->isAnonymous()) |
181 cb = cb->containingBlock(); | 181 cb = cb->containingBlock(); |
182 | 182 |
183 // Matching RenderBox::percentageLogicalHeightIsResolvableFromBlock() by | 183 // Matching RenderBox::percentageLogicalHeightIsResolvableFromBlock() by |
184 // ignoring table cell's attribute value, where it says that table cells vio
late | 184 // ignoring table cell's attribute value, where it says that table cells vio
late |
185 // what the CSS spec says to do with heights. Basically we | 185 // what the CSS spec says to do with heights. Basically we |
186 // don't care if the cell specified a height or not. | 186 // don't care if the cell specified a height or not. |
187 if (cb->isTableCell()) | 187 if (cb->isTableCell()) |
188 return false; | 188 return false; |
189 | 189 |
| 190 // Match RenderBox::availableLogicalHeightUsing by special casing |
| 191 // the render view. The available height is taken from the frame. |
| 192 if (cb->isRenderView()) |
| 193 return false; |
| 194 |
190 if (!cb->style()->logicalHeight().isAuto() || (!cb->style()->logicalTop().is
Auto() && !cb->style()->logicalBottom().isAuto())) | 195 if (!cb->style()->logicalHeight().isAuto() || (!cb->style()->logicalTop().is
Auto() && !cb->style()->logicalBottom().isAuto())) |
191 return false; | 196 return false; |
192 | 197 |
193 return true; | 198 return true; |
194 } | 199 } |
195 | 200 |
196 LayoutSize RenderBoxModelObject::relativePositionOffset() const | 201 LayoutSize RenderBoxModelObject::relativePositionOffset() const |
197 { | 202 { |
198 LayoutSize offset = accumulateInFlowPositionOffsets(this); | 203 LayoutSize offset = accumulateInFlowPositionOffsets(this); |
199 | 204 |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 { | 803 { |
799 // A generated image without a fixed size, will always return the container
size as intrinsic size. | 804 // A generated image without a fixed size, will always return the container
size as intrinsic size. |
800 if (image->isGeneratedImage() && image->usesImageContainerSize()) | 805 if (image->isGeneratedImage() && image->usesImageContainerSize()) |
801 return IntSize(positioningAreaSize.width(), positioningAreaSize.height()
); | 806 return IntSize(positioningAreaSize.width(), positioningAreaSize.height()
); |
802 | 807 |
803 Length intrinsicWidth; | 808 Length intrinsicWidth; |
804 Length intrinsicHeight; | 809 Length intrinsicHeight; |
805 FloatSize intrinsicRatio; | 810 FloatSize intrinsicRatio; |
806 image->computeIntrinsicDimensions(this, intrinsicWidth, intrinsicHeight, int
rinsicRatio); | 811 image->computeIntrinsicDimensions(this, intrinsicWidth, intrinsicHeight, int
rinsicRatio); |
807 | 812 |
808 // Intrinsic dimensions expressed as percentages must be resolved relative t
o the dimensions of the rectangle | 813 ASSERT(!intrinsicWidth.isPercent()); |
809 // that establishes the coordinate system for the 'background-position' prop
erty. | 814 ASSERT(!intrinsicHeight.isPercent()); |
810 | 815 |
811 // FIXME: Remove unnecessary rounding when layout is off ints: webkit.org/b/
63656 | 816 IntSize resolvedSize(intrinsicWidth.value(), intrinsicHeight.value()); |
812 if (intrinsicWidth.isPercent() && intrinsicHeight.isPercent() && intrinsicRa
tio.isEmpty()) { | |
813 // Resolve width/height percentages against positioningAreaSize, only if
no intrinsic ratio is provided. | |
814 int resolvedWidth = static_cast<int>(round(positioningAreaSize.width() *
intrinsicWidth.percent() / 100)); | |
815 int resolvedHeight = static_cast<int>(round(positioningAreaSize.height()
* intrinsicHeight.percent() / 100)); | |
816 return IntSize(resolvedWidth, resolvedHeight); | |
817 } | |
818 | |
819 IntSize resolvedSize(intrinsicWidth.isFixed() ? intrinsicWidth.value() : 0,
intrinsicHeight.isFixed() ? intrinsicHeight.value() : 0); | |
820 IntSize minimumSize(resolvedSize.width() > 0 ? 1 : 0, resolvedSize.height()
> 0 ? 1 : 0); | 817 IntSize minimumSize(resolvedSize.width() > 0 ? 1 : 0, resolvedSize.height()
> 0 ? 1 : 0); |
821 if (shouldScaleOrNot == ScaleByEffectiveZoom) | 818 if (shouldScaleOrNot == ScaleByEffectiveZoom) |
822 resolvedSize.scale(style()->effectiveZoom()); | 819 resolvedSize.scale(style()->effectiveZoom()); |
823 resolvedSize.clampToMinimumSize(minimumSize); | 820 resolvedSize.clampToMinimumSize(minimumSize); |
824 | 821 |
825 if (!resolvedSize.isEmpty()) | 822 if (!resolvedSize.isEmpty()) |
826 return resolvedSize; | 823 return resolvedSize; |
827 | 824 |
828 // If the image has one of either an intrinsic width or an intrinsic height: | 825 // If the image has one of either an intrinsic width or an intrinsic height: |
829 // * and an intrinsic aspect ratio, then the missing dimension is calculated
from the given dimension and the ratio. | 826 // * and an intrinsic aspect ratio, then the missing dimension is calculated
from the given dimension and the ratio. |
(...skipping 1994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2824 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 2821 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); |
2825 for (RenderObject* child = startChild; child && child != endChild; ) { | 2822 for (RenderObject* child = startChild; child && child != endChild; ) { |
2826 // Save our next sibling as moveChildTo will clear it. | 2823 // Save our next sibling as moveChildTo will clear it. |
2827 RenderObject* nextSibling = child->nextSibling(); | 2824 RenderObject* nextSibling = child->nextSibling(); |
2828 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 2825 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); |
2829 child = nextSibling; | 2826 child = nextSibling; |
2830 } | 2827 } |
2831 } | 2828 } |
2832 | 2829 |
2833 } // namespace WebCore | 2830 } // namespace WebCore |
OLD | NEW |