aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/Resources.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Resources.cpp')
-rw-r--r--tools/Resources.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/tools/Resources.cpp b/tools/Resources.cpp
index 43cc21d209..4767edde5f 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();
+}