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

Side by Side Diff: trunk/src/ports/SkFontHost_android.cpp

Issue 12706010: Add SkTypeface* parameter to SkScalerContext (and its callers) (Closed) Base URL: http://skia.googlecode.com/svn/
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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 "SkFontHost.h" 8 #include "SkFontHost.h"
9 #include "SkFontHost_FreeType_common.h"
9 #include "SkFontDescriptor.h" 10 #include "SkFontDescriptor.h"
10 #include "SkGraphics.h" 11 #include "SkGraphics.h"
11 #include "SkDescriptor.h" 12 #include "SkDescriptor.h"
12 #include "SkMMapStream.h" 13 #include "SkMMapStream.h"
13 #include "SkPaint.h" 14 #include "SkPaint.h"
14 #include "SkString.h" 15 #include "SkString.h"
15 #include "SkStream.h" 16 #include "SkStream.h"
16 #include "SkThread.h" 17 #include "SkThread.h"
17 #include "SkTSearch.h" 18 #include "SkTSearch.h"
18 #include "SkTypeface_android.h" 19 #include "SkTypeface_android.h"
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 NameFamilyPair* pair = &list[i]; 275 NameFamilyPair* pair = &list[i];
275 if (pair->fFamily == emptyFamily) { 276 if (pair->fFamily == emptyFamily) {
276 pair->destruct(); 277 pair->destruct();
277 list.remove(i); 278 list.remove(i);
278 } 279 }
279 } 280 }
280 } 281 }
281 282
282 /////////////////////////////////////////////////////////////////////////////// 283 ///////////////////////////////////////////////////////////////////////////////
283 284
284 class FamilyTypeface : public SkTypeface { 285 class FamilyTypeface : public SkTypeface_FreeType {
285 public: 286 public:
286 FamilyTypeface(Style style, bool sysFont, SkTypeface* familyMember, 287 FamilyTypeface(Style style, bool sysFont, SkTypeface* familyMember,
287 bool isFixedWidth) 288 bool isFixedWidth)
288 : SkTypeface(style, sk_atomic_inc(&gUniqueFontID) + 1, isFixedWidth) { 289 : INHERITED(style, sk_atomic_inc(&gUniqueFontID) + 1, isFixedWidth) {
289 fIsSysFont = sysFont; 290 fIsSysFont = sysFont;
290 291
291 // our caller has acquired the gFamilyHeadAndNameListMutex so this is sa fe 292 // our caller has acquired the gFamilyHeadAndNameListMutex so this is sa fe
292 FamilyRec* rec = NULL; 293 FamilyRec* rec = NULL;
293 if (familyMember) { 294 if (familyMember) {
294 rec = find_family(familyMember); 295 rec = find_family(familyMember);
295 SkASSERT(rec); 296 SkASSERT(rec);
296 } else { 297 } else {
297 rec = SkNEW(FamilyRec); 298 rec = SkNEW(FamilyRec);
298 } 299 }
(...skipping 14 matching lines...) Expand all
313 314
314 bool isSysFont() const { return fIsSysFont; } 315 bool isSysFont() const { return fIsSysFont; }
315 316
316 virtual SkStream* openStream() = 0; 317 virtual SkStream* openStream() = 0;
317 virtual const char* getUniqueString() const = 0; 318 virtual const char* getUniqueString() const = 0;
318 virtual const char* getFilePath() const = 0; 319 virtual const char* getFilePath() const = 0;
319 320
320 private: 321 private:
321 bool fIsSysFont; 322 bool fIsSysFont;
322 323
323 typedef SkTypeface INHERITED; 324 typedef SkTypeface_FreeType INHERITED;
324 }; 325 };
325 326
326 /////////////////////////////////////////////////////////////////////////////// 327 ///////////////////////////////////////////////////////////////////////////////
327 328
328 class StreamTypeface : public FamilyTypeface { 329 class StreamTypeface : public FamilyTypeface {
329 public: 330 public:
330 StreamTypeface(Style style, bool sysFont, SkTypeface* familyMember, 331 StreamTypeface(Style style, bool sysFont, SkTypeface* familyMember,
331 SkStream* stream, bool isFixedWidth) 332 SkStream* stream, bool isFixedWidth)
332 : INHERITED(style, sysFont, familyMember, isFixedWidth) { 333 : INHERITED(style, sysFont, familyMember, isFixedWidth) {
333 SkASSERT(stream); 334 SkASSERT(stream);
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 } 878 }
878 if (index) { 879 if (index) {
879 *index = 0; // we don't have collections (yet) 880 *index = 0; // we don't have collections (yet)
880 } 881 }
881 return size; 882 return size;
882 } else { 883 } else {
883 return 0; 884 return 0;
884 } 885 }
885 } 886 }
886 887
887 SkFontID SkFontHost::NextLogicalFont(SkFontID currFontID, SkFontID origFontID) { 888 SkTypeface* SkFontHost::NextLogicalTypeface(SkFontID currFontID, SkFontID origFo ntID) {
888 #if defined(SK_BUILD_FOR_ANDROID) && !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) 889 #if defined(SK_BUILD_FOR_ANDROID) && !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
889 // Skia does not support font fallback for ndk applications in order to 890 // Skia does not support font fallback for ndk applications in order to
890 // enable clients such as WebKit to customize their font selection. 891 // enable clients such as WebKit to customize their font selection.
891 // Clients can use GetFallbackFamilyNameForChar() to get the fallback 892 // Clients can use GetFallbackFamilyNameForChar() to get the fallback
892 // font for individual characters. 893 // font for individual characters.
893 return 0; 894 return NULL;
894 #else 895 #else
895 SkAutoMutexAcquire ac(gFamilyHeadAndNameListMutex); 896 SkAutoMutexAcquire ac(gFamilyHeadAndNameListMutex);
896 897
897 load_system_fonts(); 898 load_system_fonts();
898 899
899 const SkTypeface* origTypeface = find_from_uniqueID(origFontID); 900 const SkTypeface* origTypeface = find_from_uniqueID(origFontID);
900 const SkTypeface* currTypeface = find_from_uniqueID(currFontID); 901 const SkTypeface* currTypeface = find_from_uniqueID(currFontID);
901 902
902 SkASSERT(origTypeface != 0); 903 SkASSERT(origTypeface != 0);
903 SkASSERT(currTypeface != 0); 904 SkASSERT(currTypeface != 0);
904 SkASSERT(gFallbackFonts); 905 SkASSERT(gFallbackFonts);
905 906
906 // Our fallback list always stores the id of the plain in each fallback 907 // Our fallback list always stores the id of the plain in each fallback
907 // family, so we transform currFontID to its plain equivalent. 908 // family, so we transform currFontID to its plain equivalent.
908 currFontID = find_typeface(currTypeface, SkTypeface::kNormal)->uniqueID(); 909 currFontID = find_typeface(currTypeface, SkTypeface::kNormal)->uniqueID();
909 910
910 /* First see if fontID is already one of our fallbacks. If so, return 911 /* First see if fontID is already one of our fallbacks. If so, return
911 its successor. If fontID is not in our list, then return the first one 912 its successor. If fontID is not in our list, then return the first one
912 in our list. Note: list is zero-terminated, and returning zero means 913 in our list. Note: list is zero-terminated, and returning zero means
913 we have no more fonts to use for fallbacks. 914 we have no more fonts to use for fallbacks.
914 */ 915 */
915 const uint32_t* list = gFallbackFonts; 916 const uint32_t* list = gFallbackFonts;
916 for (int i = 0; list[i] != 0; i++) { 917 for (int i = 0; list[i] != 0; i++) {
917 if (list[i] == currFontID) { 918 if (list[i] == currFontID) {
918 if (list[i+1] == 0) 919 if (list[i+1] == 0)
919 return 0; 920 return NULL;
920 const SkTypeface* nextTypeface = find_from_uniqueID(list[i+1]); 921 const SkTypeface* nextTypeface = find_from_uniqueID(list[i+1]);
921 return find_typeface(nextTypeface, origTypeface->style())->uniqueID( ); 922 return SkRef(find_typeface(nextTypeface, origTypeface->style()));
922 } 923 }
923 } 924 }
924 925
925 // If we get here, currFontID was not a fallback, so we start at the 926 // If we get here, currFontID was not a fallback, so we start at the
926 // beginning of our list. Assuming there is at least one fallback font, 927 // beginning of our list. Assuming there is at least one fallback font,
927 // i.e. gFallbackFonts[0] != 0. 928 // i.e. gFallbackFonts[0] != 0.
928 const SkTypeface* firstTypeface = find_from_uniqueID(list[0]); 929 const SkTypeface* firstTypeface = find_from_uniqueID(list[0]);
929 return find_typeface(firstTypeface, origTypeface->style())->uniqueID(); 930 return SkRef(find_typeface(firstTypeface, origTypeface->style()));
930 #endif 931 #endif
931 } 932 }
932 933
933 /////////////////////////////////////////////////////////////////////////////// 934 ///////////////////////////////////////////////////////////////////////////////
934 935
935 SkTypeface* SkFontHost::CreateTypefaceFromStream(SkStream* stream) { 936 SkTypeface* SkFontHost::CreateTypefaceFromStream(SkStream* stream) {
936 if (NULL == stream || stream->getLength() <= 0) { 937 if (NULL == stream || stream->getLength() <= 0) {
937 return NULL; 938 return NULL;
938 } 939 }
939 940
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 const char* fontsdir) { 1143 const char* fontsdir) {
1143 gTestMainConfigFile = mainconf; 1144 gTestMainConfigFile = mainconf;
1144 gTestFallbackConfigFile = fallbackconf; 1145 gTestFallbackConfigFile = fallbackconf;
1145 gTestFontFilePrefix = fontsdir; 1146 gTestFontFilePrefix = fontsdir;
1146 SkASSERT(gTestMainConfigFile); 1147 SkASSERT(gTestMainConfigFile);
1147 SkASSERT(gTestFallbackConfigFile); 1148 SkASSERT(gTestFallbackConfigFile);
1148 SkASSERT(gTestFontFilePrefix); 1149 SkASSERT(gTestFontFilePrefix);
1149 SkDEBUGF(("Use Test Config File Main %s, Fallback %s, Font Dir %s", 1150 SkDEBUGF(("Use Test Config File Main %s, Fallback %s, Font Dir %s",
1150 gTestMainConfigFile, gTestFallbackConfigFile, gTestFontFilePrefix) ); 1151 gTestMainConfigFile, gTestFallbackConfigFile, gTestFontFilePrefix) );
1151 } 1152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698