1 // Copyright 2019 Google LLC.
2 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3 #include "tools/fiddle/examples.h"
4 REG_FIDDLE(Surface_MakeRenderTarget_2, 256, 256, false, 0) {
draw(SkCanvas * canvas)5 void draw(SkCanvas* canvas) {
6 auto test_draw = [](SkCanvas* surfaceCanvas) -> void {
7 SkFont font(fontMgr->matchFamilyStyle(nullptr, {}), 32);
8
9 SkPaint paint;
10 paint.setAntiAlias(true);
11 // TODO: where did this setting go?
12 //paint.setLCDRenderText(true);
13 paint.setColor(0xFFBBBBBB);
14
15 surfaceCanvas->drawRect(SkRect::MakeWH(128, 64), paint);
16 paint.setColor(SK_ColorWHITE);
17 surfaceCanvas->drawString("Text", 0, 25, font, paint);
18 };
19 auto context = canvas->recordingContext();
20 SkImageInfo info = SkImageInfo::MakeN32(128, 64, kOpaque_SkAlphaType);
21 int y = 0;
22 for (auto geometry : { kRGB_H_SkPixelGeometry, kBGR_H_SkPixelGeometry,
23 kRGB_V_SkPixelGeometry, kBGR_V_SkPixelGeometry } ) {
24 SkSurfaceProps props(0, geometry);
25 sk_sp<SkSurface> surface =
26 context ? SkSurfaces::RenderTarget(context, skgpu::Budgeted::kNo, info, 0, &props)
27 : SkSurfaces::Raster(info, &props);
28 test_draw(surface->getCanvas());
29 surface->draw(canvas, 0, y);
30 sk_sp<SkImage> image(surface->makeImageSnapshot());
31 SkAutoCanvasRestore acr(canvas, true);
32 canvas->scale(8, 8);
33 canvas->drawImage(image, 12, y / 8);
34 y += 64;
35 }
36 }
37 } // END FIDDLE
38