| 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 const SkPoint kPts0[] = { { 0, 0 }, { s, s } }; |
| 19 static const SkPoint kPts1[] = { { s, 0 }, { 0, s } }; | 19 const SkPoint kPts1[] = { { s, 0 }, { 0, s } }; |
| 20 static const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; | 20 const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; |
| 21 static const SkColor kColors0[] = {0x40FF00FF, 0xF0FFFF00, 0x4000FFFF }; | 21 const SkColor kColors0[] = {0x40FF00FF, 0xF0FFFF00, 0x4000FFFF }; |
| 22 static const SkColor kColors1[] = {0xF0FF00FF, 0x80FFFF00, 0xF000FFFF }; | 22 const SkColor kColors1[] = {0xF0FF00FF, 0x80FFFF00, 0xF000FFFF }; |
| 23 | 23 |
| 24 | 24 |
| 25 SkPaint paint; | 25 SkPaint paint; |
| 26 | 26 |
| 27 paint.setShader(SkGradientShader::MakeLinear(kPts0, kColors0, kPos, | 27 paint.setShader(SkGradientShader::MakeLinear(kPts0, kColors0, kPos, |
| 28 SK_ARRAY_COUNT(kColors0), SkShader::kClamp_TileMode)); | 28 SK_ARRAY_COUNT(kColors0), SkShader::kClamp_TileMode)); |
| 29 canvas.drawPaint(paint); | 29 canvas.drawPaint(paint); |
| 30 paint.setShader(SkGradientShader::MakeLinear(kPts1, kColors1, kPos, | 30 paint.setShader(SkGradientShader::MakeLinear(kPts1, kColors1, kPos, |
| 31 SK_ARRAY_COUNT(kColors1), SkShader::kClamp_TileMode)); | 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 |
| 42 DEF_SIMPLE_GM_BG(shadertext2, canvas, 1800, 900, | 42 DEF_SIMPLE_GM_BG(shadertext2, canvas, 1800, 900, |
| 43 sk_tool_utils::color_to_565(0xFFDDDDDD)) { | 43 sk_tool_utils::color_to_565(0xFFDDDDDD)) { |
| 44 static const char kText[] = "SKIA"; | 44 constexpr char kText[] = "SKIA"; |
| 45 static const int kTextLen = SK_ARRAY_COUNT(kText) - 1; | 45 constexpr int kTextLen = SK_ARRAY_COUNT(kText) - 1; |
| 46 static const int kPointSize = 55; | 46 constexpr int kPointSize = 55; |
| 47 | 47 |
| 48 SkTDArray<LabeledMatrix> matrices; | 48 SkTDArray<LabeledMatrix> matrices; |
| 49 matrices.append()->fMatrix.reset(); | 49 matrices.append()->fMatrix.reset(); |
| 50 matrices.top().fLabel = "Identity"; | 50 matrices.top().fLabel = "Identity"; |
| 51 matrices.append()->fMatrix.setScale(1.2f, 0.8f); | 51 matrices.append()->fMatrix.setScale(1.2f, 0.8f); |
| 52 matrices.top().fLabel = "Scale"; | 52 matrices.top().fLabel = "Scale"; |
| 53 matrices.append()->fMatrix.setRotate(10.f); | 53 matrices.append()->fMatrix.setRotate(10.f); |
| 54 matrices.top().fLabel = "Rotate"; | 54 matrices.top().fLabel = "Rotate"; |
| 55 matrices.append()->fMatrix.reset(); | 55 matrices.append()->fMatrix.reset(); |
| 56 matrices.top().fMatrix.setPerspX(-0.0015f); | 56 matrices.top().fMatrix.setPerspX(-0.0015f); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 SkPaint labelPaint; | 98 SkPaint labelPaint; |
| 99 labelPaint.setColor(0xff000000); | 99 labelPaint.setColor(0xff000000); |
| 100 labelPaint.setAntiAlias(true); | 100 labelPaint.setAntiAlias(true); |
| 101 sk_tool_utils::set_portable_typeface(&labelPaint); | 101 sk_tool_utils::set_portable_typeface(&labelPaint); |
| 102 labelPaint.setTextSize(12.f); | 102 labelPaint.setTextSize(12.f); |
| 103 | 103 |
| 104 canvas->translate(15.f, 15.f); | 104 canvas->translate(15.f, 15.f); |
| 105 canvas->drawBitmap(bmp, 0, 0); | 105 canvas->drawBitmap(bmp, 0, 0); |
| 106 canvas->translate(0, bmp.height() + labelPaint.getTextSize() + 15.f); | 106 canvas->translate(0, bmp.height() + labelPaint.getTextSize() + 15.f); |
| 107 | 107 |
| 108 static const char kLabelLabel[] = "localM / canvasM"; | 108 constexpr char kLabelLabel[] = "localM / canvasM"; |
| 109 canvas->drawText(kLabelLabel, strlen(kLabelLabel), 0, 0, labelPaint); | 109 canvas->drawText(kLabelLabel, strlen(kLabelLabel), 0, 0, labelPaint); |
| 110 canvas->translate(0, 15.f); | 110 canvas->translate(0, 15.f); |
| 111 | 111 |
| 112 canvas->save(); | 112 canvas->save(); |
| 113 SkScalar maxLabelW = 0; | 113 SkScalar maxLabelW = 0; |
| 114 canvas->translate(0, kPadY / 2 + kPointSize); | 114 canvas->translate(0, kPadY / 2 + kPointSize); |
| 115 for (int lm = 0; lm < localMatrices.count(); ++lm) { | 115 for (int lm = 0; lm < localMatrices.count(); ++lm) { |
| 116 canvas->drawText(matrices[lm].fLabel, strlen(matrices[lm].fLabel), | 116 canvas->drawText(matrices[lm].fLabel, strlen(matrices[lm].fLabel), |
| 117 0, labelPaint.getTextSize() - 1, labelPaint); | 117 0, labelPaint.getTextSize() - 1, labelPaint); |
| 118 SkScalar labelW = labelPaint.measureText(matrices[lm].fLabel, | 118 SkScalar labelW = labelPaint.measureText(matrices[lm].fLabel, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 stroke.setStyle(SkPaint::kStroke_Style); | 165 stroke.setStyle(SkPaint::kStroke_Style); |
| 166 canvas->translate(0.f, kPointSize + kPadY); | 166 canvas->translate(0.f, kPointSize + kPadY); |
| 167 columnH += kPointSize + kPadY; | 167 columnH += kPointSize + kPadY; |
| 168 } | 168 } |
| 169 canvas->restore(); | 169 canvas->restore(); |
| 170 canvas->translate(w + kPadX, 0.f); | 170 canvas->translate(w + kPadX, 0.f); |
| 171 } | 171 } |
| 172 if (0 == s) { | 172 if (0 == s) { |
| 173 canvas->drawLine(0.f, -kPadY, 0.f, columnH + kPadY, outlinePaint
); | 173 canvas->drawLine(0.f, -kPadY, 0.f, columnH + kPadY, outlinePaint
); |
| 174 canvas->translate(kPadX / 2, 0.f); | 174 canvas->translate(kPadX / 2, 0.f); |
| 175 static const char kFillLabel[] = "Filled"; | 175 constexpr char kFillLabel[] = "Filled"; |
| 176 static const char kStrokeLabel[] = "Stroked"; | 176 constexpr char kStrokeLabel[] = "Stroked"; |
| 177 SkScalar y = columnH + kPadY / 2; | 177 SkScalar y = columnH + kPadY / 2; |
| 178 SkScalar fillX = -outlinePaint.measureText(kFillLabel, strlen(kF
illLabel)) - kPadX; | 178 SkScalar fillX = -outlinePaint.measureText(kFillLabel, strlen(kF
illLabel)) - kPadX; |
| 179 SkScalar strokeX = kPadX; | 179 SkScalar strokeX = kPadX; |
| 180 canvas->drawText(kFillLabel, strlen(kFillLabel), fillX, y, label
Paint); | 180 canvas->drawText(kFillLabel, strlen(kFillLabel), fillX, y, label
Paint); |
| 181 canvas->drawText(kStrokeLabel, strlen(kStrokeLabel), strokeX, y,
labelPaint); | 181 canvas->drawText(kStrokeLabel, strlen(kStrokeLabel), strokeX, y,
labelPaint); |
| 182 } | 182 } |
| 183 } | 183 } |
| 184 } | 184 } |
| OLD | NEW |