blob: 812c6a47bb330cfd09e8eed70558d31b32f49fcb [file] [log] [blame]
/* Copyright (C) 1989, 1990 Aladdin Enterprises. All rights reserved.
Distributed by Free Software Foundation, Inc.
This file is part of Ghostscript.
Ghostscript is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
to anyone for the consequences of using it or for whether it serves any
particular purpose or works at all, unless he says so in writing. Refer
to the Ghostscript General Public License for full details.
Everyone is granted permission to copy, modify and redistribute
Ghostscript, but only under the conditions described in the Ghostscript
General Public License. A copy of this license is supposed to have been
given to you along with Ghostscript so you can know your rights and
responsibilities. It should be in a file named COPYING. Among other
things, the copyright notice and this notice must be preserved on all
copies. */
/* gsstate.h */
/* Graphics state routines for GhostScript library */
/* Opaque type for a graphics state */
/*typedef struct gs_state_s gs_state;*/ /* define in gs.h */
extern uint gs_state_sizeof;
/* Line cap values */
typedef enum {
gs_cap_butt = 0,
gs_cap_round = 1,
gs_cap_square = 2
} gs_line_cap;
/* Line join values */
typedef enum {
gs_join_miter = 0,
gs_join_round = 1,
gs_join_bevel = 2
} gs_line_join;
/* Allocation, freeing, and initialization */
gs_state *gs_state_alloc(P2(proc_alloc_t, proc_free_t)); /* 0 if fails */
int gs_state_free(P1(gs_state *));
int gs_gsave(P1(gs_state *)),
gs_grestore(P1(gs_state *)),
gs_grestoreall(P1(gs_state *));
gs_state *gs_state_swap_saved(P2(gs_state *, gs_state *)); /* special for save/restore */
int gs_initgraphics(P1(gs_state *));
/* Device control */
typedef struct gx_device_s gx_device;
int gs_flushpage(P1(gs_state *));
int gs_copypage(P1(gs_state *));
int gs_copyscanlines(P6(gx_device *, int, byte *, uint, int *, uint *));
gx_device * gs_getdevice(P1(int));
int gs_makedevice(P6(gx_device **, gx_device *, gs_matrix *, uint, uint, proc_alloc_t));
int gs_makeimagedevice(P7(gx_device **, gs_matrix *, uint, uint, float *, int, proc_alloc_t));
void gs_nulldevice(P1(gs_state *));
int gs_setdevice(P2(gs_state *, gx_device *));
gx_device * gs_currentdevice(P1(gs_state *));
char * gs_devicename(P1(gx_device *));
void gs_deviceparams(P4(gx_device *, gs_matrix *, int *, int *));
/* Line parameters and quality */
int gs_setlinewidth(P2(gs_state *, floatp));
float gs_currentlinewidth(P1(gs_state *));
int gs_setlinecap(P2(gs_state *, gs_line_cap));
gs_line_cap gs_currentlinecap(P1(gs_state *));
int gs_setlinejoin(P2(gs_state *, gs_line_join));
gs_line_join gs_currentlinejoin(P1(gs_state *));
int gs_setmiterlimit(P2(gs_state *, floatp));
float gs_currentmiterlimit(P1(gs_state *));
int gs_setdash(P4(gs_state *, float *, uint, floatp));
uint gs_currentdash_length(P1(gs_state *));
int gs_currentdash_pattern(P2(gs_state *, float *));
float gs_currentdash_offset(P1(gs_state *));
int gs_setflat(P2(gs_state *, floatp));
float gs_currentflat(P1(gs_state *));
/* Color and gray */
typedef struct gs_color_s gs_color;
extern int gs_color_sizeof;
int gs_setgray(P2(gs_state *, floatp));
float gs_currentgray(P1(gs_state *));
int gs_setgscolor(P2(gs_state *, gs_color *)),
gs_currentgscolor(P2(gs_state *, gs_color *)),
gs_sethsbcolor(P4(gs_state *, floatp, floatp, floatp)),
gs_currenthsbcolor(P2(gs_state *, float [3])),
gs_setrgbcolor(P4(gs_state *, floatp, floatp, floatp)),
gs_currentrgbcolor(P2(gs_state *, float [3]));
/* Halftone screen */
int gs_setscreen(P4(gs_state *, floatp, floatp, float (*)(P2(floatp, floatp))));
int gs_currentscreen(P4(gs_state *, float *, float *, float (**)(P2(floatp, floatp))));
/* Enumeration-style screen definition */
typedef struct gs_screen_enum_s gs_screen_enum;
extern int gs_screen_enum_sizeof;
int gs_screen_init(P4(gs_screen_enum *, gs_state *, floatp, floatp));
int gs_screen_currentpoint(P2(gs_screen_enum *, gs_point *));
int gs_screen_next(P2(gs_screen_enum *, floatp));