[gs-commits] rev 11582 - in trunk/gs: . base

chrisl at ghostscript.com chrisl at ghostscript.com
Sat Jul 31 16:07:38 UTC 2010


Author: chrisl
Date: 2010-07-31 16:07:37 +0000 (Sat, 31 Jul 2010)
New Revision: 11582

Removed:
   trunk/gs/base/gdevcairo.c
Modified:
   trunk/gs/base/configure.ac
   trunk/gs/base/devs.mak
   trunk/gs/ghostscript.vcproj
Log:
Remove the "dead" devcairo device.

No cluster differences expected.

Bug 690009



Modified: trunk/gs/base/configure.ac
===================================================================
--- trunk/gs/base/configure.ac	2010-07-31 15:45:39 UTC (rev 11581)
+++ trunk/gs/base/configure.ac	2010-07-31 16:07:37 UTC (rev 11582)
@@ -345,7 +345,7 @@
 FONTCONFIG_CFLAGS=""
 FONTCONFIG_LIBS=""
 AC_ARG_ENABLE([fontconfig], AC_HELP_STRING([--disable-fontconfig],
-    [Don't use fontconfig to list system fonts (also implies disable cairo)]))
+    [Don't use fontconfig to list system fonts]))
 if test "$enable_fontconfig" != "no"; then
 	# We MUST NOT use PKG_CHECK_MODULES since it is a) not a standard
 	# autoconf macro and b) requires pkg-config on the system, which is
@@ -844,34 +844,6 @@
 AC_SUBST(SOC_LIBS)
 AC_SUBST(SOC_LOADER)
 
-dnl enable the cairo device if the library is available
-AC_ARG_ENABLE([cairo], AC_HELP_STRING([--disable-cairo],
-    [Don't include the cairo output device]))
-CAIRO_DEVS=""
-CAIRO_CFLAGS=""
-CAIRO_LIBS=""
-# Disable cairo if fontconfig is disabled, since cairo depends on fontconfig
-if test -z "$HAVE_FONTCONFIG"; then
-enable_cairo=no
-fi
-
-if test "x$enable_cairo" != xno; then
-  if test "x$PKGCONFIG" != x; then
-    AC_MSG_CHECKING([for cairo])
-    if $PKGCONFIG --exists 'cairo >= 1.2.0'; then
-      CAIRO_CFLAGS=`$PKGCONFIG --cflags cairo`
-      CAIRO_LIBS=`$PKGCONFIG --libs cairo`
-      CAIRO_DEVS="cairo"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-  fi
-fi
-
-AC_SUBST(CAIRO_CFLAGS)
-AC_SUBST(CAIRO_LIBS)
-
 dnl look for omni implementation
 AC_ARG_WITH([omni], AC_HELP_STRING([--with-omni],
 	[enable the omni driver]))
@@ -985,7 +957,6 @@
 			  PNG      = Output to PNG
                           PS       = Output to PostScript/PDF
                           TIFF     = Output to TIFF
-                          CAIRO    = Output using libcairo
 			  WTS      = WTS Halftoning devices
 			  ETS      = ETS Halftoning devices
                           You can mix both variants, e.g.
@@ -1032,7 +1003,6 @@
 PCX_DEVS="pcxmono pcxgray pcx16 pcx256 pcx24b pcxcmyk pcx2up"
 PBM_DEVS="pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pksm pksmraw pam"
 PS_DEVS="psdf psdcmyk psdrgb pdfwrite pswrite ps2write epswrite psgray psmono psrgb bbox"
-# CAIRO_DEVS is defined conditionally above
 WTS_HALFTONING_DEVS="imdi simdi wtsimdi wtscmyk"
 MISC_FDEVS="ccr cgm24 cgm8 cgmmono cif inferno mag16 mag256 mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24 plan9bm sgirgb sunhmono bit bitrgb bitrgbtags bitcmyk devicen spotcmyk xcf"
 
@@ -1057,7 +1027,7 @@
 		P_DEVS="$P_DEVS $CANON_DEVS $EPSON_DEVS $HP_DEVS $LEXMARK_DEVS $BROTHER_DEVS $APPLE_DEVS $IBM_DEVS $OKI_DEVS $JAPAN_DEVS $MISC_PDEVS $ETS_HALFTONING_DEVS $OPVP_DEVS"
 		;;
 	FILES)
-		F_DEVS="$F_DEVS $BMP_DEVS $FAX_DEVS $JPEG_DEVS $PNG_DEVS $TIFF_DEVS $PCX_DEVS $PBM_DEVS $PS_DEVS $CAIRO_DEVS $WTS_HALFTONING_DEVS $MISC_FDEVS"
+		F_DEVS="$F_DEVS $BMP_DEVS $FAX_DEVS $JPEG_DEVS $PNG_DEVS $TIFF_DEVS $PCX_DEVS $PBM_DEVS $PS_DEVS $WTS_HALFTONING_DEVS $MISC_FDEVS"
 		;;
 	APPLE)
 		# All Apple printers
@@ -1131,10 +1101,6 @@
 		# PostScript/PDF writing
 		F_DEVS="$F_DEVS $PS_DEVS"
 		;;
-	CAIRO)
-		$ cairo output device
-		F_DEVS="$F_DEVS $CAIRO_DEVS"
-		;;
 	WTS)
 		# WTS Halftoning devices
 		F_DEVS="$F_DEVS $WTS_HALFTONING_DEVS"

Modified: trunk/gs/base/devs.mak
===================================================================
--- trunk/gs/base/devs.mak	2010-07-31 15:45:39 UTC (rev 11581)
+++ trunk/gs/base/devs.mak	2010-07-31 16:07:37 UTC (rev 11582)
@@ -1103,17 +1103,6 @@
 $(GLOBJ)gdevsvg.$(OBJ) : $(GLSRC)gdevsvg.c $(gx_h) $(gdevvec_h)
 	$(GLCC) $(GLO_)gdevsvg.$(OBJ) $(C_) $(GLSRC)gdevsvg.c
 
-# cairo output device
-
-cairo_=$(GLOBJ)gdevcairo.$(OBJ)
-$(DD)cairo.dev : $(DEVS_MAK) $(cairo_) $(GDEV) $(GLD)vector.dev
-	$(SETDEV2) $(DD)cairo $(cairo_)
-	$(ADDMOD) $(DD)cairo -include $(GLD)vector
-	$(ADDMOD) $(DD)cairo -lib cairo
-
-$(GLOBJ)gdevcairo.$(OBJ) : $(GLSRC)gdevcairo.c $(gx_h) $(gdevvec_h)
-	$(GLCC) $(GLO_)gdevcairo.$(OBJ) $(C_) $(GLSRC)gdevcairo.c $(CAIRO_CFLAGS) $(CAIRO_LIBS)
-
 ###### --------------------- Raster file formats --------------------- ######
 
 ### --------------------- The "plain bits" devices ---------------------- ###

Deleted: trunk/gs/base/gdevcairo.c
===================================================================
--- trunk/gs/base/gdevcairo.c	2010-07-31 15:45:39 UTC (rev 11581)
+++ trunk/gs/base/gdevcairo.c	2010-07-31 16:07:37 UTC (rev 11582)
@@ -1,753 +0,0 @@
-/* Copyright (C) 2007-2008 Artifex Software, Inc.
-   All Rights Reserved.
-
-   This software is provided AS-IS with no warranty, either express or
-   implied.
-
-   This software is distributed under license and may not be copied, modified
-   or distributed except as expressly authorized under the terms of that
-   license.  Refer to licensing information at http://www.artifex.com/
-   or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
-   San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
-*/
-
-/* $Id$ */
-/* cairo output device - contributed by Behdad Esfahbod */
-
-#include <cairo.h>
-
-#include "gx.h"
-#include "gserrors.h"
-#include "gdevvec.h"
-#include "gsutil.h"
-#include "memory_.h"
-#include "stream.h"
-#include "string_.h"
-#include "stdlib.h"
-
-/* default resolution. */
-#ifndef X_DPI
-#  define X_DPI 300
-#endif
-#ifndef Y_DPI
-#  define Y_DPI 300
-#endif
-
-/* ---------------- Device definition ---------------- */
-
-#define OUTPUT_PARAM_NAME  "CairoOptions"
-#define CONTEXT_PARAM_NAME "CairoContext"
-
-typedef struct gx_device_cairo_s {
-    /* superclass state */
-    gx_device_vector_common;
-    /* local state */
-    cairo_t *cr;
-    cairo_pattern_t *stroke_pattern;
-    cairo_pattern_t *fill_pattern;
-
-    char *output_param;
-    char *context_param;
-
-    cairo_bool_t should_close_file;
-    cairo_bool_t should_write_png;
-} gx_device_cairo;
-
-#define devcairo_device_body(dname, depth)\
-  std_device_dci_type_body(gx_device_cairo, 0, dname, &st_device_cairo, \
-			   DEFAULT_WIDTH_10THS * X_DPI / 10, \
-			   DEFAULT_HEIGHT_10THS * Y_DPI / 10, \
-			   X_DPI, Y_DPI, \
-			   (depth > 8 ? 3 : 1), depth, \
-			   (depth > 1 ? 255 : 1), (depth > 8 ? 255 : 0), \
-			   (depth > 1 ? 256 : 2), (depth > 8 ? 256 : 1))
-
-static dev_proc_open_device(devcairo_open_device);
-static dev_proc_sync_output(devcairo_sync_output);
-static dev_proc_output_page(devcairo_output_page);
-static dev_proc_close_device(devcairo_close_device);
-
-static dev_proc_get_params(devcairo_get_params);
-static dev_proc_put_params(devcairo_put_params);
-
-#define devcairo_device_procs \
-{ \
-	devcairo_open_device, \
-        NULL,                   /* get_initial_matrix */\
-        devcairo_sync_output,\
-        devcairo_output_page,\
-        devcairo_close_device,\
-        gx_default_rgb_map_rgb_color,\
-        gx_default_rgb_map_color_rgb,\
-        gdev_vector_fill_rectangle,\
-        NULL,                   /* tile_rectangle */\
-        NULL,			/* copy_mono */\
-        NULL,			/* copy_color */\
-        NULL,                   /* draw_line */\
-        NULL,                   /* get_bits */\
-        devcairo_get_params,\
-        devcairo_put_params,\
-        NULL,                   /* map_cmyk_color */\
-        NULL,                   /* get_xfont_procs */\
-        NULL,                   /* get_xfont_device */\
-        NULL,                   /* map_rgb_alpha_color */\
-        gx_page_device_get_page_device,\
-        NULL,                   /* get_alpha_bits */\
-        NULL,                   /* copy_alpha */\
-        NULL,                   /* get_band */\
-        NULL,                   /* copy_rop */\
-        gdev_vector_fill_path,\
-        gdev_vector_stroke_path,\
-        NULL,			/* fill_mask */\
-        gdev_vector_fill_trapezoid,\
-        gdev_vector_fill_parallelogram,\
-        gdev_vector_fill_triangle,\
-        NULL,			/* draw_thin_line */\
-        NULL,			/* begin_image */\
-        NULL,                   /* image_data */\
-        NULL,                   /* end_image */\
-        NULL,                   /* strip_tile_rectangle */\
-        NULL			/* strip_copy_rop */\
-}
-
-gs_public_st_suffix_add0_final(st_device_cairo, gx_device_cairo,
-                               "gx_device_cairo",
-                               device_cairo_enum_ptrs, 
-			       device_cairo_reloc_ptrs,
-                               gx_device_finalize,
-			       st_device_vector);
-
-const gx_device_cairo gs_cairo_device = {
-    devcairo_device_body("cairo", 24),
-    devcairo_device_procs
-};
-
-/* Vector device procedures */
-
-static int
-devcairo_beginpage(gx_device_vector *vdev);
-static int
-devcairo_setlinewidth(gx_device_vector *vdev, floatp width);
-static int
-devcairo_setlinecap(gx_device_vector *vdev, gs_line_cap cap);
-static int
-devcairo_setlinejoin(gx_device_vector *vdev, gs_line_join join);
-static int
-devcairo_setmiterlimit(gx_device_vector *vdev, floatp limit);
-static int
-devcairo_setdash(gx_device_vector *vdev, const float *pattern,
-	    uint count, floatp offset);
-static int
-devcairo_setlogop(gx_device_vector *vdev, gs_logical_operation_t lop,
-	     gs_logical_operation_t diff);
-
-static int
-devcairo_can_handle_hl_color(gx_device_vector *vdev, const gs_imager_state *pis,
-			const gx_drawing_color * pdc);
-static int
-devcairo_setfillcolor(gx_device_vector *vdev, const gs_imager_state *pis,
-                 const gx_drawing_color *pdc);
-static int
-devcairo_setstrokecolor(gx_device_vector *vdev, const gs_imager_state *pis,
-		   const gx_drawing_color *pdc);
-
-static int
-devcairo_beginpath(gx_device_vector *vdev, gx_path_type_t type);
-
-static int
-devcairo_moveto(gx_device_vector *vdev, floatp x0, floatp y0,
-	   floatp x, floatp y, gx_path_type_t type);
-static int
-devcairo_lineto(gx_device_vector *vdev, floatp x0, floatp y0,
-	   floatp x, floatp y, gx_path_type_t type);
-static int
-devcairo_curveto(gx_device_vector *vdev, floatp x0, floatp y0,
-	    floatp x1, floatp y1, floatp x2, floatp y2,
-	    floatp x3, floatp y3, gx_path_type_t type);
-static int
-devcairo_closepath(gx_device_vector *vdev, floatp x, floatp y,
-	      floatp x_start, floatp y_start, gx_path_type_t type);
-static int
-devcairo_endpath(gx_device_vector *vdev, gx_path_type_t type);
-
-/* Vector device function table */
-
-static const gx_device_vector_procs devcairo_vector_procs = {
-        /* Page management */
-    devcairo_beginpage,
-        /* Imager state */
-    devcairo_setlinewidth,
-    devcairo_setlinecap,
-    devcairo_setlinejoin,
-    devcairo_setmiterlimit,
-    devcairo_setdash,
-    gdev_vector_setflat,
-    devcairo_setlogop,
-        /* Other state */
-    devcairo_can_handle_hl_color,
-    devcairo_setfillcolor,
-    devcairo_setstrokecolor,
-        /* Paths */
-    gdev_vector_dopath,
-    gdev_vector_dorect,
-    devcairo_beginpath,
-    devcairo_moveto,
-    devcairo_lineto,
-    devcairo_curveto,
-    devcairo_closepath,
-    devcairo_endpath
-};
-
-/* local utility prototypes */
-
-/* Driver procedure implementation */
-
-static cairo_status_t
-devcairo_write_func (void                *closure,
-		     const unsigned char *data,
-		     unsigned int         length)
-{
-    gx_device_cairo *const devcairo = (gx_device_cairo*)closure;
-    gx_device_vector *const vdev = (gx_device_vector*)devcairo;
-
-    stream *s = gdev_vector_stream(vdev);
-    uint used;
-
-    sputs(s, (const byte *)data, length, &used);
-
-    return (length == used) ? CAIRO_STATUS_SUCCESS : CAIRO_STATUS_WRITE_ERROR;
-}
-
-#ifdef CAIRO_HAS_SVG_SURFACE
-#    include <cairo-svg.h>
-#endif
-#ifdef CAIRO_HAS_PDF_SURFACE
-#    include <cairo-pdf.h>
-#endif
-#ifdef CAIRO_HAS_PS_SURFACE
-#    include <cairo-ps.h>
-#  if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,6,0)
-#    define HAS_EPS 1
-#  else
-#    undef HAS_EPS
-#  endif
-#endif
-
-/* Open the device */
-static int
-devcairo_open_device(gx_device *dev)
-{
-    gx_device_vector *const vdev = (gx_device_vector*)dev;
-    gx_device_cairo *const devcairo = (gx_device_cairo*)dev;
-    int code = 0;
-
-    cairo_t *cr = NULL;
-
-    cairo_bool_t scale_to_points = false;
-
-    vdev->v_memory = dev->memory;
-    vdev->vec_procs = &devcairo_vector_procs;
-    gdev_vector_init(vdev);
-
-    if (!!vdev->fname[0] == !!devcairo->context_param) {
-        return gs_throw(gs_error_undefinedfilename, "Either "CONTEXT_PARAM_NAME" or OutputFile should be set, and not both.\nTo render to a file, set OutputFile, and if needed "OUTPUT_PARAM_NAME".\nTo render to a cairo_t, set "CONTEXT_PARAM_NAME" to a hex printout of the pointer, prefixed by '0x'.");
-    }
-
-    devcairo->should_close_file = false;
-    devcairo->should_write_png = false;
-
-    if (vdev->fname[0]) {
-	const char *extension;
-	cairo_surface_t *surface;
-
-	code = gdev_vector_open_file_options(vdev, 512, VECTOR_OPEN_FILE_SEQUENTIAL);
-	if (code < 0) return code;
-
-	devcairo->should_close_file = true;
-
-	if (devcairo->output_param)
-	    extension = devcairo->output_param;
-	else {
-	    extension = strrchr (vdev->fname, '.');
-	    if (extension)
-		extension++; /* skip the dot */
-	}
-
-	if (0)
-	  ;
-	#ifdef CAIRO_HAS_PNG_FUNCTIONS
-	    else if (extension && 0 == strcasecmp (extension, "png")) {
-	        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, dev->width, dev->height);
-		devcairo->should_write_png = true;
-	    }
-	#endif
-	#ifdef CAIRO_HAS_SVG_SURFACE
-	    else if (extension && 0 == strcasecmp (extension, "svg")) {
-		surface = cairo_svg_surface_create_for_stream (devcairo_write_func, dev, dev->MediaSize[0], dev->MediaSize[1]);
-		scale_to_points = true;
-	    }
-	#endif
-	#ifdef CAIRO_HAS_PDF_SURFACE
-	    else if (extension && 0 == strcasecmp (extension, "pdf")) {
-		surface = cairo_pdf_surface_create_for_stream (devcairo_write_func, dev, dev->MediaSize[0], dev->MediaSize[1]);
-		scale_to_points = true;
-	    }
-	#endif
-	#ifdef CAIRO_HAS_PS_SURFACE
-	    else if (extension && 0 == strcasecmp (extension, "ps")) {
-		surface = cairo_ps_surface_create_for_stream (devcairo_write_func, dev, dev->MediaSize[0], dev->MediaSize[1]);
-		scale_to_points = true;
-	    }
-	  #ifdef HAS_EPS
-	    else if (extension && 0 == strcasecmp (extension, "eps")) {
-		surface = cairo_ps_surface_create_for_stream (devcairo_write_func, dev, dev->MediaSize[0], dev->MediaSize[1]);
-		cairo_ps_surface_set_eps (surface, true);
-		scale_to_points = true;
-	    }
-	  #endif
-	#endif
-	else {
-	    const char *s1, *s2;
-	    s1 = devcairo->output_param ?
-		 OUTPUT_PARAM_NAME " value '%s' is not a recognized output format.\n%s" :
-		 "OutputFile has %s extension.\nThat is not a recognized output format.\nSet "OUTPUT_PARAM_NAME" to select output format.\n%s";
-	    s2 = "It should be one of"
-	    #ifdef CAIRO_HAS_PNG_FUNCTIONS
-	        " png"
-	    #endif
-	    #ifdef CAIRO_HAS_SVG_SURFACE
-		", svg"
-	    #endif
-	    #ifdef CAIRO_HAS_PDF_SURFACE
-		", pdf"
-	    #endif
-	    #ifdef CAIRO_HAS_PS_SURFACE
-		", ps"
-	      #ifdef HAS_EPS
-		", eps"
-	      #endif
-	    #endif
-		".";
-
-	    return gs_throw2(gs_error_invalidfileaccess, s1, extension ? extension : "no", s2);
-	}
-
-	cairo_surface_set_fallback_resolution (surface, dev->HWResolution[0], dev->HWResolution[1]);
-
-	cr = cairo_create (surface);
-	cairo_surface_destroy (surface);
-
-    } else {
-	int len = -1;
-
-        if (sscanf (devcairo->context_param, "0x%p%n", &cr, &len) < 1 || len != strlen (devcairo->context_param) || !cr)
-	 {
-	    return gs_throw1(gs_error_undefined, "Failed to understand "CONTEXT_PARAM_NAME" value '%s'.\nSet "CONTEXT_PARAM_NAME" to a hex printout of the cairo_t pointer, prefixed by '0x'.", devcairo->context_param);
-	 }
-
-	if (cairo_status (cr) != CAIRO_STATUS_SUCCESS)
-	    return gs_throw1(gs_error_unknownerror, "The cairo_t at '%s' passed as "CONTEXT_PARAM_NAME" is already in error status.", devcairo->context_param);
-
-	cairo_reference (cr);
-    }
-
-    devcairo->cr = cr;
-
-    cairo_save (cr);
-    cairo_set_source_rgb (cr, 0., 0., 0.);
-    devcairo->fill_pattern = cairo_pattern_reference (cairo_get_source (cr));
-    devcairo->stroke_pattern = cairo_pattern_reference (cairo_get_source (cr));
-
-    if (scale_to_points)
-	cairo_scale (devcairo->cr,
-		     72. / dev->HWResolution[0],
-		     72. / dev->HWResolution[1]);
-
-    return code;
-}
-
-static int
-devcairo_check_status (gx_device_cairo *devcairo)
-{
-    /* little trick to check both surface and context status */
-    switch (cairo_surface_status (cairo_get_target (devcairo->cr))) {
-    case CAIRO_STATUS_SUCCESS:		return 0;
-    case CAIRO_STATUS_WRITE_ERROR:	return gs_error_ioerror;
-    case CAIRO_STATUS_NO_MEMORY:	return gs_error_VMerror;
-    case CAIRO_STATUS_NO_CURRENT_POINT:	return gs_error_nocurrentpoint;
-    default:				return gs_error_unknownerror;
-    }
-}
-
-int
-devcairo_sync_output(gx_device * dev)
-{
-    gx_device_cairo *const devcairo = (gx_device_cairo*)dev;
-    int code = 0;
-
-    cairo_surface_flush (cairo_get_target (devcairo->cr));
-
-    code = devcairo_check_status (devcairo);
-    if (code < 0) return_error (code);
-
-    return 0;
-}
-
-/* Complete a page */
-static int
-devcairo_output_page(gx_device *dev, int num_copies, int flush)
-{
-    gx_device_cairo *const devcairo = (gx_device_cairo*)dev;
-    int code = 0;
-    int i;
-
-    for (i = num_copies - 1; i > 0; i++)
-	cairo_copy_page (devcairo->cr);
-
-    if (flush)
-	cairo_show_page (devcairo->cr);
-    else
-	cairo_copy_page (devcairo->cr);
-
-    code = devcairo_check_status (devcairo);
-    if (code < 0) return_error (code);
-
-    return gx_finish_output_page(dev, num_copies, flush);
-}
-
-/* Close the device */
-static int
-devcairo_close_device(gx_device *dev)
-{
-    gx_device_cairo *const devcairo = (gx_device_cairo*)dev;
-    int code = 0, ecode;
-
-    if (devcairo->should_close_file) {
-	cairo_surface_t *surface = cairo_get_target (devcairo->cr);
-
-#ifdef CAIRO_HAS_PNG_FUNCTIONS
-	if (devcairo->should_write_png) {
-	    cairo_surface_write_to_png_stream (surface, devcairo_write_func, devcairo);
-	    devcairo->should_write_png = false;
-	}
-#endif
-
-	cairo_surface_finish (surface);
-
-	code = gdev_vector_close_file((gx_device_vector*)dev);
-	devcairo->should_close_file = false;
-    }
-
-    ecode = devcairo_check_status (devcairo);
-    if (ecode < 0) {
-	gs_note_error (ecode);
-	if (code >= 0) code = ecode;
-    }
-
-    cairo_restore (devcairo->cr);
-    cairo_destroy (devcairo->cr);
-
-    return code;
-}
-
-/* Respond to a device parameter query from the client */
-static int
-devcairo_get_params(gx_device *dev, gs_param_list *plist)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)dev;
-    int code = gdev_vector_get_params(dev, plist);
-
-    if (code < 0) return code;
-
-#define write_string_param(param, ParamName) \
-    do {	\
-	gs_param_string ofns;	\
-	ofns.data = (const byte *)(param ? param : "");	\
-	ofns.size = param ? strlen(param) : 0;	\
-	ofns.persistent = false;	\
-	if ((code = param_write_string(plist, ParamName, &ofns)) < 0)	\
-	    return code;	\
-    } while (0)
-
-    write_string_param (devcairo->output_param, OUTPUT_PARAM_NAME);
-    write_string_param (devcairo->context_param, CONTEXT_PARAM_NAME);
-
-    return code;
-}
-
-/* Read the device parameters passed to us by the client */
-static int
-devcairo_put_params(gx_device *dev, gs_param_list *plist)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)dev;
-    int code = 0;
-
-    if (code < 0) return code;
-
-#define read_string_param(param,ParamName) \
-    do {	\
-	gs_param_name param_name;	\
-	gs_param_string ofns;	\
-	switch (code = param_read_string(plist, (param_name = ParamName), &ofns)) {	\
-	    case 0:	\
-		if (param && !bytes_compare(ofns.data, ofns.size,	\
-					   (const byte *)param,	\
-					    strlen(param))	\
-		   )	\
-		    /* The new param is the same as the old param.  Do nothing. */	\
-		    ofns.data = 0;	\
-		break;	\
-	    default:	\
-		param_signal_error(plist, param_name, code);	\
-		break;	\
-	    case 1:	\
-		ofns.data = 0;	\
-		code = 0;	\
-		break;	\
-	}	\
-	if (code < 0) return code;	\
-	    \
-	if (ofns.data != 0) {	\
-	    if (param) {	\
-		free (param);	\
-	        param = NULL;	\
-	    }	\
-	    if (ofns.data[0]) {	\
-		param = malloc (ofns.size + 1);	\
-		memcpy(param, ofns.data, ofns.size);	\
-		param[ofns.size] = 0;	\
-	    }	\
-	} \
-    } while (0)
-
-    read_string_param (devcairo->output_param, OUTPUT_PARAM_NAME);
-    read_string_param (devcairo->context_param, CONTEXT_PARAM_NAME);
-
-    code = gdev_vector_put_params(dev, plist);
-
-    return code;
-}
-
-static cairo_pattern_t *
-devcairo_make_pattern(gx_device_cairo *devcairo, gx_drawing_color *pdc)
-{
-    cairo_pattern_t *pattern;
-
-    if (gx_dc_is_pure(pdc)) {
-      gx_color_index color = gx_dc_pure_color(pdc);
-      pattern = cairo_pattern_create_rgb (((color >> 16) & 0xff) / 255.,
-					  ((color >>  8) & 0xff) / 255.,
-					  ((color      ) & 0xff) / 255.);
-    } else if (gx_dc_is_null(pdc)) {
-      pattern = cairo_pattern_create_rgb (1., 1., 1.); /* just use black */
-    } else {
-      pattern = cairo_pattern_create_rgb (1., 0., 0.); /* XXX red... */
-      gs_note_error(gs_error_rangecheck);
-      return pattern;
-    }
-
-    return pattern;
-}
-
-/* vector device implementation */
-
-        /* Page management */
-static int
-devcairo_beginpage(gx_device_vector *vdev)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    return 0;
-}
-
-/* Imager state */
-static int
-devcairo_setlinewidth(gx_device_vector *vdev, floatp width)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_set_line_width (devcairo->cr, width);
-
-    return 0;
-}
-static int
-devcairo_setlinecap(gx_device_vector *vdev, gs_line_cap cap)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-    cairo_line_cap_t cairo_cap;
-
-    switch (cap) {
-    case gs_cap_butt:   cairo_cap = CAIRO_LINE_CAP_BUTT;   break;
-    case gs_cap_square: cairo_cap = CAIRO_LINE_CAP_SQUARE; break;
-    case gs_cap_round:  cairo_cap = CAIRO_LINE_CAP_ROUND;  break;
-    default:
-	gs_note_error(gs_error_rangecheck);
-	return 1;
-    }
-
-    cairo_set_line_cap (devcairo->cr, cairo_cap);
-
-    return 0;
-}
-static int
-devcairo_setlinejoin(gx_device_vector *vdev, gs_line_join join)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-    cairo_line_join_t cairo_join;
-
-    switch (join) {
-    case gs_join_miter: cairo_join = CAIRO_LINE_JOIN_MITER; break;
-    case gs_join_round: cairo_join = CAIRO_LINE_JOIN_ROUND; break;
-    case gs_join_bevel: cairo_join = CAIRO_LINE_JOIN_BEVEL; break;
-    default:
-	gs_note_error(gs_error_rangecheck);
-	return 1;
-    }
-
-    cairo_set_line_join (devcairo->cr, cairo_join);
-
-    return 0;
-}
-static int
-devcairo_setmiterlimit(gx_device_vector *vdev, floatp limit)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_set_miter_limit (devcairo->cr, limit);
-
-    return 0;
-}
-static int
-devcairo_setdash(gx_device_vector *vdev, const float *pattern,
-	    uint count, floatp offset)
-{
-    dprintf("XXX devcairo_setdash\n");
-    return 0;
-}
-static int
-devcairo_setlogop(gx_device_vector *vdev, gs_logical_operation_t lop,
-	     gs_logical_operation_t diff)
-{
-/*    dprintf("XXX devcairo_setlogop\n"); */
-    return 0;
-}
-
-        /* Other state */
-
-static int
-devcairo_can_handle_hl_color(gx_device_vector *vdev, const gs_imager_state *pis,
-			  const gx_drawing_color * pdc)
-{
-/*    dprintf("XXX devcairo_can_handle_hl_color\n"); */
-    return 0;
-}
-
-static int
-devcairo_setfillcolor(gx_device_vector *vdev, const gs_imager_state *pis,
-		 const gx_drawing_color *pdc)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo*)vdev;
-
-    cairo_pattern_destroy (devcairo->fill_pattern);
-    devcairo->fill_pattern = devcairo_make_pattern (devcairo, pdc);
-
-    return 0;
-}
-
-static int
-devcairo_setstrokecolor(gx_device_vector *vdev, const gs_imager_state *pis,
-		   const gx_drawing_color *pdc)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo*)vdev;
-
-    cairo_pattern_destroy (devcairo->stroke_pattern);
-    devcairo->stroke_pattern = devcairo_make_pattern (devcairo, pdc);
-
-    return 0;
-}
-
-	/* Paths */
-/*    gdev_vector_dopath */
-
-static int
-devcairo_beginpath(gx_device_vector *vdev, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_new_path (devcairo->cr);
-
-    return 0;
-}
-
-static int
-devcairo_moveto(gx_device_vector *vdev, floatp x0, floatp y0,
-	   floatp x, floatp y, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_move_to (devcairo->cr, x,y);
-
-    return 0;
-}
-
-static int
-devcairo_lineto(gx_device_vector *vdev, floatp x0, floatp y0,
-	   floatp x, floatp y, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_line_to (devcairo->cr, x,y);
-
-    return 0;
-}
-
-static int
-devcairo_curveto(gx_device_vector *vdev, floatp x0, floatp y0,
-	    floatp x1, floatp y1, floatp x2, floatp y2,
-	    floatp x3, floatp y3, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_curve_to (devcairo->cr, x1,y1, x2,y2, x3,y3);
-
-    return 0;
-}
-
-static int
-devcairo_closepath(gx_device_vector *vdev, floatp x, floatp y,
-	      floatp x_start, floatp y_start, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-
-    cairo_close_path (devcairo->cr);
-
-    return 0;
-}
-
-static int
-devcairo_endpath(gx_device_vector *vdev, gx_path_type_t type)
-{
-    gx_device_cairo *devcairo = (gx_device_cairo *)vdev;
-    cairo_t *cr = devcairo->cr;
-
-    cairo_set_fill_rule (cr,
-			 (type & gx_path_type_even_odd) ? 
-			 CAIRO_FILL_RULE_EVEN_ODD : CAIRO_FILL_RULE_WINDING);
-
-    if (type & gx_path_type_fill) {
-	cairo_set_source (cr, devcairo->fill_pattern);
-        cairo_fill_preserve (cr);
-    }
-
-    if (type & gx_path_type_stroke) {
-	cairo_set_source (cr, devcairo->stroke_pattern);
-        cairo_stroke_preserve (cr);
-    }
-
-    if (type & gx_path_type_clip)
-        cairo_clip_preserve (cr);
-
-    cairo_new_path (devcairo->cr);
-
-    return 0;
-}

Modified: trunk/gs/ghostscript.vcproj
===================================================================
--- trunk/gs/ghostscript.vcproj	2010-07-31 15:45:39 UTC (rev 11581)
+++ trunk/gs/ghostscript.vcproj	2010-07-31 16:07:37 UTC (rev 11582)
@@ -1174,10 +1174,6 @@
 						>
 					</File>
 					<File
-						RelativePath="base\gdevcairo.c"
-						>
-					</File>
-					<File
 						RelativePath="base\gdevccr.c"
 						>
 					</File>



More information about the gs-commits mailing list