OLD | NEW |
1 // Copyright (C) 2013 Google Inc. All rights reserved. | 1 // Copyright (C) 2013 Google Inc. All rights reserved. |
2 // | 2 // |
3 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
4 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
5 // met: | 5 // met: |
6 // | 6 // |
7 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
10 // copyright notice, this list of conditions and the following disclaimer | 10 // copyright notice, this list of conditions and the following disclaimer |
(...skipping 23 matching lines...) Expand all Loading... |
34 #include "platform/graphics/Gradient.h" | 34 #include "platform/graphics/Gradient.h" |
35 #include "platform/graphics/GraphicsTypes.h" | 35 #include "platform/graphics/GraphicsTypes.h" |
36 #include "platform/graphics/Pattern.h" | 36 #include "platform/graphics/Pattern.h" |
37 #include "third_party/skia/include/core/SkColorPriv.h" | 37 #include "third_party/skia/include/core/SkColorPriv.h" |
38 #include "third_party/skia/include/effects/SkDashPathEffect.h" | 38 #include "third_party/skia/include/effects/SkDashPathEffect.h" |
39 #include "wtf/PassRefPtr.h" | 39 #include "wtf/PassRefPtr.h" |
40 #include "wtf/RefPtr.h" | 40 #include "wtf/RefPtr.h" |
41 | 41 |
42 namespace blink { | 42 namespace blink { |
43 | 43 |
44 // Encapsulates stroke painting information. | 44 // Encapsulates stroke geometry information. |
45 // It is pulled out of GraphicsContextState to enable other methods to use it. | 45 // It is pulled out of GraphicsContextState to enable other methods to use it. |
46 class PLATFORM_EXPORT StrokeData { | 46 class PLATFORM_EXPORT StrokeData { |
47 public: | 47 public: |
48 StrokeData() | 48 StrokeData() |
49 : m_style(SolidStroke) | 49 : m_style(SolidStroke) |
50 , m_thickness(0) | 50 , m_thickness(0) |
51 , m_color(Color::black) | |
52 , m_lineCap(SkPaint::kDefault_Cap) | 51 , m_lineCap(SkPaint::kDefault_Cap) |
53 , m_lineJoin(SkPaint::kDefault_Join) | 52 , m_lineJoin(SkPaint::kDefault_Join) |
54 , m_miterLimit(4) | 53 , m_miterLimit(4) |
55 { | 54 { |
56 } | 55 } |
57 | 56 |
58 StrokeStyle style() const { return m_style; } | 57 StrokeStyle style() const { return m_style; } |
59 void setStyle(StrokeStyle style) { m_style = style; } | 58 void setStyle(StrokeStyle style) { m_style = style; } |
60 | 59 |
61 float thickness() const { return m_thickness; } | 60 float thickness() const { return m_thickness; } |
62 void setThickness(float thickness) { m_thickness = thickness; } | 61 void setThickness(float thickness) { m_thickness = thickness; } |
63 | 62 |
64 Color color() const { return m_color; } | |
65 void setColor(const Color& color) { m_color = color; } | |
66 | |
67 Gradient* gradient() const { return m_gradient.get(); } | |
68 void setGradient(const PassRefPtr<Gradient> gradient) { m_gradient = gradien
t; } | |
69 void clearGradient() { m_gradient.clear(); } | |
70 | |
71 Pattern* pattern() const { return m_pattern.get(); } | |
72 void setPattern(const PassRefPtr<Pattern> pattern) { m_pattern = pattern; } | |
73 void clearPattern() { m_pattern.clear(); } | |
74 | |
75 LineCap lineCap() const { return (LineCap)m_lineCap; } | 63 LineCap lineCap() const { return (LineCap)m_lineCap; } |
76 void setLineCap(LineCap cap) { m_lineCap = (SkPaint::Cap)cap; } | 64 void setLineCap(LineCap cap) { m_lineCap = (SkPaint::Cap)cap; } |
77 | 65 |
78 LineJoin lineJoin() const { return (LineJoin)m_lineJoin; } | 66 LineJoin lineJoin() const { return (LineJoin)m_lineJoin; } |
79 void setLineJoin(LineJoin join) { m_lineJoin = (SkPaint::Join)join; } | 67 void setLineJoin(LineJoin join) { m_lineJoin = (SkPaint::Join)join; } |
80 | 68 |
81 float miterLimit() const { return m_miterLimit; } | 69 float miterLimit() const { return m_miterLimit; } |
82 void setMiterLimit(float miterLimit) { m_miterLimit = miterLimit; } | 70 void setMiterLimit(float miterLimit) { m_miterLimit = miterLimit; } |
83 | 71 |
84 void setLineDash(const DashArray&, float); | 72 void setLineDash(const DashArray&, float); |
85 | 73 |
86 // Sets everything on the paint except the pattern, gradient and color. | 74 // Sets everything on the paint except the pattern, gradient and color. |
87 // If a non-zero length is provided, the number of dashes/dots on a | 75 // If a non-zero length is provided, the number of dashes/dots on a |
88 // dashed/dotted line will be adjusted to start and end that length with a | 76 // dashed/dotted line will be adjusted to start and end that length with a |
89 // dash/dot. | 77 // dash/dot. |
90 void setupPaint(SkPaint*, int length = 0) const; | 78 void setupPaint(SkPaint*, int length = 0) const; |
91 | 79 |
92 // Setup any DashPathEffect on the paint. If a non-zero length is provided, | 80 // Setup any DashPathEffect on the paint. If a non-zero length is provided, |
93 // and no line dash has been set, the number of dashes/dots on a dashed/dott
ed | 81 // and no line dash has been set, the number of dashes/dots on a dashed/dott
ed |
94 // line will be adjusted to start and end that length with a dash/dot. | 82 // line will be adjusted to start and end that length with a dash/dot. |
95 void setupPaintDashPathEffect(SkPaint*, int) const; | 83 void setupPaintDashPathEffect(SkPaint*, int) const; |
96 | 84 |
97 private: | 85 private: |
98 StrokeStyle m_style; | 86 StrokeStyle m_style; |
99 float m_thickness; | 87 float m_thickness; |
100 Color m_color; | |
101 RefPtr<Gradient> m_gradient; | |
102 RefPtr<Pattern> m_pattern; | |
103 SkPaint::Cap m_lineCap; | 88 SkPaint::Cap m_lineCap; |
104 SkPaint::Join m_lineJoin; | 89 SkPaint::Join m_lineJoin; |
105 float m_miterLimit; | 90 float m_miterLimit; |
106 RefPtr<SkDashPathEffect> m_dash; | 91 RefPtr<SkDashPathEffect> m_dash; |
107 }; | 92 }; |
108 | 93 |
109 } // namespace blink | 94 } // namespace blink |
110 | 95 |
111 #endif // StrokeData_h | 96 #endif // StrokeData_h |
OLD | NEW |