Walker::ApplyStatus smp_c_for_statement_walker::operator () (SuifObject *x) { SuifEnv *the_env = get_env(); CForStatement *c_for_stmt = to<CForStatement>(x); BrickAnnote *loop_label_annote = to<BrickAnnote>(c_for_stmt->lookup_annote_by_name("c_for_label")); StringBrick *loop_label_brick = to<StringBrick>(loop_label_annote->get_brick(0)); String current_loop_label = loop_label_brick->get_value(); if (current_loop_label != loop_label_argument) return Walker::Continue; Statement *body = c_for_stmt->get_body(); if (body) { VariableSymbol* loop_counter = get_c_for_basic_induction_variable(c_for_stmt); VariableSymbol* strip_loop_counter = new_anonymous_variable(the_env, find_scope(c_for_stmt), loop_counter->get_type()); name_variable(strip_loop_counter); // step size of the strip is the step size of the original loop int strip_step_size = get_c_for_step(c_for_stmt); c_for_stmt->set_body(0); CForStatement* strip = make_strip(the_env, strip_loop_counter, strip_size, strip_step_size, body); c_for_stmt->set_body(strip); set_c_for_step(c_for_stmt, strip_size); smp_load_variable_expression_walker walker(the_env, loop_counter, strip_loop_counter); body->walk(walker); } return Walker::Truncate; }
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)); } }