override SkTypeface::onOpenStream for android
git-svn-id: http://skia.googlecode.com/svn/trunk@8331 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
a72aef8a21
commit
1361d78e88
@ -313,7 +313,6 @@ public:
|
||||
|
||||
bool isSysFont() const { return fIsSysFont; }
|
||||
|
||||
virtual SkStream* openStream() = 0;
|
||||
virtual const char* getUniqueString() const = 0;
|
||||
virtual const char* getFilePath() const = 0;
|
||||
|
||||
@ -338,17 +337,22 @@ public:
|
||||
fStream->unref();
|
||||
}
|
||||
|
||||
// overrides
|
||||
virtual SkStream* openStream() {
|
||||
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;
|
||||
|
||||
// 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;
|
||||
@ -370,10 +374,6 @@ 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,6 +386,14 @@ 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;
|
||||
|
||||
@ -749,7 +757,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 = ((FamilyTypeface*)face)->openStream();
|
||||
SkStream* fontStream = face->openStream(NULL);
|
||||
const uint32_t length = fontStream->getLength();
|
||||
|
||||
stream->writePackedUInt(length);
|
||||
@ -834,16 +842,7 @@ SkTypeface* SkFontHost::CreateTypeface(const SkTypeface* familyFace,
|
||||
}
|
||||
|
||||
SkStream* SkFontHost::OpenStream(uint32_t fontID) {
|
||||
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;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFontID) {
|
||||
|
Loading…
Reference in New Issue
Block a user