X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcfs.c;h=e9b2d07d4cd918e26980b2531a9f3f6e7336183e;hb=7ce196733129b0e664c1bdc20f973f15167292f7;hp=fddba57ba9aa3c735a318d7e8c0cff7f4488f29f;hpb=4bd4418ab5e7450e1c1fd3cd136098f1bf37a80c;p=fontconfig.git diff --git a/src/fcfs.c b/src/fcfs.c index fddba57..e9b2d07 100644 --- a/src/fcfs.c +++ b/src/fcfs.c @@ -1,7 +1,7 @@ /* * $RCSId: $ * - * Copyright © 2000 Keith Packard + * Copyright © 2000 Keith Packard * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -22,8 +22,8 @@ * PERFORMANCE OF THIS SOFTWARE. */ -#include #include "fcint.h" +#include FcFontSet * FcFontSetCreate (void) @@ -80,3 +80,53 @@ FcFontSetAdd (FcFontSet *s, FcPattern *font) s->fonts[s->nfont++] = font; return FcTrue; } + +FcBool +FcFontSetSerializeAlloc (FcSerialize *serialize, const FcFontSet *s) +{ + int i; + + if (!FcSerializeAlloc (serialize, s, sizeof (FcFontSet))) + return FcFalse; + if (!FcSerializeAlloc (serialize, s->fonts, s->nfont * sizeof (FcPattern *))) + return FcFalse; + for (i = 0; i < s->nfont; i++) + { + if (!FcPatternSerializeAlloc (serialize, s->fonts[i])) + return FcFalse; + } + return FcTrue; +} + +FcFontSet * +FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s) +{ + int i; + FcFontSet *s_serialize; + FcPattern **fonts_serialize; + FcPattern *p_serialize; + + s_serialize = FcSerializePtr (serialize, s); + if (!s_serialize) + return NULL; + *s_serialize = *s; + s_serialize->sfont = s_serialize->nfont; + + fonts_serialize = FcSerializePtr (serialize, s->fonts); + if (!fonts_serialize) + return NULL; + s_serialize->fonts = FcPtrToEncodedOffset (s_serialize, + fonts_serialize, FcPattern *); + + for (i = 0; i < s->nfont; i++) + { + p_serialize = FcPatternSerialize (serialize, s->fonts[i]); + if (!p_serialize) + return NULL; + fonts_serialize[i] = FcPtrToEncodedOffset (s_serialize, + p_serialize, + FcPattern); + } + + return s_serialize; +}