git.asbjorn.biz
/
swftools.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e1ee7f2
)
converted external fonts into a linked list
author
kramm
<kramm>
Wed, 12 Mar 2008 19:10:02 +0000
(19:10 +0000)
committer
kramm
<kramm>
Wed, 12 Mar 2008 19:10:02 +0000
(19:10 +0000)
lib/pdf/GFXOutputDev.cc
patch
|
blob
|
history
diff --git
a/lib/pdf/GFXOutputDev.cc
b/lib/pdf/GFXOutputDev.cc
index
416bf0b
..
4258a37
100644
(file)
--- a/
lib/pdf/GFXOutputDev.cc
+++ b/
lib/pdf/GFXOutputDev.cc
@@
-82,10
+82,14
@@
typedef struct _fontfile
const char*filename;
int len; // basename length
int used;
const char*filename;
int len; // basename length
int used;
+ struct _fontfile*next;
} fontfile_t;
// for pdfswf_addfont
} fontfile_t;
// for pdfswf_addfont
-static fontfile_t fonts[2048];
+
+static fontfile_t* global_fonts = 0;
+static fontfile_t* global_fonts_next = 0;
+
static int fontnum = 0;
/* config */
static int fontnum = 0;
/* config */
@@
-331,13
+335,16
@@
DisplayFontParam *GFXGlobalParams::getDisplayFont(GString *fontName)
int bestlen = 0x7fffffff;
const char*bestfilename = 0;
int bestlen = 0x7fffffff;
const char*bestfilename = 0;
- for(t=0;t<fontnum;t++) {
- if(strstr(fonts[t].filename, name)) {
- if(fonts[t].len < bestlen) {
- bestlen = fonts[t].len;
- bestfilename = fonts[t].filename;
+
+ fontfile_t*f = 0;
+ while(f) {
+ if(strstr(f->filename, name)) {
+ if(f->len < bestlen) {
+ bestlen = f->len;
+ bestfilename = f->filename;
}
}
}
}
+ f = f->next;
}
if(bestfilename) {
DisplayFontParam *dfp = new DisplayFontParam(new GString(fontName), displayFontT1);
}
if(bestfilename) {
DisplayFontParam *dfp = new DisplayFontParam(new GString(fontName), displayFontT1);
@@
-2014,9
+2021,9
@@
static const char* dirseparator()
void addGlobalFont(const char*filename)
{
void addGlobalFont(const char*filename)
{
- fontfile_t f;
- memset(&f, 0, sizeof(fontfile_t));
- f.filename = filename;
+ fontfile_t* f = (fontfile_t*)malloc(sizeof(fontfile_t));
+ memset(f, 0, sizeof(fontfile_t));
+ f->filename = filename;
int len = strlen(filename);
char*r1 = strrchr(filename, '/');
char*r2 = strrchr(filename, '\\');
int len = strlen(filename);
char*r1 = strrchr(filename, '/');
char*r2 = strrchr(filename, '\\');
@@
-2025,12
+2032,14
@@
void addGlobalFont(const char*filename)
if(r1) {
len = strlen(r1+1);
}
if(r1) {
len = strlen(r1+1);
}
- f.len = len;
- if(fontnum < sizeof(fonts)/sizeof(fonts[0])) {
- msg("<notice> Adding font \"%s\".", filename);
- fonts[fontnum++] = f;
+ f->len = len;
+
+ msg("<notice> Adding font \"%s\".", filename);
+ if(global_fonts_next) {
+ global_fonts_next->next = f;
+ global_fonts_next = global_fonts_next->next;
} else {
} else {
- msg("<error> Too many external fonts. Not adding font file \"%s\".", filename);
+ global_fonts_next = global_fonts = f;
}
}
}
}