| 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 #ifndef TextPainter_h | 5 #ifndef TextPainter_h |
| 6 #define TextPainter_h | 6 #define TextPainter_h |
| 7 | 7 |
| 8 #include "core/CoreExport.h" | 8 #include "core/CoreExport.h" |
| 9 #include "core/style/ComputedStyleConstants.h" | 9 #include "core/style/ComputedStyleConstants.h" |
| 10 #include "platform/fonts/TextBlob.h" | 10 #include "platform/fonts/TextBlob.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 AtomicString m_emphasisMark; | 117 AtomicString m_emphasisMark; |
| 118 int m_emphasisMarkOffset; | 118 int m_emphasisMarkOffset; |
| 119 LayoutTextCombine* m_combinedText; | 119 LayoutTextCombine* m_combinedText; |
| 120 }; | 120 }; |
| 121 | 121 |
| 122 inline AffineTransform TextPainter::rotation( | 122 inline AffineTransform TextPainter::rotation( |
| 123 const LayoutRect& boxRect, | 123 const LayoutRect& boxRect, |
| 124 RotationDirection rotationDirection) { | 124 RotationDirection rotationDirection) { |
| 125 // Why this matrix is correct: consider the case of a clockwise rotation. | 125 // Why this matrix is correct: consider the case of a clockwise rotation. |
| 126 | 126 |
| 127 // Let the corner points that define |boxRect| be ABCD, where A is top-left an
d B is bottom-left. | 127 // Let the corner points that define |boxRect| be ABCD, where A is top-left |
| 128 // and B is bottom-left. |
| 128 | 129 |
| 129 // 1. We want B to end up at the same pixel position after rotation as A is be
fore rotation. | 130 // 1. We want B to end up at the same pixel position after rotation as A is |
| 131 // before rotation. |
| 130 // 2. Before rotation, B is at (x(), maxY()) | 132 // 2. Before rotation, B is at (x(), maxY()) |
| 131 // 3. Rotating clockwise by 90 degrees places B at the coordinates (-maxY(), x
()). | 133 // 3. Rotating clockwise by 90 degrees places B at the coordinates |
| 134 // (-maxY(), x()). |
| 132 // 4. Point A before rotation is at (x(), y()) | 135 // 4. Point A before rotation is at (x(), y()) |
| 133 // 5. Therefore the translation from (3) to (4) is (x(), y()) - (-maxY(), x())
= (x() + maxY(), y() - x()) | 136 // 5. Therefore the translation from (3) to (4) is (x(), y()) - (-maxY(), x()) |
| 137 // = (x() + maxY(), y() - x()) |
| 134 | 138 |
| 135 // A similar argument derives the counter-clockwise case. | 139 // A similar argument derives the counter-clockwise case. |
| 136 return rotationDirection == Clockwise | 140 return rotationDirection == Clockwise |
| 137 ? AffineTransform(0, 1, -1, 0, boxRect.x() + boxRect.maxY(), | 141 ? AffineTransform(0, 1, -1, 0, boxRect.x() + boxRect.maxY(), |
| 138 boxRect.y() - boxRect.x()) | 142 boxRect.y() - boxRect.x()) |
| 139 : AffineTransform(0, -1, 1, 0, boxRect.x() - boxRect.y(), | 143 : AffineTransform(0, -1, 1, 0, boxRect.x() - boxRect.y(), |
| 140 boxRect.x() + boxRect.maxY()); | 144 boxRect.x() + boxRect.maxY()); |
| 141 } | 145 } |
| 142 | 146 |
| 143 } // namespace blink | 147 } // namespace blink |
| 144 | 148 |
| 145 #endif // TextPainter_h | 149 #endif // TextPainter_h |
| OLD | NEW |