Index: tools/Resources.cpp |
diff --git a/tools/Resources.cpp b/tools/Resources.cpp |
index 43cc21d20991349871433e81c7347a73cf6acfd9..4767edde5f80f6bc19bac95c3dc45f26a8adc733 100644 |
--- a/tools/Resources.cpp |
+++ b/tools/Resources.cpp |
@@ -11,6 +11,8 @@ |
#include "SkData.h" |
#include "SkImageGenerator.h" |
#include "SkOSFile.h" |
+#include "SkStream.h" |
+#include "SkTypeface.h" |
DEFINE_string2(resourcePath, i, "resources", "Directory with test resources: images, fonts, etc."); |
@@ -24,7 +26,29 @@ void SetResourcePath(const char* resource) { |
bool GetResourceAsBitmap(const char* resource, SkBitmap* dst) { |
SkString resourcePath = GetResourcePath(resource); |
- SkAutoTUnref<SkData> resourceData( |
- SkData::NewFromFileName(resourcePath.c_str())); |
+ SkAutoTUnref<SkData> resourceData(SkData::NewFromFileName(resourcePath.c_str())); |
return resourceData && SkInstallDiscardablePixelRef(resourceData, dst); |
} |
+ |
+SkStreamAsset* GetResourceAsStream(const char* resource) { |
+ SkString resourcePath = GetResourcePath(resource); |
+ SkAutoTDelete<SkFILEStream> stream(new SkFILEStream(resourcePath.c_str())); |
+ if (stream->isValid()) { |
+ return stream.detach(); |
+ } else { |
+ SkDebugf("Resource %s not found.\n", resource); |
+ return NULL; |
+ } |
+} |
+ |
+SkTypeface* GetResourceAsTypeface(const char* resource) { |
+ SkAutoTDelete<SkStreamAsset> stream(GetResourceAsStream(resource)); |
+ if (!stream) { |
+ return NULL; |
+ } |
+ SkAutoTUnref<SkTypeface> typeface(SkTypeface::CreateFromStream(stream.detach())); |
+ if (!typeface) { |
+ SkDebugf("Resource %s not a valid font.", resource); |
+ } |
+ return typeface.detach(); |
+} |