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