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

Side by Side Diff: Source/core/layout/line/InlineFlowBox.cpp

Issue 1183863003: Remove enclosingLayoutRect calls per FIXME. These are hot in profiles. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: remove some toFloat calls (and subsequent reverse conversions), per szager Created 5 years, 6 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 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
(...skipping 879 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 ASSERT(!m_overflow); 890 ASSERT(!m_overflow);
891 return; 891 return;
892 } 892 }
893 893
894 if (m_overflow) 894 if (m_overflow)
895 m_overflow.clear(); 895 m_overflow.clear();
896 896
897 // Visual overflow just includes overflow for stuff we need to issues paint invalidations for ourselves. Self-painting layers are ignored. 897 // Visual overflow just includes overflow for stuff we need to issues paint invalidations for ourselves. Self-painting layers are ignored.
898 // Layout overflow is used to determine scrolling extent, so it still includ es child layers and also factors in 898 // Layout overflow is used to determine scrolling extent, so it still includ es child layers and also factors in
899 // transforms, relative positioning, etc. 899 // transforms, relative positioning, etc.
900 // FIXME: the call to enclosingLayoutRect() below is temporary and should be removed once 900 LayoutRect logicalLayoutOverflow(logicalFrameRectIncludingLineHeight(lineTop , lineBottom));
901 // the transition to LayoutUnit-based types is complete (crbug.com/321237)
902 LayoutRect logicalLayoutOverflow(enclosingLayoutRect(logicalFrameRectIncludi ngLineHeight(lineTop, lineBottom)));
903 LayoutRect logicalVisualOverflow(logicalLayoutOverflow); 901 LayoutRect logicalVisualOverflow(logicalLayoutOverflow);
904 902
905 addBoxShadowVisualOverflow(logicalVisualOverflow); 903 addBoxShadowVisualOverflow(logicalVisualOverflow);
906 addBorderOutsetVisualOverflow(logicalVisualOverflow); 904 addBorderOutsetVisualOverflow(logicalVisualOverflow);
907 addOutlineVisualOverflow(logicalVisualOverflow); 905 addOutlineVisualOverflow(logicalVisualOverflow);
908 906
909 for (InlineBox* curr = firstChild(); curr; curr = curr->nextOnLine()) { 907 for (InlineBox* curr = firstChild(); curr; curr = curr->nextOnLine()) {
910 if (curr->layoutObject().isOutOfFlowPositioned()) 908 if (curr->layoutObject().isOutOfFlowPositioned())
911 continue; // Positioned placeholders don't affect calculations. 909 continue; // Positioned placeholders don't affect calculations.
912 910
913 if (curr->layoutObject().isText()) { 911 if (curr->layoutObject().isText()) {
914 InlineTextBox* text = toInlineTextBox(curr); 912 InlineTextBox* text = toInlineTextBox(curr);
915 LayoutText& rt = text->layoutObject(); 913 LayoutText& rt = text->layoutObject();
916 if (rt.isBR()) 914 if (rt.isBR())
917 continue; 915 continue;
918 // FIXME: the call to enclosingLayoutRect() below is temporary and s hould be removed once 916 LayoutRect textBoxOverflow(text->logicalFrameRect());
919 // the transition to LayoutUnit-based types is complete (crbug.com/3 21237)
920 LayoutRect textBoxOverflow(enclosingLayoutRect(text->logicalFrameRec t()));
921 addTextBoxVisualOverflow(text, textBoxDataMap, textBoxOverflow); 917 addTextBoxVisualOverflow(text, textBoxDataMap, textBoxOverflow);
922 logicalVisualOverflow.unite(textBoxOverflow); 918 logicalVisualOverflow.unite(textBoxOverflow);
923 } else if (curr->layoutObject().isLayoutInline()) { 919 } else if (curr->layoutObject().isLayoutInline()) {
924 InlineFlowBox* flow = toInlineFlowBox(curr); 920 InlineFlowBox* flow = toInlineFlowBox(curr);
925 flow->computeOverflow(lineTop, lineBottom, textBoxDataMap); 921 flow->computeOverflow(lineTop, lineBottom, textBoxDataMap);
926 if (!flow->boxModelObject()->hasSelfPaintingLayer()) 922 if (!flow->boxModelObject()->hasSelfPaintingLayer())
927 logicalVisualOverflow.unite(flow->logicalVisualOverflowRect(line Top, lineBottom)); 923 logicalVisualOverflow.unite(flow->logicalVisualOverflowRect(line Top, lineBottom));
928 LayoutRect childLayoutOverflow = flow->logicalLayoutOverflowRect(lin eTop, lineBottom); 924 LayoutRect childLayoutOverflow = flow->logicalLayoutOverflowRect(lin eTop, lineBottom);
929 childLayoutOverflow.move(flow->boxModelObject()->relativePositionLog icalOffset()); 925 childLayoutOverflow.move(flow->boxModelObject()->relativePositionLog icalOffset());
930 logicalLayoutOverflow.unite(childLayoutOverflow); 926 logicalLayoutOverflow.unite(childLayoutOverflow);
(...skipping 22 matching lines...) Expand all
953 return; 949 return;
954 950
955 if (!m_overflow) 951 if (!m_overflow)
956 m_overflow = adoptPtr(new OverflowModel(frameBox, frameBox)); 952 m_overflow = adoptPtr(new OverflowModel(frameBox, frameBox));
957 953
958 m_overflow->setVisualOverflow(rect); 954 m_overflow->setVisualOverflow(rect);
959 } 955 }
960 956
961 void InlineFlowBox::setOverflowFromLogicalRects(const LayoutRect& logicalLayoutO verflow, const LayoutRect& logicalVisualOverflow, LayoutUnit lineTop, LayoutUnit lineBottom) 957 void InlineFlowBox::setOverflowFromLogicalRects(const LayoutRect& logicalLayoutO verflow, const LayoutRect& logicalVisualOverflow, LayoutUnit lineTop, LayoutUnit lineBottom)
962 { 958 {
963 // FIXME: the call to enclosingLayoutRect() below is temporary and should be removed once 959 LayoutRect frameBox = frameRectIncludingLineHeight(lineTop, lineBottom);
964 // the transition to LayoutUnit-based types is complete (crbug.com/321237)
965 LayoutRect frameBox = enclosingLayoutRect(frameRectIncludingLineHeight(lineT op, lineBottom));
966 960
967 LayoutRect layoutOverflow(isHorizontal() ? logicalLayoutOverflow : logicalLa youtOverflow.transposedRect()); 961 LayoutRect layoutOverflow(isHorizontal() ? logicalLayoutOverflow : logicalLa youtOverflow.transposedRect());
968 setLayoutOverflow(layoutOverflow, frameBox); 962 setLayoutOverflow(layoutOverflow, frameBox);
969 963
970 LayoutRect visualOverflow(isHorizontal() ? logicalVisualOverflow : logicalVi sualOverflow.transposedRect()); 964 LayoutRect visualOverflow(isHorizontal() ? logicalVisualOverflow : logicalVi sualOverflow.transposedRect());
971 setVisualOverflow(visualOverflow, frameBox); 965 setVisualOverflow(visualOverflow, frameBox);
972 } 966 }
973 967
974 bool InlineFlowBox::nodeAtPoint(HitTestResult& result, const HitTestLocation& lo cationInContainer, const LayoutPoint& accumulatedOffset, LayoutUnit lineTop, Lay outUnit lineBottom) 968 bool InlineFlowBox::nodeAtPoint(HitTestResult& result, const HitTestLocation& lo cationInContainer, const LayoutPoint& accumulatedOffset, LayoutUnit lineTop, Lay outUnit lineBottom)
975 { 969 {
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 ASSERT(child->prevOnLine() == prev); 1305 ASSERT(child->prevOnLine() == prev);
1312 prev = child; 1306 prev = child;
1313 } 1307 }
1314 ASSERT(prev == m_lastChild); 1308 ASSERT(prev == m_lastChild);
1315 #endif 1309 #endif
1316 } 1310 }
1317 1311
1318 #endif 1312 #endif
1319 1313
1320 } // namespace blink 1314 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/line/InlineFlowBox.h ('k') | Source/core/layout/svg/line/SVGRootInlineBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698