Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2000 Dirk Mueller (mueller@kde.org) | 3 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
| 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 1921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1932 float width = isHorizontal ? logicalRightSide - logicalLeftSide | 1932 float width = isHorizontal ? logicalRightSide - logicalLeftSide |
| 1933 : lastTextBox()->logicalBottom() - x; | 1933 : lastTextBox()->logicalBottom() - x; |
| 1934 float height = isHorizontal ? lastTextBox()->logicalBottom() - y | 1934 float height = isHorizontal ? lastTextBox()->logicalBottom() - y |
| 1935 : logicalRightSide - logicalLeftSide; | 1935 : logicalRightSide - logicalLeftSide; |
| 1936 result = enclosingLayoutRect(FloatRect(x, y, width, height)); | 1936 result = enclosingLayoutRect(FloatRect(x, y, width, height)); |
| 1937 } | 1937 } |
| 1938 | 1938 |
| 1939 return result; | 1939 return result; |
| 1940 } | 1940 } |
| 1941 | 1941 |
| 1942 static int visualOverflowAdjustmentForAscent(const ComputedStyle& style) { | |
| 1943 return style.font() | |
| 1944 .primaryFont() | |
| 1945 ->getFontMetrics() | |
| 1946 .visualOverflowAdjustmentForAscent(); | |
| 1947 } | |
| 1948 | |
| 1949 static int visualOverflowAdjustmentForDescent(const ComputedStyle& style) { | |
| 1950 return style.font() | |
| 1951 .primaryFont() | |
| 1952 ->getFontMetrics() | |
| 1953 .visualOverflowAdjustmentForDescent(); | |
| 1954 } | |
| 1955 | |
| 1942 LayoutRect LayoutText::visualOverflowRect() const { | 1956 LayoutRect LayoutText::visualOverflowRect() const { |
| 1943 if (!firstTextBox()) | 1957 if (!firstTextBox()) |
| 1944 return LayoutRect(); | 1958 return LayoutRect(); |
| 1945 | 1959 |
| 1946 // Return the width of the minimal left side and the maximal right side. | 1960 // Return the width of the minimal left side and the maximal right side. |
| 1947 LayoutUnit logicalLeftSide = LayoutUnit::max(); | 1961 LayoutUnit logicalLeftSide = LayoutUnit::max(); |
| 1948 LayoutUnit logicalRightSide = LayoutUnit::min(); | 1962 LayoutUnit logicalRightSide = LayoutUnit::min(); |
| 1949 for (InlineTextBox* curr = firstTextBox(); curr; curr = curr->nextTextBox()) { | 1963 for (InlineTextBox* curr = firstTextBox(); curr; curr = curr->nextTextBox()) { |
| 1950 LayoutRect logicalVisualOverflow = curr->logicalOverflowRect(); | 1964 LayoutRect logicalVisualOverflow = curr->logicalOverflowRect(); |
| 1951 logicalLeftSide = std::min(logicalLeftSide, logicalVisualOverflow.x()); | 1965 logicalLeftSide = std::min(logicalLeftSide, logicalVisualOverflow.x()); |
| 1952 logicalRightSide = std::max(logicalRightSide, logicalVisualOverflow.maxX()); | 1966 logicalRightSide = std::max(logicalRightSide, logicalVisualOverflow.maxX()); |
| 1953 } | 1967 } |
| 1954 | 1968 |
| 1955 LayoutUnit logicalTop = firstTextBox()->logicalTopVisualOverflow(); | 1969 LayoutUnit logicalTop = firstTextBox()->logicalTopVisualOverflow(); |
| 1956 LayoutUnit logicalWidth = logicalRightSide - logicalLeftSide; | 1970 LayoutUnit logicalWidth = logicalRightSide - logicalLeftSide; |
| 1957 LayoutUnit logicalHeight = | 1971 LayoutUnit logicalHeight = |
| 1958 lastTextBox()->logicalBottomVisualOverflow() - logicalTop; | 1972 lastTextBox()->logicalBottomVisualOverflow() - logicalTop; |
| 1959 | 1973 |
| 1974 const auto& firstStyle = styleRef(firstTextBox()->isFirstLineStyle()); | |
|
eae
2017/04/07 16:34:56
If I understand the logic right you are inflating
Xianzhu
2017/04/07 17:27:11
This won't work because
1. in many cases floatAsce
| |
| 1975 int ascentAdjustment = visualOverflowAdjustmentForAscent(firstStyle); | |
| 1976 int descentAdjustment = visualOverflowAdjustmentForDescent(firstStyle); | |
| 1977 if (lastTextBox()->isFirstLineStyle() != firstTextBox()->isFirstLineStyle()) { | |
| 1978 const auto& lastStyle = styleRef(lastTextBox()->isFirstLineStyle()); | |
|
eae
2017/04/07 16:34:56
The names here are bad. It's not really an ascentA
Xianzhu
2017/04/07 17:27:11
Renamed visualOverflowAdjustmentXxx to visualOverf
| |
| 1979 ascentAdjustment = std::max(ascentAdjustment, | |
| 1980 visualOverflowAdjustmentForAscent(lastStyle)); | |
| 1981 descentAdjustment = std::max(descentAdjustment, | |
| 1982 visualOverflowAdjustmentForDescent(lastStyle)); | |
| 1983 } | |
| 1984 logicalTop -= ascentAdjustment; | |
| 1985 logicalHeight += ascentAdjustment + descentAdjustment; | |
| 1986 | |
| 1960 LayoutRect rect(logicalLeftSide, logicalTop, logicalWidth, logicalHeight); | 1987 LayoutRect rect(logicalLeftSide, logicalTop, logicalWidth, logicalHeight); |
| 1961 if (!style()->isHorizontalWritingMode()) | 1988 if (!style()->isHorizontalWritingMode()) |
| 1962 rect = rect.transposedRect(); | 1989 rect = rect.transposedRect(); |
| 1963 return rect; | 1990 return rect; |
| 1964 } | 1991 } |
| 1965 | 1992 |
| 1966 LayoutRect LayoutText::localVisualRect() const { | 1993 LayoutRect LayoutText::localVisualRect() const { |
| 1967 if (style()->visibility() != EVisibility::kVisible) | 1994 if (style()->visibility() != EVisibility::kVisible) |
| 1968 return LayoutRect(); | 1995 return LayoutRect(); |
| 1969 | 1996 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2092 LayoutRect rect = LayoutRect( | 2119 LayoutRect rect = LayoutRect( |
| 2093 IntRect(firstRunX(), firstRunY(), linesBox.width(), linesBox.height())); | 2120 IntRect(firstRunX(), firstRunY(), linesBox.width(), linesBox.height())); |
| 2094 LayoutBlock* block = containingBlock(); | 2121 LayoutBlock* block = containingBlock(); |
| 2095 if (block && hasTextBoxes()) | 2122 if (block && hasTextBoxes()) |
| 2096 block->adjustChildDebugRect(rect); | 2123 block->adjustChildDebugRect(rect); |
| 2097 | 2124 |
| 2098 return rect; | 2125 return rect; |
| 2099 } | 2126 } |
| 2100 | 2127 |
| 2101 } // namespace blink | 2128 } // namespace blink |
| OLD | NEW |