1cb93a386Sopenharmony_ci// Copyright 2020 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci#include "tools/fiddle/examples.h" 4cb93a386Sopenharmony_ciREG_FIDDLE(PaintDump, 256, 256, true, 0) { 5cb93a386Sopenharmony_cistatic const char* str(SkPaint::Cap v) { 6cb93a386Sopenharmony_ci switch (v) { 7cb93a386Sopenharmony_ci case SkPaint::kButt_Cap: return "SkPaint::kButt_Cap"; 8cb93a386Sopenharmony_ci case SkPaint::kRound_Cap: return "SkPaint::kRound_Cap"; 9cb93a386Sopenharmony_ci case SkPaint::kSquare_Cap: return "SkPaint::kSquare_Cap"; 10cb93a386Sopenharmony_ci default: return "?"; 11cb93a386Sopenharmony_ci } 12cb93a386Sopenharmony_ci} 13cb93a386Sopenharmony_cistatic const char* str(SkPaint::Join v) { 14cb93a386Sopenharmony_ci switch (v) { 15cb93a386Sopenharmony_ci case SkPaint::kMiter_Join: return "SkPaint::kMiter_Join"; 16cb93a386Sopenharmony_ci case SkPaint::kRound_Join: return "SkPaint::kRound_Join"; 17cb93a386Sopenharmony_ci case SkPaint::kBevel_Join: return "SkPaint::kBevel_Join"; 18cb93a386Sopenharmony_ci default: return "?"; 19cb93a386Sopenharmony_ci } 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_cistatic const char* str(SkPaint::Style v) { 22cb93a386Sopenharmony_ci switch (v) { 23cb93a386Sopenharmony_ci case SkPaint::kFill_Style: return "SkPaint::kFill_Style"; 24cb93a386Sopenharmony_ci case SkPaint::kStroke_Style: return "SkPaint::kStroke_Style"; 25cb93a386Sopenharmony_ci case SkPaint::kStrokeAndFill_Style: return "SkPaint::kStrokeAndFill_Style"; 26cb93a386Sopenharmony_ci default: return "?"; 27cb93a386Sopenharmony_ci } 28cb93a386Sopenharmony_ci} 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_cistatic const char* str(bool v) { return v ? "true" : "false"; } 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ciSkString PaintStringDump(const SkPaint& p) { 33cb93a386Sopenharmony_ci SkString s("SkPaint p;\n"); 34cb93a386Sopenharmony_ci SkPaint d; 35cb93a386Sopenharmony_ci if (d.getStrokeWidth() != p.getStrokeWidth()) { 36cb93a386Sopenharmony_ci s.appendf("p.setStrokeWidth(%.9g);\n", p.getStrokeWidth()); 37cb93a386Sopenharmony_ci } 38cb93a386Sopenharmony_ci if (d.getStrokeMiter() != p.getStrokeMiter()) { 39cb93a386Sopenharmony_ci s.appendf("p.setStrokeMiter(%.9g);\n", p.getStrokeMiter()); 40cb93a386Sopenharmony_ci } 41cb93a386Sopenharmony_ci SkColor4f c = p.getColor4f(); 42cb93a386Sopenharmony_ci if (c != d.getColor4f()) { 43cb93a386Sopenharmony_ci s.appendf("p.setColor4f({%.9g, %.9g, %.9g, %.9g}, nullptr);\n", c.fR, c.fG, c.fB, c.fA); 44cb93a386Sopenharmony_ci } 45cb93a386Sopenharmony_ci if (d.isAntiAlias() != p.isAntiAlias()) { 46cb93a386Sopenharmony_ci s.appendf("p.setAntiAlias(%s);\n", str(p.isAntiAlias())); 47cb93a386Sopenharmony_ci } 48cb93a386Sopenharmony_ci if (d.isDither() != p.isDither()) { 49cb93a386Sopenharmony_ci s.appendf("p.setDither(%s);\n", str(p.isDither())); 50cb93a386Sopenharmony_ci } 51cb93a386Sopenharmony_ci if (d.getStrokeCap() != p.getStrokeCap()) { 52cb93a386Sopenharmony_ci s.appendf("p.setStrokeCap(%s);\n", str(p.getStrokeCap())); 53cb93a386Sopenharmony_ci } 54cb93a386Sopenharmony_ci if (d.getStrokeJoin() != p.getStrokeJoin()) { 55cb93a386Sopenharmony_ci s.appendf("p.setStrokeJoin(%s);\n", str(p.getStrokeJoin())); 56cb93a386Sopenharmony_ci } 57cb93a386Sopenharmony_ci if (d.getStyle() != p.getStyle()) { 58cb93a386Sopenharmony_ci s.appendf("p.setStyle(%s);\n", str(p.getStyle())); 59cb93a386Sopenharmony_ci } 60cb93a386Sopenharmony_ci if (d.asBlendMode() != p.asBlendMode()) { 61cb93a386Sopenharmony_ci s.appendf("p.setBlendMode(SkBlendMode::k%s);\n", 62cb93a386Sopenharmony_ci SkBlendMode_Name(p.getBlendMode_or(SkBlendMode::kSrcOver))); 63cb93a386Sopenharmony_ci } 64cb93a386Sopenharmony_ci if (p.getPathEffect()) { 65cb93a386Sopenharmony_ci s.appendf("p.setPathEffect(/*FIXME*/);\n"); 66cb93a386Sopenharmony_ci } 67cb93a386Sopenharmony_ci if (p.getShader()) { 68cb93a386Sopenharmony_ci s.appendf("p.setShader(/*FIXME*/);\n"); 69cb93a386Sopenharmony_ci } 70cb93a386Sopenharmony_ci if (p.getMaskFilter()) { 71cb93a386Sopenharmony_ci s.appendf("p.setMaskFilter(/*FIXME*/);\n"); 72cb93a386Sopenharmony_ci } 73cb93a386Sopenharmony_ci if (p.getColorFilter()) { 74cb93a386Sopenharmony_ci s.appendf("p.setColorFilter(/*FIXME*/);\n"); 75cb93a386Sopenharmony_ci } 76cb93a386Sopenharmony_ci if (p.getImageFilter()) { 77cb93a386Sopenharmony_ci s.appendf("p.setImageFilter(/*FIXME*/);\n"); 78cb93a386Sopenharmony_ci } 79cb93a386Sopenharmony_ci return s; 80cb93a386Sopenharmony_ci} 81cb93a386Sopenharmony_ci 82cb93a386Sopenharmony_civoid draw(SkCanvas* canvas) { 83cb93a386Sopenharmony_ci SkPaint p; 84cb93a386Sopenharmony_ci p.setColor(SK_ColorRED); 85cb93a386Sopenharmony_ci p.setAntiAlias(true); 86cb93a386Sopenharmony_ci p.setStyle(SkPaint::kStroke_Style); 87cb93a386Sopenharmony_ci p.setStrokeWidth(10); 88cb93a386Sopenharmony_ci p.setBlendMode(SkBlendMode::kDstOver); 89cb93a386Sopenharmony_ci p.setStrokeCap(SkPaint::kRound_Cap); 90cb93a386Sopenharmony_ci p.setShader(image->makeShader(SkTileMode::kRepeat, SkTileMode::kRepeat, SkSamplingOptions())); 91cb93a386Sopenharmony_ci 92cb93a386Sopenharmony_ci auto s = PaintStringDump(p); 93cb93a386Sopenharmony_ci SkDebugf("%s", s.c_str()); 94cb93a386Sopenharmony_ci} 95cb93a386Sopenharmony_ci 96cb93a386Sopenharmony_ci} // END FIDDLE 97