1
/* Copyright (C) 2001-2006 Artifex Software, Inc.
4
This software is provided AS-IS with no warranty, either express or
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.
13
/* $Id: gsdfilt.h 8022 2007-06-05 22:23:38Z giles $ */
15
#ifndef gsdfilt_INCLUDED
16
# define gsdfilt_INCLUDED
18
/* The device filter stack lives in the gs_state structure. It represents
19
a chained sequence of devices that filter device requests, each forwarding
20
to its target. The last such target is the physical device as set by
23
There is a "shadow" gs_device_filter_stack_s object for each device in
24
the chain. The stack management uses these objects to keep track of the
28
#ifndef gs_device_filter_stack_DEFINED
29
# define gs_device_filter_stack_DEFINED
30
typedef struct gs_device_filter_stack_s gs_device_filter_stack_t;
33
#ifndef gs_device_filter_DEFINED
34
# define gs_device_filter_DEFINED
35
typedef struct gs_device_filter_s gs_device_filter_t;
38
struct gs_device_filter_s {
39
int (*push)(gs_device_filter_t *self, gs_memory_t *mem, gs_state *pgs,
40
gx_device **pdev, gx_device *target);
41
int (*prepop)(gs_device_filter_t *self, gs_memory_t *mem, gs_state *pgs,
43
int (*postpop)(gs_device_filter_t *self, gs_memory_t *mem, gs_state *pgs,
47
extern_st(st_gs_device_filter);
50
* gs_push_device_filter: Push a device filter.
51
* @mem: Memory for creating device filter.
52
* @pgs: Graphics state.
53
* @df: The device filter.
55
* Pushes a device filter, thereby becoming the first in the chain.
57
* Return value: 0 on success, or error code.
59
int gs_push_device_filter(gs_memory_t *mem, gs_state *pgs, gs_device_filter_t *df);
62
* gs_pop_device_filter: Pop a device filter.
63
* @mem: Memory in which device filter was created, for freeing.
64
* @pgs: Graphics state.
66
* Removes the topmost device filter (ie, first filter in the chain)
67
* from the graphics state's device filter stack.
69
* Return value: 0 on success, or error code.
71
int gs_pop_device_filter(gs_memory_t *mem, gs_state *pgs);
74
* gs_clear_device_filters: Clear device filters from a graphics state.
75
* @mem: Memory in which device filters were created, for freeing.
76
* @pgs: Graphics state.
78
* Clears all device filters from the given graphics state.
80
* Return value: 0 on success, or error code.
82
int gs_clear_device_filters(gs_memory_t *mem, gs_state *pgs);
85
#endif /* gsdfilt_INCLUDED */