OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 #include "gm.h" | 7 #include "gm.h" |
8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
9 #include "SkGradientShader.h" | 9 #include "SkGradientShader.h" |
10 #include "SkPath.h" | 10 #include "SkPath.h" |
11 | 11 |
12 static void makebm(SkBitmap* bm, int w, int h) { | 12 static void makebm(SkBitmap* bm, int w, int h) { |
13 bm->allocN32Pixels(w, h); | 13 bm->allocN32Pixels(w, h); |
14 bm->eraseColor(SK_ColorTRANSPARENT); | 14 bm->eraseColor(SK_ColorTRANSPARENT); |
15 | 15 |
16 SkCanvas canvas(*bm); | 16 SkCanvas canvas(*bm); |
17 SkScalar s = SkIntToScalar(SkMin32(w, h)); | 17 SkScalar s = SkIntToScalar(SkMin32(w, h)); |
18 static const SkPoint kPts0[] = { { 0, 0 }, { s, s } }; | 18 static const SkPoint kPts0[] = { { 0, 0 }, { s, s } }; |
19 static const SkPoint kPts1[] = { { s, 0 }, { 0, s } }; | 19 static const SkPoint kPts1[] = { { s, 0 }, { 0, s } }; |
20 static const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; | 20 static const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; |
21 static const SkColor kColors0[] = {0x40FF00FF, 0xF0FFFF00, 0x4000FFFF }; | 21 static const SkColor kColors0[] = {0x40FF00FF, 0xF0FFFF00, 0x4000FFFF }; |
22 static const SkColor kColors1[] = {0xF0FF00FF, 0x80FFFF00, 0xF000FFFF }; | 22 static const SkColor kColors1[] = {0xF0FF00FF, 0x80FFFF00, 0xF000FFFF }; |
23 | 23 |
24 | 24 |
25 SkPaint paint; | 25 SkPaint paint; |
26 | 26 |
27 paint.setShader(SkGradientShader::CreateLinear(kPts0, kColors0, kPos, | 27 paint.setShader(SkGradientShader::MakeLinear(kPts0, kColors0, kPos, |
28 SK_ARRAY_COUNT(kColors0), SkShader::kClamp_TileMode))->unref
(); | 28 SK_ARRAY_COUNT(kColors0), SkShader::kClamp_TileMode)); |
29 canvas.drawPaint(paint); | 29 canvas.drawPaint(paint); |
30 paint.setShader(SkGradientShader::CreateLinear(kPts1, kColors1, kPos, | 30 paint.setShader(SkGradientShader::MakeLinear(kPts1, kColors1, kPos, |
31 SK_ARRAY_COUNT(kColors1), SkShader::kClamp_TileMode))->unref
(); | 31 SK_ARRAY_COUNT(kColors1), SkShader::kClamp_TileMode)); |
32 canvas.drawPaint(paint); | 32 canvas.drawPaint(paint); |
33 } | 33 } |
34 | 34 |
35 /////////////////////////////////////////////////////////////////////////////// | 35 /////////////////////////////////////////////////////////////////////////////// |
36 | 36 |
37 struct LabeledMatrix { | 37 struct LabeledMatrix { |
38 SkMatrix fMatrix; | 38 SkMatrix fMatrix; |
39 const char* fLabel; | 39 const char* fLabel; |
40 }; | 40 }; |
41 | 41 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 129 |
130 SkScalar columnH = 0; | 130 SkScalar columnH = 0; |
131 for (int m = 0; m < matrices.count(); ++m) { | 131 for (int m = 0; m < matrices.count(); ++m) { |
132 columnH = 0; | 132 columnH = 0; |
133 canvas->save(); | 133 canvas->save(); |
134 canvas->drawText(matrices[m].fLabel, strlen(matrices[m].fLabel), | 134 canvas->drawText(matrices[m].fLabel, strlen(matrices[m].fLabel), |
135 0, labelPaint.getTextSize() - 1, labelPaint); | 135 0, labelPaint.getTextSize() - 1, labelPaint); |
136 canvas->translate(0, kPadY / 2 + kPointSize); | 136 canvas->translate(0, kPadY / 2 + kPointSize); |
137 columnH += kPadY / 2 + kPointSize; | 137 columnH += kPadY / 2 + kPointSize; |
138 for (int lm = 0; lm < localMatrices.count(); ++lm) { | 138 for (int lm = 0; lm < localMatrices.count(); ++lm) { |
139 paint.setShader( | 139 paint.setShader(SkShader::MakeBitmapShader(bmp, SkShader::kM
irror_TileMode, |
140 SkShader::CreateBitmapShader(bmp, | 140 SkShader::kRepeat
_TileMode, |
141 SkShader::kMirror_TileM
ode, | 141 &localMatrices[lm
].fMatrix)); |
142 SkShader::kRepeat_TileM
ode, | |
143 &localMatrices[lm].fMat
rix))->unref(); | |
144 | 142 |
145 canvas->save(); | 143 canvas->save(); |
146 canvas->concat(matrices[m].fMatrix); | 144 canvas->concat(matrices[m].fMatrix); |
147 canvas->drawText(kText, kTextLen, 0, 0, paint); | 145 canvas->drawText(kText, kTextLen, 0, 0, paint); |
148 canvas->drawText(kText, kTextLen, 0, 0, outlinePaint); | 146 canvas->drawText(kText, kTextLen, 0, 0, outlinePaint); |
149 canvas->restore(); | 147 canvas->restore(); |
150 | 148 |
151 SkPath path; | 149 SkPath path; |
152 path.arcTo(SkRect::MakeXYWH(-0.1f * w, 0.f, | 150 path.arcTo(SkRect::MakeXYWH(-0.1f * w, 0.f, |
153 1.2f * w, 2.f * kPointSize), | 151 1.2f * w, 2.f * kPointSize), |
(...skipping 23 matching lines...) Expand all Loading... |
177 static const char kFillLabel[] = "Filled"; | 175 static const char kFillLabel[] = "Filled"; |
178 static const char kStrokeLabel[] = "Stroked"; | 176 static const char kStrokeLabel[] = "Stroked"; |
179 SkScalar y = columnH + kPadY / 2; | 177 SkScalar y = columnH + kPadY / 2; |
180 SkScalar fillX = -outlinePaint.measureText(kFillLabel, strlen(kF
illLabel)) - kPadX; | 178 SkScalar fillX = -outlinePaint.measureText(kFillLabel, strlen(kF
illLabel)) - kPadX; |
181 SkScalar strokeX = kPadX; | 179 SkScalar strokeX = kPadX; |
182 canvas->drawText(kFillLabel, strlen(kFillLabel), fillX, y, label
Paint); | 180 canvas->drawText(kFillLabel, strlen(kFillLabel), fillX, y, label
Paint); |
183 canvas->drawText(kStrokeLabel, strlen(kStrokeLabel), strokeX, y,
labelPaint); | 181 canvas->drawText(kStrokeLabel, strlen(kStrokeLabel), strokeX, y,
labelPaint); |
184 } | 182 } |
185 } | 183 } |
186 } | 184 } |
OLD | NEW |