PatchView() : fAngle(0) { fShader0 = make_shader0(&fSize0); fSize1 = fSize0; if (fSize0.fX == 0 || fSize0.fY == 0) { fSize1.set(2, 2); } fShader1 = make_shader1(fSize1); const SkScalar S = SkIntToScalar(50); const SkScalar T = SkIntToScalar(40); fPts[0].set(S*0, T); fPts[1].set(S*1, T); fPts[2].set(S*2, T); fPts[3].set(S*3, T); fPts[4].set(S*3, T*2); fPts[5].set(S*3, T*3); fPts[6].set(S*3, T*4); fPts[7].set(S*2, T*4); fPts[8].set(S*1, T*4); fPts[9].set(S*0, T*4); fPts[10].set(S*0, T*3); fPts[11].set(S*0, T*2); this->setBGColor(SK_ColorGRAY); }
VerticesView() { SkIPoint size; fShader0 = make_shader0(&size); fShader1 = make_shader1(size); make_strip(&fRecs[0], size.fX, size.fY); make_fan(&fRecs[1], size.fX, size.fY); make_tris(&fRecs[2]); fScale = SK_Scalar1; }
static void mesh_slide(SkCanvas* canvas) { Rec fRecs[3]; SkIPoint size; SkShader* fShader0 = make_shader0(&size); SkShader* fShader1 = make_shader1(size); SkAutoUnref aur0(fShader0); SkAutoUnref aur1(fShader1); make_strip(&fRecs[0], size.fX, size.fY); make_fan(&fRecs[1], size.fX, size.fY); make_tris(&fRecs[2]); SkPaint paint; paint.setDither(true); paint.setFilterLevel(SkPaint::kLow_FilterLevel); for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) { canvas->save(); paint.setShader(NULL); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, NULL, NULL, NULL, 0, paint); canvas->translate(SkIntToScalar(210), 0); paint.setShader(fShader0); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, NULL, NULL, NULL, 0, paint); canvas->translate(SkIntToScalar(210), 0); paint.setShader(fShader1); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, NULL, NULL, NULL, 0, paint); canvas->restore(); canvas->translate(0, SkIntToScalar(250)); } }
static void mesh_slide(SkCanvas* canvas) { Rec fRecs[3]; SkIPoint size; auto fShader0 = make_shader0(&size); auto fShader1 = make_shader1(size); make_strip(&fRecs[0], size.fX, size.fY); make_fan(&fRecs[1], size.fX, size.fY); make_tris(&fRecs[2]); SkPaint paint; paint.setDither(true); paint.setFilterQuality(kLow_SkFilterQuality); for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) { canvas->save(); paint.setShader(nullptr); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, nullptr, nullptr, nullptr, 0, paint); canvas->translate(SkIntToScalar(210), 0); paint.setShader(fShader0); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, nullptr, nullptr, nullptr, 0, paint); canvas->translate(SkIntToScalar(210), 0); paint.setShader(fShader1); canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, fRecs[i].fVerts, fRecs[i].fTexs, nullptr, nullptr, nullptr, 0, paint); canvas->restore(); canvas->translate(0, SkIntToScalar(250)); } }
void onOnceBeforeDraw() override { const SkScalar X = 30; const SkScalar Y = 30; fPts[0].set(0, 0); fPts[1].set(X/2, 3); fPts[2].set(X, 0); fPts[3].set(3, Y/2); fPts[4].set(X/2, Y/2); fPts[5].set(X-3, Y/2); fPts[6].set(0, Y); fPts[7].set(X/2, Y-3); fPts[8].set(X, Y); const SkScalar w = 40; const SkScalar h = 40; fTexs[0].set(0, 0); fTexs[1].set(w/2, 0); fTexs[2].set(w, 0); fTexs[3].set(0, h/2); fTexs[4].set(w/2, h/2); fTexs[5].set(w, h/2); fTexs[6].set(0, h); fTexs[7].set(w/2, h); fTexs[8].set(w, h); fShader1 = make_shader1(w, h); fShader2 = make_shader2(); fColorFilter = make_color_filter(); SkRandom rand; for (size_t i = 0; i < SK_ARRAY_COUNT(fColors); ++i) { fColors[i] = rand.nextU() | 0xFF000000; } }