diff options
Diffstat (limited to 'src/ports/SkFontHost_linux.cpp')
-rw-r--r-- | src/ports/SkFontHost_linux.cpp | 49 |
1 files changed, 13 insertions, 36 deletions
diff --git a/src/ports/SkFontHost_linux.cpp b/src/ports/SkFontHost_linux.cpp index 07235c875f..25ae7effe2 100644 --- a/src/ports/SkFontHost_linux.cpp +++ b/src/ports/SkFontHost_linux.cpp @@ -10,7 +10,6 @@ #include "SkFontHost.h" #include "SkFontDescriptor.h" #include "SkDescriptor.h" -#include "SkMMapStream.h" #include "SkOSFile.h" #include "SkPaint.h" #include "SkString.h" @@ -280,8 +279,8 @@ public: EmptyTypeface() : INHERITED(SkTypeface::kNormal, true, NULL, false) {} // overrides - virtual SkStream* openStream() { return NULL; } - virtual const char* getUniqueString() const { return NULL; } + virtual SkStream* openStream() SK_OVERRIDE { return NULL; } + virtual const char* getUniqueString() SK_OVERRIDE const { return NULL; } private: typedef FamilyTypeface INHERITED; @@ -299,14 +298,12 @@ public: fStream->unref(); } - // overrides - virtual SkStream* openStream() - { + virtual SkStream* openStream() SK_OVERRIDE { // openStream returns a refed stream. fStream->ref(); return fStream; } - virtual const char* getUniqueString() const { return NULL; } + virtual const char* getUniqueString() const SK_OVERRIDE { return NULL; } private: SkStream* fStream; @@ -322,25 +319,11 @@ public: fPath.set(path); } - // overrides - virtual SkStream* openStream() - { - SkStream* stream = SkNEW_ARGS(SkMMAPStream, (fPath.c_str())); - - // check for failure - if (stream->getLength() <= 0) { - SkDELETE(stream); - // maybe MMAP isn't supported. try FILE - stream = SkNEW_ARGS(SkFILEStream, (fPath.c_str())); - if (stream->getLength() <= 0) { - SkDELETE(stream); - stream = NULL; - } - } - return stream; + virtual SkStream* openStream() SK_OVERRIDE { + return SkStream::NewFromFile(fPath.c_str()); } - virtual const char* getUniqueString() const { + virtual const char* getUniqueString() const SK_OVERRIDE { const char* str = strrchr(fPath.c_str(), '/'); if (str) { str += 1; // skip the '/' @@ -359,19 +342,13 @@ private: static bool get_name_and_style(const char path[], SkString* name, SkTypeface::Style* style, bool* isFixedWidth) { - SkMMAPStream stream(path); - if (stream.getLength() > 0) { - return find_name_and_attributes(&stream, name, style, isFixedWidth); - } - else { - SkFILEStream stream(path); - if (stream.getLength() > 0) { - return find_name_and_attributes(&stream, name, style, isFixedWidth); - } + SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path)); + if (stream.get()) { + return find_name_and_attributes(stream, name, style, isFixedWidth); + } else { + SkDebugf("---- failed to open <%s> as a font\n", path); + return false; } - - SkDebugf("---- failed to open <%s> as a font\n", path); - return false; } // these globals are assigned (once) by load_system_fonts() |