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

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

Issue 2702043002: Use LayoutUnit for positioning ellipses (Closed)
Patch Set: bug 693905-2 Created 3 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
« no previous file with comments | « third_party/WebKit/Source/core/layout/line/RootInlineBox.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2006, 2008 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 PositionOfInteriorLineBoxes); 85 PositionOfInteriorLineBoxes);
86 } 86 }
87 87
88 LayoutUnit RootInlineBox::lineHeight() const { 88 LayoutUnit RootInlineBox::lineHeight() const {
89 return boxModelObject().lineHeight( 89 return boxModelObject().lineHeight(
90 isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine, 90 isFirstLineStyle(), isHorizontal() ? HorizontalLine : VerticalLine,
91 PositionOfInteriorLineBoxes); 91 PositionOfInteriorLineBoxes);
92 } 92 }
93 93
94 bool RootInlineBox::lineCanAccommodateEllipsis(bool ltr, 94 bool RootInlineBox::lineCanAccommodateEllipsis(bool ltr,
95 int blockEdge, 95 LayoutUnit blockEdge,
96 int lineBoxEdge, 96 LayoutUnit lineBoxEdge,
97 int ellipsisWidth) { 97 LayoutUnit ellipsisWidth) {
98 // First sanity-check the unoverflowed width of the whole line to see if there 98 // First sanity-check the unoverflowed width of the whole line to see if there
99 // is sufficient room. 99 // is sufficient room.
100 int delta = ltr ? lineBoxEdge - blockEdge : blockEdge - lineBoxEdge; 100 LayoutUnit delta = ltr ? lineBoxEdge - blockEdge : blockEdge - lineBoxEdge;
101 if (logicalWidth() - delta < ellipsisWidth) 101 if (logicalWidth() - delta < ellipsisWidth)
102 return false; 102 return false;
103 103
104 // Next iterate over all the line boxes on the line. If we find a replaced 104 // Next iterate over all the line boxes on the line. If we find a replaced
105 // element that intersects then we refuse to accommodate the ellipsis. 105 // element that intersects then we refuse to accommodate the ellipsis.
106 // Otherwise we're ok. 106 // Otherwise we're ok.
107 return InlineFlowBox::canAccommodateEllipsis(ltr, blockEdge, ellipsisWidth); 107 return InlineFlowBox::canAccommodateEllipsis(ltr, blockEdge, ellipsisWidth);
108 } 108 }
109 109
110 LayoutUnit RootInlineBox::placeEllipsis(const AtomicString& ellipsisStr, 110 LayoutUnit RootInlineBox::placeEllipsis(const AtomicString& ellipsisStr,
111 bool ltr, 111 bool ltr,
112 LayoutUnit blockLeftEdge, 112 LayoutUnit blockLeftEdge,
113 LayoutUnit blockRightEdge, 113 LayoutUnit blockRightEdge,
114 LayoutUnit ellipsisWidth) { 114 LayoutUnit ellipsisWidth) {
115 // Create an ellipsis box. 115 // Create an ellipsis box.
116 EllipsisBox* ellipsisBox = 116 EllipsisBox* ellipsisBox = new EllipsisBox(
117 new EllipsisBox(getLineLayoutItem(), ellipsisStr, this, ellipsisWidth, 117 getLineLayoutItem(), ellipsisStr, this, ellipsisWidth, logicalHeight(),
118 logicalHeight().toFloat(), x().toInt(), y().toInt(), 118 location(), !prevRootBox(), isHorizontal());
119 !prevRootBox(), isHorizontal());
120 119
121 if (!gEllipsisBoxMap) 120 if (!gEllipsisBoxMap)
122 gEllipsisBoxMap = new EllipsisBoxMap(); 121 gEllipsisBoxMap = new EllipsisBoxMap();
123 gEllipsisBoxMap->insert(this, ellipsisBox); 122 gEllipsisBoxMap->insert(this, ellipsisBox);
124 setHasEllipsisBox(true); 123 setHasEllipsisBox(true);
125 124
126 // FIXME: Do we need an RTL version of this? 125 // FIXME: Do we need an RTL version of this?
127 if (ltr && 126 if (ltr &&
128 (logicalLeft() + logicalWidth() + ellipsisWidth) <= blockRightEdge) { 127 (logicalLeft() + logicalWidth() + ellipsisWidth) <= blockRightEdge) {
129 ellipsisBox->setLogicalLeft(logicalLeft() + logicalWidth()); 128 ellipsisBox->setLogicalLeft(logicalLeft() + logicalWidth());
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 } 775 }
777 endBox = nullptr; 776 endBox = nullptr;
778 return nullptr; 777 return nullptr;
779 } 778 }
780 779
781 const char* RootInlineBox::boxName() const { 780 const char* RootInlineBox::boxName() const {
782 return "RootInlineBox"; 781 return "RootInlineBox";
783 } 782 }
784 783
785 } // namespace blink 784 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/line/RootInlineBox.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698