| /* | |
| * Copyright 2015 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| // This is an example of the translation unit that needs to be | |
| // assembled by the fiddler program to compile into a fiddle: an | |
| // implementation of the GetDrawOptions() and draw() functions. | |
| #include "skia.h" | |
| // fiddle_main.h (purposefully) pollutes the global namespace with very generic identifiers like | |
| // "image", "duration", "frame", and "fontMgr". As such it is something of an | |
| // "implementation header" and should be included last to avoid name shadowing warnings. | |
| #include "tools/fiddle/fiddle_main.h" | |
| DrawOptions GetDrawOptions() { | |
| // path *should* be absolute. | |
| static const char path[] = "resources/images/color_wheel.png"; | |
| return DrawOptions(256, | |
| 256, | |
| true, | |
| true, | |
| true, | |
| true, | |
| true, | |
| false, | |
| false, | |
| path, | |
| skgpu::Mipmapped::kYes, | |
| 64, | |
| 64, | |
| 0, | |
| skgpu::Mipmapped::kYes); | |
| } | |
| void draw(SkCanvas* canvas) { | |
| canvas->clear(SK_ColorWHITE); | |
| SkMatrix matrix; | |
| matrix.setScale(0.75f, 0.75f); | |
| matrix.preRotate(frame * 30.0f * duration); // If an animation, rotate at 30 deg/s. | |
| SkPaint paint; | |
| paint.setShader(image->makeShader(SkTileMode::kRepeat, SkTileMode::kRepeat, | |
| SkSamplingOptions(), matrix)); | |
| canvas->drawPaint(paint); | |
| SkDebugf("This is text output: %d", 2); | |
| if (auto dContext = GrAsDirectContext(canvas->recordingContext())) { | |
| sk_sp<SkImage> tmp = SkImages::BorrowTextureFrom(dContext, | |
| backEndTexture, | |
| kTopLeft_GrSurfaceOrigin, | |
| kRGBA_8888_SkColorType, | |
| kOpaque_SkAlphaType, | |
| nullptr); | |
| constexpr int kSampleCnt = 0; | |
| sk_sp<SkSurface> tmp2 = SkSurfaces::WrapBackendTexture(dContext, | |
| backEndTextureRenderTarget, | |
| kTopLeft_GrSurfaceOrigin, | |
| kSampleCnt, | |
| kRGBA_8888_SkColorType, | |
| nullptr, | |
| nullptr); | |
| // Note: this surface should only be renderable (i.e., not textureable) | |
| sk_sp<SkSurface> tmp3 = SkSurfaces::WrapBackendRenderTarget(dContext, | |
| backEndRenderTarget, | |
| kTopLeft_GrSurfaceOrigin, | |
| kRGBA_8888_SkColorType, | |
| nullptr, | |
| nullptr); | |
| } | |
| } |