virtual void onDraw(SkCanvas* canvas) { this->makePath(); // do perspective drawPaint as the background; SkPaint bkgnrd; SkPoint center = SkPoint::Make(SkIntToScalar(100), SkIntToScalar(100)); SkColor colors[] = {SK_ColorBLACK, SK_ColorCYAN, SK_ColorYELLOW, SK_ColorWHITE}; SkScalar pos[] = {0, SK_ScalarHalf / 2, 3 * SK_ScalarHalf / 2, SK_Scalar1}; SkShader* s = SkGradientShader::CreateRadial(center, SkIntToScalar(1000), colors, pos, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode); bkgnrd.setShader(s)->unref(); canvas->save(); canvas->translate(SkIntToScalar(100), SkIntToScalar(100)); SkMatrix mat; mat.reset(); mat.setPerspY(SkScalarToPersp(SK_Scalar1 / 1000)); canvas->concat(mat); canvas->drawPaint(bkgnrd); canvas->restore(); // draw the paths in perspective SkMatrix persp; persp.reset(); persp.setPerspX(SkScalarToPersp(-SK_Scalar1 / 1800)); persp.setPerspY(SkScalarToPersp(SK_Scalar1 / 500)); canvas->concat(persp); canvas->translate(SkIntToScalar(20), SkIntToScalar(20)); const SkScalar scale = SkIntToScalar(5)/4; showFour(canvas, SK_Scalar1, false); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, false); canvas->translate(SkIntToScalar(-450), SkIntToScalar(450)); showFour(canvas, SK_Scalar1, true); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, true); }
virtual void onDrawContent(SkCanvas* canvas) { canvas->translate(SkIntToScalar(20), SkIntToScalar(20)); SkPaint paint; const SkScalar scale = SkIntToScalar(5)/4; paint.setAntiAlias(false); paint.setColor(0x8000FF00); showFour(canvas, SK_Scalar1, paint); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, paint); paint.setAntiAlias(true); canvas->translate(SkIntToScalar(-450), SkIntToScalar(450)); showFour(canvas, SK_Scalar1, paint); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, paint); }
virtual void onDraw(SkCanvas* canvas) { this->makePath(); canvas->translate(SkIntToScalar(20), SkIntToScalar(20)); SkPaint paint; const SkScalar scale = SkIntToScalar(5)/4; paint.setAntiAlias(false); showFour(canvas, SK_Scalar1, paint); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, paint); paint.setAntiAlias(true); canvas->translate(SkIntToScalar(-450), SkIntToScalar(450)); showFour(canvas, SK_Scalar1, paint); canvas->translate(SkIntToScalar(450), 0); showFour(canvas, scale, paint); }
void LedDigit_UpdateLed(LedDigit self) { RETURN_IF_NULL(self); switch (self->digitToShow) { case NO_DIGIT: showNothing(); break; case ZERO: showZero(); break; case ONE: showOne(); break; case TWO: showTwo(); break; case THREE: showThree(); break; case FOUR: showFour(); break; case FIVE: showFive(); break; case SIX: showSix(); break; case SEVEN: showSeven(); break; case EIGHT: showEight(); break; case NINE: showNine(); break; } if (self->showDecimal == TRUE) { showDecimal(); } else { clearDecimal(); } }