diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-12-02 13:56:12 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-12-02 13:56:12 +0100 |
commit | 1dfbba0a2142c0786714c1d476fc2736044a02ac (patch) | |
tree | 6f07352c4919407aff150d9cb89e2d7415e7f392 /tree/text.c | |
parent | 5c335f9337724f61c14af143b18f0891c58dbacd (diff) | |
download | mupdf-1dfbba0a2142c0786714c1d476fc2736044a02ac.tar.xz |
text fill then clip render mode
Diffstat (limited to 'tree/text.c')
-rw-r--r-- | tree/text.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/tree/text.c b/tree/text.c index b94664b5..d88e04ec 100644 --- a/tree/text.c +++ b/tree/text.c @@ -5,7 +5,7 @@ fz_newtextnode(fz_textnode **textp, fz_font *font) { fz_textnode *text; - text = *textp = fz_malloc(sizeof(fz_textnode)); + text = fz_malloc(sizeof(fz_textnode)); if (!text) return fz_outofmem; @@ -17,6 +17,38 @@ fz_newtextnode(fz_textnode **textp, fz_font *font) text->cap = 0; text->els = nil; + *textp = text; + return nil; +} + +fz_error * +fz_clonetextnode(fz_textnode **textp, fz_textnode *oldtext) +{ + fz_textnode *text; + + text = *textp = fz_malloc(sizeof(fz_textnode)); + if (!text) + return fz_outofmem; + + fz_initnode((fz_node*)text, FZ_NTEXT); + + text->font = fz_keepfont(oldtext->font); + text->trm = oldtext->trm; + text->len = oldtext->len; + text->cap = oldtext->len; + text->els = nil; + + text->els = fz_malloc(sizeof(fz_textel) * text->len); + if (!text->els) + { + fz_dropfont(text->font); + fz_free(text); + return fz_outofmem; + } + + memcpy(text->els, oldtext->els, sizeof(fz_textel) * text->len); + + *textp = text; return nil; } |