xref: /plan9-contrib/sys/src/cmd/gs/src/gdevmrun.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1999 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: gdevmrun.h,v 1.5 2002/06/16 07:25:26 lpd Exp $ */
187dd7cddfSDavid du Colombier /* Definition of run-length encoded memory device */
197dd7cddfSDavid du Colombier 
207dd7cddfSDavid du Colombier #ifndef gdevmrun_INCLUDED
217dd7cddfSDavid du Colombier #  define gdevmrun_INCLUDED
227dd7cddfSDavid du Colombier 
237dd7cddfSDavid du Colombier /*
247dd7cddfSDavid du Colombier  * This memory device stores full-size pixels with run-length
257dd7cddfSDavid du Colombier  * encoding if possible, switching to the standard uncompressed
267dd7cddfSDavid du Colombier  * representation if necessary.
277dd7cddfSDavid du Colombier  */
287dd7cddfSDavid du Colombier 
297dd7cddfSDavid du Colombier #include "gxdevmem.h"
307dd7cddfSDavid du Colombier 
317dd7cddfSDavid du Colombier /*
327dd7cddfSDavid du Colombier  * Define the device, built on a memory device.
337dd7cddfSDavid du Colombier  */
347dd7cddfSDavid du Colombier typedef struct gx_device_run_s {
357dd7cddfSDavid du Colombier     gx_device_memory md;	/* must be first */
367dd7cddfSDavid du Colombier     uint runs_per_line;
377dd7cddfSDavid du Colombier     int umin, umax1;		/* some range of uninitialized lines */
387dd7cddfSDavid du Colombier     int smin, smax1;		/* some range in standard (not run) form */
397dd7cddfSDavid du Colombier     /*
407dd7cddfSDavid du Colombier      * Save memory device procedures that we replace with run-oriented
417dd7cddfSDavid du Colombier      * ones, for use with the uncompressed representation.
427dd7cddfSDavid du Colombier      */
437dd7cddfSDavid du Colombier     struct sp_ {
447dd7cddfSDavid du Colombier 	dev_proc_copy_mono((*copy_mono));
457dd7cddfSDavid du Colombier 	dev_proc_copy_color((*copy_color));
467dd7cddfSDavid du Colombier 	dev_proc_fill_rectangle((*fill_rectangle));
477dd7cddfSDavid du Colombier 	dev_proc_copy_alpha((*copy_alpha));
487dd7cddfSDavid du Colombier 	dev_proc_strip_tile_rectangle((*strip_tile_rectangle));
497dd7cddfSDavid du Colombier 	dev_proc_strip_copy_rop((*strip_copy_rop));
507dd7cddfSDavid du Colombier 	dev_proc_get_bits_rectangle((*get_bits_rectangle));
517dd7cddfSDavid du Colombier     } save_procs;
527dd7cddfSDavid du Colombier } gx_device_run;
537dd7cddfSDavid du Colombier 
547dd7cddfSDavid du Colombier /*
557dd7cddfSDavid du Colombier  * Convert a memory device to run-length form.  The mdev argument should be
567dd7cddfSDavid du Colombier  * const, but it isn't because we need to call gx_device_white.
577dd7cddfSDavid du Colombier  */
58*593dc095SDavid du Colombier int gdev_run_from_mem(gx_device_run *rdev, gx_device_memory *mdev);
597dd7cddfSDavid du Colombier 
607dd7cddfSDavid du Colombier #endif /* gdevmrun_INCLUDED */
61