diff options
Diffstat (limited to 'Build/source/texk/web2c/mpdir/writeenc.c')
-rw-r--r-- | Build/source/texk/web2c/mpdir/writeenc.c | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/Build/source/texk/web2c/mpdir/writeenc.c b/Build/source/texk/web2c/mpdir/writeenc.c deleted file mode 100644 index ac4dc5cba7b..00000000000 --- a/Build/source/texk/web2c/mpdir/writeenc.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright (c) 2006 Taco Hoekwater <taco@elvenkind.com> - -This file is part of MetaPost. - -MetaPost is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -MetaPost is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with MetaPost; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -$Id $ -*/ - -#include "mplib.h" - -/*@unused@*/ -static const char perforce_id[] = - "$Id: writeenc.c,v 1.3 2005/12/26 14:20:13 hahe Exp hahe $"; - -void read_enc (enc_entry * e) -{ - assert (e != NULL); - if (e->loaded) - return; - e->encname = NULL; - load_enc (e->name, &e->encname, e->glyph_names); - e->loaded = true; -} - -/* write_enc is used to write either external encoding (given in map file) or - * internal encoding (read from the font file); when glyph_names is NULL - * the 2nd argument is a pointer to the encoding entry; otherwise the 3rd is - * the object number of the Encoding object - */ -void write_enc (char **glyph_names, enc_entry * e, integer eobjnum) -{ - int i; - int s; - int foffset; - char **g; - if (glyph_names == NULL) { - assert (e != NULL); - if (e->objnum != 0) /* the encoding has been written already */ - return; - e->objnum = 1; - g = e->glyph_names; - } else { - g = glyph_names; - } - pdf_printf("\n%%%%BeginResource: encoding %s",e->encname); - pdf_printf ("\n/%s [ ", e->encname); - foffset = strlen(e->name)+3; - for (i = 0; i < 256; i++) { - s = strlen(g[i]); - if (s+1+foffset>=80) { - pdf_printf ("\n"); - foffset = 0; - } - foffset += s+2; - pdf_printf ("/%s ", g[i]); - } - if (foffset>75) - pdf_printf ("\n"); - pdf_puts ("] def\n"); - pdf_printf("%%%%EndResource"); -} - -/**********************************************************************/ -/* All encoding entries go into AVL tree for fast search by name. */ - -struct avl_table *enc_tree = NULL; - -/* AVL sort enc_entry into enc_tree by name */ - -static int comp_enc_entry (const void *pa, const void *pb, void *p) -{ - return strcmp (((const enc_entry *) pa)->name, - ((const enc_entry *) pb)->name); -} - -enc_entry *add_enc (char *s) -{ - int i; - enc_entry tmp, *p; - void **aa; - - assert (s != NULL); - if (enc_tree == NULL) { - enc_tree = avl_create (comp_enc_entry, NULL, &avl_xallocator); - assert (enc_tree != NULL); - } - tmp.name = s; - p = (enc_entry *) avl_find (enc_tree, &tmp); - if (p != NULL) /* encoding already registered */ - return p; - p = xtalloc (1, enc_entry); - p->loaded = false; - p->name = xstrdup (s); - p->objnum = 0; - p->tounicode = 0; - p->glyph_names = xtalloc (256, char *); - for (i = 0; i < 256; i++) - p->glyph_names[i] = (char *) notdef; - aa = avl_probe (enc_tree, p); - assert (aa != NULL); - return p; -} - -/**********************************************************************/ -/* cleaning up... */ - -static void destroy_enc_entry (void *pa, void *pb) -{ - enc_entry *p; - int i; - - p = (enc_entry *) pa; - xfree (p->name); - if (p->glyph_names != NULL) - for (i = 0; i < 256; i++) - if (p->glyph_names[i] != notdef) - xfree (p->glyph_names[i]); - xfree (p->glyph_names); - xfree (p); -} - -void enc_free () -{ - if (enc_tree != NULL) - avl_destroy (enc_tree, destroy_enc_entry); -} - -/**********************************************************************/ |