diff options
author | Akira TAGOH <akira@tagoh.org> | 2018-05-11 20:48:30 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2018-05-11 20:48:30 +0900 |
commit | 307639cff143341cb10273db1a19264ba28b247e (patch) | |
tree | 9f081f59572d71640cb65aa7f71a60739d10d1bc /src/fcdefault.c | |
parent | 454923709a1a1e480554c400e053aea9a1ba951a (diff) | |
download | fontconfig-307639cff143341cb10273db1a19264ba28b247e.tar.gz |
Bug 43367 - RFE: iterator to peek objects in FcPattern
Add various APIs to obtain things in FcPattern through the iterator
https://bugs.freedesktop.org/show_bug.cgi?id=43367
Diffstat (limited to 'src/fcdefault.c')
-rw-r--r-- | src/fcdefault.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/fcdefault.c b/src/fcdefault.c index 35973d7..f3addca 100644 --- a/src/fcdefault.c +++ b/src/fcdefault.c @@ -238,21 +238,22 @@ FcDefaultFini (void) void FcDefaultSubstitute (FcPattern *pattern) { + FcPatternIter iter; FcValue v, namelang, v2; int i; double dpi, size, scale, pixelsize; - if (FcPatternObjectGet (pattern, FC_WEIGHT_OBJECT, 0, &v) == FcResultNoMatch ) + if (!FcPatternFindObjectIter (pattern, &iter, FC_WEIGHT_OBJECT)) FcPatternObjectAddInteger (pattern, FC_WEIGHT_OBJECT, FC_WEIGHT_NORMAL); - if (FcPatternObjectGet (pattern, FC_SLANT_OBJECT, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_SLANT_OBJECT)) FcPatternObjectAddInteger (pattern, FC_SLANT_OBJECT, FC_SLANT_ROMAN); - if (FcPatternObjectGet (pattern, FC_WIDTH_OBJECT, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_WIDTH_OBJECT)) FcPatternObjectAddInteger (pattern, FC_WIDTH_OBJECT, FC_WIDTH_NORMAL); for (i = 0; i < NUM_FC_BOOL_DEFAULTS; i++) - if (FcPatternObjectGet (pattern, FcBoolDefaults[i].field, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FcBoolDefaults[i].field)) FcPatternObjectAddBool (pattern, FcBoolDefaults[i].field, FcBoolDefaults[i].value); if (FcPatternObjectGetDouble (pattern, FC_SIZE_OBJECT, 0, &size) != FcResultMatch) @@ -269,7 +270,7 @@ FcDefaultSubstitute (FcPattern *pattern) if (FcPatternObjectGetDouble (pattern, FC_DPI_OBJECT, 0, &dpi) != FcResultMatch) dpi = 75.0; - if (FcPatternObjectGet (pattern, FC_PIXEL_SIZE_OBJECT, 0, &v) != FcResultMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_PIXEL_SIZE_OBJECT)) { (void) FcPatternObjectDel (pattern, FC_SCALE_OBJECT); FcPatternObjectAddDouble (pattern, FC_SCALE_OBJECT, scale); @@ -281,25 +282,22 @@ FcDefaultSubstitute (FcPattern *pattern) } else { + FcPatternIterGetValue(pattern, &iter, 0, &v, NULL); size = v.u.d; size = size / dpi * 72.0 / scale; } (void) FcPatternObjectDel (pattern, FC_SIZE_OBJECT); FcPatternObjectAddDouble (pattern, FC_SIZE_OBJECT, size); - if (FcPatternObjectGet (pattern, FC_FONTVERSION_OBJECT, 0, &v) == FcResultNoMatch) - { + if (!FcPatternFindObjectIter (pattern, &iter, FC_FONTVERSION_OBJECT)) FcPatternObjectAddInteger (pattern, FC_FONTVERSION_OBJECT, 0x7fffffff); - } - if (FcPatternObjectGet (pattern, FC_HINT_STYLE_OBJECT, 0, &v) == FcResultNoMatch) - { + if (!FcPatternFindObjectIter (pattern, &iter, FC_HINT_STYLE_OBJECT)) FcPatternObjectAddInteger (pattern, FC_HINT_STYLE_OBJECT, FC_HINT_FULL); - } - if (FcPatternObjectGet (pattern, FC_NAMELANG_OBJECT, 0, &v) == FcResultNoMatch) - { + + if (!FcPatternFindObjectIter (pattern, &iter, FC_NAMELANG_OBJECT)) FcPatternObjectAddString (pattern, FC_NAMELANG_OBJECT, FcGetDefaultLang ()); - } + /* shouldn't be failed. */ FcPatternObjectGet (pattern, FC_NAMELANG_OBJECT, 0, &namelang); /* Add a fallback to ensure the english name when the requested language @@ -315,17 +313,17 @@ FcDefaultSubstitute (FcPattern *pattern) */ v2.type = FcTypeString; v2.u.s = (FcChar8 *) "en-us"; - if (FcPatternObjectGet (pattern, FC_FAMILYLANG_OBJECT, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_FAMILYLANG_OBJECT)) { FcPatternObjectAdd (pattern, FC_FAMILYLANG_OBJECT, namelang, FcTrue); FcPatternObjectAddWithBinding (pattern, FC_FAMILYLANG_OBJECT, v2, FcValueBindingWeak, FcTrue); } - if (FcPatternObjectGet (pattern, FC_STYLELANG_OBJECT, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_STYLELANG_OBJECT)) { FcPatternObjectAdd (pattern, FC_STYLELANG_OBJECT, namelang, FcTrue); FcPatternObjectAddWithBinding (pattern, FC_STYLELANG_OBJECT, v2, FcValueBindingWeak, FcTrue); } - if (FcPatternObjectGet (pattern, FC_FULLNAMELANG_OBJECT, 0, &v) == FcResultNoMatch) + if (!FcPatternFindObjectIter (pattern, &iter, FC_FULLNAMELANG_OBJECT)) { FcPatternObjectAdd (pattern, FC_FULLNAMELANG_OBJECT, namelang, FcTrue); FcPatternObjectAddWithBinding (pattern, FC_FULLNAMELANG_OBJECT, v2, FcValueBindingWeak, FcTrue); |