| // Copyright 2019 Google LLC. | |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | |
| #include "tools/fiddle/examples.h" | |
| REG_FIDDLE(Image_scalePixels, 256, 128, false, 3) { | |
| void draw(SkCanvas* canvas) { | |
| std::vector<int32_t> srcPixels; | |
| int quarterWidth = image->width() / 16; | |
| int rowBytes = quarterWidth * 4; | |
| int quarterHeight = image->height() / 16; | |
| srcPixels.resize(quarterHeight * rowBytes); | |
| SkPixmap pixmap(SkImageInfo::MakeN32Premul(quarterWidth, quarterHeight), | |
| &srcPixels.front(), rowBytes); | |
| canvas->scale(4, 4); | |
| const SkSamplingOptions samplings[] = { | |
| SkSamplingOptions(), | |
| SkSamplingOptions(SkFilterMode::kLinear), | |
| SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kLinear), | |
| SkSamplingOptions({1.0f/3, 1.0f/3}), | |
| }; | |
| for (unsigned index = 0; index < std::size(samplings); ++index) { | |
| image->scalePixels(pixmap, samplings[index]); | |
| sk_sp<SkImage> filtered = SkImages::RasterFromPixmap(pixmap, nullptr, nullptr); | |
| canvas->drawImage(filtered, 16 * index, 0); | |
| } | |
| } | |
| } // END FIDDLE |