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" |
11 #include "platform/geometry/FloatPoint.h" | 11 #include "platform/geometry/FloatPoint.h" |
12 #include "platform/geometry/FloatRect.h" | 12 #include "platform/geometry/FloatRect.h" |
13 #include "platform/geometry/LayoutRect.h" | 13 #include "platform/geometry/LayoutRect.h" |
14 #include "platform/graphics/Color.h" | 14 #include "platform/graphics/Color.h" |
15 #include "platform/transforms/AffineTransform.h" | 15 #include "platform/transforms/AffineTransform.h" |
| 16 #include "wtf/Allocator.h" |
16 #include "wtf/text/AtomicString.h" | 17 #include "wtf/text/AtomicString.h" |
17 | 18 |
18 namespace blink { | 19 namespace blink { |
19 | 20 |
20 class ComputedStyle; | 21 class ComputedStyle; |
21 class Font; | 22 class Font; |
22 class GraphicsContext; | 23 class GraphicsContext; |
23 class GraphicsContextStateSaver; | 24 class GraphicsContextStateSaver; |
24 class LayoutTextCombine; | 25 class LayoutTextCombine; |
25 class LayoutObject; | 26 class LayoutObject; |
26 struct PaintInfo; | 27 struct PaintInfo; |
27 class ShadowList; | 28 class ShadowList; |
28 class TextRun; | 29 class TextRun; |
29 struct TextRunPaintInfo; | 30 struct TextRunPaintInfo; |
30 | 31 |
31 class CORE_EXPORT TextPainter { | 32 class CORE_EXPORT TextPainter { |
| 33 STACK_ALLOCATED(); |
32 public: | 34 public: |
33 struct Style; | 35 struct Style; |
34 | 36 |
35 TextPainter(GraphicsContext*, const Font&, const TextRun&, const LayoutPoint
& textOrigin, const LayoutRect& textBounds, bool horizontal); | 37 TextPainter(GraphicsContext*, const Font&, const TextRun&, const LayoutPoint
& textOrigin, const LayoutRect& textBounds, bool horizontal); |
36 ~TextPainter(); | 38 ~TextPainter(); |
37 | 39 |
38 void setEmphasisMark(const AtomicString&, TextEmphasisPosition); | 40 void setEmphasisMark(const AtomicString&, TextEmphasisPosition); |
39 void setCombinedText(LayoutTextCombine* combinedText) { m_combinedText = com
binedText; } | 41 void setCombinedText(LayoutTextCombine* combinedText) { m_combinedText = com
binedText; } |
40 | 42 |
41 static void updateGraphicsContext(GraphicsContext*, const Style&, bool horiz
ontal, GraphicsContextStateSaver&); | 43 static void updateGraphicsContext(GraphicsContext*, const Style&, bool horiz
ontal, GraphicsContextStateSaver&); |
42 | 44 |
43 void paint(int startOffset, int endOffset, int length, const Style&, TextBlo
bPtr* cachedTextBlob = 0); | 45 void paint(int startOffset, int endOffset, int length, const Style&, TextBlo
bPtr* cachedTextBlob = 0); |
44 | 46 |
45 struct Style { | 47 struct Style { |
| 48 STACK_ALLOCATED(); |
46 Color currentColor; | 49 Color currentColor; |
47 Color fillColor; | 50 Color fillColor; |
48 Color strokeColor; | 51 Color strokeColor; |
49 Color emphasisMarkColor; | 52 Color emphasisMarkColor; |
50 float strokeWidth; | 53 float strokeWidth; |
51 const ShadowList* shadow; | 54 const ShadowList* shadow; |
52 | 55 |
53 bool operator==(const Style& other) | 56 bool operator==(const Style& other) |
54 { | 57 { |
55 return currentColor == other.currentColor | 58 return currentColor == other.currentColor |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 // 5. Therefore the translation from (3) to (4) is (x(), y()) - (-maxY(), x(
)) = (x() + maxY(), y() - x()) | 110 // 5. Therefore the translation from (3) to (4) is (x(), y()) - (-maxY(), x(
)) = (x() + maxY(), y() - x()) |
108 | 111 |
109 // A similar argument derives the counter-clockwise case. | 112 // A similar argument derives the counter-clockwise case. |
110 return rotationDirection == Clockwise ? AffineTransform(0, 1, -1, 0, boxRect
.x() + boxRect.maxY(), boxRect.y() - boxRect.x()) | 113 return rotationDirection == Clockwise ? AffineTransform(0, 1, -1, 0, boxRect
.x() + boxRect.maxY(), boxRect.y() - boxRect.x()) |
111 : AffineTransform(0, -1, 1, 0, boxRect.x() - boxRect.y(), boxRect.x() +
boxRect.maxY()); | 114 : AffineTransform(0, -1, 1, 0, boxRect.x() - boxRect.y(), boxRect.x() +
boxRect.maxY()); |
112 } | 115 } |
113 | 116 |
114 } // namespace blink | 117 } // namespace blink |
115 | 118 |
116 #endif // TextPainter_h | 119 #endif // TextPainter_h |
OLD | NEW |