SampleFuzz.cpp revision 5fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3
149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SampleCode.h" 249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkView.h" 349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkCanvas.h" 449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkBlurMaskFilter.h" 549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkPaint.h" 649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkPath.h" 749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkXfermode.h" 849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkMatrix.h" 949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkColor.h" 1049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#include "SkRandom.h" 1149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 1249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic void set2x3(SkMatrix* m, float a, float b, float c, float d, float e, float f) { 1349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->reset(); 1449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(0, a); 1549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(1, b); 1649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(2, c); 1749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(3, d); 1849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(4, e); 1949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com m->set(5, f); 2049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 2149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 2249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic SkRandom gRand; 2349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic bool return_large; 2449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic bool return_undef; 2549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic bool quick; 2649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic bool scale_large; 2749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic int scval = 1; 2849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic float transval = 0; 2949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 3049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic int R(float x) { 3149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return (int)floor(SkScalarToFloat(gRand.nextUScalar1()) * x); 3249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 3349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 34261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.comstatic float huge() { 35261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com double d = 1e100; 36261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com float f = (float)d; 37261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com return f; 38261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com} 39261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com 4049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic float make_number() { 4149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com float v; 4249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com int sel; 4349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 4449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (return_large == true && R(3) == 1) sel = R(6); else sel = R(4); 4549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (return_undef == false && sel == 0) sel = 1; 4649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 47261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com if (R(2) == 1) v = (float)R(100); else 4849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 4949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (sel) { 5049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: break; 5149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 1: v = 0; break; 52261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com case 2: v = 0.000001f; break; 5349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 3: v = 10000; break; 5449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 4: v = 2000000000; break; 55261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com case 5: v = huge(); break; 5649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 5749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 5849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (R(4) == 1) v = -v; 5949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return v; 6049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 6149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 6249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic SkColor make_color() { 6349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (R(2) == 1) return 0xFFC0F0A0; else return 0xFF000090; 6449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 6549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 6649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 6749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic SkColor make_fill() { 6849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#if 0 6949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com int sel; 7049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 7149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) sel = 0; else sel = R(6); 7249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 7349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (sel) { 7449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 7549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: 7649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 1: 7749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 2: 7849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return make_color(); 7949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 8049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 8149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 3: 8249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com var r = ctx.createLinearGradient(make_number(),make_number(),make_number(),make_number()); 8349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com for (i=0;i<4;i++) 8449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.addColorStop(make_number(),make_color()); 8549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return r; 8649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 8749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 8849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 4: 8949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com var r = ctx.createRadialGradient(make_number(),make_number(),make_number(),make_number(),make_number(),make_number()); 9049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com for (i=0;i<4;i++) 9149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.addColorStop(make_number(),make_color()); 9249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return r; 9349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 9449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 9549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 5: 9649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com var r = ctx.createPattern(imgObj,"repeat"); 9749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (R(6) == 0) 9849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.addColorStop(make_number(),make_color()); 9949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return r; 10049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 10149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 10249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#else 10349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return make_color(); 10449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com#endif 10549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 10649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 10749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 10849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic void do_fuzz(SkCanvas* canvas) { 10949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPath path; 11049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint paint; 11149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setAntiAlias(true); 11249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 11349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com for (int i=0;i<100;i++) { 11449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (R(33)) { 11549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 11649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: 11749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setColor(make_fill()); 11849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 11949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 12049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 1: 12149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setAlpha(gRand.nextU() & 0xFF); 12249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 12349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 12449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 2: { 125048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com SkXfermode::Mode mode; 126048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com switch (R(3)) { 127048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com case 0: mode = SkXfermode::kSrc_Mode; break; 128048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com case 1: mode = SkXfermode::kXor_Mode; break; 129048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com case 2: mode = SkXfermode::kSrcOver_Mode; break; 130048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 1315ebbe14f76da3028e5d4523c093a0f4a2cf8e982reed@android.com paint.setXfermodeMode(mode); 13249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 13349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 13449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 13549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 3: 13649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (R(2)) { 13749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: paint.setStrokeCap(SkPaint::kRound_Cap); break; 13849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 1: paint.setStrokeCap(SkPaint::kButt_Cap); break; 13949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 14049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 14149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 14249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 4: 14349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (R(2)) { 14449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: paint.setStrokeJoin(SkPaint::kRound_Join); break; 14549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 1: paint.setStrokeJoin(SkPaint::kMiter_Join); break; 14649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 14749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 14849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 14949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 5: 15049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStrokeWidth(make_number()); 15149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 15249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 15349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 6: 15449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStrokeMiter(make_number()); 15549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 15649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 15749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 7: 15849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 15996959218246ffab878c45237e77a26dceb52cc29bsalomon@google.com SkSafeUnref(paint.setMaskFilter(SkBlurMaskFilter::Create(make_number(), SkBlurMaskFilter::kNormal_BlurStyle))); 16049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 16149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 16249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 8: 16349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 16449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.shadowColor = make_fill(); 16549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 16649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 16749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 9: 16849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 16949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.shadowOffsetX = make_number(); 17049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.shadowOffsetY = make_number(); 17149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 17249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 17349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 10: 17449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->restore(); 17549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 17649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 17749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 11: 17849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->rotate(make_number()); 17949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 18049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 18149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 12: 18249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->save(); 18349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 18449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 18549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 13: 18649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->scale(-1,-1); 18749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 18849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 18949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 14: 19049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 19149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 19249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 19349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (transval == 0) { 19449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com transval = make_number(); 19549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->translate(transval,0); 19649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } else { 19749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->translate(-transval,0); 19849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com transval = 0; 19949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 20049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 20149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 20249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 20349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 15: { 20449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkRect r; 20549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.set(make_number(),make_number(),make_number(),make_number()); 20649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint::Style s = paint.getStyle(); 20749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(SkPaint::kFill_Style); 20849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawRect(r, paint); 20949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(s); 21049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com // clearrect 21149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 21249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 21349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 16: 21449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 21549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com// ctx.drawImage(imgObj,make_number(),make_number(),make_number(),make_number(),make_number(),make_number(),make_number(),make_number()); 21649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 21749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 21849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 17: { 21949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkRect r; 22049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.set(make_number(),make_number(),make_number(),make_number()); 22149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint::Style s = paint.getStyle(); 22249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(SkPaint::kFill_Style); 22349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawRect(r, paint); 22449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(s); 22549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 22649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 22749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 18: 22849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com path.reset(); 22949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 23049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 23149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 19: 23249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com // ctx.clip() is evil. 23349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 23449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 23549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 20: 23649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com path.close(); 23749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 23849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 23949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 21: { 24049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint::Style s = paint.getStyle(); 24149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(SkPaint::kFill_Style); 24249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawPath(path, paint); 24349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(s); 24449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 24549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 24649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 22: { 24749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint::Style s = paint.getStyle(); 24849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(SkPaint::kFill_Style); 24949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawPath(path, paint); 25049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(s); 25149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 25249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 25349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 23: { 25449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkRect r; 25549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com r.set(make_number(),make_number(),make_number(),make_number()); 25649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkPaint::Style s = paint.getStyle(); 25749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(SkPaint::kStroke_Style); 25849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawRect(r, paint); 25949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com paint.setStyle(s); 26049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 26149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 26249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 24: 26349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 26449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.arc(make_number(),make_number(),make_number(),make_number(),make_number(),true); 26549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 26649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 26749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 25: 26849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 26949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.arcTo(make_number(),make_number(),make_number(),make_number(),make_number()); 27049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 27149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 27249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 26: 27349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 27449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com //ctx.bezierCurveTo(make_number(),make_number(),make_number(),make_number(),make_number(),make_number()); 27549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 27649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 27749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 27: 27849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com path.lineTo(make_number(),make_number()); 27949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 28049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 28149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 28: 28249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com path.moveTo(make_number(),make_number()); 28349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 28449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 28549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 29: 28649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 28749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com path.quadTo(make_number(),make_number(),make_number(),make_number()); 28849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 28949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 29049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 30: { 29149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 29249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkMatrix matrix; 29349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com set2x3(&matrix, make_number(),make_number(),make_number(),make_number(),make_number(),make_number()); 29449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->concat(matrix); 29549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 29649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 29749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 31: { 29849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (quick == true) break; 29949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SkMatrix matrix; 30049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com set2x3(&matrix, make_number(),make_number(),make_number(),make_number(),make_number(),make_number()); 30149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->setMatrix(matrix); 30249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } break; 30349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 30449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 32: 30549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 30649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (scale_large == true) { 30749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 30849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com switch (scval) { 30949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com case 0: canvas->scale(-1000000000,1); 31049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->scale(-1000000000,1); 31149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com scval = 1; break; 312261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com case 1: canvas->scale(-.000000001f,1); scval = 2; break; 313261b8e2ca1cf22303ad95267f0bdc6e87e1bbe70reed@google.com case 2: canvas->scale(-.000000001f,1); scval = 0; break; 31449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 31549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 31649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 31749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 31849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com break; 31949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 32049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 32149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 32249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 32349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 32449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 32549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com} 32649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 32749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com////////////////////////////////////////////////////////////////////////////// 32849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 3295fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3mike@reedtribe.orgclass FuzzView : public SampleView { 33049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.compublic: 3315fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3mike@reedtribe.org FuzzView() { 3325fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3mike@reedtribe.org this->setBGColor(0xFFDDDDDD); 3335fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3mike@reedtribe.org } 33449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 33549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comprotected: 33649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com // overrides from SkEventSink 33749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com virtual bool onQuery(SkEvent* evt) { 33849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com if (SampleCode::TitleQ(*evt)) { 33949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com SampleCode::TitleR(evt, "Fuzzer"); 34049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return true; 34149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 34249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com return this->INHERITED::onQuery(evt); 34349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 34449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 34549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com void drawBG(SkCanvas* canvas) { 34649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com canvas->drawColor(0xFFDDDDDD); 34749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 34849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 3495fd9243fd6b82aa3f2a2fae7c62310e77ab7b6d3mike@reedtribe.org virtual void onDrawContent(SkCanvas* canvas) { 3505ebbe14f76da3028e5d4523c093a0f4a2cf8e982reed@android.com SkIRect r = canvas->getTotalClip().getBounds(); 35149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com do_fuzz(canvas); 35249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com this->inval(NULL); 35349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com } 35449f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 35549f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comprivate: 35649f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com typedef SkView INHERITED; 35749f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com}; 35849f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 35949f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com////////////////////////////////////////////////////////////////////////////// 36049f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 36149f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic SkView* MyFactory() { return new FuzzView; } 36249f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.comstatic SkViewRegister reg(MyFactory); 36349f0ff25a046d6001dc2d095b6fa3c30f0f46b6areed@android.com 364