diff options
Diffstat (limited to 'gs/base/gdevmrun.h')
-rw-r--r-- | gs/base/gdevmrun.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/gs/base/gdevmrun.h b/gs/base/gdevmrun.h new file mode 100644 index 000000000..0bd73a492 --- /dev/null +++ b/gs/base/gdevmrun.h @@ -0,0 +1,56 @@ +/* Copyright (C) 2001-2006 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or + implied. + + This software is distributed under license and may not be copied, modified + or distributed except as expressly authorized under the terms of that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ +/* $Id$ */ +/* Definition of run-length encoded memory device */ + +#ifndef gdevmrun_INCLUDED +# define gdevmrun_INCLUDED + +/* + * This memory device stores full-size pixels with run-length + * encoding if possible, switching to the standard uncompressed + * representation if necessary. + */ + +#include "gxdevmem.h" + +/* + * Define the device, built on a memory device. + */ +typedef struct gx_device_run_s { + gx_device_memory md; /* must be first */ + uint runs_per_line; + int umin, umax1; /* some range of uninitialized lines */ + int smin, smax1; /* some range in standard (not run) form */ + /* + * Save memory device procedures that we replace with run-oriented + * ones, for use with the uncompressed representation. + */ + struct sp_ { + dev_proc_copy_mono((*copy_mono)); + dev_proc_copy_color((*copy_color)); + dev_proc_fill_rectangle((*fill_rectangle)); + dev_proc_copy_alpha((*copy_alpha)); + dev_proc_strip_tile_rectangle((*strip_tile_rectangle)); + dev_proc_strip_copy_rop((*strip_copy_rop)); + dev_proc_get_bits_rectangle((*get_bits_rectangle)); + } save_procs; +} gx_device_run; + +/* + * Convert a memory device to run-length form. The mdev argument should be + * const, but it isn't because we need to call gx_device_white. + */ +int gdev_run_from_mem(gx_device_run *rdev, gx_device_memory *mdev); + +#endif /* gdevmrun_INCLUDED */ |