1 /* Copyright (C) 2001-2006 Artifex Software, Inc. 2 All Rights Reserved. 3 4 This software is provided AS-IS with no warranty, either express or 5 implied. 6 7 This software is distributed under license and may not be copied, modified 8 or distributed except as expressly authorized under the terms of that 9 license. Refer to licensing information at http://www.artifex.com/ 10 or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, 11 San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. 12 */ 13 14 /* $Id: ichar.h 9043 2008-08-28 22:48:19Z giles $ */ 15 /* Character rendering operator definitions and support procedures */ 16 /* Requires gstext.h */ 17 18 #ifndef ichar_INCLUDED 19 # define ichar_INCLUDED 20 21 /* 22 * All the character rendering operators use the execution stack 23 * for loop control -- see estack.h for details. 24 * The information pushed by these operators is as follows: 25 * the enumerator (t_struct, a gs_text_enum_t); 26 * a slot for the procedure for kshow or cshow (probably t_array); 27 * a slot for the saved o-stack depth for cshow or stringwidth, 28 * and for error recovery (t_integer); 29 * a slot for the saved d-stack depth ditto (t_integer); 30 * a slot for the saved gstate level ditto (t_integer); 31 * a slot for saving the font during the cshow proc (t_struct); 32 * a slot for saving the root font during the cshow proc (t_struct); 33 * the procedure to be called at the end of the enumeration 34 * (t_operator, but called directly, not by the interpreter); 35 * the usual e-stack mark (t_null). 36 */ 37 #define snumpush 9 38 #define esenum(ep) r_ptr(ep, gs_text_enum_t) 39 #define senum esenum(esp) 40 #define esslot(ep) ((ep)[-1]) 41 #define sslot esslot(esp) 42 #define esodepth(ep) ((ep)[-2]) 43 #define sodepth esodepth(esp) 44 #define esddepth(ep) ((ep)[-3]) 45 #define sddepth esddepth(esp) 46 #define esgslevel(ep) ((ep)[-4]) 47 #define sgslevel esgslevel(esp) 48 #define essfont(ep) ((ep)[-5]) 49 #define ssfont essfont(esp) 50 #define esrfont(ep) ((ep)[-6]) 51 #define srfont esrfont(esp) 52 #define eseproc(ep) ((ep)[-7]) 53 #define seproc eseproc(esp) 54 55 /* Procedures exported by zchar.c for zchar*.c. */ 56 gs_text_enum_t *op_show_find(i_ctx_t *); 57 int op_show_setup(i_ctx_t *, os_ptr); 58 int op_show_enum_setup(i_ctx_t *); 59 int op_show_finish_setup(i_ctx_t *, gs_text_enum_t *, int, op_proc_t); 60 int op_show_continue(i_ctx_t *); 61 int op_show_continue_pop(i_ctx_t *, int); 62 int op_show_continue_dispatch(i_ctx_t *, int, int); 63 int op_show_free(i_ctx_t *, int); 64 void glyph_ref(const gs_memory_t *mem, gs_glyph, ref *); 65 int finish_stringwidth(i_ctx_t *); 66 67 /* Exported by zchar.c for zcharout.c */ 68 bool zchar_show_width_only(const gs_text_enum_t *); 69 int zsetcachedevice(i_ctx_t *); 70 int zsetcachedevice2(i_ctx_t *); 71 72 #endif /* ichar_INCLUDED */ 73