Revert "resources: remove most uses of GetResourcePath()"

This reverts commit 5093a539def3ae09df324018f2343827009b2e05.

Reason for revert: google3 seems broken

Original change's description:
> resources: remove most uses of GetResourcePath()
> 
> Going forward, we will standardize on GetResourceAsData(), which will
> make it easier to run tests in environments without access to the
> filesystem.
> 
> Also: GetResourceAsData() complains when a resource is missing.
> This is usually an error.
> 
> Change-Id: Iaf70b71b0ca5ed8cd1a5538a60ef185ae8736188
> Reviewed-on: https://skia-review.googlesource.com/82642
> Reviewed-by: Hal Canary <halcanary@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>

TBR=halcanary@google.com,scroggo@google.com

Change-Id: Ic5a7c0167c995a672e6b06dc92abe00564432214
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/83001
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/bench/ColorCodecBench.cpp b/bench/ColorCodecBench.cpp
index c38a8a7..1239e1d 100644
--- a/bench/ColorCodecBench.cpp
+++ b/bench/ColorCodecBench.cpp
@@ -74,7 +74,8 @@
         matrix.set3x3(0.30f, 0.31f, 0.28f, 0.32f, 0.33f, 0.29f, 0.27f, 0.30f, 0.30f);
         fDstSpace = SkColorSpace::MakeRGB(gamma, matrix);
     } else {
-        sk_sp<SkData> dstData = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+        sk_sp<SkData> dstData = SkData::MakeFromFileName(
+                GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
         SkASSERT(dstData);
         fDstSpace = SkColorSpace::MakeICC(dstData->data(), dstData->size());
     }
diff --git a/dm/DM.cpp b/dm/DM.cpp
index ebd2fe4..d2c127c 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -1357,8 +1357,12 @@
     SkTaskGroup::Enabler enabled(FLAGS_threads);
     gCreateTypefaceDelegate = &create_from_name;
 
-    if (nullptr == GetResourceAsData("images/color_wheel.png")) {
-        info("Some resources are missing.  Do you need to set --resourcePath?\n");
+    {
+        SkString testResourcePath = GetResourcePath("images/color_wheel.png");
+        SkFILEStream testResource(testResourcePath.c_str());
+        if (!testResource.isValid()) {
+            info("Some resources are missing.  Do you need to set --resourcePath?\n");
+        }
     }
     gather_gold();
     gather_uninteresting_hashes();
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 96817e0..89a4b53 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -1066,7 +1066,8 @@
     }
 
     // Load the dst ICC profile.  This particular dst is fairly similar to Adobe RGB.
-    sk_sp<SkData> dstData = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> dstData = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     if (!dstData) {
         return "Cannot read monitor profile.  Is the resource path set correctly?";
     }
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp
index 1435c04..c0002b3 100644
--- a/gm/makecolorspace.cpp
+++ b/gm/makecolorspace.cpp
@@ -13,7 +13,8 @@
 #include "SkImagePriv.h"
 
 sk_sp<SkImage> make_raster_image(const char* path, SkTransferFunctionBehavior behavior) {
-    sk_sp<SkData> resourceData = GetResourceAsData(path);
+    SkString resourcePath = GetResourcePath(path);
+    sk_sp<SkData> resourceData = SkData::MakeFromFileName(resourcePath.c_str());
     std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(resourceData);
 
     SkBitmap bitmap;
diff --git a/samplecode/SampleCowboy.cpp b/samplecode/SampleCowboy.cpp
index bd8f7c9..b1eec87 100644
--- a/samplecode/SampleCowboy.cpp
+++ b/samplecode/SampleCowboy.cpp
@@ -37,13 +37,12 @@
     };
 
     void onOnceBeforeDraw() override {
-        constexpr char path[] = "Cowboy.svg";
-        auto data = GetResourceAsData(path);
-        if (!data) {
-            SkDebugf("file not found: \"%s\"\n", path);
+        fPath = GetResourcePath("Cowboy.svg");
+        SkFILEStream svgStream(fPath.c_str());
+        if (!svgStream.isValid()) {
+            SkDebugf("file not found: \"path\"\n", fPath.c_str());
             return;
         }
-        SkMemoryStream svgStream(std::move(data));
 
         SkDOM xmlDom;
         if (!xmlDom.build(svgStream)) {
diff --git a/samplecode/SampleIdentityScale.cpp b/samplecode/SampleIdentityScale.cpp
index ad23541..2ec9112 100644
--- a/samplecode/SampleIdentityScale.cpp
+++ b/samplecode/SampleIdentityScale.cpp
@@ -25,10 +25,11 @@
 class IdentityScaleView : public SampleView {
 public:
     IdentityScaleView(const char imageFilename[]) {
-        if (!DecodeDataToBitmap(GetResourceAsData(imageFilename), &fBM)) {
-            fBM.allocN32Pixels(1, 1);
-            *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
-        }
+      SkString resourcePath = GetResourcePath(imageFilename);
+      if (!decode_file(resourcePath.c_str(), &fBM)) {
+          fBM.allocN32Pixels(1, 1);
+          *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
+      }
     }
 
 protected:
diff --git a/samplecode/SampleSubpixelTranslate.cpp b/samplecode/SampleSubpixelTranslate.cpp
index 7ce1885..51b5ef6 100644
--- a/samplecode/SampleSubpixelTranslate.cpp
+++ b/samplecode/SampleSubpixelTranslate.cpp
@@ -24,15 +24,15 @@
     SubpixelTranslateView(const char imageFilename[],
                           float horizontalVelocity,
                           float verticalVelocity)
-        : fHorizontalVelocity(horizontalVelocity)
-        , fVerticalVelocity(verticalVelocity)
-    {
-        if (!DecodeDataToBitmap(GetResourceAsData(imageFilename), &fBM)) {
-            fBM.allocN32Pixels(1, 1);
-            *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
-        }
-        fCurPos = SkPoint::Make(0,0);
-        fSize = 200;
+      : fHorizontalVelocity(horizontalVelocity),
+        fVerticalVelocity(verticalVelocity) {
+      SkString resourcePath = GetResourcePath(imageFilename);
+      if (!decode_file(resourcePath.c_str(), &fBM)) {
+          fBM.allocN32Pixels(1, 1);
+          *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad
+      }
+      fCurPos = SkPoint::Make(0,0);
+      fSize = 200;
     }
 
 protected:
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
index 787e854..ab21e4a 100644
--- a/tests/CodecTest.cpp
+++ b/tests/CodecTest.cpp
@@ -846,8 +846,9 @@
 // Test that the RawCodec works also for not asset stream. This will test the code path using
 // SkRawBufferedStream instead of SkRawAssetStream.
 DEF_TEST(Codec_raw_notseekable, r) {
-    constexpr char path[] = "images/dng_with_preview.dng";
-    sk_sp<SkData> data(GetResourceAsData(path));
+    const char* path = "images/dng_with_preview.dng";
+    SkString fullPath(GetResourcePath(path));
+    sk_sp<SkData> data(SkData::MakeFromFileName(fullPath.c_str()));
     if (!data) {
         SkDebugf("Missing resource '%s'\n", path);
         return;
@@ -864,8 +865,9 @@
 // Test that even if webp_parse_header fails to peek enough, it will fall back to read()
 // + rewind() and succeed.
 DEF_TEST(Codec_webp_peek, r) {
-    constexpr char path[] = "images/baby_tux.webp";
-    auto data = GetResourceAsData(path);
+    const char* path = "images/baby_tux.webp";
+    SkString fullPath(GetResourcePath(path));
+    auto data = SkData::MakeFromFileName(fullPath.c_str());
     if (!data) {
         SkDebugf("Missing resource '%s'\n", path);
         return;
@@ -1001,7 +1003,8 @@
 
     const int dstWidth = subsetWidth / opts.fSampleSize;
     const int dstHeight = subsetHeight / opts.fSampleSize;
-    sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> data = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeICC(data->data(), data->size());
     SkImageInfo dstInfo = codec->getInfo().makeWH(dstWidth, dstHeight)
                                           .makeColorType(kN32_SkColorType)
@@ -1383,14 +1386,12 @@
 }
 
 static void test_invalid_header(skiatest::Reporter* r, const char* path) {
-    auto data = GetResourceAsData(path);
-    if (!data) {
-        return;
-    }
-    std::unique_ptr<SkStreamAsset> stream(new SkMemoryStream(std::move(data)));
+    SkString resourcePath = GetResourcePath(path);
+    auto stream = SkFILEStream::Make(resourcePath.c_str());
     if (!stream) {
         return;
     }
+
     std::unique_ptr<SkCodec> codec(SkCodec::MakeFromStream(std::move(stream)));
     REPORTER_ASSERT(r, !codec);
 }
diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp
index d180cda..19e1044 100644
--- a/tests/ColorSpaceTest.cpp
+++ b/tests/ColorSpaceTest.cpp
@@ -245,13 +245,14 @@
     test_serialize(r, SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named).get(), true);
     test_serialize(r, SkColorSpace::MakeSRGBLinear().get(), true);
 
-    sk_sp<SkData> monitorData = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> monitorData = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false);
-    monitorData = GetResourceAsData("icc_profiles/HP_Z32x.icc");
+    monitorData = SkData::MakeFromFileName( GetResourcePath("icc_profiles/HP_Z32x.icc").c_str());
     test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false);
-    monitorData = GetResourceAsData("icc_profiles/upperLeft.icc");
+    monitorData = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperLeft.icc").c_str());
     test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false);
-    monitorData = GetResourceAsData("icc_profiles/upperRight.icc");
+    monitorData = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperRight.icc").c_str());
     test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false);
 
     SkColorSpaceTransferFn fn;
@@ -269,13 +270,14 @@
 DEF_TEST(ColorSpace_Equals, r) {
     sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB();
     sk_sp<SkColorSpace> adobe = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named);
-    sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> data = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     sk_sp<SkColorSpace> z30 = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/HP_Z32x.icc");
+    data = SkData::MakeFromFileName( GetResourcePath("icc_profiles/HP_Z32x.icc").c_str());
     sk_sp<SkColorSpace> z32 = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/upperLeft.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperLeft.icc").c_str());
     sk_sp<SkColorSpace> upperLeft = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/upperRight.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperRight.icc").c_str());
     sk_sp<SkColorSpace> upperRight = SkColorSpace::MakeICC(data->data(), data->size());
 
     SkColorSpaceTransferFn fn;
diff --git a/tests/GifTest.cpp b/tests/GifTest.cpp
index 0de5fc5..5219825 100644
--- a/tests/GifTest.cpp
+++ b/tests/GifTest.cpp
@@ -225,12 +225,12 @@
 // Regression test for decoding a gif image with sampleSize of 4, which was
 // previously crashing.
 DEF_TEST(Gif_Sampled, r) {
-    auto data = GetResourceAsData("images/test640x479.gif");
-    REPORTER_ASSERT(r, data);
-    if (!data) {
+    auto stream = SkFILEStream::Make(GetResourcePath("images/test640x479.gif").c_str());
+    REPORTER_ASSERT(r, stream);
+    if (!stream) {
         return;
     }
-    std::unique_ptr<SkStreamAsset> stream(new SkMemoryStream(std::move(data)));
+
     std::unique_ptr<SkAndroidCodec> codec(SkAndroidCodec::MakeFromStream(std::move(stream)));
     REPORTER_ASSERT(r, codec);
     if (!codec) {
diff --git a/tests/ICCTest.cpp b/tests/ICCTest.cpp
index 4933155..4bff654 100644
--- a/tests/ICCTest.cpp
+++ b/tests/ICCTest.cpp
@@ -39,7 +39,8 @@
         0.74519f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
     };
 
-    sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> data = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     sk_sp<SkICC> z30 = SkICC::Make(data->data(), data->size());
     test_to_xyz_d50(r, z30.get(), true, z30Reference);
 
@@ -48,15 +49,15 @@
         0.75368f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
     };
 
-    data = GetResourceAsData("icc_profiles/HP_Z32x.icc");
+    data = SkData::MakeFromFileName( GetResourcePath("icc_profiles/HP_Z32x.icc").c_str());
     sk_sp<SkICC> z32 = SkICC::Make(data->data(), data->size());
     test_to_xyz_d50(r, z32.get(), true, z32Reference);
 
-    data = GetResourceAsData("icc_profiles/upperLeft.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperLeft.icc").c_str());
     sk_sp<SkICC> upperLeft = SkICC::Make(data->data(), data->size());
     test_to_xyz_d50(r, upperLeft.get(), false, z32Reference);
 
-    data = GetResourceAsData("icc_profiles/upperRight.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperRight.icc").c_str());
     sk_sp<SkICC> upperRight = SkICC::Make(data->data(), data->size());
     test_to_xyz_d50(r, upperRight.get(), false, z32Reference);
 }
@@ -81,19 +82,20 @@
     referenceFn.fF = 0.0f;
     referenceFn.fG = 2.2f;
 
-    sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+    sk_sp<SkData> data = SkData::MakeFromFileName(
+            GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     sk_sp<SkICC> z30 = SkICC::Make(data->data(), data->size());
     test_is_numerical_transfer_fn(r, z30.get(), true, referenceFn);
 
-    data = GetResourceAsData("icc_profiles/HP_Z32x.icc");
+    data = SkData::MakeFromFileName( GetResourcePath("icc_profiles/HP_Z32x.icc").c_str());
     sk_sp<SkICC> z32 = SkICC::Make(data->data(), data->size());
     test_is_numerical_transfer_fn(r, z32.get(), true, referenceFn);
 
-    data = GetResourceAsData("icc_profiles/upperLeft.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperLeft.icc").c_str());
     sk_sp<SkICC> upperLeft = SkICC::Make(data->data(), data->size());
     test_is_numerical_transfer_fn(r, upperLeft.get(), false, referenceFn);
 
-    data = GetResourceAsData("icc_profiles/upperRight.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperRight.icc").c_str());
     sk_sp<SkICC> upperRight = SkICC::Make(data->data(), data->size());
     test_is_numerical_transfer_fn(r, upperRight.get(), false, referenceFn);
 }
