xref: /plan9/sys/src/cmd/gs/src/ichar.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1994, 2000 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: ichar.h,v 1.7 2004/08/04 19:36:12 stefan Exp $ */
187dd7cddfSDavid du Colombier /* Character rendering operator definitions and support procedures */
197dd7cddfSDavid du Colombier /* Requires gstext.h */
207dd7cddfSDavid du Colombier 
217dd7cddfSDavid du Colombier #ifndef ichar_INCLUDED
227dd7cddfSDavid du Colombier #  define ichar_INCLUDED
237dd7cddfSDavid du Colombier 
247dd7cddfSDavid du Colombier /*
257dd7cddfSDavid du Colombier  * All the character rendering operators use the execution stack
267dd7cddfSDavid du Colombier  * for loop control -- see estack.h for details.
277dd7cddfSDavid du Colombier  * The information pushed by these operators is as follows:
287dd7cddfSDavid du Colombier  *      the enumerator (t_struct, a gs_text_enum_t);
297dd7cddfSDavid du Colombier  *      a slot for the procedure for kshow or cshow (probably t_array);
307dd7cddfSDavid du Colombier  *      a slot for the saved o-stack depth for cshow or stringwidth,
317dd7cddfSDavid du Colombier  *              and for error recovery (t_integer);
327dd7cddfSDavid du Colombier  *      a slot for the saved d-stack depth ditto (t_integer);
337dd7cddfSDavid du Colombier  *      a slot for the saved gstate level ditto (t_integer);
347dd7cddfSDavid du Colombier  *	a slot for saving the font during the cshow proc (t_struct);
357dd7cddfSDavid du Colombier  *	a slot for saving the root font during the cshow proc (t_struct);
367dd7cddfSDavid du Colombier  *      the procedure to be called at the end of the enumeration
377dd7cddfSDavid du Colombier  *              (t_operator, but called directly, not by the interpreter);
387dd7cddfSDavid du Colombier  *      the usual e-stack mark (t_null).
397dd7cddfSDavid du Colombier  */
407dd7cddfSDavid du Colombier #define snumpush 9
417dd7cddfSDavid du Colombier #define esenum(ep) r_ptr(ep, gs_text_enum_t)
427dd7cddfSDavid du Colombier #define senum esenum(esp)
437dd7cddfSDavid du Colombier #define esslot(ep) ((ep)[-1])
447dd7cddfSDavid du Colombier #define sslot esslot(esp)
457dd7cddfSDavid du Colombier #define esodepth(ep) ((ep)[-2])
467dd7cddfSDavid du Colombier #define sodepth esodepth(esp)
477dd7cddfSDavid du Colombier #define esddepth(ep) ((ep)[-3])
487dd7cddfSDavid du Colombier #define sddepth esddepth(esp)
497dd7cddfSDavid du Colombier #define esgslevel(ep) ((ep)[-4])
507dd7cddfSDavid du Colombier #define sgslevel esgslevel(esp)
517dd7cddfSDavid du Colombier #define essfont(ep) ((ep)[-5])
527dd7cddfSDavid du Colombier #define ssfont essfont(esp)
537dd7cddfSDavid du Colombier #define esrfont(ep) ((ep)[-6])
547dd7cddfSDavid du Colombier #define srfont esrfont(esp)
557dd7cddfSDavid du Colombier #define eseproc(ep) ((ep)[-7])
567dd7cddfSDavid du Colombier #define seproc eseproc(esp)
577dd7cddfSDavid du Colombier 
587dd7cddfSDavid du Colombier /* Procedures exported by zchar.c for zchar*.c. */
59*593dc095SDavid du Colombier gs_text_enum_t *op_show_find(i_ctx_t *);
60*593dc095SDavid du Colombier int op_show_setup(i_ctx_t *, os_ptr);
61*593dc095SDavid du Colombier int op_show_enum_setup(i_ctx_t *);
62*593dc095SDavid du Colombier int op_show_finish_setup(i_ctx_t *, gs_text_enum_t *, int, op_proc_t);
63*593dc095SDavid du Colombier int op_show_continue(i_ctx_t *);
64*593dc095SDavid du Colombier int op_show_continue_pop(i_ctx_t *, int);
65*593dc095SDavid du Colombier int op_show_continue_dispatch(i_ctx_t *, int, int);
66*593dc095SDavid du Colombier int op_show_free(i_ctx_t *, int);
67*593dc095SDavid du Colombier void glyph_ref(const gs_memory_t *mem, gs_glyph, ref *);
68*593dc095SDavid du Colombier int finish_stringwidth(i_ctx_t *);
697dd7cddfSDavid du Colombier 
707dd7cddfSDavid du Colombier /* Exported by zchar.c for zcharout.c */
71*593dc095SDavid du Colombier bool zchar_show_width_only(const gs_text_enum_t *);
72*593dc095SDavid du Colombier int zsetcachedevice(i_ctx_t *);
73*593dc095SDavid du Colombier int zsetcachedevice2(i_ctx_t *);
747dd7cddfSDavid du Colombier 
757dd7cddfSDavid du Colombier #endif /* ichar_INCLUDED */
76