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 4227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4238 if (objectTop < floatTop && objectBottom > floatBottom) | 4238 if (objectTop < floatTop && objectBottom > floatBottom) |
4239 return true; | 4239 return true; |
4240 | 4240 |
4241 // The bottom of the object overlaps the float | 4241 // The bottom of the object overlaps the float |
4242 if (objectBottom > objectTop && objectBottom > floatTop && objectBottom <= f
loatBottom) | 4242 if (objectBottom > objectTop && objectBottom > floatTop && objectBottom <= f
loatBottom) |
4243 return true; | 4243 return true; |
4244 | 4244 |
4245 return false; | 4245 return false; |
4246 } | 4246 } |
4247 | 4247 |
| 4248 template<> |
| 4249 bool RenderBlock::FloatIntervalSearchAdapter<RenderBlock::FloatingObject::FloatL
eft>::updateOffsetIfNeeded(const FloatingObject* floatingObject) const |
| 4250 { |
| 4251 if (m_renderer->logicalRightForFloat(floatingObject) > m_offset) { |
| 4252 m_offset = m_renderer->logicalRightForFloat(floatingObject); |
| 4253 return true; |
| 4254 } |
| 4255 return false; |
| 4256 } |
| 4257 |
| 4258 template<> |
| 4259 bool RenderBlock::FloatIntervalSearchAdapter<RenderBlock::FloatingObject::FloatR
ight>::updateOffsetIfNeeded(const FloatingObject* floatingObject) const |
| 4260 { |
| 4261 if (m_renderer->logicalLeftForFloat(floatingObject) < m_offset) { |
| 4262 m_offset = m_renderer->logicalLeftForFloat(floatingObject); |
| 4263 return true; |
| 4264 } |
| 4265 return false; |
| 4266 } |
| 4267 |
4248 template <RenderBlock::FloatingObject::Type FloatTypeValue> | 4268 template <RenderBlock::FloatingObject::Type FloatTypeValue> |
4249 inline void RenderBlock::FloatIntervalSearchAdapter<FloatTypeValue>::collectIfNe
eded(const IntervalType& interval) const | 4269 inline void RenderBlock::FloatIntervalSearchAdapter<FloatTypeValue>::collectIfNe
eded(const IntervalType& interval) const |
4250 { | 4270 { |
4251 const FloatingObject* r = interval.data(); | 4271 const FloatingObject* floatingObject = interval.data(); |
4252 if (r->type() != FloatTypeValue || !rangesIntersect(interval.low(), interval
.high(), m_lowValue, m_highValue)) | 4272 if (floatingObject->type() != FloatTypeValue || !rangesIntersect(interval.lo
w(), interval.high(), m_lowValue, m_highValue)) |
4253 return; | 4273 return; |
4254 | 4274 |
4255 // All the objects returned from the tree should be already placed. | 4275 // All the objects returned from the tree should be already placed. |
4256 ASSERT(r->isPlaced() && rangesIntersect(m_renderer->pixelSnappedLogicalTopFo
rFloat(r), m_renderer->pixelSnappedLogicalBottomForFloat(r), m_lowValue, m_highV
alue)); | 4276 ASSERT(floatingObject->isPlaced()); |
| 4277 ASSERT(rangesIntersect(m_renderer->pixelSnappedLogicalTopForFloat(floatingOb
ject), m_renderer->pixelSnappedLogicalBottomForFloat(floatingObject), m_lowValue
, m_highValue)); |
4257 | 4278 |
4258 if (FloatTypeValue == FloatingObject::FloatLeft | 4279 bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject); |
4259 && m_renderer->logicalRightForFloat(r) > m_offset) { | 4280 if (floatIsNewExtreme && m_heightRemaining) |
4260 m_offset = m_renderer->logicalRightForFloat(r); | 4281 *m_heightRemaining = m_renderer->logicalBottomForFloat(floatingObject) -
m_lowValue; |
4261 if (m_heightRemaining) | |
4262 *m_heightRemaining = m_renderer->logicalBottomForFloat(r) - m_lowVal
ue; | |
4263 } | |
4264 | 4282 |
4265 if (FloatTypeValue == FloatingObject::FloatRight | 4283 m_last = floatingObject; |
4266 && m_renderer->logicalLeftForFloat(r) < m_offset) { | |
4267 m_offset = m_renderer->logicalLeftForFloat(r); | |
4268 if (m_heightRemaining) | |
4269 *m_heightRemaining = m_renderer->logicalBottomForFloat(r) - m_lowVal
ue; | |
4270 } | |
4271 | |
4272 m_last = r; | |
4273 } | 4284 } |
4274 | 4285 |
4275 LayoutUnit RenderBlock::textIndentOffset() const | 4286 LayoutUnit RenderBlock::textIndentOffset() const |
4276 { | 4287 { |
4277 LayoutUnit cw = 0; | 4288 LayoutUnit cw = 0; |
4278 RenderView* renderView = 0; | 4289 RenderView* renderView = 0; |
4279 if (style()->textIndent().isPercent()) | 4290 if (style()->textIndent().isPercent()) |
4280 cw = containingBlock()->availableLogicalWidth(); | 4291 cw = containingBlock()->availableLogicalWidth(); |
4281 else if (style()->textIndent().isViewportPercentage()) | 4292 else if (style()->textIndent().isViewportPercentage()) |
4282 renderView = view(); | 4293 renderView = view(); |
(...skipping 3868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8151 | 8162 |
8152 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 8163 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
8153 { | 8164 { |
8154 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); | 8165 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); |
8155 } | 8166 } |
8156 | 8167 |
8157 | 8168 |
8158 #endif | 8169 #endif |
8159 | 8170 |
8160 } // namespace WebCore | 8171 } // namespace WebCore |
OLD | NEW |