blob: b03bb3d998462c3c3a4c5e16ab7eeeeffead82df [file] [log] [blame]
/*
* 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 <cstdio>
#include <filesystem>
// 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<skresources::ImageAsset> asset = frp->loadImageAsset("images", "baby_tux.png", "");
if (!asset) {
printf("Could not load baby_tux.png in images subdirectory\n");
return 1;
}
sk_sp<SkImage> 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<SkImage> 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;
}