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: gsptype2.h 8513 2008-01-29 17:02:50Z leonardo $ */
15
/* Client interface to PatternType 2 Patterns */
17
#ifndef gsptype2_INCLUDED
18
# define gsptype2_INCLUDED
24
/* ---------------- Types and structures ---------------- */
26
/* PatternType 2 template */
28
#ifndef gs_shading_t_DEFINED
29
# define gs_shading_t_DEFINED
30
typedef struct gs_shading_s gs_shading_t;
33
typedef struct gs_pattern2_template_s {
34
gs_pattern_template_common;
35
const gs_shading_t *Shading;
36
} gs_pattern2_template_t;
38
#define private_st_pattern2_template() /* in gsptype2.c */\
39
gs_private_st_suffix_add1(st_pattern2_template,\
40
gs_pattern2_template_t, "gs_pattern2_template_t",\
41
pattern2_template_enum_ptrs, pattern2_template_reloc_ptrs,\
42
st_pattern_template, Shading)
43
#define st_pattern2_template_max_ptrs (st_pattern_template_max_ptrs + 1)
45
/* PatternType 2 instance */
47
#ifndef gx_device_color_DEFINED
48
# define gx_device_color_DEFINED
49
typedef struct gx_device_color_s gx_device_color;
52
typedef struct gs_pattern2_instance_s {
53
gs_pattern_instance_common;
54
gs_pattern2_template_t template;
56
} gs_pattern2_instance_t;
58
#define private_st_pattern2_instance() /* in gsptype2.c */\
59
gs_private_st_composite(st_pattern2_instance, gs_pattern2_instance_t,\
60
"gs_pattern2_instance_t", pattern2_instance_enum_ptrs,\
61
pattern2_instance_reloc_ptrs)
63
#ifndef gx_path_DEFINED
64
#define gx_path_DEFINED
65
typedef struct gx_path_s gx_path;
68
#ifndef gx_device_DEFINED
69
#define gx_device_DEFINED
70
typedef struct gx_device_s gx_device;
73
#ifndef gs_color_space_DEFINED
74
# define gs_color_space_DEFINED
75
typedef struct gs_color_space_s gs_color_space;
78
#ifndef gx_clip_path_DEFINED
79
# define gx_clip_path_DEFINED
80
typedef struct gx_clip_path_s gx_clip_path;
83
extern const gx_device_color_type_t gx_dc_pattern2;
85
#define gx_dc_type_pattern2 (&gx_dc_pattern2)
87
/* ---------------- Procedures ---------------- */
90
* We should provide a gs_cspace_build_Pattern2 procedure to construct
91
* the color space, but we don't.
94
/* Initialize a PatternType 2 pattern. */
95
void gs_pattern2_init(gs_pattern2_template_t *);
97
/* Check device color for Pattern Type 2. */
98
bool gx_dc_is_pattern2_color(const gx_device_color *pdevc);
100
/* Set the 'shfill' flag to a PatternType 2 pattern instance. */
101
int gs_pattern2_set_shfill(gs_client_color * pcc);
103
/* Transform a shading bounding box into device space. */
104
int gx_dc_pattern2_shade_bbox_transform2fixed(const gs_rect * rect,
105
const gs_imager_state * pis, gs_fixed_rect * rfixed);
107
/* Get a shading bbox. Returns 1 on success. */
108
int gx_dc_pattern2_get_bbox(const gx_device_color * pdevc, gs_fixed_rect *bbox);
110
/* Checks whether a PatternType 2 has a shading BBox. */
111
int gx_dc_pattern2_color_has_bbox(const gx_device_color * pdevc);
113
/* Intersect a clipping path a shading BBox. */
114
int gx_dc_pattern2_clip_with_bbox_simple(const gx_device_color * pdevc, gx_device * pdev,
115
gx_clip_path *cpath);
116
/* Check whether color is a shading with BBox. */
117
int gx_dc_pattern2_is_rectangular_cell(const gx_device_color * pdevc, gx_device * pdev, gs_fixed_rect *rect);
119
/* Get a shading color space. */
120
const gs_color_space *gx_dc_pattern2_get_color_space(const gx_device_color * pdevc);
122
/* Check device color for a possibly self-overlapping shading. */
123
bool gx_dc_pattern2_can_overlap(const gx_device_color *pdevc);
125
/* Check whether a pattern color has a background. */
126
bool gx_dc_pattern2_has_background(const gx_device_color *pdevc);
127
#endif /* gsptype2_INCLUDED */