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) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 4270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4281 if (floatingObject->type() != FloatTypeValue || !rangesIntersect(interval.lo
w(), interval.high(), m_lineTop, m_lineBottom)) | 4281 if (floatingObject->type() != FloatTypeValue || !rangesIntersect(interval.lo
w(), interval.high(), m_lineTop, m_lineBottom)) |
4282 return; | 4282 return; |
4283 | 4283 |
4284 // Make sure the float hasn't changed since it was added to the placed float
s tree. | 4284 // Make sure the float hasn't changed since it was added to the placed float
s tree. |
4285 ASSERT(floatingObject->isPlaced()); | 4285 ASSERT(floatingObject->isPlaced()); |
4286 ASSERT(interval.low() == m_renderer->pixelSnappedLogicalTopForFloat(floating
Object)); | 4286 ASSERT(interval.low() == m_renderer->pixelSnappedLogicalTopForFloat(floating
Object)); |
4287 ASSERT(interval.high() == m_renderer->pixelSnappedLogicalBottomForFloat(floa
tingObject)); | 4287 ASSERT(interval.high() == m_renderer->pixelSnappedLogicalBottomForFloat(floa
tingObject)); |
4288 | 4288 |
4289 bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject); | 4289 bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject); |
4290 if (floatIsNewExtreme) | 4290 if (floatIsNewExtreme) |
4291 m_floatForHeight = floatingObject; | 4291 m_outermostFloat = floatingObject; |
4292 | |
4293 m_last = floatingObject; | |
4294 } | 4292 } |
4295 | 4293 |
4296 template <RenderBlock::FloatingObject::Type FloatTypeValue> | 4294 template <RenderBlock::FloatingObject::Type FloatTypeValue> |
4297 LayoutUnit RenderBlock::ComputeFloatOffsetAdapter<FloatTypeValue>::getHeightRema
ining() const | 4295 LayoutUnit RenderBlock::ComputeFloatOffsetAdapter<FloatTypeValue>::getHeightRema
ining() const |
4298 { | 4296 { |
4299 return m_floatForHeight ? m_renderer->logicalBottomForFloat(m_floatForHeight
) - m_lineTop : LayoutUnit(1); | 4297 return m_outermostFloat ? m_renderer->logicalBottomForFloat(m_outermostFloat
) - m_lineTop : LayoutUnit(1); |
4300 } | 4298 } |
4301 | 4299 |
4302 LayoutUnit RenderBlock::textIndentOffset() const | 4300 LayoutUnit RenderBlock::textIndentOffset() const |
4303 { | 4301 { |
4304 LayoutUnit cw = 0; | 4302 LayoutUnit cw = 0; |
4305 RenderView* renderView = 0; | 4303 RenderView* renderView = 0; |
4306 if (style()->textIndent().isPercent()) | 4304 if (style()->textIndent().isPercent()) |
4307 cw = containingBlock()->availableLogicalWidth(); | 4305 cw = containingBlock()->availableLogicalWidth(); |
4308 else if (style()->textIndent().isViewportPercentage()) | 4306 else if (style()->textIndent().isViewportPercentage()) |
4309 renderView = view(); | 4307 renderView = view(); |
(...skipping 22 matching lines...) Expand all Loading... |
4332 LayoutUnit RenderBlock::logicalLeftFloatOffsetForLine(LayoutUnit logicalTop, Lay
outUnit fixedOffset, LayoutUnit* heightRemaining, LayoutUnit logicalHeight, Shap
eOutsideFloatOffsetMode offsetMode) const | 4330 LayoutUnit RenderBlock::logicalLeftFloatOffsetForLine(LayoutUnit logicalTop, Lay
outUnit fixedOffset, LayoutUnit* heightRemaining, LayoutUnit logicalHeight, Shap
eOutsideFloatOffsetMode offsetMode) const |
4333 { | 4331 { |
4334 LayoutUnit left = fixedOffset; | 4332 LayoutUnit left = fixedOffset; |
4335 if (m_floatingObjects && m_floatingObjects->hasLeftObjects()) { | 4333 if (m_floatingObjects && m_floatingObjects->hasLeftObjects()) { |
4336 ComputeFloatOffsetAdapter<FloatingObject::FloatLeft> adapter(this, round
ToInt(logicalTop), roundToInt(logicalTop + logicalHeight), left); | 4334 ComputeFloatOffsetAdapter<FloatingObject::FloatLeft> adapter(this, round
ToInt(logicalTop), roundToInt(logicalTop + logicalHeight), left); |
4337 m_floatingObjects->placedFloatsTree().allOverlapsWithAdapter(adapter); | 4335 m_floatingObjects->placedFloatsTree().allOverlapsWithAdapter(adapter); |
4338 | 4336 |
4339 if (heightRemaining) | 4337 if (heightRemaining) |
4340 *heightRemaining = adapter.getHeightRemaining(); | 4338 *heightRemaining = adapter.getHeightRemaining(); |
4341 | 4339 |
4342 const FloatingObject* lastFloat = adapter.lastFloat(); | 4340 const FloatingObject* outermostFloat = adapter.outermostFloat(); |
4343 if (offsetMode == ShapeOutsideFloatShapeOffset && lastFloat) { | 4341 if (offsetMode == ShapeOutsideFloatShapeOffset && outermostFloat) { |
4344 if (ShapeOutsideInfo* shapeOutside = lastFloat->renderer()->shapeOut
sideInfo()) { | 4342 if (ShapeOutsideInfo* shapeOutside = outermostFloat->renderer()->sha
peOutsideInfo()) { |
4345 shapeOutside->computeSegmentsForContainingBlockLine(logicalTop,
logicalTopForFloat(lastFloat), logicalHeight); | 4343 shapeOutside->computeSegmentsForContainingBlockLine(logicalTop,
logicalTopForFloat(outermostFloat), logicalHeight); |
4346 left += shapeOutside->rightSegmentMarginBoxDelta(); | 4344 left += shapeOutside->rightSegmentMarginBoxDelta(); |
4347 } | 4345 } |
4348 } | 4346 } |
4349 } | 4347 } |
4350 | 4348 |
4351 return left; | 4349 return left; |
4352 } | 4350 } |
4353 | 4351 |
4354 LayoutUnit RenderBlock::adjustLogicalLeftOffsetForLine(LayoutUnit offsetFromFloa
ts, bool applyTextIndent) const | 4352 LayoutUnit RenderBlock::adjustLogicalLeftOffsetForLine(LayoutUnit offsetFromFloa
ts, bool applyTextIndent) const |
4355 { | 4353 { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4393 { | 4391 { |
4394 LayoutUnit right = fixedOffset; | 4392 LayoutUnit right = fixedOffset; |
4395 if (m_floatingObjects && m_floatingObjects->hasRightObjects()) { | 4393 if (m_floatingObjects && m_floatingObjects->hasRightObjects()) { |
4396 LayoutUnit rightFloatOffset = fixedOffset; | 4394 LayoutUnit rightFloatOffset = fixedOffset; |
4397 ComputeFloatOffsetAdapter<FloatingObject::FloatRight> adapter(this, roun
dToInt(logicalTop), roundToInt(logicalTop + logicalHeight), rightFloatOffset); | 4395 ComputeFloatOffsetAdapter<FloatingObject::FloatRight> adapter(this, roun
dToInt(logicalTop), roundToInt(logicalTop + logicalHeight), rightFloatOffset); |
4398 m_floatingObjects->placedFloatsTree().allOverlapsWithAdapter(adapter); | 4396 m_floatingObjects->placedFloatsTree().allOverlapsWithAdapter(adapter); |
4399 | 4397 |
4400 if (heightRemaining) | 4398 if (heightRemaining) |
4401 *heightRemaining = adapter.getHeightRemaining(); | 4399 *heightRemaining = adapter.getHeightRemaining(); |
4402 | 4400 |
4403 const FloatingObject* lastFloat = adapter.lastFloat(); | 4401 const FloatingObject* outermostFloat = adapter.outermostFloat(); |
4404 if (offsetMode == ShapeOutsideFloatShapeOffset && lastFloat) { | 4402 if (offsetMode == ShapeOutsideFloatShapeOffset && outermostFloat) { |
4405 if (ShapeOutsideInfo* shapeOutside = lastFloat->renderer()->shapeOut
sideInfo()) { | 4403 if (ShapeOutsideInfo* shapeOutside = outermostFloat->renderer()->sha
peOutsideInfo()) { |
4406 shapeOutside->computeSegmentsForContainingBlockLine(logicalTop,
logicalTopForFloat(lastFloat), logicalHeight); | 4404 shapeOutside->computeSegmentsForContainingBlockLine(logicalTop,
logicalTopForFloat(outermostFloat), logicalHeight); |
4407 rightFloatOffset += shapeOutside->leftSegmentMarginBoxDelta(); | 4405 rightFloatOffset += shapeOutside->leftSegmentMarginBoxDelta(); |
4408 } | 4406 } |
4409 } | 4407 } |
4410 | 4408 |
4411 right = min(right, rightFloatOffset); | 4409 right = min(right, rightFloatOffset); |
4412 } | 4410 } |
4413 return right; | 4411 return right; |
4414 } | 4412 } |
4415 | 4413 |
4416 LayoutUnit RenderBlock::adjustLogicalRightOffsetForLine(LayoutUnit offsetFromFlo
ats, bool applyTextIndent) const | 4414 LayoutUnit RenderBlock::adjustLogicalRightOffsetForLine(LayoutUnit offsetFromFlo
ats, bool applyTextIndent) const |
(...skipping 3761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8178 | 8176 |
8179 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 8177 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
8180 { | 8178 { |
8181 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); | 8179 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); |
8182 } | 8180 } |
8183 | 8181 |
8184 | 8182 |
8185 #endif | 8183 #endif |
8186 | 8184 |
8187 } // namespace WebCore | 8185 } // namespace WebCore |
OLD | NEW |