| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/paint/ListMarkerPainter.h" | 6 #include "core/paint/ListMarkerPainter.h" |
| 7 | 7 |
| 8 #include "core/paint/BlockPainter.h" | 8 #include "core/paint/BlockPainter.h" |
| 9 #include "core/paint/GraphicsContextAnnotator.h" | 9 #include "core/paint/GraphicsContextAnnotator.h" |
| 10 #include "core/paint/RenderDrawingRecorder.h" | 10 #include "core/paint/RenderDrawingRecorder.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 IntPoint textOrigin = IntPoint(marker.x(), marker.y() + m_renderListMarker.s
tyle()->fontMetrics().ascent()); | 183 IntPoint textOrigin = IntPoint(marker.x(), marker.y() + m_renderListMarker.s
tyle()->fontMetrics().ascent()); |
| 184 | 184 |
| 185 if (type == Asterisks || type == Footnotes) { | 185 if (type == Asterisks || type == Footnotes) { |
| 186 context->drawText(font, textRunPaintInfo, textOrigin); | 186 context->drawText(font, textRunPaintInfo, textOrigin); |
| 187 } else { | 187 } else { |
| 188 // Text is not arbitrary. We can judge whether it's RTL from the first c
haracter, | 188 // Text is not arbitrary. We can judge whether it's RTL from the first c
haracter, |
| 189 // and we only need to handle the direction RightToLeft for now. | 189 // and we only need to handle the direction RightToLeft for now. |
| 190 bool textNeedsReversing = WTF::Unicode::direction(m_renderListMarker.tex
t()[0]) == WTF::Unicode::RightToLeft; | 190 bool textNeedsReversing = WTF::Unicode::direction(m_renderListMarker.tex
t()[0]) == WTF::Unicode::RightToLeft; |
| 191 StringBuilder reversedText; | 191 StringBuilder reversedText; |
| 192 if (textNeedsReversing) { | 192 if (textNeedsReversing) { |
| 193 int length = m_renderListMarker.text().length(); | 193 unsigned length = m_renderListMarker.text().length(); |
| 194 reversedText.reserveCapacity(length); | 194 reversedText.reserveCapacity(length); |
| 195 for (int i = length - 1; i >= 0; --i) | 195 for (int i = length - 1; i >= 0; --i) |
| 196 reversedText.append(m_renderListMarker.text()[i]); | 196 reversedText.append(m_renderListMarker.text()[i]); |
| 197 ASSERT(reversedText.length() == reversedText.capacity()); | 197 ASSERT(reversedText.length() == length); |
| 198 textRun.setText(reversedText.toString()); | 198 textRun.setText(reversedText.toString()); |
| 199 } | 199 } |
| 200 | 200 |
| 201 const UChar suffix = m_renderListMarker.listMarkerSuffix(type, m_renderL
istMarker.listItem()->value()); | 201 const UChar suffix = m_renderListMarker.listMarkerSuffix(type, m_renderL
istMarker.listItem()->value()); |
| 202 UChar suffixStr[2] = { | 202 UChar suffixStr[2] = { |
| 203 m_renderListMarker.style()->isLeftToRightDirection() ? suffix : ' ', | 203 m_renderListMarker.style()->isLeftToRightDirection() ? suffix : ' ', |
| 204 m_renderListMarker.style()->isLeftToRightDirection() ? ' ' : suffix | 204 m_renderListMarker.style()->isLeftToRightDirection() ? ' ' : suffix |
| 205 }; | 205 }; |
| 206 TextRun suffixRun = constructTextRun(&m_renderListMarker, font, suffixSt
r, 2, m_renderListMarker.style(), m_renderListMarker.style()->direction()); | 206 TextRun suffixRun = constructTextRun(&m_renderListMarker, font, suffixSt
r, 2, m_renderListMarker.style(), m_renderListMarker.style()->direction()); |
| 207 TextRunPaintInfo suffixRunInfo(suffixRun); | 207 TextRunPaintInfo suffixRunInfo(suffixRun); |
| 208 suffixRunInfo.bounds = marker; | 208 suffixRunInfo.bounds = marker; |
| 209 | 209 |
| 210 if (m_renderListMarker.style()->isLeftToRightDirection()) { | 210 if (m_renderListMarker.style()->isLeftToRightDirection()) { |
| 211 context->drawText(font, textRunPaintInfo, textOrigin); | 211 context->drawText(font, textRunPaintInfo, textOrigin); |
| 212 context->drawText(font, suffixRunInfo, textOrigin + IntSize(font.wid
th(textRun), 0)); | 212 context->drawText(font, suffixRunInfo, textOrigin + IntSize(font.wid
th(textRun), 0)); |
| 213 } else { | 213 } else { |
| 214 context->drawText(font, suffixRunInfo, textOrigin); | 214 context->drawText(font, suffixRunInfo, textOrigin); |
| 215 context->drawText(font, textRunPaintInfo, textOrigin + IntSize(font.
width(suffixRun), 0)); | 215 context->drawText(font, textRunPaintInfo, textOrigin + IntSize(font.
width(suffixRun), 0)); |
| 216 } | 216 } |
| 217 } | 217 } |
| 218 } | 218 } |
| 219 | 219 |
| 220 } // namespace blink | 220 } // namespace blink |
| OLD | NEW |