xref: /plan9/sys/src/cmd/gs/src/gdevhit.c (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1998, 1999 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: gdevhit.c,v 1.4 2002/02/21 22:24:51 giles Exp $ */
187dd7cddfSDavid du Colombier /* Hit detection device */
197dd7cddfSDavid du Colombier #include "std.h"
207dd7cddfSDavid du Colombier #include "gserror.h"
217dd7cddfSDavid du Colombier #include "gserrors.h"
227dd7cddfSDavid du Colombier #include "gstypes.h"
237dd7cddfSDavid du Colombier #include "gsmemory.h"
247dd7cddfSDavid du Colombier #include "gxdevice.h"
257dd7cddfSDavid du Colombier 
267dd7cddfSDavid du Colombier /* Define the value returned for a detected hit. */
277dd7cddfSDavid du Colombier const int gs_hit_detected = gs_error_hit_detected;
287dd7cddfSDavid du Colombier 
297dd7cddfSDavid du Colombier /*
307dd7cddfSDavid du Colombier  * Define a minimal device for insideness testing.
317dd7cddfSDavid du Colombier  * It returns e_hit whenever it is asked to actually paint any pixels.
327dd7cddfSDavid du Colombier  */
337dd7cddfSDavid du Colombier private dev_proc_fill_rectangle(hit_fill_rectangle);
347dd7cddfSDavid du Colombier const gx_device gs_hit_device = {
357dd7cddfSDavid du Colombier  std_device_std_body(gx_device, 0, "hit detector",
367dd7cddfSDavid du Colombier 		     0, 0, 1, 1),
377dd7cddfSDavid du Colombier  {NULL,				/* open_device */
387dd7cddfSDavid du Colombier   NULL,				/* get_initial_matrix */
397dd7cddfSDavid du Colombier   NULL,				/* sync_output */
407dd7cddfSDavid du Colombier   NULL,				/* output_page */
417dd7cddfSDavid du Colombier   NULL,				/* close_device */
427dd7cddfSDavid du Colombier   gx_default_map_rgb_color,
437dd7cddfSDavid du Colombier   gx_default_map_color_rgb,
447dd7cddfSDavid du Colombier   hit_fill_rectangle,
457dd7cddfSDavid du Colombier   NULL,				/* tile_rectangle */
467dd7cddfSDavid du Colombier   NULL,				/* copy_mono */
477dd7cddfSDavid du Colombier   NULL,				/* copy_color */
487dd7cddfSDavid du Colombier   gx_default_draw_line,
497dd7cddfSDavid du Colombier   NULL,				/* get_bits */
507dd7cddfSDavid du Colombier   NULL,				/* get_params */
517dd7cddfSDavid du Colombier   NULL,				/* put_params */
527dd7cddfSDavid du Colombier   gx_default_map_cmyk_color,
537dd7cddfSDavid du Colombier   NULL,				/* get_xfont_procs */
547dd7cddfSDavid du Colombier   NULL,				/* get_xfont_device */
557dd7cddfSDavid du Colombier   gx_default_map_rgb_alpha_color,
567dd7cddfSDavid du Colombier   gx_default_get_page_device,
577dd7cddfSDavid du Colombier   gx_default_get_alpha_bits,
587dd7cddfSDavid du Colombier   NULL,				/* copy_alpha */
597dd7cddfSDavid du Colombier   gx_default_get_band,
607dd7cddfSDavid du Colombier   NULL,				/* copy_rop */
617dd7cddfSDavid du Colombier   gx_default_fill_path,
627dd7cddfSDavid du Colombier   NULL,				/* stroke_path */
637dd7cddfSDavid du Colombier   NULL,				/* fill_mask */
647dd7cddfSDavid du Colombier   gx_default_fill_trapezoid,
657dd7cddfSDavid du Colombier   gx_default_fill_parallelogram,
667dd7cddfSDavid du Colombier   gx_default_fill_triangle,
677dd7cddfSDavid du Colombier   gx_default_draw_thin_line,
687dd7cddfSDavid du Colombier   gx_default_begin_image,
697dd7cddfSDavid du Colombier   gx_default_image_data,
707dd7cddfSDavid du Colombier   gx_default_end_image,
717dd7cddfSDavid du Colombier   gx_default_strip_tile_rectangle,
727dd7cddfSDavid du Colombier   gx_default_strip_copy_rop,
737dd7cddfSDavid du Colombier   gx_get_largest_clipping_box,
747dd7cddfSDavid du Colombier   gx_default_begin_typed_image,
757dd7cddfSDavid du Colombier   NULL,				/* get_bits_rectangle */
767dd7cddfSDavid du Colombier   gx_default_map_color_rgb_alpha,
777dd7cddfSDavid du Colombier   gx_non_imaging_create_compositor,
787dd7cddfSDavid du Colombier   NULL				/* get_hardware_params */
797dd7cddfSDavid du Colombier  }
807dd7cddfSDavid du Colombier };
817dd7cddfSDavid du Colombier 
827dd7cddfSDavid du Colombier /* Test for a hit when filling a rectangle. */
837dd7cddfSDavid du Colombier private int
hit_fill_rectangle(gx_device * dev,int x,int y,int w,int h,gx_color_index color)847dd7cddfSDavid du Colombier hit_fill_rectangle(gx_device * dev, int x, int y, int w, int h,
857dd7cddfSDavid du Colombier 		   gx_color_index color)
867dd7cddfSDavid du Colombier {
877dd7cddfSDavid du Colombier     if (w > 0 && h > 0)
887dd7cddfSDavid du Colombier 	return_error(gs_error_hit_detected);
897dd7cddfSDavid du Colombier     return 0;
907dd7cddfSDavid du Colombier }
91