Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 1993, 1994, 1997 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: gsht.h,v 1.5 2002/06/16 08:45:42 lpd Exp $ */
18
/* Public interface to halftone functionality */
19
 
20
#ifndef gsht_INCLUDED
21
#  define gsht_INCLUDED
22
 
23
/* Client definition of (Type 1) halftones */
24
typedef struct gs_screen_halftone_s {
25
    float frequency;
26
    float angle;
27
    float (*spot_function) (floatp, floatp);
28
    /* setscreen or sethalftone sets these: */
29
    /* (a Level 2 feature, but we include them in Level 1) */
30
    float actual_frequency;
31
    float actual_angle;
32
} gs_screen_halftone;
33
 
34
#define st_screen_halftone_max_ptrs 0
35
 
36
/* Client definition of color (Type 2) halftones */
37
typedef struct gs_colorscreen_halftone_s {
38
    union _css {
39
	gs_screen_halftone indexed[4];
40
	struct _csc {
41
	    gs_screen_halftone red, green, blue, gray;
42
	} colored;
43
    } screens;
44
} gs_colorscreen_halftone;
45
 
46
#define st_colorscreen_halftone_max_ptrs 0
47
 
48
/* Procedural interface */
49
int gs_setscreen(gs_state *, gs_screen_halftone *);
50
int gs_currentscreen(const gs_state *, gs_screen_halftone *);
51
int gs_currentscreenlevels(const gs_state *);
52
 
53
/*
54
 * Enumeration-style definition of a single screen.  The client must:
55
 *      - probably, call gs_screen_enum_alloc;
56
 *      - call gs_screen_init;
57
 *      - in a loop,
58
 *              - call gs_screen_currentpoint; if it returns 1, exit;
59
 *              - call gs_screen_next;
60
 *      - if desired, call gs_screen_install to install the screen.
61
 */
62
typedef struct gs_screen_enum_s gs_screen_enum;
63
gs_screen_enum *gs_screen_enum_alloc(gs_memory_t *, client_name_t);
64
int gs_screen_init(gs_screen_enum *, gs_state *, gs_screen_halftone *);
65
int gs_screen_currentpoint(gs_screen_enum *, gs_point *);
66
int gs_screen_next(gs_screen_enum *, floatp);
67
int gs_screen_install(gs_screen_enum *);
68
 
69
#endif /* gsht_INCLUDED */