1cb93a386Sopenharmony_ci// Copyright 2020 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci#include "tools/fiddle/examples.h" 4cb93a386Sopenharmony_ciREG_FIDDLE(UnpremulGPU, 256, 256, false, 6) { 5cb93a386Sopenharmony_civoid draw(SkCanvas* canvas) { 6cb93a386Sopenharmony_ci canvas->clear(0xffa020a0); 7cb93a386Sopenharmony_ci SkImageInfo premulInfo = SkImageInfo::MakeS32(10, 10, kPremul_SkAlphaType); 8cb93a386Sopenharmony_ci SkBitmap premulBitmap; 9cb93a386Sopenharmony_ci premulBitmap.allocPixels(premulInfo); 10cb93a386Sopenharmony_ci for (int y = 0; y < 10; y++) { 11cb93a386Sopenharmony_ci for (int x = 0; x < 10; x++) { 12cb93a386Sopenharmony_ci *(premulBitmap.getAddr32(x, y)) = 0x80808080; 13cb93a386Sopenharmony_ci } 14cb93a386Sopenharmony_ci } 15cb93a386Sopenharmony_ci sk_sp<SkImage> premulImage = premulBitmap.asImage(); 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci SkImageInfo unpremulInfo = premulInfo.makeAlphaType(kUnpremul_SkAlphaType); 18cb93a386Sopenharmony_ci SkBitmap unpremulBitmap; 19cb93a386Sopenharmony_ci unpremulBitmap.allocPixels(unpremulInfo); 20cb93a386Sopenharmony_ci for (int y = 0; y < 10; y++) { 21cb93a386Sopenharmony_ci for (int x = 0; x < 10; x++) { 22cb93a386Sopenharmony_ci *(unpremulBitmap.getAddr32(x, y)) = 0x80FFFFFF; 23cb93a386Sopenharmony_ci } 24cb93a386Sopenharmony_ci } 25cb93a386Sopenharmony_ci sk_sp<SkImage> unpremulImage = unpremulBitmap.asImage(); 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ci SkPaint paint; 28cb93a386Sopenharmony_ci const SkTileMode tile = SkTileMode::kRepeat; 29cb93a386Sopenharmony_ci paint.setShader(premulImage->makeShader(tile, tile, SkSamplingOptions())); 30cb93a386Sopenharmony_ci canvas->drawCircle(10.0f, 10.0f, 10.0f, paint); 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci paint.setShader(unpremulImage->makeShader(tile, tile, SkSamplingOptions())); 33cb93a386Sopenharmony_ci canvas->drawCircle(10.0f, 35.0f, 10.0f, paint); 34cb93a386Sopenharmony_ci} 35cb93a386Sopenharmony_ci} // END FIDDLE 36