Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableCell.cpp

Issue 1574933002: Changed type of border-width longhands from unsigned to float. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added trivial tests safe to rebaseline to TestExpectations Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 * (C) 1997 Torben Weis (weis@kde.org) 3 * (C) 1997 Torben Weis (weis@kde.org)
4 * (C) 1998 Waldo Bastian (bastian@kde.org) 4 * (C) 1998 Waldo Bastian (bastian@kde.org)
5 * (C) 1999 Lars Knoll (knoll@kde.org) 5 * (C) 1999 Lars Knoll (knoll@kde.org)
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) 6 * (C) 1999 Antti Koivisto (koivisto@kde.org)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 LayoutRect LayoutTableCell::clippedOverflowRectForPaintInvalidation(const Layout BoxModelObject* paintInvalidationContainer, const PaintInvalidationState* paintI nvalidationState) const 318 LayoutRect LayoutTableCell::clippedOverflowRectForPaintInvalidation(const Layout BoxModelObject* paintInvalidationContainer, const PaintInvalidationState* paintI nvalidationState) const
319 { 319 {
320 // If the table grid is dirty, we cannot get reliable information about adjo ining cells, 320 // If the table grid is dirty, we cannot get reliable information about adjo ining cells,
321 // so we ignore outside borders. This should not be a problem because it mea ns that 321 // so we ignore outside borders. This should not be a problem because it mea ns that
322 // the table is going to recalculate the grid, relayout and issue a paint in validation of its current rect, which 322 // the table is going to recalculate the grid, relayout and issue a paint in validation of its current rect, which
323 // includes any outside borders of this cell. 323 // includes any outside borders of this cell.
324 if (!table()->collapseBorders() || table()->needsSectionRecalc()) 324 if (!table()->collapseBorders() || table()->needsSectionRecalc())
325 return LayoutBlockFlow::clippedOverflowRectForPaintInvalidation(paintInv alidationContainer, paintInvalidationState); 325 return LayoutBlockFlow::clippedOverflowRectForPaintInvalidation(paintInv alidationContainer, paintInvalidationState);
326 326
327 bool rtl = !styleForCellFlow().isLeftToRightDirection(); 327 bool rtl = !styleForCellFlow().isLeftToRightDirection();
328 int outlineOutset = style()->outlineOutsetExtent(); 328 LayoutUnit outlineOutset = style()->outlineOutsetExtent();
329 int left = std::max(borderHalfLeft(true), outlineOutset); 329 LayoutUnit left = std::max(borderHalfLeft(true), outlineOutset);
330 int right = std::max(borderHalfRight(true), outlineOutset); 330 LayoutUnit right = std::max(borderHalfRight(true), outlineOutset);
331 int top = std::max(borderHalfTop(true), outlineOutset); 331 LayoutUnit top = std::max(borderHalfTop(true), outlineOutset);
332 int bottom = std::max(borderHalfBottom(true), outlineOutset); 332 LayoutUnit bottom = std::max(borderHalfBottom(true), outlineOutset);
333 if ((left && !rtl) || (right && rtl)) { 333 if ((left && !rtl) || (right && rtl)) {
334 if (LayoutTableCell* before = table()->cellBefore(this)) { 334 if (LayoutTableCell* before = table()->cellBefore(this)) {
335 top = std::max(top, before->borderHalfTop(true)); 335 top = std::max(top, before->borderHalfTop(true));
336 bottom = std::max(bottom, before->borderHalfBottom(true)); 336 bottom = std::max(bottom, before->borderHalfBottom(true));
337 } 337 }
338 } 338 }
339 if ((left && rtl) || (right && !rtl)) { 339 if ((left && rtl) || (right && !rtl)) {
340 if (LayoutTableCell* after = table()->cellAfter(this)) { 340 if (LayoutTableCell* after = table()->cellAfter(this)) {
341 top = std::max(top, after->borderHalfTop(true)); 341 top = std::max(top, after->borderHalfTop(true));
342 bottom = std::max(bottom, after->borderHalfBottom(true)); 342 bottom = std::max(bottom, after->borderHalfBottom(true));
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 790
791 // (9) The table's after border. 791 // (9) The table's after border.
792 result = chooseBorder(result, CollapsedBorderValue(table->style()->borde rAfter(), includeColor ? table->resolveColor(afterColorProperty) : Color(), BTAB LE)); 792 result = chooseBorder(result, CollapsedBorderValue(table->style()->borde rAfter(), includeColor ? table->resolveColor(afterColorProperty) : Color(), BTAB LE));
793 if (!result.exists()) 793 if (!result.exists())
794 return result; 794 return result;
795 } 795 }
796 796
797 return result; 797 return result;
798 } 798 }
799 799
800 int LayoutTableCell::borderLeft() const 800 LayoutUnit LayoutTableCell::borderLeft() const
801 { 801 {
802 return table()->collapseBorders() ? borderHalfLeft(false) : LayoutBlockFlow: :borderLeft(); 802 return table()->collapseBorders() ? borderHalfLeft(false) : LayoutBlockFlow: :borderLeft();
803 } 803 }
804 804
805 int LayoutTableCell::borderRight() const 805 LayoutUnit LayoutTableCell::borderRight() const
806 { 806 {
807 return table()->collapseBorders() ? borderHalfRight(false) : LayoutBlockFlow ::borderRight(); 807 return table()->collapseBorders() ? borderHalfRight(false) : LayoutBlockFlow ::borderRight();
808 } 808 }
809 809
810 int LayoutTableCell::borderTop() const 810 LayoutUnit LayoutTableCell::borderTop() const
811 { 811 {
812 return table()->collapseBorders() ? borderHalfTop(false) : LayoutBlockFlow:: borderTop(); 812 return table()->collapseBorders() ? borderHalfTop(false) : LayoutBlockFlow:: borderTop();
813 } 813 }
814 814
815 int LayoutTableCell::borderBottom() const 815 LayoutUnit LayoutTableCell::borderBottom() const
816 { 816 {
817 return table()->collapseBorders() ? borderHalfBottom(false) : LayoutBlockFlo w::borderBottom(); 817 return table()->collapseBorders() ? borderHalfBottom(false) : LayoutBlockFlo w::borderBottom();
818 } 818 }
819 819
820 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=46191, make the collapsed bord er drawing 820 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=46191, make the collapsed bord er drawing
821 // work with different block flow values instead of being hard-coded to top-to-b ottom. 821 // work with different block flow values instead of being hard-coded to top-to-b ottom.
822 int LayoutTableCell::borderStart() const 822 LayoutUnit LayoutTableCell::borderStart() const
823 { 823 {
824 return table()->collapseBorders() ? borderHalfStart(false) : LayoutBlockFlow ::borderStart(); 824 return table()->collapseBorders() ? borderHalfStart(false) : LayoutBlockFlow ::borderStart();
825 } 825 }
826 826
827 int LayoutTableCell::borderEnd() const 827 LayoutUnit LayoutTableCell::borderEnd() const
828 { 828 {
829 return table()->collapseBorders() ? borderHalfEnd(false) : LayoutBlockFlow:: borderEnd(); 829 return table()->collapseBorders() ? borderHalfEnd(false) : LayoutBlockFlow:: borderEnd();
830 } 830 }
831 831
832 int LayoutTableCell::borderBefore() const 832 LayoutUnit LayoutTableCell::borderBefore() const
833 { 833 {
834 return table()->collapseBorders() ? borderHalfBefore(false) : LayoutBlockFlo w::borderBefore(); 834 return table()->collapseBorders() ? borderHalfBefore(false) : LayoutBlockFlo w::borderBefore();
835 } 835 }
836 836
837 int LayoutTableCell::borderAfter() const 837 LayoutUnit LayoutTableCell::borderAfter() const
838 { 838 {
839 return table()->collapseBorders() ? borderHalfAfter(false) : LayoutBlockFlow ::borderAfter(); 839 return table()->collapseBorders() ? borderHalfAfter(false) : LayoutBlockFlow ::borderAfter();
840 } 840 }
841 841
842 int LayoutTableCell::borderHalfLeft(bool outer) const 842 LayoutUnit LayoutTableCell::borderHalfLeft(bool outer) const
843 { 843 {
844 const ComputedStyle& styleForCellFlow = this->styleForCellFlow(); 844 const ComputedStyle& styleForCellFlow = this->styleForCellFlow();
845 if (styleForCellFlow.isHorizontalWritingMode()) 845 if (styleForCellFlow.isHorizontalWritingMode())
846 return styleForCellFlow.isLeftToRightDirection() ? borderHalfStart(outer ) : borderHalfEnd(outer); 846 return styleForCellFlow.isLeftToRightDirection() ? borderHalfStart(outer ) : borderHalfEnd(outer);
847 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfAfter(outer ) : borderHalfBefore(outer); 847 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfAfter(outer ) : borderHalfBefore(outer);
848 } 848 }
849 849
850 int LayoutTableCell::borderHalfRight(bool outer) const 850 LayoutUnit LayoutTableCell::borderHalfRight(bool outer) const
851 { 851 {
852 const ComputedStyle& styleForCellFlow = this->styleForCellFlow(); 852 const ComputedStyle& styleForCellFlow = this->styleForCellFlow();
853 if (styleForCellFlow.isHorizontalWritingMode()) 853 if (styleForCellFlow.isHorizontalWritingMode())
854 return styleForCellFlow.isLeftToRightDirection() ? borderHalfEnd(outer) : borderHalfStart(outer); 854 return styleForCellFlow.isLeftToRightDirection() ? borderHalfEnd(outer) : borderHalfStart(outer);
855 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfBefore(oute r) : borderHalfAfter(outer); 855 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfBefore(oute r) : borderHalfAfter(outer);
856 } 856 }
857 857
858 int LayoutTableCell::borderHalfTop(bool outer) const 858 LayoutUnit LayoutTableCell::borderHalfTop(bool outer) const
859 { 859 {
860 const ComputedStyle& styleForCellFlow = this->styleForCellFlow(); 860 const ComputedStyle& styleForCellFlow = this->styleForCellFlow();
861 if (styleForCellFlow.isHorizontalWritingMode()) 861 if (styleForCellFlow.isHorizontalWritingMode())
862 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfAfter(o uter) : borderHalfBefore(outer); 862 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfAfter(o uter) : borderHalfBefore(outer);
863 return styleForCellFlow.isLeftToRightDirection() ? borderHalfStart(outer) : borderHalfEnd(outer); 863 return styleForCellFlow.isLeftToRightDirection() ? borderHalfStart(outer) : borderHalfEnd(outer);
864 } 864 }
865 865
866 int LayoutTableCell::borderHalfBottom(bool outer) const 866 LayoutUnit LayoutTableCell::borderHalfBottom(bool outer) const
867 { 867 {
868 const ComputedStyle& styleForCellFlow = this->styleForCellFlow(); 868 const ComputedStyle& styleForCellFlow = this->styleForCellFlow();
869 if (styleForCellFlow.isHorizontalWritingMode()) 869 if (styleForCellFlow.isHorizontalWritingMode())
870 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfBefore( outer) : borderHalfAfter(outer); 870 return styleForCellFlow.isFlippedBlocksWritingMode() ? borderHalfBefore( outer) : borderHalfAfter(outer);
871 return styleForCellFlow.isLeftToRightDirection() ? borderHalfEnd(outer) : bo rderHalfStart(outer); 871 return styleForCellFlow.isLeftToRightDirection() ? borderHalfEnd(outer) : bo rderHalfStart(outer);
872 } 872 }
873 873
874 int LayoutTableCell::borderHalfStart(bool outer) const 874 LayoutUnit LayoutTableCell::borderHalfStart(bool outer) const
875 { 875 {
876 CollapsedBorderValue border = computeCollapsedStartBorder(DoNotIncludeBorder Color); 876 CollapsedBorderValue border = computeCollapsedStartBorder(DoNotIncludeBorder Color);
877 if (border.exists()) 877 if (border.exists())
878 return (border.width() + ((styleForCellFlow().isLeftToRightDirection() ^ outer) ? 1 : 0)) / 2; // Give the extra pixel to top and left. 878 return (border.width() + ((styleForCellFlow().isLeftToRightDirection() ^ outer) ? 1 : 0)) / 2; // Give the extra pixel to top and left.
879 return 0; 879 return 0;
880 } 880 }
881 881
882 int LayoutTableCell::borderHalfEnd(bool outer) const 882 LayoutUnit LayoutTableCell::borderHalfEnd(bool outer) const
883 { 883 {
884 CollapsedBorderValue border = computeCollapsedEndBorder(DoNotIncludeBorderCo lor); 884 CollapsedBorderValue border = computeCollapsedEndBorder(DoNotIncludeBorderCo lor);
885 if (border.exists()) 885 if (border.exists())
886 return (border.width() + ((styleForCellFlow().isLeftToRightDirection() ^ outer) ? 0 : 1)) / 2; 886 return (border.width() + ((styleForCellFlow().isLeftToRightDirection() ^ outer) ? 0 : 1)) / 2;
887 return 0; 887 return 0;
888 } 888 }
889 889
890 int LayoutTableCell::borderHalfBefore(bool outer) const 890 LayoutUnit LayoutTableCell::borderHalfBefore(bool outer) const
891 { 891 {
892 CollapsedBorderValue border = computeCollapsedBeforeBorder(DoNotIncludeBorde rColor); 892 CollapsedBorderValue border = computeCollapsedBeforeBorder(DoNotIncludeBorde rColor);
893 if (border.exists()) 893 if (border.exists())
894 return (border.width() + ((styleForCellFlow().isFlippedBlocksWritingMode () ^ outer) ? 0 : 1)) / 2; // Give the extra pixel to top and left. 894 return (border.width() + ((styleForCellFlow().isFlippedBlocksWritingMode () ^ outer) ? 0 : 1)) / 2; // Give the extra pixel to top and left.
895 return 0; 895 return 0;
896 } 896 }
897 897
898 int LayoutTableCell::borderHalfAfter(bool outer) const 898 LayoutUnit LayoutTableCell::borderHalfAfter(bool outer) const
899 { 899 {
900 CollapsedBorderValue border = computeCollapsedAfterBorder(DoNotIncludeBorder Color); 900 CollapsedBorderValue border = computeCollapsedAfterBorder(DoNotIncludeBorder Color);
901 if (border.exists()) 901 if (border.exists())
902 return (border.width() + ((styleForCellFlow().isFlippedBlocksWritingMode () ^ outer) ? 1 : 0)) / 2; 902 return (border.width() + ((styleForCellFlow().isFlippedBlocksWritingMode () ^ outer) ? 1 : 0)) / 2;
903 return 0; 903 return 0;
904 } 904 }
905 905
906 void LayoutTableCell::paint(const PaintInfo& paintInfo, const LayoutPoint& paint Offset) const 906 void LayoutTableCell::paint(const PaintInfo& paintInfo, const LayoutPoint& paint Offset) const
907 { 907 {
908 TableCellPainter(*this).paint(paintInfo, paintOffset); 908 TableCellPainter(*this).paint(paintInfo, paintOffset);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 bool LayoutTableCell::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localR ect) const 1017 bool LayoutTableCell::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localR ect) const
1018 { 1018 {
1019 // If this object has layer, the area of collapsed borders should be transpa rent 1019 // If this object has layer, the area of collapsed borders should be transpa rent
1020 // to expose the collapsed borders painted on the underlying layer. 1020 // to expose the collapsed borders painted on the underlying layer.
1021 if (hasLayer() && table()->collapseBorders()) 1021 if (hasLayer() && table()->collapseBorders())
1022 return false; 1022 return false;
1023 return LayoutBlockFlow::backgroundIsKnownToBeOpaqueInRect(localRect); 1023 return LayoutBlockFlow::backgroundIsKnownToBeOpaqueInRect(localRect);
1024 } 1024 }
1025 1025
1026 } // namespace blink 1026 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCell.h ('k') | third_party/WebKit/Source/core/paint/BoxPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698