xref: /aosp_15_r20/external/skia/docs/examples/Image_GetBackendTextureFromImage.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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(Image_GetBackendTextureFromImage, 256, 256, false, 3) {
draw(SkCanvas * canvas)5 void draw(SkCanvas* canvas) {
6     SkFont font = SkFont(fontMgr->matchFamilyStyle(nullptr, {}));
7     SkPaint paint;
8 
9     GrRecordingContext* context = canvas->recordingContext();
10     if (!context) {
11         canvas->drawString("GPU only!", 20, 40, font, paint);
12         return;
13     }
14     GrDirectContext* direct = context->asDirectContext();
15     if (!direct) {
16         canvas->drawString("Direct context only!", 20, 40, font, paint);
17         return;
18     }
19 
20     sk_sp<SkImage> imageFromBackend = SkImages::AdoptTextureFrom(direct,
21                                                                  backEndTexture,
22                                                                  kBottomLeft_GrSurfaceOrigin,
23                                                                  kRGBA_8888_SkColorType,
24                                                                  kOpaque_SkAlphaType);
25     GrBackendTexture textureFromImage;
26     if (!SkImages::GetBackendTextureFromImage(imageFromBackend, &textureFromImage, false)) {
27         return;
28     }
29 
30     sk_sp<SkImage> imageFromTexture = SkImages::AdoptTextureFrom(direct,
31                                                                  textureFromImage,
32                                                                  kTopLeft_GrSurfaceOrigin,
33                                                                  kRGBA_8888_SkColorType,
34                                                                  kOpaque_SkAlphaType);
35     canvas->drawImage(imageFromTexture, 0, 0);
36     canvas->drawImage(imageFromBackend, 128, 128);
37 }
38 }  // END FIDDLE
39