| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkFontConfigParser_android.h" | 8 #include "SkFontConfigParser_android.h" |
| 9 #include "SkFontDescriptor.h" | 9 #include "SkFontDescriptor.h" |
| 10 #include "SkFontHost_FreeType_common.h" | 10 #include "SkFontHost_FreeType_common.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 #endif | 34 #endif |
| 35 | 35 |
| 36 class SkTypeface_Android : public SkTypeface_FreeType { | 36 class SkTypeface_Android : public SkTypeface_FreeType { |
| 37 public: | 37 public: |
| 38 SkTypeface_Android(int index, | 38 SkTypeface_Android(int index, |
| 39 Style style, | 39 Style style, |
| 40 bool isFixedPitch, | 40 bool isFixedPitch, |
| 41 const SkString familyName) | 41 const SkString familyName) |
| 42 : INHERITED(style, SkTypefaceCache::NewFontID(), isFixedPitch) | 42 : INHERITED(style, SkTypefaceCache::NewFontID(), isFixedPitch) |
| 43 , fIndex(index) | 43 , fIndex(index) |
| 44 , fFamilyName(familyName) | 44 , fFamilyName(familyName) { } |
| 45 { } | |
| 46 | 45 |
| 47 const SkString& name() const { return fFamilyName; } | 46 const SkString& name() const { return fFamilyName; } |
| 48 | 47 |
| 49 protected: | 48 protected: |
| 50 int fIndex; | 49 int fIndex; |
| 51 SkString fFamilyName; | 50 SkString fFamilyName; |
| 52 | 51 |
| 53 private: | 52 private: |
| 54 typedef SkTypeface_FreeType INHERITED; | 53 typedef SkTypeface_FreeType INHERITED; |
| 55 }; | 54 }; |
| 56 | 55 |
| 57 class SkTypeface_AndroidSystem : public SkTypeface_Android { | 56 class SkTypeface_AndroidSystem : public SkTypeface_Android { |
| 58 public: | 57 public: |
| 59 SkTypeface_AndroidSystem(const SkString pathName, | 58 SkTypeface_AndroidSystem(const SkString pathName, |
| 60 int index, | 59 int index, |
| 61 Style style, | 60 Style style, |
| 62 bool isFixedPitch, | 61 bool isFixedPitch, |
| 63 const SkString familyName) | 62 const SkString familyName) |
| 64 : INHERITED(index, style, isFixedPitch, familyName) | 63 : INHERITED(index, style, isFixedPitch, familyName) |
| 65 , fPathName(pathName) | 64 , fPathName(pathName) { } |
| 66 { } | |
| 67 | 65 |
| 68 virtual void onGetFontDescriptor(SkFontDescriptor* desc, | 66 virtual void onGetFontDescriptor(SkFontDescriptor* desc, |
| 69 bool* serialize) const SK_OVERRIDE | 67 bool* serialize) const SK_OVERRIDE { |
| 70 { | |
| 71 SkASSERT(desc); | 68 SkASSERT(desc); |
| 72 SkASSERT(serialize); | 69 SkASSERT(serialize); |
| 73 desc->setFamilyName(fFamilyName.c_str()); | 70 desc->setFamilyName(fFamilyName.c_str()); |
| 74 desc->setFontFileName(fPathName.c_str()); | 71 desc->setFontFileName(fPathName.c_str()); |
| 75 *serialize = false; | 72 *serialize = false; |
| 76 } | 73 } |
| 77 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE { | 74 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE { |
| 78 *ttcIndex = fIndex; | 75 *ttcIndex = fIndex; |
| 79 return SkStream::NewFromFile(fPathName.c_str()); | 76 return SkStream::NewFromFile(fPathName.c_str()); |
| 80 } | 77 } |
| 81 | 78 |
| 82 private: | 79 private: |
| 83 SkString fPathName; | 80 SkString fPathName; |
| 84 | 81 |
| 85 typedef SkTypeface_Android INHERITED; | 82 typedef SkTypeface_Android INHERITED; |
| 86 }; | 83 }; |
| 87 | 84 |
| 88 class SkTypeface_AndroidStream : public SkTypeface_Android { | 85 class SkTypeface_AndroidStream : public SkTypeface_Android { |
| 89 public: | 86 public: |
| 90 SkTypeface_AndroidStream(SkStream* stream, | 87 SkTypeface_AndroidStream(SkStream* stream, |
| 91 int index, | 88 int index, |
| 92 Style style, | 89 Style style, |
| 93 bool isFixedPitch, | 90 bool isFixedPitch, |
| 94 const SkString familyName) | 91 const SkString familyName) |
| 95 : INHERITED(index, style, isFixedPitch, familyName) | 92 : INHERITED(index, style, isFixedPitch, familyName) |
| 96 , fStream(stream) | 93 , fStream(stream) { } |
| 97 { } | |
| 98 | 94 |
| 99 virtual void onGetFontDescriptor(SkFontDescriptor* desc, | 95 virtual void onGetFontDescriptor(SkFontDescriptor* desc, |
| 100 bool* serialize) const SK_OVERRIDE { | 96 bool* serialize) const SK_OVERRIDE { |
| 101 SkASSERT(desc); | 97 SkASSERT(desc); |
| 102 SkASSERT(serialize); | 98 SkASSERT(serialize); |
| 103 desc->setFamilyName(fFamilyName.c_str()); | 99 desc->setFamilyName(fFamilyName.c_str()); |
| 104 desc->setFontFileName(NULL); | 100 desc->setFontFileName(NULL); |
| 105 *serialize = true; | 101 *serialize = true; |
| 106 } | 102 } |
| 107 | 103 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 127 explicit SkFontStyleSet_Android(FontFamily* family) : fFontFamily(family) { | 123 explicit SkFontStyleSet_Android(FontFamily* family) : fFontFamily(family) { |
| 128 // TODO? make this lazy | 124 // TODO? make this lazy |
| 129 for (int i = 0; i < family->fFontFiles.count(); ++i) { | 125 for (int i = 0; i < family->fFontFiles.count(); ++i) { |
| 130 const SkString& fileName = family->fFontFiles[i].fFileName; | 126 const SkString& fileName = family->fFontFiles[i].fFileName; |
| 131 | 127 |
| 132 SkString pathName; | 128 SkString pathName; |
| 133 get_path_for_sys_fonts(&pathName, fileName); | 129 get_path_for_sys_fonts(&pathName, fileName); |
| 134 | 130 |
| 135 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(pathName.c_str()
)); | 131 SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(pathName.c_str()
)); |
| 136 if (!stream.get()) { | 132 if (!stream.get()) { |
| 137 DEBUG_FONT(("---- SystemFonts[%d] file=%s (NOT EXIST)", i, filen
ame.c_str())); | 133 DEBUG_FONT(("---- SystemFonts[%d] file=%s (NOT EXIST)", i, fileN
ame.c_str())); |
| 138 continue; | 134 continue; |
| 139 } | 135 } |
| 140 | 136 |
| 141 SkString fontName; | 137 SkString fontName; |
| 142 SkTypeface::Style style; | 138 SkTypeface::Style style; |
| 143 bool isFixedWidth; | 139 bool isFixedWidth; |
| 144 if (!SkTypeface_FreeType::ScanFont(stream.get(), family->fFontFiles[
i].fIndex, | 140 if (!SkTypeface_FreeType::ScanFont(stream.get(), family->fFontFiles[
i].fIndex, |
| 145 &fontName, &style, &isFixedWidth)
) | 141 &fontName, &style, &isFixedWidth)
) { |
| 146 { | 142 DEBUG_FONT(("---- SystemFonts[%d] file=%s (INVALID)", i, fileNam
e.c_str())); |
| 147 DEBUG_FONT(("---- SystemFonts[%d] file=%s (INVALID)", i, filenam
e.c_str())); | |
| 148 continue; | 143 continue; |
| 149 } | 144 } |
| 150 | 145 |
| 151 fStyles.push_back().reset(SkNEW_ARGS(SkTypeface_AndroidSystem, | 146 fStyles.push_back().reset(SkNEW_ARGS(SkTypeface_AndroidSystem, |
| 152 (pathName, 0, | 147 (pathName, 0, |
| 153 style, isFixedWidth, fontName)
)); | 148 style, isFixedWidth, fontName)
)); |
| 154 } | 149 } |
| 155 } | 150 } |
| 156 | 151 |
| 157 virtual int count() SK_OVERRIDE { | 152 virtual int count() SK_OVERRIDE { |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 } | 392 } |
| 398 | 393 |
| 399 typedef SkFontMgr INHERITED; | 394 typedef SkFontMgr INHERITED; |
| 400 }; | 395 }; |
| 401 | 396 |
| 402 /////////////////////////////////////////////////////////////////////////////// | 397 /////////////////////////////////////////////////////////////////////////////// |
| 403 | 398 |
| 404 SkFontMgr* SkFontMgr::Factory() { | 399 SkFontMgr* SkFontMgr::Factory() { |
| 405 return SkNEW(SkFontMgr_Android); | 400 return SkNEW(SkFontMgr_Android); |
| 406 } | 401 } |
| OLD | NEW |