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.
14
/* $Id: gzacpath.h 8022 2007-06-05 22:23:38Z giles $ */
15
/* State and interface definitions for clipping path accumulator */
16
/* Requires gxdevice.h, gzcpath.h */
18
#ifndef gzacpath_INCLUDED
19
# define gzacpath_INCLUDED
24
* Device for accumulating a rectangle list. This device can clip
25
* the list being accumulated with a clipping rectangle on the fly:
26
* we use this to clip clipping paths to band boundaries when
27
* rendering a band list.
29
typedef struct gx_device_cpath_accum_s {
31
gs_memory_t *list_memory;
35
} gx_device_cpath_accum;
37
#define public_st_device_cpath_accum()\
38
gs_public_st_complex_only(st_device_cpath_accum, gx_device_cpath_accum,\
39
"gx_device_cpath_accum", 0, device_cpath_accum_enum_ptrs,\
40
device_cpath_accum_reloc_ptrs, gx_device_finalize)
42
/* Start accumulating a clipping path. */
43
void gx_cpath_accum_begin(gx_device_cpath_accum * padev, gs_memory_t * mem);
45
/* Set the accumulator's clipping box. */
46
void gx_cpath_accum_set_cbox(gx_device_cpath_accum * padev,
47
const gs_fixed_rect * pbox);
49
/* Finish accumulating a clipping path. */
50
/* Note that this releases the old contents of the clipping path. */
51
int gx_cpath_accum_end(const gx_device_cpath_accum * padev,
52
gx_clip_path * pcpath);
54
/* Discard an accumulator in case of error. */
55
void gx_cpath_accum_discard(gx_device_cpath_accum * padev);
57
/* Intersect two clipping paths using an accumulator. */
58
int gx_cpath_intersect_path_slow(gx_clip_path *, gx_path *, int,
59
gs_imager_state *, const gx_fill_params *);
61
int cpath_accum_fill_rect_with(gx_device_cpath_accum *pcdev, gx_device *tdev,
62
gx_device_color *pdevc);
64
#endif /* gzacpath_INCLUDED */