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

Side by Side Diff: Source/core/rendering/RenderTableCell.cpp

Issue 669803002: Optimize for horizontal writing mode (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: w compile fix Created 6 years, 2 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 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 return result; 850 return result;
851 } 851 }
852 852
853 return result; 853 return result;
854 } 854 }
855 855
856 inline CollapsedBorderValue RenderTableCell::cachedCollapsedLeftBorder(const Ren derStyle* styleForCellFlow) const 856 inline CollapsedBorderValue RenderTableCell::cachedCollapsedLeftBorder(const Ren derStyle* styleForCellFlow) const
857 { 857 {
858 if (styleForCellFlow->isHorizontalWritingMode()) 858 if (styleForCellFlow->isHorizontalWritingMode())
859 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCol lapsedBorder(this, CBSStart) : section()->cachedCollapsedBorder(this, CBSEnd); 859 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCol lapsedBorder(this, CBSStart) : section()->cachedCollapsedBorder(this, CBSEnd);
860 return styleForCellFlow->isFlippedBlocksWritingMode() ? section()->cachedCol lapsedBorder(this, CBSAfter) : section()->cachedCollapsedBorder(this, CBSBefore) ; 860 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? section()->cache dCollapsedBorder(this, CBSAfter) : section()->cachedCollapsedBorder(this, CBSBef ore);
861 } 861 }
862 862
863 inline CollapsedBorderValue RenderTableCell::cachedCollapsedRightBorder(const Re nderStyle* styleForCellFlow) const 863 inline CollapsedBorderValue RenderTableCell::cachedCollapsedRightBorder(const Re nderStyle* styleForCellFlow) const
864 { 864 {
865 if (styleForCellFlow->isHorizontalWritingMode()) 865 if (styleForCellFlow->isHorizontalWritingMode())
866 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCol lapsedBorder(this, CBSEnd) : section()->cachedCollapsedBorder(this, CBSStart); 866 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCol lapsedBorder(this, CBSEnd) : section()->cachedCollapsedBorder(this, CBSStart);
867 return styleForCellFlow->isFlippedBlocksWritingMode() ? section()->cachedCol lapsedBorder(this, CBSBefore) : section()->cachedCollapsedBorder(this, CBSAfter) ; 867 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? section()->cache dCollapsedBorder(this, CBSBefore) : section()->cachedCollapsedBorder(this, CBSAf ter);
868 } 868 }
869 869
870 inline CollapsedBorderValue RenderTableCell::cachedCollapsedTopBorder(const Rend erStyle* styleForCellFlow) const 870 inline CollapsedBorderValue RenderTableCell::cachedCollapsedTopBorder(const Rend erStyle* styleForCellFlow) const
871 { 871 {
872 if (styleForCellFlow->isHorizontalWritingMode()) 872 if (styleForCellFlow->isHorizontalWritingMode())
873 return styleForCellFlow->isFlippedBlocksWritingMode() ? section()->cache dCollapsedBorder(this, CBSAfter) : section()->cachedCollapsedBorder(this, CBSBef ore); 873 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? section()->c achedCollapsedBorder(this, CBSAfter) : section()->cachedCollapsedBorder(this, CB SBefore);
874 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCollaps edBorder(this, CBSStart) : section()->cachedCollapsedBorder(this, CBSEnd); 874 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCollaps edBorder(this, CBSStart) : section()->cachedCollapsedBorder(this, CBSEnd);
875 } 875 }
876 876
877 inline CollapsedBorderValue RenderTableCell::cachedCollapsedBottomBorder(const R enderStyle* styleForCellFlow) const 877 inline CollapsedBorderValue RenderTableCell::cachedCollapsedBottomBorder(const R enderStyle* styleForCellFlow) const
878 { 878 {
879 if (styleForCellFlow->isHorizontalWritingMode()) 879 if (styleForCellFlow->isHorizontalWritingMode())
880 return styleForCellFlow->isFlippedBlocksWritingMode() ? section()->cache dCollapsedBorder(this, CBSBefore) : section()->cachedCollapsedBorder(this, CBSAf ter); 880 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? section()->c achedCollapsedBorder(this, CBSBefore) : section()->cachedCollapsedBorder(this, C BSAfter);
881 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCollaps edBorder(this, CBSEnd) : section()->cachedCollapsedBorder(this, CBSStart); 881 return styleForCellFlow->isLeftToRightDirection() ? section()->cachedCollaps edBorder(this, CBSEnd) : section()->cachedCollapsedBorder(this, CBSStart);
882 } 882 }
883 883
884 int RenderTableCell::borderLeft() const 884 int RenderTableCell::borderLeft() const
885 { 885 {
886 return table()->collapseBorders() ? borderHalfLeft(false) : RenderBlockFlow: :borderLeft(); 886 return table()->collapseBorders() ? borderHalfLeft(false) : RenderBlockFlow: :borderLeft();
887 } 887 }
888 888
889 int RenderTableCell::borderRight() const 889 int RenderTableCell::borderRight() const
890 { 890 {
(...skipping 30 matching lines...) Expand all
921 int RenderTableCell::borderAfter() const 921 int RenderTableCell::borderAfter() const
922 { 922 {
923 return table()->collapseBorders() ? borderHalfAfter(false) : RenderBlockFlow ::borderAfter(); 923 return table()->collapseBorders() ? borderHalfAfter(false) : RenderBlockFlow ::borderAfter();
924 } 924 }
925 925
926 int RenderTableCell::borderHalfLeft(bool outer) const 926 int RenderTableCell::borderHalfLeft(bool outer) const
927 { 927 {
928 const RenderStyle* styleForCellFlow = this->styleForCellFlow(); 928 const RenderStyle* styleForCellFlow = this->styleForCellFlow();
929 if (styleForCellFlow->isHorizontalWritingMode()) 929 if (styleForCellFlow->isHorizontalWritingMode())
930 return styleForCellFlow->isLeftToRightDirection() ? borderHalfStart(oute r) : borderHalfEnd(outer); 930 return styleForCellFlow->isLeftToRightDirection() ? borderHalfStart(oute r) : borderHalfEnd(outer);
931 return styleForCellFlow->isFlippedBlocksWritingMode() ? borderHalfAfter(oute r) : borderHalfBefore(outer); 931 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? borderHalfAfter( outer) : borderHalfBefore(outer);
932 } 932 }
933 933
934 int RenderTableCell::borderHalfRight(bool outer) const 934 int RenderTableCell::borderHalfRight(bool outer) const
935 { 935 {
936 const RenderStyle* styleForCellFlow = this->styleForCellFlow(); 936 const RenderStyle* styleForCellFlow = this->styleForCellFlow();
937 if (styleForCellFlow->isHorizontalWritingMode()) 937 if (styleForCellFlow->isHorizontalWritingMode())
938 return styleForCellFlow->isLeftToRightDirection() ? borderHalfEnd(outer) : borderHalfStart(outer); 938 return styleForCellFlow->isLeftToRightDirection() ? borderHalfEnd(outer) : borderHalfStart(outer);
939 return styleForCellFlow->isFlippedBlocksWritingMode() ? borderHalfBefore(out er) : borderHalfAfter(outer); 939 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? borderHalfBefore (outer) : borderHalfAfter(outer);
940 } 940 }
941 941
942 int RenderTableCell::borderHalfTop(bool outer) const 942 int RenderTableCell::borderHalfTop(bool outer) const
943 { 943 {
944 const RenderStyle* styleForCellFlow = this->styleForCellFlow(); 944 const RenderStyle* styleForCellFlow = this->styleForCellFlow();
945 if (styleForCellFlow->isHorizontalWritingMode()) 945 if (styleForCellFlow->isHorizontalWritingMode())
946 return styleForCellFlow->isFlippedBlocksWritingMode() ? borderHalfAfter( outer) : borderHalfBefore(outer); 946 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? borderHalfAf ter(outer) : borderHalfBefore(outer);
947 return styleForCellFlow->isLeftToRightDirection() ? borderHalfStart(outer) : borderHalfEnd(outer); 947 return styleForCellFlow->isLeftToRightDirection() ? borderHalfStart(outer) : borderHalfEnd(outer);
948 } 948 }
949 949
950 int RenderTableCell::borderHalfBottom(bool outer) const 950 int RenderTableCell::borderHalfBottom(bool outer) const
951 { 951 {
952 const RenderStyle* styleForCellFlow = this->styleForCellFlow(); 952 const RenderStyle* styleForCellFlow = this->styleForCellFlow();
953 if (styleForCellFlow->isHorizontalWritingMode()) 953 if (styleForCellFlow->isHorizontalWritingMode())
954 return styleForCellFlow->isFlippedBlocksWritingMode() ? borderHalfBefore (outer) : borderHalfAfter(outer); 954 return styleForCellFlow->slowIsFlippedBlocksWritingMode() ? borderHalfBe fore(outer) : borderHalfAfter(outer);
955 return styleForCellFlow->isLeftToRightDirection() ? borderHalfEnd(outer) : b orderHalfStart(outer); 955 return styleForCellFlow->isLeftToRightDirection() ? borderHalfEnd(outer) : b orderHalfStart(outer);
956 } 956 }
957 957
958 int RenderTableCell::borderHalfStart(bool outer) const 958 int RenderTableCell::borderHalfStart(bool outer) const
959 { 959 {
960 CollapsedBorderValue border = collapsedStartBorder(DoNotIncludeBorderColor); 960 CollapsedBorderValue border = collapsedStartBorder(DoNotIncludeBorderColor);
961 if (border.exists()) 961 if (border.exists())
962 return (border.width() + ((styleForCellFlow()->isLeftToRightDirection() ^ outer) ? 1 : 0)) / 2; // Give the extra pixel to top and left. 962 return (border.width() + ((styleForCellFlow()->isLeftToRightDirection() ^ outer) ? 1 : 0)) / 2; // Give the extra pixel to top and left.
963 return 0; 963 return 0;
964 } 964 }
965 965
966 int RenderTableCell::borderHalfEnd(bool outer) const 966 int RenderTableCell::borderHalfEnd(bool outer) const
967 { 967 {
968 CollapsedBorderValue border = collapsedEndBorder(DoNotIncludeBorderColor); 968 CollapsedBorderValue border = collapsedEndBorder(DoNotIncludeBorderColor);
969 if (border.exists()) 969 if (border.exists())
970 return (border.width() + ((styleForCellFlow()->isLeftToRightDirection() ^ outer) ? 0 : 1)) / 2; 970 return (border.width() + ((styleForCellFlow()->isLeftToRightDirection() ^ outer) ? 0 : 1)) / 2;
971 return 0; 971 return 0;
972 } 972 }
973 973
974 int RenderTableCell::borderHalfBefore(bool outer) const 974 int RenderTableCell::borderHalfBefore(bool outer) const
975 { 975 {
976 CollapsedBorderValue border = collapsedBeforeBorder(DoNotIncludeBorderColor) ; 976 CollapsedBorderValue border = collapsedBeforeBorder(DoNotIncludeBorderColor) ;
977 if (border.exists()) 977 if (border.exists())
978 return (border.width() + ((styleForCellFlow()->isFlippedBlocksWritingMod e() ^ outer) ? 0 : 1)) / 2; // Give the extra pixel to top and left. 978 return (border.width() + ((styleForCellFlow()->slowIsFlippedBlocksWritin gMode() ^ outer) ? 0 : 1)) / 2; // Give the extra pixel to top and left.
979 return 0; 979 return 0;
980 } 980 }
981 981
982 int RenderTableCell::borderHalfAfter(bool outer) const 982 int RenderTableCell::borderHalfAfter(bool outer) const
983 { 983 {
984 CollapsedBorderValue border = collapsedAfterBorder(DoNotIncludeBorderColor); 984 CollapsedBorderValue border = collapsedAfterBorder(DoNotIncludeBorderColor);
985 if (border.exists()) 985 if (border.exists())
986 return (border.width() + ((styleForCellFlow()->isFlippedBlocksWritingMod e() ^ outer) ? 1 : 0)) / 2; 986 return (border.width() + ((styleForCellFlow()->slowIsFlippedBlocksWritin gMode() ^ outer) ? 1 : 0)) / 2;
987 return 0; 987 return 0;
988 } 988 }
989 989
990 void RenderTableCell::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset ) 990 void RenderTableCell::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset )
991 { 991 {
992 ASSERT(paintInfo.phase != PaintPhaseCollapsedTableBorders); 992 ASSERT(paintInfo.phase != PaintPhaseCollapsedTableBorders);
993 RenderBlock::paint(paintInfo, paintOffset); 993 RenderBlock::paint(paintInfo, paintOffset);
994 } 994 }
995 995
996 static EBorderStyle collapsedBorderStyle(EBorderStyle style) 996 static EBorderStyle collapsedBorderStyle(EBorderStyle style)
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 1259
1260 RenderTableCell* RenderTableCell::createAnonymousWithParentRenderer(const Render Object* parent) 1260 RenderTableCell* RenderTableCell::createAnonymousWithParentRenderer(const Render Object* parent)
1261 { 1261 {
1262 RenderTableCell* newCell = RenderTableCell::createAnonymous(&parent->documen t()); 1262 RenderTableCell* newCell = RenderTableCell::createAnonymous(&parent->documen t());
1263 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay( parent->style(), TABLE_CELL); 1263 RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay( parent->style(), TABLE_CELL);
1264 newCell->setStyle(newStyle.release()); 1264 newCell->setStyle(newStyle.release());
1265 return newCell; 1265 return newCell;
1266 } 1266 }
1267 1267
1268 } // namespace blink 1268 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698