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

Unified Diff: src/ports/SkFontMgr_android.cpp

Issue 451093002: Use test config in SkFontMgr_android. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Move logic out to factory. Created 6 years, 4 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
« no previous file with comments | « src/ports/SkFontConfigInterface_android.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ports/SkFontMgr_android.cpp
diff --git a/src/ports/SkFontMgr_android.cpp b/src/ports/SkFontMgr_android.cpp
index 1ab2f29642a1147be1bc0404e43faf951f3af113..b0af791d300a974f2898d336b3a3eb767b1be7c0 100644
--- a/src/ports/SkFontMgr_android.cpp
+++ b/src/ports/SkFontMgr_android.cpp
@@ -14,6 +14,7 @@
#include "SkTDArray.h"
#include "SkTSearch.h"
#include "SkTypeface.h"
+#include "SkTypeface_android.h"
#include "SkTypefaceCache.h"
#include <limits>
@@ -117,15 +118,19 @@ private:
typedef SkTypeface_Android INHERITED;
};
-void get_path_for_sys_fonts(SkString* full, const SkString& name) {
- full->set(getenv("ANDROID_ROOT"));
- full->append(SK_FONT_FILE_PREFIX);
+void get_path_for_sys_fonts(const char* basePath, const SkString& name, SkString* full) {
+ if (basePath) {
+ full->set(basePath);
+ } else {
+ full->set(getenv("ANDROID_ROOT"));
+ full->append(SK_FONT_FILE_PREFIX);
+ }
full->append(name);
}
class SkFontStyleSet_Android : public SkFontStyleSet {
public:
- explicit SkFontStyleSet_Android(const FontFamily& family) {
+ explicit SkFontStyleSet_Android(const FontFamily& family, const char* basePath) {
const SkString* cannonicalFamilyName = NULL;
if (family.fNames.count() > 0) {
cannonicalFamilyName = &family.fNames[0];
@@ -135,7 +140,7 @@ public:
const FontFileInfo& fontFile = family.fFontFiles[i];
SkString pathName;
- get_path_for_sys_fonts(&pathName, fontFile.fFileName);
+ get_path_for_sys_fonts(basePath, fontFile.fFileName, &pathName);
SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(pathName.c_str()));
if (!stream.get()) {
@@ -260,7 +265,15 @@ public:
SkFontMgr_Android() {
SkTDArray<FontFamily*> fontFamilies;
SkFontConfigParser::GetFontFamilies(fontFamilies);
- this->buildNameToFamilyMap(fontFamilies);
+ this->buildNameToFamilyMap(fontFamilies, NULL);
+ this->findDefaultFont();
+ }
+ SkFontMgr_Android(const char* mainConfigFile, const char* fallbackConfigFile,
+ const char* basePath)
+ {
+ SkTDArray<FontFamily*> fontFamilies;
+ SkFontConfigParser::GetTestFontFamilies(fontFamilies, mainConfigFile, fallbackConfigFile);
+ this->buildNameToFamilyMap(fontFamilies, basePath);
this->findDefaultFont();
}
@@ -425,7 +438,7 @@ private:
SkTDArray<NameToFamily> fNameToFamilyMap;
SkTDArray<NameToFamily> fFallbackNameToFamilyMap;
- void buildNameToFamilyMap(SkTDArray<FontFamily*> families) {
+ void buildNameToFamilyMap(SkTDArray<FontFamily*> families, const char* basePath) {
for (int i = 0; i < families.count(); i++) {
FontFamily& family = *families[i];
@@ -439,7 +452,7 @@ private:
}
}
- SkFontStyleSet_Android* newSet = SkNEW_ARGS(SkFontStyleSet_Android, (family));
+ SkFontStyleSet_Android* newSet = SkNEW_ARGS(SkFontStyleSet_Android, (family, basePath));
if (0 == newSet->count()) {
SkDELETE(newSet);
continue;
@@ -485,5 +498,16 @@ private:
///////////////////////////////////////////////////////////////////////////////
SkFontMgr* SkFontMgr::Factory() {
+ // The call to SkGetTestFontConfiguration is so that Chromium can override the environment.
+ // TODO: these globals need to be removed, in favor of a constructor / separate Factory
+ // which can be used instead.
+ const char* mainConfigFile;
+ const char* fallbackConfigFile;
+ const char* basePath;
+ SkGetTestFontConfiguration(&mainConfigFile, &fallbackConfigFile, &basePath);
+ if (mainConfigFile) {
+ SkNEW_ARGS(SkFontMgr_Android, (mainConfigFile, fallbackConfigFile, basePath));
bungeman-skia 2014/08/11 17:45:23 Need to return here.
+ }
+
return SkNEW(SkFontMgr_Android);
}
« no previous file with comments | « src/ports/SkFontConfigInterface_android.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698