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 4200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4211 static bool shouldCheckLines(RenderObject* obj) | 4211 static bool shouldCheckLines(RenderObject* obj) |
4212 { | 4212 { |
4213 return !obj->isFloatingOrOutOfFlowPositioned() | 4213 return !obj->isFloatingOrOutOfFlowPositioned() |
4214 && obj->isRenderBlock() && obj->style()->height().isAuto() | 4214 && obj->isRenderBlock() && obj->style()->height().isAuto() |
4215 && (!obj->isDeprecatedFlexibleBox() || obj->style()->boxOrient() == VERT
ICAL); | 4215 && (!obj->isDeprecatedFlexibleBox() || obj->style()->boxOrient() == VERT
ICAL); |
4216 } | 4216 } |
4217 | 4217 |
4218 static int getHeightForLineCount(RenderBlock* block, int l, bool includeBottom,
int& count) | 4218 static int getHeightForLineCount(RenderBlock* block, int l, bool includeBottom,
int& count) |
4219 { | 4219 { |
4220 if (block->style()->visibility() == VISIBLE) { | 4220 if (block->style()->visibility() == VISIBLE) { |
4221 if (block->childrenInline()) { | 4221 if (block->isRenderBlockFlow() && block->childrenInline()) { |
4222 for (RootInlineBox* box = block->firstRootBox(); box; box = box->nex
tRootBox()) { | 4222 for (RootInlineBox* box = toRenderBlockFlow(block)->firstRootBox();
box; box = box->nextRootBox()) { |
4223 if (++count == l) | 4223 if (++count == l) |
4224 return box->lineBottom() + (includeBottom ? (block->borderBo
ttom() + block->paddingBottom()) : LayoutUnit()); | 4224 return box->lineBottom() + (includeBottom ? (block->borderBo
ttom() + block->paddingBottom()) : LayoutUnit()); |
4225 } | 4225 } |
4226 } | 4226 } else { |
4227 else { | |
4228 RenderBox* normalFlowChildWithoutLines = 0; | 4227 RenderBox* normalFlowChildWithoutLines = 0; |
4229 for (RenderBox* obj = block->firstChildBox(); obj; obj = obj->nextSi
blingBox()) { | 4228 for (RenderBox* obj = block->firstChildBox(); obj; obj = obj->nextSi
blingBox()) { |
4230 if (shouldCheckLines(obj)) { | 4229 if (shouldCheckLines(obj)) { |
4231 int result = getHeightForLineCount(toRenderBlock(obj), l, fa
lse, count); | 4230 int result = getHeightForLineCount(toRenderBlock(obj), l, fa
lse, count); |
4232 if (result != -1) | 4231 if (result != -1) |
4233 return result + obj->y() + (includeBottom ? (block->bord
erBottom() + block->paddingBottom()) : LayoutUnit()); | 4232 return result + obj->y() + (includeBottom ? (block->bord
erBottom() + block->paddingBottom()) : LayoutUnit()); |
4234 } else if (!obj->isFloatingOrOutOfFlowPositioned()) | 4233 } else if (!obj->isFloatingOrOutOfFlowPositioned()) { |
4235 normalFlowChildWithoutLines = obj; | 4234 normalFlowChildWithoutLines = obj; |
| 4235 } |
4236 } | 4236 } |
4237 if (normalFlowChildWithoutLines && l == 0) | 4237 if (normalFlowChildWithoutLines && l == 0) |
4238 return normalFlowChildWithoutLines->y() + normalFlowChildWithout
Lines->height(); | 4238 return normalFlowChildWithoutLines->y() + normalFlowChildWithout
Lines->height(); |
4239 } | 4239 } |
4240 } | 4240 } |
4241 | 4241 |
4242 return -1; | 4242 return -1; |
4243 } | 4243 } |
4244 | 4244 |
4245 RootInlineBox* RenderBlock::lineAtIndex(int i) const | 4245 RootInlineBox* RenderBlock::lineAtIndex(int i) const |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4900 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const | 4900 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const |
4901 { | 4901 { |
4902 showRenderObject(); | 4902 showRenderObject(); |
4903 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) | 4903 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) |
4904 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); | 4904 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); |
4905 } | 4905 } |
4906 | 4906 |
4907 #endif | 4907 #endif |
4908 | 4908 |
4909 } // namespace blink | 4909 } // namespace blink |
OLD | NEW |