diff --git a/tests/ImageIsOpaqueTest.cpp b/tests/ImageIsOpaqueTest.cpp
index 38f9b6a..9b4837a 100644
--- a/tests/ImageIsOpaqueTest.cpp
+++ b/tests/ImageIsOpaqueTest.cpp
@@ -40,13 +40,14 @@
 }
 
 DEF_TEST(ImageInfo_flattening, reporter) {
-    sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
+     sk_sp<SkData> data =
+             SkData::MakeFromFileName(GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
     sk_sp<SkColorSpace> space0 = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/HP_Z32x.icc");
+    data = SkData::MakeFromFileName( GetResourcePath("icc_profiles/HP_Z32x.icc").c_str());
     sk_sp<SkColorSpace> space1 = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/upperLeft.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperLeft.icc").c_str());
     sk_sp<SkColorSpace> space2 = SkColorSpace::MakeICC(data->data(), data->size());
-    data = GetResourceAsData("icc_profiles/upperRight.icc");
+    data = SkData::MakeFromFileName(GetResourcePath("icc_profiles/upperRight.icc").c_str());
     sk_sp<SkColorSpace> space3 = SkColorSpace::MakeICC(data->data(), data->size());
 
     sk_sp<SkColorSpace> spaces[] = {
diff --git a/tests/PDFJpegEmbedTest.cpp b/tests/PDFJpegEmbedTest.cpp
index aaac2b9..b62b166 100644
--- a/tests/PDFJpegEmbedTest.cpp
+++ b/tests/PDFJpegEmbedTest.cpp
@@ -32,7 +32,8 @@
 
 static sk_sp<SkData> load_resource(
         skiatest::Reporter* r, const char* test, const char* filename) {
-    sk_sp<SkData> data = GetResourceAsData(filename);
+    SkString path(GetResourcePath(filename));
+    sk_sp<SkData> data(SkData::MakeFromFileName(path.c_str()));
     if (!data) {
         INFOF(r, "\n%s: Resource '%s' can not be found.\n",
               test, filename);
diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp
index 2543870..4cf605a 100644
--- a/tests/SerializationTest.cpp
+++ b/tests/SerializationTest.cpp
@@ -358,8 +358,8 @@
 static void TestPictureTypefaceSerialization(skiatest::Reporter* reporter) {
     {
         // Load typeface from file to test CreateFromFile with index.
-        auto data = GetResourceAsData("fonts/test.ttc");
-        auto typeface = SkTypeface::MakeFromStream(new SkMemoryStream(std::move(data)), 1);
+        SkString filename = GetResourcePath("/fonts/test.ttc");
+        sk_sp<SkTypeface> typeface(SkTypeface::MakeFromFile(filename.c_str(), 1));
         if (!typeface) {
             INFOF(reporter, "Could not run fontstream test because test.ttc not found.");
         } else {
@@ -369,7 +369,7 @@
 
     {
         // Load typeface as stream to create with axis settings.
-        std::unique_ptr<SkStreamAsset> distortable(GetResourceAsStream("fonts/Distortable.ttf"));
+        std::unique_ptr<SkStreamAsset> distortable(GetResourceAsStream("/fonts/Distortable.ttf"));
         if (!distortable) {
             INFOF(reporter, "Could not run fontstream test because Distortable.ttf not found.");
         } else {
diff --git a/tools/Resources.cpp b/tools/Resources.cpp
index 6436a0d..948949b 100644
--- a/tools/Resources.cpp
+++ b/tools/Resources.cpp
@@ -26,26 +26,37 @@
     FLAGS_resourcePath.set(0, resource);
 }
 
-
-bool DecodeDataToBitmap(sk_sp<SkData> data, SkBitmap* dst) {
-    std::unique_ptr<SkImageGenerator> gen(SkImageGenerator::MakeFromEncoded(std::move(data)));
-    return gen && dst->tryAllocPixels(gen->getInfo()) &&
+bool GetResourceAsBitmap(const char* resource, SkBitmap* dst) {
+    SkString resourcePath = GetResourcePath(resource);
+    sk_sp<SkData> resourceData(SkData::MakeFromFileName(resourcePath.c_str()));
+    std::unique_ptr<SkImageGenerator> gen(SkImageGenerator::MakeFromEncoded(resourceData));
+    if (!gen) {
+        return false;
+    }
+    return dst->tryAllocPixels(gen->getInfo()) &&
         gen->getPixels(gen->getInfo().makeColorSpace(nullptr), dst->getPixels(), dst->rowBytes(),
                        nullptr);
 }
 
+sk_sp<SkImage> GetResourceAsImage(const char* resource) {
+    SkString path = GetResourcePath(resource);
+    sk_sp<SkData> resourceData(SkData::MakeFromFileName(path.c_str()));
+    return SkImage::MakeFromEncoded(resourceData);
+}
+
 std::unique_ptr<SkStreamAsset> GetResourceAsStream(const char* resource) {
-    auto data = GetResourceAsData(resource);
-    return data ? std::unique_ptr<SkStreamAsset>(new SkMemoryStream(std::move(data)))
-                : nullptr;
+    SkString resourcePath = GetResourcePath(resource);
+    auto stream = SkFILEStream::Make(resourcePath.c_str());
+    if (!stream) {
+        SkDebugf("Resource %s not found.\n", resource);
+        return nullptr;
+    }
+    return std::move(stream);
 }
 
 sk_sp<SkData> GetResourceAsData(const char* resource) {
-    auto data = SkData::MakeFromFileName(GetResourcePath(resource).c_str());
-    if (!data) {
-        SkDebugf("Resource \"%s\" not found.\n", resource);
-    }
-    return data;
+    SkString resourcePath = GetResourcePath(resource);
+    return SkData::MakeFromFileName(resourcePath.c_str());
 }
 
 sk_sp<SkTypeface> MakeResourceAsTypeface(const char* resource) {
diff --git a/tools/Resources.h b/tools/Resources.h
index 7d59093..01eaa3f 100644
--- a/tools/Resources.h
+++ b/tools/Resources.h
@@ -8,32 +8,22 @@
 #ifndef Resources_DEFINED
 #define Resources_DEFINED
 
-#include "SkImage.h"
+#include "SkRefCnt.h"
 #include "SkString.h"
 
 class SkBitmap;
 class SkData;
+class SkImage;
 class SkStreamAsset;
 class SkTypeface;
 
 SkString GetResourcePath(const char* resource = "");
-
 void SetResourcePath(const char* );
 
-bool DecodeDataToBitmap(sk_sp<SkData> data, SkBitmap* dst);
-
-sk_sp<SkData> GetResourceAsData(const char* resource);
-
-inline bool GetResourceAsBitmap(const char* resource, SkBitmap* dst) {
-    return DecodeDataToBitmap(GetResourceAsData(resource), dst);
-}
-
-inline sk_sp<SkImage> GetResourceAsImage(const char* resource) {
-    return SkImage::MakeFromEncoded(GetResourceAsData(resource));
-}
-
+bool GetResourceAsBitmap(const char* resource, SkBitmap* dst);
+sk_sp<SkImage> GetResourceAsImage(const char* resource);
 std::unique_ptr<SkStreamAsset> GetResourceAsStream(const char* resource);
-
+sk_sp<SkData> GetResourceAsData(const char* resource);
 sk_sp<SkTypeface> MakeResourceAsTypeface(const char* resource);
 
 #endif  // Resources_DEFINED