| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 12 * Library General Public License for more details. | 12 * Library General Public License for more details. |
| 13 * | 13 * |
| 14 * You should have received a copy of the GNU Library General Public License | 14 * You should have received a copy of the GNU Library General Public License |
| 15 * along with this library; see the file COPYING.LIB. If not, write to | 15 * along with this library; see the file COPYING.LIB. If not, write to |
| 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 17 * Boston, MA 02110-1301, USA. | 17 * Boston, MA 02110-1301, USA. |
| 18 */ | 18 */ |
| 19 | 19 |
| 20 #include "config.h" | 20 #include "config.h" |
| 21 #include "core/rendering/RootInlineBox.h" | 21 #include "core/rendering/RootInlineBox.h" |
| 22 | 22 |
| 23 #include "core/dom/Document.h" | 23 #include "core/dom/Document.h" |
| 24 #include "core/rendering/EllipsisBox.h" | 24 #include "core/rendering/EllipsisBox.h" |
| 25 #include "core/rendering/HitTestResult.h" | 25 #include "core/rendering/HitTestResult.h" |
| 26 #include "core/rendering/InlineTextBox.h" | 26 #include "core/rendering/InlineTextBox.h" |
| 27 #include "core/rendering/PaintInfo.h" | 27 #include "core/rendering/PaintInfo.h" |
| 28 #include "core/rendering/RenderBlockFlow.h" | 28 #include "core/rendering/RenderBlockFlow.h" |
| 29 #include "core/rendering/RenderFlowThread.h" | |
| 30 #include "core/rendering/RenderInline.h" | 29 #include "core/rendering/RenderInline.h" |
| 31 #include "core/rendering/RenderView.h" | 30 #include "core/rendering/RenderView.h" |
| 32 #include "core/rendering/VerticalPositionCache.h" | 31 #include "core/rendering/VerticalPositionCache.h" |
| 33 #include "platform/text/BidiResolver.h" | 32 #include "platform/text/BidiResolver.h" |
| 34 #include "wtf/unicode/Unicode.h" | 33 #include "wtf/unicode/Unicode.h" |
| 35 | 34 |
| 36 using namespace std; | 35 using namespace std; |
| 37 | 36 |
| 38 namespace WebCore { | 37 namespace WebCore { |
| 39 | 38 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 { | 201 { |
| 203 if (box->renderer() == m_lineBreakObj) | 202 if (box->renderer() == m_lineBreakObj) |
| 204 setLineBreakInfo(0, 0, BidiStatus()); | 203 setLineBreakInfo(0, 0, BidiStatus()); |
| 205 | 204 |
| 206 for (RootInlineBox* prev = prevRootBox(); prev && prev->lineBreakObj() == bo
x->renderer(); prev = prev->prevRootBox()) { | 205 for (RootInlineBox* prev = prevRootBox(); prev && prev->lineBreakObj() == bo
x->renderer(); prev = prev->prevRootBox()) { |
| 207 prev->setLineBreakInfo(0, 0, BidiStatus()); | 206 prev->setLineBreakInfo(0, 0, BidiStatus()); |
| 208 prev->markDirty(); | 207 prev->markDirty(); |
| 209 } | 208 } |
| 210 } | 209 } |
| 211 | 210 |
| 212 RenderRegion* RootInlineBox::containingRegion() const | |
| 213 { | |
| 214 RenderRegion* region = m_fragmentationData ? m_fragmentationData->m_containi
ngRegion : 0; | |
| 215 | |
| 216 #ifndef NDEBUG | |
| 217 if (region) { | |
| 218 RenderFlowThread* flowThread = block()->flowThreadContainingBlock(); | |
| 219 const RenderRegionList& regionList = flowThread->renderRegionList(); | |
| 220 ASSERT(regionList.contains(region)); | |
| 221 } | |
| 222 #endif | |
| 223 | |
| 224 return region; | |
| 225 } | |
| 226 | |
| 227 void RootInlineBox::setContainingRegion(RenderRegion* region) | |
| 228 { | |
| 229 ASSERT(!isDirty()); | |
| 230 ASSERT(block()->flowThreadContainingBlock()); | |
| 231 LineFragmentationData* fragmentationData = ensureLineFragmentationData(); | |
| 232 fragmentationData->m_containingRegion = region; | |
| 233 } | |
| 234 | |
| 235 LayoutUnit RootInlineBox::alignBoxesInBlockDirection(LayoutUnit heightOfBlock, G
lyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& vertical
PositionCache) | 211 LayoutUnit RootInlineBox::alignBoxesInBlockDirection(LayoutUnit heightOfBlock, G
lyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& vertical
PositionCache) |
| 236 { | 212 { |
| 237 // SVG will handle vertical alignment on its own. | 213 // SVG will handle vertical alignment on its own. |
| 238 if (isSVGRootInlineBox()) | 214 if (isSVGRootInlineBox()) |
| 239 return 0; | 215 return 0; |
| 240 | 216 |
| 241 LayoutUnit maxPositionTop = 0; | 217 LayoutUnit maxPositionTop = 0; |
| 242 LayoutUnit maxPositionBottom = 0; | 218 LayoutUnit maxPositionBottom = 0; |
| 243 int maxAscent = 0; | 219 int maxAscent = 0; |
| 244 int maxDescent = 0; | 220 int maxDescent = 0; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 265 bool hasAnnotationsBefore = false; | 241 bool hasAnnotationsBefore = false; |
| 266 bool hasAnnotationsAfter = false; | 242 bool hasAnnotationsAfter = false; |
| 267 placeBoxesInBlockDirection(heightOfBlock, maxHeight, maxAscent, noQuirksMode
, lineTop, lineBottom, setLineTop, | 243 placeBoxesInBlockDirection(heightOfBlock, maxHeight, maxAscent, noQuirksMode
, lineTop, lineBottom, setLineTop, |
| 268 lineTopIncludingMargins, lineBottomIncludingMargi
ns, hasAnnotationsBefore, hasAnnotationsAfter, baselineType()); | 244 lineTopIncludingMargins, lineBottomIncludingMargi
ns, hasAnnotationsBefore, hasAnnotationsAfter, baselineType()); |
| 269 m_hasAnnotationsBefore = hasAnnotationsBefore; | 245 m_hasAnnotationsBefore = hasAnnotationsBefore; |
| 270 m_hasAnnotationsAfter = hasAnnotationsAfter; | 246 m_hasAnnotationsAfter = hasAnnotationsAfter; |
| 271 | 247 |
| 272 maxHeight = max<LayoutUnit>(0, maxHeight); // FIXME: Is this really necessar
y? | 248 maxHeight = max<LayoutUnit>(0, maxHeight); // FIXME: Is this really necessar
y? |
| 273 | 249 |
| 274 setLineTopBottomPositions(lineTop, lineBottom, heightOfBlock, heightOfBlock
+ maxHeight); | 250 setLineTopBottomPositions(lineTop, lineBottom, heightOfBlock, heightOfBlock
+ maxHeight); |
| 275 setPaginatedLineWidth(block()->availableLogicalWidthForContent(heightOfBlock
)); | 251 setPaginatedLineWidth(block()->availableLogicalWidthForContent()); |
| 276 | 252 |
| 277 LayoutUnit annotationsAdjustment = beforeAnnotationsAdjustment(); | 253 LayoutUnit annotationsAdjustment = beforeAnnotationsAdjustment(); |
| 278 if (annotationsAdjustment) { | 254 if (annotationsAdjustment) { |
| 279 // FIXME: Need to handle pagination here. We might have to move to the n
ext page/column as a result of the | 255 // FIXME: Need to handle pagination here. We might have to move to the n
ext page/column as a result of the |
| 280 // ruby expansion. | 256 // ruby expansion. |
| 281 adjustBlockDirectionPosition(annotationsAdjustment); | 257 adjustBlockDirectionPosition(annotationsAdjustment); |
| 282 heightOfBlock += annotationsAdjustment; | 258 heightOfBlock += annotationsAdjustment; |
| 283 } | 259 } |
| 284 | 260 |
| 285 LayoutUnit gridSnapAdjustment = lineSnapAdjustment(); | 261 LayoutUnit gridSnapAdjustment = lineSnapAdjustment(); |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 } | 965 } |
| 990 | 966 |
| 991 #ifndef NDEBUG | 967 #ifndef NDEBUG |
| 992 const char* RootInlineBox::boxName() const | 968 const char* RootInlineBox::boxName() const |
| 993 { | 969 { |
| 994 return "RootInlineBox"; | 970 return "RootInlineBox"; |
| 995 } | 971 } |
| 996 #endif | 972 #endif |
| 997 | 973 |
| 998 } // namespace WebCore | 974 } // namespace WebCore |
| OLD | NEW |