Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: src/ports/SkFontHost_android.cpp

Issue 12676024: Force all font backends to override onGetFontDescriptor, so we can (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/ports/SkFontHost_android.cpp
===================================================================
--- src/ports/SkFontHost_android.cpp (revision 8346)
+++ src/ports/SkFontHost_android.cpp (working copy)
@@ -316,6 +316,9 @@
virtual const char* getUniqueString() const = 0;
virtual const char* getFilePath() const = 0;
+protected:
+ virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE;
+
private:
bool fIsSysFont;
@@ -737,57 +740,19 @@
///////////////////////////////////////////////////////////////////////////////
-void SkFontHost::Serialize(const SkTypeface* face, SkWStream* stream) {
-
- SkFontDescriptor descriptor;
+void FamilyTypeface::onGetFontDescriptor(SkFontDescriptor* desc,
+ bool* isLocalStream) const {
{
SkAutoMutexAcquire ac(gFamilyHeadAndNameListMutex);
- descriptor.setFamilyName(find_family_name(face));
- descriptor.setStyle(face->style());
- descriptor.setFontFileName(((FamilyTypeface*)face)->getUniqueString());
+ desc->setFamilyName(find_family_name(this));
+ desc->setFontFileName(this->getUniqueString());
}
-
- descriptor.serialize(stream);
-
- const bool isCustomFont = !((FamilyTypeface*)face)->isSysFont();
- if (isCustomFont) {
- // store the entire font in the fontData
- SkStream* fontStream = face->openStream(NULL);
- const uint32_t length = fontStream->getLength();
-
- stream->writePackedUInt(length);
- stream->writeStream(fontStream, length);
-
- fontStream->unref();
- } else {
- stream->writePackedUInt(0);
- }
+ *isLocalStream = !this->isSysFont();
}
+#if 0 // do we need this different name lookup for Deserialize?
bungeman-skia 2013/03/22 21:04:05 Should we ask djsollen about this?
reed1 2013/03/25 12:26:27 Done.
SkTypeface* SkFontHost::Deserialize(SkStream* stream) {
- {
- SkAutoMutexAcquire ac(gFamilyHeadAndNameListMutex);
- load_system_fonts();
- }
-
- SkFontDescriptor descriptor(stream);
- const char* familyName = descriptor.getFamilyName();
- const char* fontFileName = descriptor.getFontFileName();
- const SkTypeface::Style style = descriptor.getStyle();
-
- const uint32_t customFontDataLength = stream->readPackedUInt();
- if (customFontDataLength > 0) {
-
- // generate a new stream to store the custom typeface
- SkMemoryStream* fontStream = new SkMemoryStream(customFontDataLength - 1);
- stream->read((void*)fontStream->getMemoryBase(), customFontDataLength - 1);
-
- SkTypeface* face = CreateTypefaceFromStream(fontStream);
-
- fontStream->unref();
- return face;
- }
-
+ ...
if (NULL != fontFileName && 0 != *fontFileName) {
const FontInitRec* rec = gSystemFonts;
for (size_t i = 0; i < gNumSystemFonts; i++) {
@@ -802,9 +767,9 @@
}
}
}
-
- return SkFontHost::CreateTypeface(NULL, familyName, style);
+ ...
}
+#endif
///////////////////////////////////////////////////////////////////////////////

Powered by Google App Engine
This is Rietveld 408576698