1 /* Copyright (C) 2001-2006 Artifex Software, Inc.
2 All Rights Reserved.
3
4 This software is provided AS-IS with no warranty, either express or
5 implied.
6
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.
12 */
13
14 /* $Id: zpaint.c 9043 2008-08-28 22:48:19Z giles $ */
15 /* Painting operators */
16 #include "ghost.h"
17 #include "oper.h"
18 #include "gspaint.h"
19 #include "igstate.h"
20
21 /* - fill - */
22 static int
zfill(i_ctx_t * i_ctx_p)23 zfill(i_ctx_t *i_ctx_p)
24 {
25 return gs_fill(igs);
26 }
27
28 /* - eofill - */
29 static int
zeofill(i_ctx_t * i_ctx_p)30 zeofill(i_ctx_t *i_ctx_p)
31 {
32 return gs_eofill(igs);
33 }
34
35 /* - stroke - */
36 static int
zstroke(i_ctx_t * i_ctx_p)37 zstroke(i_ctx_t *i_ctx_p)
38 {
39 return gs_stroke(igs);
40 }
41
42 /* ------ Non-standard operators ------ */
43
44 /* - .fillpage - */
45 static int
zfillpage(i_ctx_t * i_ctx_p)46 zfillpage(i_ctx_t *i_ctx_p)
47 {
48 return gs_fillpage(igs);
49 }
50
51 /* <width> <height> <data> .imagepath - */
52 static int
zimagepath(i_ctx_t * i_ctx_p)53 zimagepath(i_ctx_t *i_ctx_p)
54 {
55 os_ptr op = osp;
56 int code;
57
58 check_type(op[-2], t_integer);
59 check_type(op[-1], t_integer);
60 check_read_type(*op, t_string);
61 if (r_size(op) < ((op[-2].value.intval + 7) >> 3) * op[-1].value.intval)
62 return_error(e_rangecheck);
63 code = gs_imagepath(igs,
64 (int)op[-2].value.intval, (int)op[-1].value.intval,
65 op->value.const_bytes);
66 if (code >= 0)
67 pop(3);
68 return code;
69 }
70
71 /* ------ Initialization procedure ------ */
72
73 const op_def zpaint_op_defs[] =
74 {
75 {"0eofill", zeofill},
76 {"0fill", zfill},
77 {"0stroke", zstroke},
78 /* Non-standard operators */
79 {"0.fillpage", zfillpage},
80 {"3.imagepath", zimagepath},
81 op_def_end(0)
82 };
83