/* * Copyright 2024 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "include/codec/SkCodec.h" #include "include/codec/SkJpegDecoder.h" #include "include/codec/SkPngDecoder.h" #include "include/core/SkImage.h" #include "include/core/SkString.h" #include "modules/skresources/include/SkResources.h" #include #include // bazel run :use_skresources -- $SKIA_HOME/resources int main(int argc, char** argv) { if (argc != 2) { printf("Usage: %s [folder]", argv[0]); return 1; } SkCodecs::Register(SkJpegDecoder::Decoder()); SkCodecs::Register(SkPngDecoder::Decoder()); auto frp = skresources::FileResourceProvider::Make(SkString(argv[1])); // Try to load two arbitrary files in //resources/images sk_sp asset = frp->loadImageAsset("images", "baby_tux.png", ""); if (!asset) { printf("Could not load baby_tux.png in images subdirectory\n"); return 1; } sk_sp tux = asset->getFrameData(0).image; if (!tux) { printf("Could not decode baby_tux.png in images subdirectory\n"); return 1; } printf("Baby Tux is %d by %d pixels big\n", tux->width(), tux->height()); asset = frp->loadImageAsset("images", "CMYK.jpg", ""); if (!asset || !asset->getFrameData(0).image) { printf("Could not load/decode CMYK.jpg in images subdirectory\n"); return 1; } sk_sp cmyk = asset->getFrameData(0).image; if (!cmyk) { printf("Could not decode CMYK.jpg in images subdirectory\n"); return 1; } printf("CMYK is %d by %d pixels big\n", cmyk->width(), cmyk->height()); return 0; }