DEF_SIMPLE_GM_BG(glyph_pos_align, canvas, kWidth, kHeight, SK_ColorBLACK) { SkPaint paint; paint.setTextSize(kTextHeight); paint.setFakeBoldText(true); const SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE }; const SkPoint pts[] = {{0, 0}, {kWidth, kHeight}}; paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors), SkShader::kMirror_TileMode)); paint.setTextAlign(SkPaint::kRight_Align); drawTestCase(canvas, "Right Align", kTextHeight, paint); paint.setTextAlign(SkPaint::kCenter_Align); drawTestCase(canvas, "Center Align", 4 * kTextHeight, paint); paint.setTextAlign(SkPaint::kLeft_Align); drawTestCase(canvas, "Left Align", 7 * kTextHeight, paint); }
void onDraw(SkCanvas* canvas) override { // There's a black pixel at 40, 40 for reference. canvas->drawPoint(40.0f, 40.0f, SK_ColorBLACK); // Two reference images. canvas->translate(50.0f, 50.0f); drawTestCase(canvas, 1.0f); canvas->translate(0.0f, 50.0f); drawTestCase(canvas, 3.0f); // Uniform scaling test. canvas->translate(0.0f, 100.0f); canvas->save(); canvas->scale(3.0f, 3.0f); drawTestCase(canvas, 1.0f); canvas->restore(); // Non-uniform scaling test. canvas->translate(0.0f, 100.0f); canvas->save(); canvas->scale(3.0f, 6.0f); drawTestCase(canvas, 1.0f); canvas->restore(); // Skew test. canvas->translate(0.0f, 80.0f); canvas->save(); canvas->scale(3.0f, 3.0f); SkMatrix skew; skew.setIdentity(); skew.setSkewX(8.0f / 25.0f); skew.setSkewY(2.0f / 25.0f); canvas->concat(skew); drawTestCase(canvas, 1.0f); canvas->restore(); // Perspective test. canvas->translate(0.0f, 80.0f); canvas->save(); SkMatrix perspective; perspective.setIdentity(); perspective.setPerspX(-SkScalarInvert(340)); perspective.setSkewX(8.0f / 25.0f); perspective.setSkewY(2.0f / 25.0f); canvas->concat(perspective); drawTestCase(canvas, 1.0f); canvas->restore(); }