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 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 636 matching lines...) Loading... |
647 , rect(LayoutRect(f->x() - f->marginLeft(), f->y() - f->marginTop(),
f->width() + f->marginWidth(), f->height() + f->marginHeight())) | 647 , rect(LayoutRect(f->x() - f->marginLeft(), f->y() - f->marginTop(),
f->width() + f->marginWidth(), f->height() + f->marginHeight())) |
648 , everHadLayout(f->everHadLayout()) | 648 , everHadLayout(f->everHadLayout()) |
649 { | 649 { |
650 } | 650 } |
651 | 651 |
652 RenderBox* object; | 652 RenderBox* object; |
653 LayoutRect rect; | 653 LayoutRect rect; |
654 bool everHadLayout; | 654 bool everHadLayout; |
655 }; | 655 }; |
656 | 656 |
657 struct FloatingObject { | 657 class FloatingObject { |
658 WTF_MAKE_NONCOPYABLE(FloatingObject); WTF_MAKE_FAST_ALLOCATED; | 658 WTF_MAKE_NONCOPYABLE(FloatingObject); WTF_MAKE_FAST_ALLOCATED; |
659 public: | 659 public: |
660 // Note that Type uses bits so you can use FloatLeftRight as a mask to q
uery for both left and right. | 660 // Note that Type uses bits so you can use FloatLeftRight as a mask to q
uery for both left and right. |
661 enum Type { FloatLeft = 1, FloatRight = 2, FloatLeftRight = 3 }; | 661 enum Type { FloatLeft = 1, FloatRight = 2, FloatLeftRight = 3 }; |
662 | 662 |
663 FloatingObject(EFloat type) | 663 FloatingObject(EFloat type) |
664 : m_renderer(0) | 664 : m_renderer(0) |
665 , m_originatingLine(0) | 665 , m_originatingLine(0) |
666 , m_paginationStrut(0) | 666 , m_paginationStrut(0) |
667 , m_shouldPaint(true) | 667 , m_shouldPaint(true) |
(...skipping 51 matching lines...) Loading... |
719 inline LayoutUnit height() const { return m_frameRect.height(); } | 719 inline LayoutUnit height() const { return m_frameRect.height(); } |
720 | 720 |
721 void setX(LayoutUnit x) { ASSERT(!isInPlacedTree()); m_frameRect.setX(x)
; } | 721 void setX(LayoutUnit x) { ASSERT(!isInPlacedTree()); m_frameRect.setX(x)
; } |
722 void setY(LayoutUnit y) { ASSERT(!isInPlacedTree()); m_frameRect.setY(y)
; } | 722 void setY(LayoutUnit y) { ASSERT(!isInPlacedTree()); m_frameRect.setY(y)
; } |
723 void setWidth(LayoutUnit width) { ASSERT(!isInPlacedTree()); m_frameRect
.setWidth(width); } | 723 void setWidth(LayoutUnit width) { ASSERT(!isInPlacedTree()); m_frameRect
.setWidth(width); } |
724 void setHeight(LayoutUnit height) { ASSERT(!isInPlacedTree()); m_frameRe
ct.setHeight(height); } | 724 void setHeight(LayoutUnit height) { ASSERT(!isInPlacedTree()); m_frameRe
ct.setHeight(height); } |
725 | 725 |
726 const LayoutRect& frameRect() const { ASSERT(isPlaced()); return m_frame
Rect; } | 726 const LayoutRect& frameRect() const { ASSERT(isPlaced()); return m_frame
Rect; } |
727 void setFrameRect(const LayoutRect& frameRect) { ASSERT(!isInPlacedTree(
)); m_frameRect = frameRect; } | 727 void setFrameRect(const LayoutRect& frameRect) { ASSERT(!isInPlacedTree(
)); m_frameRect = frameRect; } |
728 | 728 |
| 729 int paginationStrut() const { return m_paginationStrut; } |
| 730 void setPaginationStrut(int strut) { m_paginationStrut = strut; } |
| 731 |
729 #ifndef NDEBUG | 732 #ifndef NDEBUG |
730 bool isInPlacedTree() const { return m_isInPlacedTree; } | 733 bool isInPlacedTree() const { return m_isInPlacedTree; } |
731 void setIsInPlacedTree(bool value) { m_isInPlacedTree = value; } | 734 void setIsInPlacedTree(bool value) { m_isInPlacedTree = value; } |
732 #endif | 735 #endif |
733 | 736 |
734 bool shouldPaint() const { return m_shouldPaint; } | 737 bool shouldPaint() const { return m_shouldPaint; } |
735 void setShouldPaint(bool shouldPaint) { m_shouldPaint = shouldPaint; } | 738 void setShouldPaint(bool shouldPaint) { m_shouldPaint = shouldPaint; } |
736 bool isDescendant() const { return m_isDescendant; } | 739 bool isDescendant() const { return m_isDescendant; } |
737 void setIsDescendant(bool isDescendant) { m_isDescendant = isDescendant;
} | 740 void setIsDescendant(bool isDescendant) { m_isDescendant = isDescendant;
} |
738 | 741 |
| 742 // FIXME: Callers of these methods are dangerous and should be whitelist
ed explicitly or removed. |
| 743 void setRenderer(RenderBox* renderer) { m_renderer = renderer; } |
| 744 RootInlineBox* originatingLine() const { return m_originatingLine; } |
| 745 void setOriginatingLine(RootInlineBox* line) { m_originatingLine = line;
} |
| 746 |
| 747 private: |
739 RenderBox* m_renderer; | 748 RenderBox* m_renderer; |
740 RootInlineBox* m_originatingLine; | 749 RootInlineBox* m_originatingLine; |
741 LayoutRect m_frameRect; | 750 LayoutRect m_frameRect; |
742 int m_paginationStrut; | 751 int m_paginationStrut; // FIXME: Is this class size-sensitive? Does this
need 32-bits? |
743 | 752 |
744 private: | |
745 unsigned m_type : 2; // Type (left or right aligned) | 753 unsigned m_type : 2; // Type (left or right aligned) |
746 unsigned m_shouldPaint : 1; | 754 unsigned m_shouldPaint : 1; |
747 unsigned m_isDescendant : 1; | 755 unsigned m_isDescendant : 1; |
748 unsigned m_isPlaced : 1; | 756 unsigned m_isPlaced : 1; |
749 #ifndef NDEBUG | 757 #ifndef NDEBUG |
750 unsigned m_isInPlacedTree : 1; | 758 unsigned m_isInPlacedTree : 1; |
751 #endif | 759 #endif |
752 }; | 760 }; |
753 | 761 |
754 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const Lay
outPoint&) const; | 762 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const Lay
outPoint&) const; |
(...skipping 387 matching lines...) Loading... |
1142 | 1150 |
1143 virtual bool canCollapseAnonymousBlockChild() const { return true; } | 1151 virtual bool canCollapseAnonymousBlockChild() const { return true; } |
1144 | 1152 |
1145 public: | 1153 public: |
1146 LayoutUnit offsetFromLogicalTopOfFirstPage() const; | 1154 LayoutUnit offsetFromLogicalTopOfFirstPage() const; |
1147 RenderRegion* regionAtBlockOffset(LayoutUnit) const; | 1155 RenderRegion* regionAtBlockOffset(LayoutUnit) const; |
1148 RenderRegion* clampToStartAndEndRegions(RenderRegion*) const; | 1156 RenderRegion* clampToStartAndEndRegions(RenderRegion*) const; |
1149 | 1157 |
1150 protected: | 1158 protected: |
1151 struct FloatingObjectHashFunctions { | 1159 struct FloatingObjectHashFunctions { |
1152 static unsigned hash(FloatingObject* key) { return DefaultHash<RenderBox
*>::Hash::hash(key->m_renderer); } | 1160 static unsigned hash(FloatingObject* key) { return DefaultHash<RenderBox
*>::Hash::hash(key->renderer()); } |
1153 static bool equal(FloatingObject* a, FloatingObject* b) { return a->m_re
nderer == b->m_renderer; } | 1161 static bool equal(FloatingObject* a, FloatingObject* b) { return a->rend
erer() == b->renderer(); } |
1154 static const bool safeToCompareToEmptyOrDeleted = true; | 1162 static const bool safeToCompareToEmptyOrDeleted = true; |
1155 }; | 1163 }; |
1156 struct FloatingObjectHashTranslator { | 1164 struct FloatingObjectHashTranslator { |
1157 static unsigned hash(RenderBox* key) { return DefaultHash<RenderBox*>::H
ash::hash(key); } | 1165 static unsigned hash(RenderBox* key) { return DefaultHash<RenderBox*>::H
ash::hash(key); } |
1158 static bool equal(FloatingObject* a, RenderBox* b) { return a->m_rendere
r == b; } | 1166 static bool equal(FloatingObject* a, RenderBox* b) { return a->renderer(
) == b; } |
1159 }; | 1167 }; |
1160 typedef ListHashSet<FloatingObject*, 4, FloatingObjectHashFunctions> Floatin
gObjectSet; | 1168 typedef ListHashSet<FloatingObject*, 4, FloatingObjectHashFunctions> Floatin
gObjectSet; |
1161 typedef FloatingObjectSet::const_iterator FloatingObjectSetIterator; | 1169 typedef FloatingObjectSet::const_iterator FloatingObjectSetIterator; |
1162 typedef PODInterval<int, FloatingObject*> FloatingObjectInterval; | 1170 typedef PODInterval<int, FloatingObject*> FloatingObjectInterval; |
1163 typedef PODIntervalTree<int, FloatingObject*> FloatingObjectTree; | 1171 typedef PODIntervalTree<int, FloatingObject*> FloatingObjectTree; |
1164 typedef PODFreeListArena<PODRedBlackTree<FloatingObjectInterval>::Node> Inte
rvalArena; | 1172 typedef PODFreeListArena<PODRedBlackTree<FloatingObjectInterval>::Node> Inte
rvalArena; |
1165 | 1173 |
1166 template <FloatingObject::Type FloatTypeValue> | 1174 template <FloatingObject::Type FloatTypeValue> |
1167 class FloatIntervalSearchAdapter { | 1175 class FloatIntervalSearchAdapter { |
1168 public: | 1176 public: |
(...skipping 173 matching lines...) Loading... |
1342 static String string(const int value); | 1350 static String string(const int value); |
1343 }; | 1351 }; |
1344 template<> struct ValueToString<RenderBlock::FloatingObject*> { | 1352 template<> struct ValueToString<RenderBlock::FloatingObject*> { |
1345 static String string(const RenderBlock::FloatingObject*); | 1353 static String string(const RenderBlock::FloatingObject*); |
1346 }; | 1354 }; |
1347 #endif | 1355 #endif |
1348 | 1356 |
1349 } // namespace WebCore | 1357 } // namespace WebCore |
1350 | 1358 |
1351 #endif // RenderBlock_h | 1359 #endif // RenderBlock_h |
OLD | NEW |