OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "SampleCode.h" | 8 #include "SampleCode.h" |
9 #include "SkBlurMask.h" | 9 #include "SkBlurMask.h" |
10 #include "SkBlurDrawLooper.h" | 10 #include "SkBlurDrawLooper.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 canvas->drawPath(path, paint); | 36 canvas->drawPath(path, paint); |
37 | 37 |
38 paint.setLooper(SkBlurDrawLooper::Create(SK_ColorBLACK, | 38 paint.setLooper(SkBlurDrawLooper::Create(SK_ColorBLACK, |
39 SkBlurMask::ConvertRadiusToSigma(0.
002f), | 39 SkBlurMask::ConvertRadiusToSigma(0.
002f), |
40 0.0f, | 40 0.0f, |
41 0.0f))->unref(); | 41 0.0f))->unref(); |
42 | 42 |
43 const char* text = "DRAWING STROKED TEXT WITH A BLUR ON A PATH"; | 43 const char* text = "DRAWING STROKED TEXT WITH A BLUR ON A PATH"; |
44 size_t len = strlen(text); | 44 size_t len = strlen(text); |
| 45 SkMatrix matrix; |
| 46 SkCanvas::TextOnPathMethod method = SkCanvas::kStretch_TextOnPathMethod; |
45 | 47 |
46 canvas->drawTextOnPathHV(text, len, path, 0, | 48 matrix.setTranslate(0, -0.025f); |
47 -0.025f, paint); | 49 canvas->drawTextOnPath(text, len, path, &matrix, method, paint); |
48 canvas->restore(); | 50 canvas->restore(); |
49 } | 51 } |
50 | 52 |
51 static void textPathMatrix(SkCanvas* canvas) { | 53 static void textPathMatrix(SkCanvas* canvas) { |
52 SkPaint paint; | 54 SkPaint paint; |
53 SkPath path; | 55 SkPath path; |
54 SkMatrix matrix; | 56 SkMatrix matrix; |
55 | 57 |
56 path.moveTo(SkIntToScalar(050), SkIntToScalar(200)); | 58 path.moveTo(SkIntToScalar(050), SkIntToScalar(200)); |
57 path.quadTo(SkIntToScalar(250), SkIntToScalar(000), | 59 path.quadTo(SkIntToScalar(250), SkIntToScalar(000), |
58 SkIntToScalar(450), SkIntToScalar(200)); | 60 SkIntToScalar(450), SkIntToScalar(200)); |
59 | 61 |
60 paint.setAntiAlias(true); | 62 paint.setAntiAlias(true); |
61 | 63 |
62 paint.setStyle(SkPaint::kStroke_Style); | 64 paint.setStyle(SkPaint::kStroke_Style); |
63 canvas->drawPath(path, paint); | 65 canvas->drawPath(path, paint); |
64 paint.setStyle(SkPaint::kFill_Style); | 66 paint.setStyle(SkPaint::kFill_Style); |
65 paint.setTextSize(SkIntToScalar(48)); | 67 paint.setTextSize(SkIntToScalar(48)); |
66 paint.setTextAlign(SkPaint::kRight_Align); | 68 paint.setTextAlign(SkPaint::kRight_Align); |
67 | 69 |
68 const char* text = "Reflection"; | 70 const char* text = "Reflection"; |
69 size_t len = strlen(text); | 71 size_t len = strlen(text); |
70 | 72 |
71 SkPathMeasure meas(path, false); | 73 SkPathMeasure meas(path, false); |
72 SkScalar pathLen = meas.getLength(); | 74 SkScalar pathLen = meas.getLength(); |
| 75 SkCanvas::TextOnPathMethod method = SkCanvas::kStretch_TextOnPathMethod; |
73 | 76 |
74 canvas->drawTextOnPath(text, len, path, NULL, paint); | 77 canvas->drawTextOnPath(text, len, path, NULL, method, paint); |
75 | 78 |
76 paint.setColor(SK_ColorRED); | 79 paint.setColor(SK_ColorRED); |
77 matrix.setScale(-SK_Scalar1, SK_Scalar1); | 80 matrix.setScale(-SK_Scalar1, SK_Scalar1); |
78 matrix.postTranslate(pathLen, 0); | 81 matrix.postTranslate(pathLen, 0); |
79 canvas->drawTextOnPath(text, len, path, &matrix, paint); | 82 canvas->drawTextOnPath(text, len, path, &matrix, method, paint); |
80 | 83 |
81 paint.setColor(SK_ColorBLUE); | 84 paint.setColor(SK_ColorBLUE); |
82 matrix.setScale(SK_Scalar1, -SK_Scalar1); | 85 matrix.setScale(SK_Scalar1, -SK_Scalar1); |
83 canvas->drawTextOnPath(text, len, path, &matrix, paint); | 86 canvas->drawTextOnPath(text, len, path, &matrix, method, paint); |
84 | 87 |
85 paint.setColor(SK_ColorGREEN); | 88 paint.setColor(SK_ColorGREEN); |
86 matrix.setScale(-SK_Scalar1, -SK_Scalar1); | 89 matrix.setScale(-SK_Scalar1, -SK_Scalar1); |
87 matrix.postTranslate(pathLen, 0); | 90 matrix.postTranslate(pathLen, 0); |
88 canvas->drawTextOnPath(text, len, path, &matrix, paint); | 91 canvas->drawTextOnPath(text, len, path, &matrix, method, paint); |
89 } | 92 } |
90 | 93 |
91 class TextOnPathView : public SampleView { | 94 class TextOnPathView : public SampleView { |
92 public: | 95 public: |
93 SkPath fPath; | 96 SkPath fPath; |
94 SkScalar fHOffset; | 97 SkScalar fHOffset; |
95 | 98 |
96 TextOnPathView() { | 99 TextOnPathView() { |
97 SkRect r; | 100 SkRect r; |
98 r.set(SkIntToScalar(100), SkIntToScalar(100), | 101 r.set(SkIntToScalar(100), SkIntToScalar(100), |
(...skipping 14 matching lines...) Expand all Loading... |
113 return this->INHERITED::onQuery(evt); | 116 return this->INHERITED::onQuery(evt); |
114 } | 117 } |
115 | 118 |
116 void onDrawContent(SkCanvas* canvas) SK_OVERRIDE { | 119 void onDrawContent(SkCanvas* canvas) SK_OVERRIDE { |
117 SkPaint paint; | 120 SkPaint paint; |
118 paint.setAntiAlias(true); | 121 paint.setAntiAlias(true); |
119 paint.setTextSize(SkIntToScalar(48)); | 122 paint.setTextSize(SkIntToScalar(48)); |
120 | 123 |
121 const char* text = "Hamburgefons"; | 124 const char* text = "Hamburgefons"; |
122 size_t len = strlen(text); | 125 size_t len = strlen(text); |
123 | 126 SkCanvas::TextOnPathMethod method = SkCanvas::kStretch_TextOnPathMethod; |
| 127 SkMatrix matrix; |
| 128 |
124 for (int j = 0; j < REPEAT_COUNT; j++) { | 129 for (int j = 0; j < REPEAT_COUNT; j++) { |
125 SkScalar x = fHOffset; | 130 SkScalar x = fHOffset; |
126 | 131 |
127 paint.setColor(SK_ColorBLACK); | 132 paint.setColor(SK_ColorBLACK); |
128 canvas->drawTextOnPathHV(text, len, fPath, | 133 matrix.setTranslate(x, paint.getTextSize()/2); |
129 x, paint.getTextSize()/2, paint); | 134 canvas->drawTextOnPath(text, len, fPath, &matrix, method, paint); |
130 | 135 |
131 paint.setColor(SK_ColorRED); | 136 paint.setColor(SK_ColorRED); |
132 canvas->drawTextOnPathHV(text, len, fPath, | 137 matrix.setTranslate(x + 50, 0); |
133 x + SkIntToScalar(50), 0, paint); | 138 canvas->drawTextOnPath(text, len, fPath, &matrix, method, paint); |
134 | 139 |
135 paint.setColor(SK_ColorBLUE); | 140 paint.setColor(SK_ColorBLUE); |
136 canvas->drawTextOnPathHV(text, len, fPath, | 141 matrix.setTranslate(x + 100, -paint.getTextSize()/2); |
137 x + SkIntToScalar(100), -paint.getTextSize()/2, paint); | 142 canvas->drawTextOnPath(text, len, fPath, &matrix, method, paint); |
138 } | 143 } |
139 | 144 |
140 paint.setColor(SK_ColorGREEN); | 145 paint.setColor(SK_ColorGREEN); |
141 paint.setStyle(SkPaint::kStroke_Style); | 146 paint.setStyle(SkPaint::kStroke_Style); |
142 canvas->drawPath(fPath, paint); | 147 canvas->drawPath(fPath, paint); |
143 | 148 |
144 canvas->translate(SkIntToScalar(275), 0); | 149 canvas->translate(SkIntToScalar(275), 0); |
145 textStrokePath(canvas); | 150 textStrokePath(canvas); |
146 | 151 |
147 canvas->translate(SkIntToScalar(-275), SkIntToScalar(250)); | 152 canvas->translate(SkIntToScalar(-275), SkIntToScalar(250)); |
(...skipping 18 matching lines...) Expand all Loading... |
166 typedef SampleView INHERITED; | 171 typedef SampleView INHERITED; |
167 }; | 172 }; |
168 | 173 |
169 ////////////////////////////////////////////////////////////////////////////// | 174 ////////////////////////////////////////////////////////////////////////////// |
170 | 175 |
171 static SkView* MyFactory() { | 176 static SkView* MyFactory() { |
172 return new TextOnPathView; | 177 return new TextOnPathView; |
173 } | 178 } |
174 | 179 |
175 static SkViewRegister reg(MyFactory); | 180 static SkViewRegister reg(MyFactory); |
OLD | NEW |