/*
	pen.h
*/

typedef enum {
	PENTYPE_DOT,
	PENTYPE_CIRCLE,
	PENTYPE_RECT,
	PENTYPE_ANY
} pentype_t;

typedef struct _pen_t {
	struct _pen_t	*next;
	short int 		*pattern;
	pentype_t		type;
	struct _pen_t	*originalpen;
	int				gray;
	bool			centergray;
} pen_t;

int		pen_init(void);
void	pen_end(void);

pen_t	*getcurpen(void), *getcurpen_0(void);
int		getmixrate(void);
void	putPenSample(int x,int y, pen_t *pen);
void	loadPenData(void);
void	pen_display(pen_t *pp, int x, int y);

bool	pen_isdottype(pen_t *p);
void pen_fill(pen_t *p,
			  void func(int x0,int y0,int dx,int xlen,int dy,
			  				  short *graymap)!,
			  const int x, const int y, const bool clip);
