Changeset 109642 in webkit
- Timestamp:
- Mar 2, 2012 5:47:46 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r109635 r109642 1 2012-03-02 Emil A Eklund <eae@chromium.org> 2 3 Revert borders to integers for subpixel layout 4 https://bugs.webkit.org/show_bug.cgi?id=80175 5 6 Reviewed by Eric Seidel. 7 8 Change border representation and calculation back to integers to ensure 9 that borders given the same width are rendered with the same actual width. 10 11 This will also avoid unnecessary type conversions when we switch over 12 to subpixel precision. 13 14 No new tests. 15 16 * rendering/LayoutTypes.h: 17 (WebCore::pixelSnappedIntRect): 18 (WebCore): 19 * rendering/RenderBoxModelObject.h: 20 (WebCore::RenderBoxModelObject::borderTop): 21 (WebCore::RenderBoxModelObject::borderBottom): 22 (WebCore::RenderBoxModelObject::borderLeft): 23 (WebCore::RenderBoxModelObject::borderRight): 24 (WebCore::RenderBoxModelObject::borderBefore): 25 (WebCore::RenderBoxModelObject::borderAfter): 26 (WebCore::RenderBoxModelObject::borderStart): 27 (WebCore::RenderBoxModelObject::borderEnd): 28 * rendering/RenderTable.cpp: 29 (WebCore::RenderTable::convertStyleLogicalWidthToComputedWidth): 30 (WebCore::RenderTable::calcBorderStart): 31 (WebCore::RenderTable::calcBorderEnd): 32 (WebCore::RenderTable::borderBefore): 33 (WebCore::RenderTable::borderAfter): 34 (WebCore::RenderTable::outerBorderBefore): 35 (WebCore::RenderTable::outerBorderAfter): 36 (WebCore::RenderTable::outerBorderStart): 37 (WebCore::RenderTable::outerBorderEnd): 38 * rendering/RenderTable.h: 39 (WebCore::RenderTable::borderStart): 40 (WebCore::RenderTable::borderEnd): 41 (RenderTable): 42 (WebCore::RenderTable::borderLeft): 43 (WebCore::RenderTable::borderRight): 44 (WebCore::RenderTable::borderTop): 45 (WebCore::RenderTable::borderBottom): 46 (WebCore::RenderTable::outerBorderLeft): 47 (WebCore::RenderTable::outerBorderRight): 48 (WebCore::RenderTable::outerBorderTop): 49 (WebCore::RenderTable::outerBorderBottom): 50 * rendering/RenderTableCell.cpp: 51 (WebCore::RenderTableCell::clippedOverflowRectForRepaint): 52 (WebCore::RenderTableCell::borderLeft): 53 (WebCore::RenderTableCell::borderRight): 54 (WebCore::RenderTableCell::borderTop): 55 (WebCore::RenderTableCell::borderBottom): 56 (WebCore::RenderTableCell::borderStart): 57 (WebCore::RenderTableCell::borderEnd): 58 (WebCore::RenderTableCell::borderBefore): 59 (WebCore::RenderTableCell::borderAfter): 60 (WebCore::RenderTableCell::borderHalfLeft): 61 (WebCore::RenderTableCell::borderHalfRight): 62 (WebCore::RenderTableCell::borderHalfTop): 63 (WebCore::RenderTableCell::borderHalfBottom): 64 (WebCore::RenderTableCell::borderHalfStart): 65 (WebCore::RenderTableCell::borderHalfEnd): 66 (WebCore::RenderTableCell::borderHalfBefore): 67 (WebCore::RenderTableCell::borderHalfAfter): 68 (WebCore::RenderTableCell::paintCollapsedBorders): 69 * rendering/RenderTableCell.h: 70 (RenderTableCell): 71 1 72 2012-03-01 Eric Seidel <eric@webkit.org> 2 73 -
trunk/Source/WebCore/rendering/LayoutTypes.h
r109378 r109642 57 57 { 58 58 return rect; 59 } 60 61 inline IntRect pixelSnappedIntRect(LayoutUnit left, LayoutUnit top, LayoutUnit width, LayoutUnit height) 62 { 63 return IntRect(left, top, width, height); 59 64 } 60 65 -
trunk/Source/WebCore/rendering/RenderBoxModelObject.h
r109383 r109642 88 88 virtual LayoutUnit paddingEnd(bool includeIntrinsicPadding = true) const; 89 89 90 virtual LayoutUnit borderTop() const { return style()->borderTopWidth(); }91 virtual LayoutUnit borderBottom() const { return style()->borderBottomWidth(); }92 virtual LayoutUnit borderLeft() const { return style()->borderLeftWidth(); }93 virtual LayoutUnit borderRight() const { return style()->borderRightWidth(); }94 virtual LayoutUnit borderBefore() const { return style()->borderBeforeWidth(); }95 virtual LayoutUnit borderAfter() const { return style()->borderAfterWidth(); }96 virtual LayoutUnit borderStart() const { return style()->borderStartWidth(); }97 virtual LayoutUnit borderEnd() const { return style()->borderEndWidth(); }90 virtual int borderTop() const { return style()->borderTopWidth(); } 91 virtual int borderBottom() const { return style()->borderBottomWidth(); } 92 virtual int borderLeft() const { return style()->borderLeftWidth(); } 93 virtual int borderRight() const { return style()->borderRightWidth(); } 94 virtual int borderBefore() const { return style()->borderBeforeWidth(); } 95 virtual int borderAfter() const { return style()->borderAfterWidth(); } 96 virtual int borderStart() const { return style()->borderStartWidth(); } 97 virtual int borderEnd() const { return style()->borderEndWidth(); } 98 98 99 99 LayoutUnit borderAndPaddingHeight() const { return borderTop() + borderBottom() + paddingTop() + paddingBottom(); } -
trunk/Source/WebCore/rendering/RenderTable.cpp
r108364 r109642 271 271 { 272 272 // HTML tables' width styles already include borders and paddings, but CSS tables' width styles do not. 273 LayoutUnit borders = 0;273 int borders = 0; 274 274 bool isCSSTable = !node() || !node()->hasTagName(tableTag); 275 275 if (isCSSTable && styleLogicalWidth.isFixed() && styleLogicalWidth.isPositive()) { 276 276 recalcBordersInRowDirection(); 277 borders = borderStart() + borderEnd() + (collapseBorders() ? zeroLayoutUnit: paddingStart() + paddingEnd());277 borders = borderStart() + borderEnd() + (collapseBorders() ? 0 : paddingStart() + paddingEnd()); 278 278 } 279 279 return styleLogicalWidth.calcMinValue(availableWidth) + borders; … … 841 841 } 842 842 843 LayoutUnit RenderTable::calcBorderStart() const843 int RenderTable::calcBorderStart() const 844 844 { 845 845 if (collapseBorders()) { … … 848 848 return 0; 849 849 850 LayoutUnitborderWidth = 0;850 unsigned borderWidth = 0; 851 851 852 852 const BorderValue& tb = style()->borderStart(); … … 861 861 return 0; 862 862 if (gb.style() > BHIDDEN) 863 borderWidth = max <LayoutUnit>(borderWidth, gb.width());863 borderWidth = max(borderWidth, gb.width()); 864 864 } 865 865 … … 870 870 871 871 if (sb.style() > BHIDDEN) 872 borderWidth = max <LayoutUnit>(borderWidth, sb.width());872 borderWidth = max(borderWidth, sb.width()); 873 873 874 874 const RenderTableSection::CellStruct& cs = topNonEmptySection->cellAt(0, 0); … … 884 884 885 885 if (cb.style() > BHIDDEN) 886 borderWidth = max <LayoutUnit>(borderWidth, cb.width());886 borderWidth = max(borderWidth, cb.width()); 887 887 if (rb.style() > BHIDDEN) 888 borderWidth = max <LayoutUnit>(borderWidth, rb.width());888 borderWidth = max(borderWidth, rb.width()); 889 889 } 890 890 } … … 894 894 } 895 895 896 LayoutUnit RenderTable::calcBorderEnd() const896 int RenderTable::calcBorderEnd() const 897 897 { 898 898 if (collapseBorders()) { … … 901 901 return 0; 902 902 903 LayoutUnitborderWidth = 0;903 unsigned borderWidth = 0; 904 904 905 905 const BorderValue& tb = style()->borderEnd(); … … 915 915 return 0; 916 916 if (gb.style() > BHIDDEN) 917 borderWidth = max <LayoutUnit>(borderWidth, gb.width());917 borderWidth = max(borderWidth, gb.width()); 918 918 } 919 919 … … 924 924 925 925 if (sb.style() > BHIDDEN) 926 borderWidth = max <LayoutUnit>(borderWidth, sb.width());926 borderWidth = max(borderWidth, sb.width()); 927 927 928 928 const RenderTableSection::CellStruct& cs = topNonEmptySection->cellAt(0, endColumn); … … 938 938 939 939 if (cb.style() > BHIDDEN) 940 borderWidth = max <LayoutUnit>(borderWidth, cb.width());940 borderWidth = max(borderWidth, cb.width()); 941 941 if (rb.style() > BHIDDEN) 942 borderWidth = max <LayoutUnit>(borderWidth, rb.width());942 borderWidth = max(borderWidth, rb.width()); 943 943 } 944 944 } … … 954 954 } 955 955 956 LayoutUnit RenderTable::borderBefore() const956 int RenderTable::borderBefore() const 957 957 { 958 958 if (collapseBorders()) { … … 963 963 } 964 964 965 LayoutUnit RenderTable::borderAfter() const965 int RenderTable::borderAfter() const 966 966 { 967 967 if (collapseBorders()) { … … 972 972 } 973 973 974 LayoutUnit RenderTable::outerBorderBefore() const974 int RenderTable::outerBorderBefore() const 975 975 { 976 976 if (!collapseBorders()) 977 977 return 0; 978 LayoutUnit borderWidth = 0;978 int borderWidth = 0; 979 979 if (RenderTableSection* topSection = this->topSection()) { 980 980 borderWidth = topSection->outerBorderBefore(); … … 986 986 return 0; 987 987 if (tb.style() > BHIDDEN) 988 borderWidth = max< LayoutUnit>(borderWidth, tb.width() / 2);988 borderWidth = max<int>(borderWidth, tb.width() / 2); 989 989 return borderWidth; 990 990 } 991 991 992 LayoutUnit RenderTable::outerBorderAfter() const992 int RenderTable::outerBorderAfter() const 993 993 { 994 994 if (!collapseBorders()) 995 995 return 0; 996 LayoutUnit borderWidth = 0;996 int borderWidth = 0; 997 997 RenderTableSection* bottomSection; 998 998 if (m_foot) … … 1012 1012 return 0; 1013 1013 if (tb.style() > BHIDDEN) 1014 borderWidth = max< LayoutUnit>(borderWidth, (tb.width() + 1) / 2);1014 borderWidth = max<int>(borderWidth, (tb.width() + 1) / 2); 1015 1015 return borderWidth; 1016 1016 } 1017 1017 1018 LayoutUnit RenderTable::outerBorderStart() const1018 int RenderTable::outerBorderStart() const 1019 1019 { 1020 1020 if (!collapseBorders()) 1021 1021 return 0; 1022 1022 1023 LayoutUnit borderWidth = 0;1023 int borderWidth = 0; 1024 1024 1025 1025 const BorderValue& tb = style()->borderStart(); … … 1033 1033 if (!child->isTableSection()) 1034 1034 continue; 1035 LayoutUnit sw = toRenderTableSection(child)->outerBorderStart();1035 int sw = toRenderTableSection(child)->outerBorderStart(); 1036 1036 if (sw < 0) 1037 1037 continue; … … 1045 1045 } 1046 1046 1047 LayoutUnit RenderTable::outerBorderEnd() const1047 int RenderTable::outerBorderEnd() const 1048 1048 { 1049 1049 if (!collapseBorders()) 1050 1050 return 0; 1051 1051 1052 LayoutUnit borderWidth = 0;1052 int borderWidth = 0; 1053 1053 1054 1054 const BorderValue& tb = style()->borderEnd(); … … 1062 1062 if (!child->isTableSection()) 1063 1063 continue; 1064 LayoutUnit sw = toRenderTableSection(child)->outerBorderEnd();1064 int sw = toRenderTableSection(child)->outerBorderEnd(); 1065 1065 if (sw < 0) 1066 1066 continue; -
trunk/Source/WebCore/rendering/RenderTable.h
r107880 r109642 53 53 bool collapseBorders() const { return style()->borderCollapse(); } 54 54 55 LayoutUnit borderStart() const { return m_borderStart; }56 LayoutUnit borderEnd() const { return m_borderEnd; }57 LayoutUnit borderBefore() const;58 LayoutUnit borderAfter() const;59 60 LayoutUnit borderLeft() const55 int borderStart() const { return m_borderStart; } 56 int borderEnd() const { return m_borderEnd; } 57 int borderBefore() const; 58 int borderAfter() const; 59 60 int borderLeft() const 61 61 { 62 62 if (style()->isHorizontalWritingMode()) … … 65 65 } 66 66 67 LayoutUnit borderRight() const67 int borderRight() const 68 68 { 69 69 if (style()->isHorizontalWritingMode()) … … 72 72 } 73 73 74 LayoutUnit borderTop() const74 int borderTop() const 75 75 { 76 76 if (style()->isHorizontalWritingMode()) … … 79 79 } 80 80 81 LayoutUnit borderBottom() const81 int borderBottom() const 82 82 { 83 83 if (style()->isHorizontalWritingMode()) … … 88 88 Color bgColor() const { return style()->visitedDependentColor(CSSPropertyBackgroundColor); } 89 89 90 LayoutUnit outerBorderBefore() const;91 LayoutUnit outerBorderAfter() const;92 LayoutUnit outerBorderStart() const;93 LayoutUnit outerBorderEnd() const;94 95 LayoutUnit outerBorderLeft() const90 int outerBorderBefore() const; 91 int outerBorderAfter() const; 92 int outerBorderStart() const; 93 int outerBorderEnd() const; 94 95 int outerBorderLeft() const 96 96 { 97 97 if (style()->isHorizontalWritingMode()) … … 100 100 } 101 101 102 LayoutUnit outerBorderRight() const102 int outerBorderRight() const 103 103 { 104 104 if (style()->isHorizontalWritingMode()) … … 107 107 } 108 108 109 LayoutUnit outerBorderTop() const109 int outerBorderTop() const 110 110 { 111 111 if (style()->isHorizontalWritingMode()) … … 114 114 } 115 115 116 LayoutUnit outerBorderBottom() const116 int outerBorderBottom() const 117 117 { 118 118 if (style()->isHorizontalWritingMode()) … … 121 121 } 122 122 123 LayoutUnit calcBorderStart() const;124 LayoutUnit calcBorderEnd() const;123 int calcBorderStart() const; 124 int calcBorderEnd() const; 125 125 void recalcBordersInRowDirection(); 126 126 … … 272 272 short m_hSpacing; 273 273 short m_vSpacing; 274 LayoutUnit m_borderStart;275 LayoutUnit m_borderEnd;274 int m_borderStart; 275 int m_borderEnd; 276 276 }; 277 277 -
trunk/Source/WebCore/rendering/RenderTableCell.cpp
r109246 r109642 268 268 269 269 bool rtl = !table()->style()->isLeftToRightDirection(); 270 LayoutUnit outlineSize = style()->outlineSize();271 LayoutUnit left = max(borderHalfLeft(true), outlineSize);272 LayoutUnit right = max(borderHalfRight(true), outlineSize);273 LayoutUnit top = max(borderHalfTop(true), outlineSize);274 LayoutUnit bottom = max(borderHalfBottom(true), outlineSize);270 int outlineSize = style()->outlineSize(); 271 int left = max(borderHalfLeft(true), outlineSize); 272 int right = max(borderHalfRight(true), outlineSize); 273 int top = max(borderHalfTop(true), outlineSize); 274 int bottom = max(borderHalfBottom(true), outlineSize); 275 275 if ((left && !rtl) || (right && rtl)) { 276 276 if (RenderTableCell* before = table()->cellBefore(this)) { … … 748 748 } 749 749 750 LayoutUnit RenderTableCell::borderLeft() const750 int RenderTableCell::borderLeft() const 751 751 { 752 752 return table()->collapseBorders() ? borderHalfLeft(false) : RenderBlock::borderLeft(); 753 753 } 754 754 755 LayoutUnit RenderTableCell::borderRight() const755 int RenderTableCell::borderRight() const 756 756 { 757 757 return table()->collapseBorders() ? borderHalfRight(false) : RenderBlock::borderRight(); 758 758 } 759 759 760 LayoutUnit RenderTableCell::borderTop() const760 int RenderTableCell::borderTop() const 761 761 { 762 762 return table()->collapseBorders() ? borderHalfTop(false) : RenderBlock::borderTop(); 763 763 } 764 764 765 LayoutUnit RenderTableCell::borderBottom() const765 int RenderTableCell::borderBottom() const 766 766 { 767 767 return table()->collapseBorders() ? borderHalfBottom(false) : RenderBlock::borderBottom(); … … 770 770 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=46191, make the collapsed border drawing 771 771 // work with different block flow values instead of being hard-coded to top-to-bottom. 772 LayoutUnit RenderTableCell::borderStart() const772 int RenderTableCell::borderStart() const 773 773 { 774 774 return table()->collapseBorders() ? borderHalfStart(false) : RenderBlock::borderStart(); 775 775 } 776 776 777 LayoutUnit RenderTableCell::borderEnd() const777 int RenderTableCell::borderEnd() const 778 778 { 779 779 return table()->collapseBorders() ? borderHalfEnd(false) : RenderBlock::borderEnd(); 780 780 } 781 781 782 LayoutUnit RenderTableCell::borderBefore() const782 int RenderTableCell::borderBefore() const 783 783 { 784 784 return table()->collapseBorders() ? borderHalfBefore(false) : RenderBlock::borderBefore(); 785 785 } 786 786 787 LayoutUnit RenderTableCell::borderAfter() const787 int RenderTableCell::borderAfter() const 788 788 { 789 789 return table()->collapseBorders() ? borderHalfAfter(false) : RenderBlock::borderAfter(); 790 790 } 791 791 792 LayoutUnit RenderTableCell::borderHalfLeft(bool outer) const792 int RenderTableCell::borderHalfLeft(bool outer) const 793 793 { 794 794 RenderStyle* tableStyle = table()->style(); … … 798 798 } 799 799 800 LayoutUnit RenderTableCell::borderHalfRight(bool outer) const800 int RenderTableCell::borderHalfRight(bool outer) const 801 801 { 802 802 RenderStyle* tableStyle = table()->style(); … … 806 806 } 807 807 808 LayoutUnit RenderTableCell::borderHalfTop(bool outer) const808 int RenderTableCell::borderHalfTop(bool outer) const 809 809 { 810 810 RenderStyle* tableStyle = table()->style(); … … 814 814 } 815 815 816 LayoutUnit RenderTableCell::borderHalfBottom(bool outer) const816 int RenderTableCell::borderHalfBottom(bool outer) const 817 817 { 818 818 RenderStyle* tableStyle = table()->style(); … … 822 822 } 823 823 824 LayoutUnit RenderTableCell::borderHalfStart(bool outer) const824 int RenderTableCell::borderHalfStart(bool outer) const 825 825 { 826 826 CollapsedBorderValue border = collapsedStartBorder(DoNotIncludeBorderColor); … … 830 830 } 831 831 832 LayoutUnit RenderTableCell::borderHalfEnd(bool outer) const832 int RenderTableCell::borderHalfEnd(bool outer) const 833 833 { 834 834 CollapsedBorderValue border = collapsedEndBorder(DoNotIncludeBorderColor); … … 838 838 } 839 839 840 LayoutUnit RenderTableCell::borderHalfBefore(bool outer) const840 int RenderTableCell::borderHalfBefore(bool outer) const 841 841 { 842 842 CollapsedBorderValue border = collapsedBeforeBorder(DoNotIncludeBorderColor); … … 846 846 } 847 847 848 LayoutUnit RenderTableCell::borderHalfAfter(bool outer) const848 int RenderTableCell::borderHalfAfter(bool outer) const 849 849 { 850 850 CollapsedBorderValue border = collapsedAfterBorder(DoNotIncludeBorderColor); … … 982 982 983 983 // Adjust our x/y/width/height so that we paint the collapsed borders at the correct location. 984 LayoutUnit topWidth = topVal.width();985 LayoutUnit bottomWidth = bottomVal.width();986 LayoutUnit leftWidth = leftVal.width();987 LayoutUnit rightWidth = rightVal.width();988 989 LayoutUnit x = paintRect.x() - leftWidth / 2;990 LayoutUnit y = paintRect.y() - topWidth / 2;991 LayoutUnit w = paintRect.width() + leftWidth / 2 + (rightWidth + 1) / 2;992 LayoutUnit h = paintRect.height() + topWidth / 2 + (bottomWidth + 1) / 2;993 984 int topWidth = topVal.width(); 985 int bottomWidth = bottomVal.width(); 986 int leftWidth = leftVal.width(); 987 int rightWidth = rightVal.width(); 988 989 IntRect borderRect = pixelSnappedIntRect(paintRect.x() - leftWidth / 2, 990 paintRect.y() - topWidth / 2, 991 paintRect.width() + leftWidth / 2 + (rightWidth + 1) / 2, 992 paintRect.height() + topWidth / 2 + (bottomWidth + 1) / 2); 993 994 994 EBorderStyle topStyle = collapsedBorderStyle(topVal.style()); 995 995 EBorderStyle bottomStyle = collapsedBorderStyle(bottomVal.style()); … … 1005 1005 // precedence paint on top of borders with lower precedence. 1006 1006 CollapsedBorders borders; 1007 borders.addBorder(topVal, BSTop, renderTop, x, y, x + w, y+ topWidth, topStyle);1008 borders.addBorder(bottomVal, BSBottom, renderBottom, x, y + h - bottomWidth, x + w, y + h, bottomStyle);1009 borders.addBorder(leftVal, BSLeft, renderLeft, x, y, x + leftWidth, y + h, leftStyle);1010 borders.addBorder(rightVal, BSRight, renderRight, x + w - rightWidth, y, x + w, y + h, rightStyle);1007 borders.addBorder(topVal, BSTop, renderTop, borderRect.x(), borderRect.y(), borderRect.maxX(), borderRect.y() + topWidth, topStyle); 1008 borders.addBorder(bottomVal, BSBottom, renderBottom, borderRect.x(), borderRect.maxY() - bottomWidth, borderRect.maxX(), borderRect.maxY(), bottomStyle); 1009 borders.addBorder(leftVal, BSLeft, renderLeft, borderRect.x(), borderRect.y(), borderRect.x() + leftWidth, borderRect.maxY(), leftStyle); 1010 borders.addBorder(rightVal, BSRight, renderRight, borderRect.maxX() - rightWidth, borderRect.y(), borderRect.maxX(), borderRect.maxY(), rightStyle); 1011 1011 1012 1012 bool antialias = shouldAntialiasLines(graphicsContext); -
trunk/Source/WebCore/rendering/RenderTableCell.h
r108914 r109642 92 92 void updateLogicalWidth(LayoutUnit); 93 93 94 virtual LayoutUnit borderLeft() const;95 virtual LayoutUnit borderRight() const;96 virtual LayoutUnit borderTop() const;97 virtual LayoutUnit borderBottom() const;98 virtual LayoutUnit borderStart() const;99 virtual LayoutUnit borderEnd() const;100 virtual LayoutUnit borderBefore() const;101 virtual LayoutUnit borderAfter() const;94 virtual int borderLeft() const; 95 virtual int borderRight() const; 96 virtual int borderTop() const; 97 virtual int borderBottom() const; 98 virtual int borderStart() const; 99 virtual int borderEnd() const; 100 virtual int borderBefore() const; 101 virtual int borderAfter() const; 102 102 103 103 void collectBorderValues(RenderTable::CollapsedBorderValues&) const; … … 160 160 virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, LayoutRect&, bool fixed = false) const; 161 161 162 LayoutUnit borderHalfLeft(bool outer) const;163 LayoutUnit borderHalfRight(bool outer) const;164 LayoutUnit borderHalfTop(bool outer) const;165 LayoutUnit borderHalfBottom(bool outer) const;166 167 LayoutUnit borderHalfStart(bool outer) const;168 LayoutUnit borderHalfEnd(bool outer) const;169 LayoutUnit borderHalfBefore(bool outer) const;170 LayoutUnit borderHalfAfter(bool outer) const;162 int borderHalfLeft(bool outer) const; 163 int borderHalfRight(bool outer) const; 164 int borderHalfTop(bool outer) const; 165 int borderHalfBottom(bool outer) const; 166 167 int borderHalfStart(bool outer) const; 168 int borderHalfEnd(bool outer) const; 169 int borderHalfBefore(bool outer) const; 170 int borderHalfAfter(bool outer) const; 171 171 172 172 CollapsedBorderValue collapsedStartBorder(IncludeBorderColorOrNot = IncludeBorderColor) const;
Note: See TracChangeset
for help on using the changeset viewer.