revert 8331 (broke android text)

git-svn-id: http://skia.googlecode.com/svn/trunk@8339 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
reed@google.com 2013-03-22 15:17:21 +00:00
parent 253ac10622
commit 0228856899

View File

@ -313,6 +313,7 @@ public:
bool isSysFont() const { return fIsSysFont; }
virtual SkStream* openStream() = 0;
virtual const char* getUniqueString() const = 0;
virtual const char* getFilePath() const = 0;
@ -337,22 +338,17 @@ public:
fStream->unref();
}
virtual const char* getUniqueString() const SK_OVERRIDE { return NULL; }
virtual const char* getFilePath() const SK_OVERRIDE { return NULL; }
protected:
virtual SkStream* openStream(int* ttcIndex) const SK_OVERRIDE {
// TODO: we should be given this when we were created
*ttcIndex = 0;
// overrides
virtual SkStream* openStream() {
// we just ref our existing stream, since the caller will call unref()
// when they are through
// TODO: replace with shallow-copy when we have that for streams
fStream->ref();
// must rewind each time, since the caller assumes a "new" stream
fStream->rewind();
return fStream;
}
virtual const char* getUniqueString() const { return NULL; }
virtual const char* getFilePath() const { return NULL; }
private:
SkStream* fStream;
@ -374,6 +370,10 @@ public:
fPath.set(path);
}
virtual SkStream* openStream() SK_OVERRIDE {
return SkStream::NewFromFile(fPath.c_str());
}
virtual const char* getUniqueString() const SK_OVERRIDE {
const char* str = strrchr(fPath.c_str(), '/');
if (str) {
@ -386,14 +386,6 @@ public:
return fPath.c_str();
}
protected:
virtual SkStream* openStream(int* ttcIndex) const SK_OVERRIDE {
// TODO: we should be given this when we were created
*ttcIndex = 0;
return SkStream::NewFromFile(fPath.c_str());
}
private:
SkString fPath;
@ -757,7 +749,7 @@ void SkFontHost::Serialize(const SkTypeface* face, SkWStream* stream) {
const bool isCustomFont = !((FamilyTypeface*)face)->isSysFont();
if (isCustomFont) {
// store the entire font in the fontData
SkStream* fontStream = face->openStream(NULL);
SkStream* fontStream = ((FamilyTypeface*)face)->openStream();
const uint32_t length = fontStream->getLength();
stream->writePackedUInt(length);
@ -842,7 +834,16 @@ SkTypeface* SkFontHost::CreateTypeface(const SkTypeface* familyFace,
}
SkStream* SkFontHost::OpenStream(uint32_t fontID) {
return NULL;
SkAutoMutexAcquire ac(gFamilyHeadAndNameListMutex);
FamilyTypeface* tf = (FamilyTypeface*)find_from_uniqueID(fontID);
SkStream* stream = tf ? tf->openStream() : NULL;
if (stream && stream->getLength() == 0) {
stream->unref();
stream = NULL;
}
return stream;
}
SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFontID) {