diff options
author | 2014-08-13 15:18:46 -0700 | |
---|---|---|
committer | 2014-08-13 15:18:46 -0700 | |
commit | c15e28a5224a3a0e977d6b2da44ce89302d01186 (patch) | |
tree | b2013497231194668d4813a62a03983b8f2ed725 /src/ports/SkFontConfigParser_android.cpp | |
parent | 6cfa73a29a26edf1d03bca224ad6860396308ffc (diff) |
Revert of Remove SkPaintOptionsAndroid (patchset #5 of https://codereview.chromium.org/447873003/)
Reason for revert:
Breaks the Chromium build: http://108.170.220.120:10117/builders/Canary-Chrome-Ubuntu13.10-Ninja-x86_64-DRT/builds/2469/steps/BuildContentShell_1/logs/stdio
Original issue's description:
> Remove SkPaintOptionsAndroid
>
> Committed: https://skia.googlesource.com/skia/+/f32331ffdb5de0440bb337aa7cbdd6f33e9ff23b
R=reed@google.com, mtklein@google.com, tomhudson@google.com, djsollen@google.com
TBR=djsollen@google.com, mtklein@google.com, reed@google.com, tomhudson@google.com
NOTREECHECKS=true
NOTRY=true
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/473543004
Diffstat (limited to 'src/ports/SkFontConfigParser_android.cpp')
-rw-r--r-- | src/ports/SkFontConfigParser_android.cpp | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/src/ports/SkFontConfigParser_android.cpp b/src/ports/SkFontConfigParser_android.cpp index b38ec8cc4c..658055d5a2 100644 --- a/src/ports/SkFontConfigParser_android.cpp +++ b/src/ports/SkFontConfigParser_android.cpp @@ -109,9 +109,9 @@ void familyElementHandler(FontFamily* family, const char** attributes) { } else if (nameLen == 7 && !strncmp("variant", name, nameLen)) { // Value should be either elegant or compact. if (valueLen == 7 && !strncmp("elegant", value, valueLen)) { - family->fVariant = kElegant_FontVariant; + family->fVariant = SkPaintOptionsAndroid::kElegant_Variant; } else if (valueLen == 7 && !strncmp("compact", value, valueLen)) { - family->fVariant = kCompact_FontVariant; + family->fVariant = SkPaintOptionsAndroid::kCompact_Variant; } } } @@ -122,6 +122,13 @@ void fontFileNameHandler(void* data, const char* s, int len) { familyData->currentFontInfo->fFileName.set(s, len); } +void familyElementEndHandler(FontFamily* family) { + for (int i = 0; i < family->fFonts.count(); i++) { + family->fFonts[i].fPaintOptions.setLanguage(family->fLanguage); + family->fFonts[i].fPaintOptions.setFontVariant(family->fVariant); + } +} + void fontElementHandler(XML_Parser* parser, FontFileInfo* file, const char** attributes) { // A <font> should have weight (integer) and style (normal, italic) attributes. // NOTE: we ignore the style. @@ -271,6 +278,7 @@ void endElementHandler(void* data, const char* tag) { if (len == 9 && strncmp(tag, "familyset", len) == 0) { familysetElementEndHandler(familyData); } else if (len == 6 && strncmp(tag, "family", len) == 0) { + familyElementEndHandler(familyData->currentFamily); *familyData->families.append() = familyData->currentFamily; familyData->currentFamily = NULL; } else if (len == 4 && !strncmp(tag, "font", len)) { @@ -324,27 +332,14 @@ static void fontFileElementHandler(FamilyData* familyData, const char** attribut size_t nameLength = strlen(attributeName); size_t valueLength = strlen(attributeValue); if (nameLength == 7 && strncmp(attributeName, "variant", nameLength) == 0) { - const FontVariant prevVariant = familyData->currentFamily->fVariant; if (valueLength == 7 && strncmp(attributeValue, "elegant", valueLength) == 0) { - familyData->currentFamily->fVariant = kElegant_FontVariant; + newFileInfo.fPaintOptions.setFontVariant(SkPaintOptionsAndroid::kElegant_Variant); } else if (valueLength == 7 && strncmp(attributeValue, "compact", valueLength) == 0) { - familyData->currentFamily->fVariant = kCompact_FontVariant; - } - if (familyData->currentFamily->fFonts.count() > 1 && - familyData->currentFamily->fVariant != prevVariant) { - SkDebugf("Every font file within a family must have identical variants"); - sk_throw(); + newFileInfo.fPaintOptions.setFontVariant(SkPaintOptionsAndroid::kCompact_Variant); } - } else if (nameLength == 4 && strncmp(attributeName, "lang", nameLength) == 0) { - SkLanguage prevLang = familyData->currentFamily->fLanguage; - familyData->currentFamily->fLanguage = SkLanguage(attributeValue); - if (familyData->currentFamily->fFonts.count() > 1 && - familyData->currentFamily->fLanguage != prevLang) { - SkDebugf("Every font file within a family must have identical languages"); - sk_throw(); - } + newFileInfo.fPaintOptions.setLanguage(attributeValue); } else if (nameLength == 5 && strncmp(attributeName, "index", nameLength) == 0) { int value; if (parseNonNegativeInteger(attributeValue, &value)) { @@ -519,7 +514,9 @@ static void getFallbackFontFamiliesForLocale(SkTDArray<FontFamily*> &fallbackFon for (int i = 0; i < langSpecificFonts.count(); ++i) { FontFamily* family = langSpecificFonts[i]; - family->fLanguage = SkLanguage(locale); + for (int j = 0; j < family->fFonts.count(); ++j) { + family->fFonts[j].fPaintOptions.setLanguage(locale); + } *fallbackFonts.append() = family; } } @@ -597,16 +594,3 @@ void SkFontConfigParser::GetTestFontFamilies(SkTDArray<FontFamily*> &fontFamilie *fontFamilies.append() = fallbackFonts[i]; } } - -SkLanguage SkLanguage::getParent() const { - SkASSERT(!fTag.isEmpty()); - const char* tag = fTag.c_str(); - - // strip off the rightmost "-.*" - const char* parentTagEnd = strrchr(tag, '-'); - if (parentTagEnd == NULL) { - return SkLanguage(); - } - size_t parentTagLen = parentTagEnd - tag; - return SkLanguage(tag, parentTagLen); -} |