/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "gm/gm.h" #include "include/core/SkCanvas.h" #include "include/core/SkColor.h" #include "include/core/SkDrawable.h" #include "include/core/SkMatrix.h" #include "include/core/SkPaint.h" #include "include/core/SkPathBuilder.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" struct MyDrawable : public SkDrawable { SkRect onGetBounds() override { return SkRect::MakeWH(50, 100); } void onDraw(SkCanvas* canvas) override { SkPath path = SkPathBuilder().moveTo(10, 10) .conicTo(10, 90, 50, 90, 0.9f) .detach(); SkPaint paint; paint.setColor(SK_ColorBLUE); canvas->drawRect(path.getBounds(), paint); paint.setAntiAlias(true); paint.setColor(SK_ColorWHITE); canvas->drawPath(path, paint); } }; /* * Test calling drawables w/ translate and matrices */ DEF_SIMPLE_GM(drawable, canvas, 180, 275) { sk_sp drawable(new MyDrawable); canvas->translate(10, 10); canvas->drawDrawable(drawable.get()); canvas->drawDrawable(drawable.get(), 0, 150); SkMatrix m = SkMatrix::Scale(1.5f, 0.8f); m.postTranslate(70, 0); canvas->drawDrawable(drawable.get(), &m); m.postTranslate(0, 150); canvas->drawDrawable(drawable.get(), &m); }