OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ight reserved. |
4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google Inc. All rights reserved. |
5 * Copyright (C) 2014 Adobe Systems Inc. | 5 * Copyright (C) 2014 Adobe Systems Inc. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 21 matching lines...) Expand all Loading... |
32 void TrailingObjects::updateMidpointsForTrailingObjects(LineMidpointState& lineM
idpointState, const InlineIterator& lBreak, CollapseFirstSpaceOrNot collapseFirs
tSpace) | 32 void TrailingObjects::updateMidpointsForTrailingObjects(LineMidpointState& lineM
idpointState, const InlineIterator& lBreak, CollapseFirstSpaceOrNot collapseFirs
tSpace) |
33 { | 33 { |
34 if (!m_whitespace) | 34 if (!m_whitespace) |
35 return; | 35 return; |
36 | 36 |
37 // This object is either going to be part of the last midpoint, or it is goi
ng to be the actual endpoint. | 37 // This object is either going to be part of the last midpoint, or it is goi
ng to be the actual endpoint. |
38 // In both cases we just decrease our pos by 1 level to exclude the space, a
llowing it to - in effect - collapse into the newline. | 38 // In both cases we just decrease our pos by 1 level to exclude the space, a
llowing it to - in effect - collapse into the newline. |
39 if (lineMidpointState.numMidpoints() % 2) { | 39 if (lineMidpointState.numMidpoints() % 2) { |
40 // Find the trailing space object's midpoint. | 40 // Find the trailing space object's midpoint. |
41 int trailingSpaceMidpoint = lineMidpointState.numMidpoints() - 1; | 41 int trailingSpaceMidpoint = lineMidpointState.numMidpoints() - 1; |
42 for ( ; trailingSpaceMidpoint > 0 && lineMidpointState.midpoints()[trail
ingSpaceMidpoint].lineLayoutItem() != m_whitespace; --trailingSpaceMidpoint) { } | 42 for ( ; trailingSpaceMidpoint > 0 && lineMidpointState.midpoints()[trail
ingSpaceMidpoint].getLineLayoutItem() != m_whitespace; --trailingSpaceMidpoint)
{ } |
43 ASSERT(trailingSpaceMidpoint >= 0); | 43 ASSERT(trailingSpaceMidpoint >= 0); |
44 if (collapseFirstSpace == CollapseFirstSpace) | 44 if (collapseFirstSpace == CollapseFirstSpace) |
45 lineMidpointState.midpoints()[trailingSpaceMidpoint].setOffset(lineM
idpointState.midpoints()[trailingSpaceMidpoint].offset() -1); | 45 lineMidpointState.midpoints()[trailingSpaceMidpoint].setOffset(lineM
idpointState.midpoints()[trailingSpaceMidpoint].offset() -1); |
46 | 46 |
47 // Now make sure every single trailingPositionedBox following the traili
ngSpaceMidpoint properly stops and starts | 47 // Now make sure every single trailingPositionedBox following the traili
ngSpaceMidpoint properly stops and starts |
48 // ignoring spaces. | 48 // ignoring spaces. |
49 size_t currentMidpoint = trailingSpaceMidpoint + 1; | 49 size_t currentMidpoint = trailingSpaceMidpoint + 1; |
50 for (size_t i = 0; i < m_objects.size(); ++i) { | 50 for (size_t i = 0; i < m_objects.size(); ++i) { |
51 if (currentMidpoint >= lineMidpointState.numMidpoints()) { | 51 if (currentMidpoint >= lineMidpointState.numMidpoints()) { |
52 // We don't have a midpoint for this box yet. | 52 // We don't have a midpoint for this box yet. |
53 ensureLineBoxInsideIgnoredSpaces(&lineMidpointState, LineLayoutI
tem(m_objects[i])); | 53 ensureLineBoxInsideIgnoredSpaces(&lineMidpointState, LineLayoutI
tem(m_objects[i])); |
54 } else { | 54 } else { |
55 ASSERT(lineMidpointState.midpoints()[currentMidpoint].lineLayout
Item() == m_objects[i]); | 55 ASSERT(lineMidpointState.midpoints()[currentMidpoint].getLineLay
outItem() == m_objects[i]); |
56 ASSERT(lineMidpointState.midpoints()[currentMidpoint + 1].lineLa
youtItem() == m_objects[i]); | 56 ASSERT(lineMidpointState.midpoints()[currentMidpoint + 1].getLin
eLayoutItem() == m_objects[i]); |
57 } | 57 } |
58 currentMidpoint += 2; | 58 currentMidpoint += 2; |
59 } | 59 } |
60 } else if (!lBreak.lineLayoutItem()) { | 60 } else if (!lBreak.getLineLayoutItem()) { |
61 ASSERT(collapseFirstSpace == CollapseFirstSpace); | 61 ASSERT(collapseFirstSpace == CollapseFirstSpace); |
62 // Add a new end midpoint that stops right at the very end. | 62 // Add a new end midpoint that stops right at the very end. |
63 unsigned length = m_whitespace.textLength(); | 63 unsigned length = m_whitespace.textLength(); |
64 unsigned pos = length >= 2 ? length - 2 : UINT_MAX; | 64 unsigned pos = length >= 2 ? length - 2 : UINT_MAX; |
65 InlineIterator endMid(0, m_whitespace, pos); | 65 InlineIterator endMid(0, m_whitespace, pos); |
66 lineMidpointState.startIgnoringSpaces(endMid); | 66 lineMidpointState.startIgnoringSpaces(endMid); |
67 for (size_t i = 0; i < m_objects.size(); ++i) { | 67 for (size_t i = 0; i < m_objects.size(); ++i) { |
68 ensureLineBoxInsideIgnoredSpaces(&lineMidpointState, m_objects[i]); | 68 ensureLineBoxInsideIgnoredSpaces(&lineMidpointState, m_objects[i]); |
69 } | 69 } |
70 } | 70 } |
71 } | 71 } |
72 | 72 |
73 } // namespace blink | 73 } // namespace blink |
OLD | NEW |