summaryrefslogtreecommitdiff
path: root/gs/base/gdevmrun.h
diff options
context:
space:
mode:
Diffstat (limited to 'gs/base/gdevmrun.h')
-rw-r--r--gs/base/gdevmrun.h56
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 */