summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/gsiparm2.h60
-rw-r--r--base/gximage2.c316
-rw-r--r--base/gxiparam.h2
-rw-r--r--base/lib.mak17
-rw-r--r--devices/gdevx.c82
-rw-r--r--psi/zupath.c26
-rw-r--r--windows/ghostscript.vcproj8
-rw-r--r--windows/ghostscript_rt.vcxproj2
8 files changed, 14 insertions, 499 deletions
diff --git a/base/gsiparm2.h b/base/gsiparm2.h
deleted file mode 100644
index 3081b68ac..000000000
--- a/base/gsiparm2.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 2001-2018 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 the license contained in the file LICENSE in this distribution.
-
- Refer to licensing information at http://www.artifex.com or contact
- Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
- CA 94945, U.S.A., +1(415)492-9861, for further information.
-*/
-
-
-/* ImageType 2 image parameter definition */
-
-#ifndef gsiparm2_INCLUDED
-# define gsiparm2_INCLUDED
-
-#include "gsiparam.h"
-#include "gsgstate.h"
-
-/* Opaque type for a path */
-#ifndef gx_path_DEFINED
-# define gx_path_DEFINED
-typedef struct gx_path_s gx_path;
-#endif
-
-/*
- * See Section 7.1 of the Adobe PostScript Version 3010 Supplement
- * for a definition of ImageType 2 images.
- */
-
-typedef struct gs_image2_s {
- gs_image_common;
- gs_gstate *DataSource;
- float XOrigin, YOrigin;
- float Width, Height;
- /*
- * If UnpaintedPath is not 0, any unpainted path will be appended to it.
- */
- gx_path *UnpaintedPath;
- bool PixelCopy;
-} gs_image2_t;
-#define private_st_gs_image2() /* in gximage2.c */\
- extern_st(st_gs_image_common);\
- gs_private_st_suffix_add2(st_gs_image2, gs_image2_t, "gs_image2_t",\
- image2_enum_ptrs, image2_reloc_ptrs, st_gs_image_common,\
- DataSource, UnpaintedPath)
-
-/*
- * Initialize an ImageType 2 image. Defaults:
- * UnpaintedPath = 0
- * PixelCopy = false
- */
-void gs_image2_t_init(gs_image2_t * pim);
-
-#endif /* gsiparm2_INCLUDED */
diff --git a/base/gximage2.c b/base/gximage2.c
deleted file mode 100644
index 16e87cd38..000000000
--- a/base/gximage2.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* Copyright (C) 2001-2018 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 the license contained in the file LICENSE in this distribution.
-
- Refer to licensing information at http://www.artifex.com or contact
- Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
- CA 94945, U.S.A., +1(415)492-9861, for further information.
-*/
-
-
-/* ImageType 2 image implementation */
-#include "math_.h"
-#include "memory_.h"
-#include "gx.h"
-#include "gserrors.h"
-#include "gsmatrix.h" /* for gscoord.h */
-#include "gscoord.h"
-#include "gscspace.h"
-#include "gscpixel.h"
-#include "gsdevice.h"
-#include "gsiparm2.h"
-#include "gxgetbit.h"
-#include "gxiparam.h"
-#include "gxpath.h"
-#include "gscolor2.h"
-
-/* Forward references */
-static dev_proc_begin_typed_image(gx_begin_image2);
-static image_proc_source_size(gx_image2_source_size);
-
-/* Structure descriptor */
-private_st_gs_image2();
-
-/* Define the image type for ImageType 2 images. */
-const gx_image_type_t gs_image_type_2 = {
- &st_gs_image2, gx_begin_image2, gx_image2_source_size,
- gx_image_no_sput, gx_image_no_sget, gx_image_default_release, 2
-};
-
-/* Initialize an ImageType 2 image. */
-void
-gs_image2_t_init(gs_image2_t * pim)
-{
- pim->type = &gs_image_type_2;
- pim->UnpaintedPath = 0;
- pim->PixelCopy = false;
-}
-
-/*
- * Compute the device space coordinates and source data size for an
- * ImageType 2 image. This procedure fills in
- * image.{Width,Height,ImageMatrix}.
- */
-typedef struct image2_data_s {
- gs_point origin;
- gs_int_rect bbox;
- gs_image1_t image;
-} image2_data_t;
-static int
-image2_set_data(const gs_image2_t * pim, image2_data_t * pid)
-{
- gs_gstate *pgs = pim->DataSource;
- gs_matrix smat;
- gs_rect sbox, dbox;
-
- gs_transform(pgs, pim->XOrigin, pim->YOrigin, &pid->origin);
- sbox.q.x = (sbox.p.x = pim->XOrigin) + pim->Width;
- sbox.q.y = (sbox.p.y = pim->YOrigin) + pim->Height;
- gs_currentmatrix(pgs, &smat);
- gs_bbox_transform(&sbox, &smat, &dbox);
- pid->bbox.p.x = (int)floor(dbox.p.x);
- pid->bbox.p.y = (int)floor(dbox.p.y);
- pid->bbox.q.x = (int)ceil(dbox.q.x);
- pid->bbox.q.y = (int)ceil(dbox.q.y);
- pid->image.Width = pid->bbox.q.x - pid->bbox.p.x;
- pid->image.Height = pid->bbox.q.y - pid->bbox.p.y;
- pid->image.ImageMatrix = pim->ImageMatrix;
- pid->image.image_parent_type = gs_image_type2;
- return 0;
-}
-
-/* Compute the source size of an ImageType 2 image. */
-static int
-gx_image2_source_size(const gs_gstate * pgs, const gs_image_common_t * pim,
- gs_int_point * psize)
-{
- image2_data_t idata;
-
- image2_set_data((const gs_image2_t *)pim, &idata);
- psize->x = idata.image.Width;
- psize->y = idata.image.Height;
- return 0;
-}
-
-/* Begin an ImageType 2 image. */
-/* Note that since ImageType 2 images don't have any source data, */
-/* this procedure does all the work. */
-static int
-gx_begin_image2(gx_device * dev,
- const gs_gstate * pgs1, const gs_matrix * pmat,
- const gs_image_common_t * pic, const gs_int_rect * prect,
- const gx_drawing_color * pdcolor, const gx_clip_path * pcpath,
- gs_memory_t * mem, gx_image_enum_common_t ** pinfo)
-{
- const gs_image2_t *pim = (const gs_image2_t *)pic;
- gs_gstate *pgs = pim->DataSource;
- gx_device *sdev = gs_currentdevice(pgs);
- int depth = sdev->color_info.depth;
- bool pixel_copy = pim->PixelCopy;
- bool has_alpha;
- bool direct_copy = false;
- image2_data_t idata;
- byte *row;
- uint row_size, source_size;
- gx_image_enum_common_t *info;
- gs_matrix smat, dmat;
- int code;
-
- /* verify that color models are the same for PixelCopy */
- if ( pixel_copy &&
- !gx_color_info_equal(&dev->color_info, &sdev->color_info))
- return_error(gs_error_typecheck);
-
-/****** ONLY HANDLE depth <= 8 FOR PixelCopy ******/
- if (pixel_copy && depth <= 8)
- return_error(gs_error_unregistered);
-
- gs_image_t_init(&idata.image, gs_currentcolorspace((const gs_gstate *)pgs1));
-
- /* Add Decode entries for K and alpha */
- idata.image.Decode[6] = idata.image.Decode[8] = 0.0;
- idata.image.Decode[7] = idata.image.Decode[9] = 1.0;
- if (pmat == 0) {
- gs_currentmatrix((const gs_gstate *)pgs1, &dmat);
- pmat = &dmat;
- } else
- dmat = *pmat;
- gs_currentmatrix(pgs, &smat);
- code = image2_set_data(pim, &idata);
- if (code < 0)
- return code;
-/****** ONLY HANDLE SIMPLE CASES FOR NOW ******/
- if (idata.bbox.p.x != floor(idata.origin.x))
- return_error(gs_error_rangecheck);
- if (!(idata.bbox.p.y == floor(idata.origin.y) ||
- idata.bbox.q.y == ceil(idata.origin.y))
- )
- return_error(gs_error_rangecheck);
- source_size = (idata.image.Width * depth + 7) >> 3;
- row_size = max(3 * idata.image.Width, source_size);
- row = gs_alloc_bytes(mem, row_size, "gx_begin_image2");
- if (row == 0)
- return_error(gs_error_VMerror);
- if (pixel_copy) {
- idata.image.BitsPerComponent = depth;
- has_alpha = false; /* no separate alpha channel */
-
- if ( pcpath == NULL ||
- gx_cpath_includes_rectangle(pcpath,
- int2fixed(idata.bbox.p.x),
- int2fixed(idata.bbox.p.y),
- int2fixed(idata.bbox.q.x),
- int2fixed(idata.bbox.q.y)) ) {
- gs_matrix mat;
-
- /*
- * Figure 7.2 of the Adobe 3010 Supplement says that we should
- * compute CTM x ImageMatrix here, but I'm almost certain it
- * should be the other way around. Also see gdevx.c.
- */
- gs_matrix_multiply(&idata.image.ImageMatrix, &smat, &mat);
- direct_copy =
- (is_xxyy(&dmat) || is_xyyx(&dmat)) &&
-#define eqe(e) mat.e == dmat.e
- eqe(xx) && eqe(xy) && eqe(yx) && eqe(yy);
-#undef eqe
- }
- } else {
- idata.image.BitsPerComponent = 8;
-
- /* Always use RGB source color for now.
- *
- * The source device has alpha if the same RGB values with
- * different alphas map to different pixel values.
- ****** THIS IS NOT GOOD ENOUGH: WE WANT TO SKIP TRANSFERRING
- ****** ALPHA IF THE SOURCE IS CAPABLE OF HAVING ALPHA BUT
- ****** DOESN'T CURRENTLY HAVE ANY ACTUAL ALPHA VALUES DIFFERENT
- ****** FROM 1.
- */
- /*
- * Since the default implementation of map_rgb_alpha_color
- * premultiplies the color towards white, we can't just test
- * whether changing alpha has an effect on the color.
- */
- {
- gx_color_index trans_black =
- (*dev_proc(sdev, map_rgb_alpha_color))
- (sdev, (gx_color_value) 0, (gx_color_value) 0,
- (gx_color_value) 0, (gx_color_value) 0);
-
- has_alpha =
- trans_black != (*dev_proc(sdev, map_rgb_alpha_color))
- (sdev, (gx_color_value) 0, (gx_color_value) 0,
- (gx_color_value) 0, gx_max_color_value) &&
- trans_black != (*dev_proc(sdev, map_rgb_alpha_color))
- (sdev, gx_max_color_value, gx_max_color_value,
- gx_max_color_value, gx_max_color_value);
- }
- }
- idata.image.Alpha =
- (has_alpha ? gs_image_alpha_last : gs_image_alpha_none);
- if (smat.yy < 0) {
- /*
- * The source Y axis is reflected. Reflect the mapping from
- * user space to source data.
- */
- idata.image.ImageMatrix.ty += idata.image.Height *
- idata.image.ImageMatrix.yy;
- idata.image.ImageMatrix.xy = -idata.image.ImageMatrix.xy;
- idata.image.ImageMatrix.yy = -idata.image.ImageMatrix.yy;
- }
- if (!direct_copy)
- code = (*dev_proc(dev, begin_typed_image))
- (dev, pgs1, pmat, (const gs_image_common_t *)&idata.image, NULL,
- pdcolor, pcpath, mem, &info);
- if (code >= 0) {
- int y;
- gs_int_rect rect;
- gs_get_bits_params_t params;
- const byte *data;
- uint offset = row_size - source_size;
-
- rect = idata.bbox;
- for (y = 0; code >= 0 && y < idata.image.Height; ++y) {
- gs_int_rect *unread = 0;
- int num_unread;
-
-/****** y COMPUTATION IS ROUNDED -- WRONG ******/
- rect.q.y = rect.p.y + 1;
- /* Insist on x_offset = 0 to simplify the conversion loop. */
- params.options =
- GB_ALIGN_ANY | (GB_RETURN_COPY | GB_RETURN_POINTER) |
- GB_OFFSET_0 | (GB_RASTER_STANDARD | GB_RASTER_ANY) |
- GB_PACKING_CHUNKY;
- if (pixel_copy) {
- params.options |= GB_COLORS_NATIVE;
- params.data[0] = row + offset;
- code = (*dev_proc(sdev, get_bits_rectangle))
- (sdev, &rect, &params, &unread);
- if (code < 0)
- break;
- num_unread = code;
- data = params.data[0];
- if (direct_copy) {
- /*
- * Copy the pixels directly to the destination.
- * We know that the transformation is only a translation,
- * but we must handle an inverted destination Y axis.
- */
- code = (*dev_proc(dev, copy_color))
- (dev, data, 0, row_size, gx_no_bitmap_id,
- (int)(dmat.tx - idata.image.ImageMatrix.tx),
- (int)(dmat.ty - idata.image.ImageMatrix.ty +
- (dmat.yy < 0 ? ~y : y)),
- idata.image.Width, 1);
- continue;
- }
- } else {
- /*
- * Convert the pixels to pure colors. This may be very
- * slow and painful. Eventually we will use indexed color for
- * narrow pixels.
- */
- /* Always use RGB source color for now. */
- params.options |=
- GB_COLORS_RGB | GB_DEPTH_8 |
- (has_alpha ? GB_ALPHA_LAST : GB_ALPHA_NONE);
- params.data[0] = row;
- code = (*dev_proc(sdev, get_bits_rectangle))
- (sdev, &rect, &params, &unread);
- if (code < 0)
- break;
- num_unread = code;
- data = params.data[0];
- }
- if (num_unread > 0 && pim->UnpaintedPath) {
- /* Add the rectangle(s) to the unpainted path. */
- int i;
-
- for (i = 0; code >= 0 && i < num_unread; ++i)
- code = gx_path_add_rectangle(pim->UnpaintedPath,
- int2fixed(unread[i].p.x),
- int2fixed(unread[i].p.y),
- int2fixed(unread[i].q.x),
- int2fixed(unread[i].q.y));
- gs_free_object(dev->memory, unread, "UnpaintedPath unread");
- }
- code = gx_image_data(info, &data, 0, row_size, 1);
- rect.p.y = rect.q.y;
- }
- if (!direct_copy) {
- if (code >= 0)
- code = gx_image_end(info, true);
- else
- discard(gx_image_end(info, false));
- }
- }
- gs_free_object(mem, row, "gx_begin_image2");
- return (code < 0 ? code : 1);
-}
diff --git a/base/gxiparam.h b/base/gxiparam.h
index 73da01050..53815a3ce 100644
--- a/base/gxiparam.h
+++ b/base/gxiparam.h
@@ -53,6 +53,8 @@ struct gx_image_type_s {
* Compute the width and height of the source data. For images with
* explicit data, this information is in the gs_data_image_t
* structure, but ImageType 2 images must compute it.
+ * NOTE: we no longer support ImageType 2, so maybe this could be
+ * simplified/refactored?
*/
#define image_proc_source_size(proc)\
int proc(const gs_gstate *pgs, const gs_image_common_t *pic,\
diff --git a/base/lib.mak b/base/lib.mak
index 416a8be26..26fd4707f 100644
--- a/base/lib.mak
+++ b/base/lib.mak
@@ -2952,23 +2952,6 @@ $(GLOBJ)gximdecode.$(OBJ) : $(GLSRC)gximdecode.c $(gximdecode_h) $(string__h)\
$(LIB_MAK) $(MAKEDIRS)
$(GLCC) $(GLO_)gximdecode.$(OBJ) $(C_) $(GLSRC)gximdecode.c
-# ================ Display Postscript extensions ================ #
-
-# Display PostScript needs the DevicePixel color space to implement
-# the PixelCopy option of ImageType 2 images.
-dpslib_=$(GLOBJ)gsdps.$(OBJ) $(GLOBJ)gximage2.$(OBJ)
-$(GLD)dpslib.dev : $(LIB_MAK) $(ECHOGS_XE) $(dpslib_) $(GLD)cspixlib.dev \
- $(LIB_MAK) $(MAKEDIRS)
- $(SETMOD) $(GLD)dpslib $(dpslib_)
- $(ADDMOD) $(GLD)dpslib -imagetype 2
- $(ADDMOD) $(GLD)dpslib -include $(GLD)cspixlib
-
-$(GLOBJ)gximage2.$(OBJ) : $(GLSRC)gximage2.c $(AK) $(gx_h)\
- $(math__h) $(memory__h) $(gserrors_h) $(gscolor2_h)\
- $(gscpixel_h) $(gscoord_h) $(gscspace_h) $(gsdevice_h) $(gsiparm2_h)\
- $(gsmatrix_h) $(gxgetbit_h) $(gxiparam_h) $(gxpath_h) $(LIB_MAK) $(MAKEDIRS)
- $(GLCC) $(GLO_)gximage2.$(OBJ) $(C_) $(GLSRC)gximage2.c
-
# ================ PostScript LanguageLevel 3 support ================ #
$(GLOBJ)gscdevn.$(OBJ) : $(GLSRC)gscdevn.c $(AK) $(gx_h) $(gserrors_h)\
diff --git a/devices/gdevx.c b/devices/gdevx.c
index da20177ee..e1c5c1159 100644
--- a/devices/gdevx.c
+++ b/devices/gdevx.c
@@ -28,7 +28,6 @@
#include "gxpath.h"
#include "gxgetbit.h"
#include "gxiparam.h"
-#include "gsiparm2.h"
#include "gxdevmem.h"
#include "gdevx.h"
#include "gdevkrnlsclass.h" /* 'standard' built in subclasses, currently First/Last Page and obejct filter */
@@ -72,7 +71,6 @@ static dev_proc_copy_color(x_copy_color);
/*extern dev_proc_put_params(gdev_x_put_params);*/
static dev_proc_get_page_device(x_get_page_device);
static dev_proc_strip_tile_rectangle(x_strip_tile_rectangle);
-static dev_proc_begin_typed_image(x_begin_typed_image);
static dev_proc_get_bits_rectangle(x_get_bits_rectangle);
/*extern dev_proc_get_xfont_procs(gdev_x_finish_copydevice);*/
static dev_proc_fillpage(x_fillpage);
@@ -119,7 +117,7 @@ const gx_device_X this_device = { \
x_strip_tile_rectangle, \
NULL, /* strip_copy_rop */ \
NULL, /* get_clipping_box */ \
- x_begin_typed_image, \
+ NULL, /* begin_typed_image */ \
x_get_bits_rectangle, \
NULL, /* map_color_rgb_alpha */ \
NULL, /* create_compositor */ \
@@ -737,84 +735,6 @@ x_strip_tile_rectangle(gx_device * dev, const gx_strip_bitmap * tiles,
return 0;
}
-/* Implement ImageType 2 using CopyArea if possible. */
-/* Note that since ImageType 2 images don't have any source data, */
-/* this procedure does all the work. */
-static int
-x_begin_typed_image(gx_device * dev,
- const gs_gstate * pgs1, const gs_matrix * pmat,
- const gs_image_common_t * pic, const gs_int_rect * prect,
- const gx_drawing_color * pdcolor, const gx_clip_path * pcpath,
- gs_memory_t * mem, gx_image_enum_common_t ** pinfo)
-{
- gx_device_X *xdev = (gx_device_X *) dev;
- const gs_image2_t *pim;
- gs_gstate *pgs = (gs_gstate *)pgs1;
- gx_device *sdev;
- gs_matrix smat, dmat;
-
- if (pic->type->index != 2)
- goto punt;
- pim = (const gs_image2_t *)pic;
- if (!pim->PixelCopy)
- goto punt;
- pgs = pim->DataSource;
- if (pgs == 0)
- goto punt;
- sdev = gs_currentdevice(pgs);
- if (dev->dname != sdev->dname ||
- memcmp(&dev->color_info, &sdev->color_info,
- sizeof(dev->color_info))
- )
- goto punt;
- flush_text(xdev);
- gs_currentmatrix(pgs, &smat);
- /*
- * Figure 7.2 of the Adobe 3010 Supplement says that we should
- * compute CTM x ImageMatrix here, but I'm almost certain it
- * should be the other way around. Also see gximage2.c.
- */
- gs_matrix_multiply(&pim->ImageMatrix, &smat, &smat);
- gs_currentmatrix(pgs, &dmat);
- if (!((is_xxyy(&dmat) || is_xyyx(&dmat)) &&
-#define eqe(e) smat.e == dmat.e
- eqe(xx) && eqe(xy) && eqe(yx) && eqe(yy))
-#undef eqe
- )
- goto punt;
- {
- gs_rect rect, src, dest;
- gs_int_point size;
- int srcx, srcy, destx, desty;
-
- rect.p.x = rect.p.y = 0;
- rect.q.x = pim->Width, rect.q.y = pim->Height;
- gs_bbox_transform(&rect, &dmat, &dest);
- if (pcpath != NULL &&
- !gx_cpath_includes_rectangle(pcpath,
- float2fixed(dest.p.x), float2fixed(dest.p.y),
- float2fixed(dest.q.x), float2fixed(dest.q.y))
- )
- goto punt;
- rect.q.x += (rect.p.x = pim->XOrigin);
- rect.q.y += (rect.p.y = pim->YOrigin);
- gs_bbox_transform(&rect, &smat, &src);
- (*pic->type->source_size) (pgs, pic, &size);
- X_SET_FILL_STYLE(xdev, FillSolid);
- X_SET_FUNCTION(xdev, GXcopy);
- srcx = (int)(src.p.x + 0.5);
- srcy = (int)(src.p.y + 0.5);
- destx = (int)(dest.p.x + 0.5);
- desty = (int)(dest.p.y + 0.5);
- XCopyArea(xdev->dpy, xdev->bpixmap, xdev->bpixmap, xdev->gc,
- srcx, srcy, size.x, size.y, destx, desty);
- x_update_add(xdev, destx, desty, size.x, size.y);
- }
- return 0;
- punt:return gx_default_begin_typed_image(dev, pgs, pmat, pic, prect,
- pdcolor, pcpath, mem, pinfo);
-}
-
/* Read bits back from the screen. */
static int
x_get_bits_rectangle(gx_device * dev, const gs_int_rect * prect,
diff --git a/psi/zupath.c b/psi/zupath.c
index 6d8c2c545..a79ff2d49 100644
--- a/psi/zupath.c
+++ b/psi/zupath.c
@@ -454,20 +454,6 @@ zustrokepath(i_ctx_t *i_ctx_p)
return 0;
}
-/* <with_ucache> upath <userpath> */
-/* We do all the work in a procedure that is also used to construct */
-/* the UnpaintedPath user path for ImageType 2 images. */
-int make_upath(i_ctx_t *i_ctx_p, ref *rupath, gs_gstate *pgs, gx_path *ppath,
- bool with_ucache);
-static int
-zupath(i_ctx_t *i_ctx_p)
-{
- os_ptr op = osp;
-
- check_type(*op, t_boolean);
- return make_upath(i_ctx_p, op, igs, igs->path, op->value.boolval);
-}
-
/* Compute the path length for user path purposes. */
static int
path_length_for_upath(const gx_path *ppath)
@@ -496,7 +482,7 @@ path_length_for_upath(const gx_path *ppath)
return size;
}
-int
+static int
make_upath(i_ctx_t *i_ctx_p, ref *rupath, gs_gstate *pgs, gx_path *ppath,
bool with_ucache)
{
@@ -595,6 +581,16 @@ make_upath(i_ctx_t *i_ctx_p, ref *rupath, gs_gstate *pgs, gx_path *ppath,
return 0;
}
+/* <with_ucache> upath <userpath> */
+static int
+zupath(i_ctx_t *i_ctx_p)
+{
+ os_ptr op = osp;
+
+ check_type(*op, t_boolean);
+ return make_upath(i_ctx_p, op, igs, igs->path, op->value.boolval);
+}
+
static int
zgetpath(i_ctx_t *i_ctx_p)
{
diff --git a/windows/ghostscript.vcproj b/windows/ghostscript.vcproj
index 4804e56ab..b6503666b 100644
--- a/windows/ghostscript.vcproj
+++ b/windows/ghostscript.vcproj
@@ -3201,10 +3201,6 @@
>
</File>
<File
- RelativePath="..\base\gximage2.c"
- >
- </File>
- <File
RelativePath="..\base\gximage3.c"
>
</File>
@@ -3686,10 +3682,6 @@
>
</File>
<File
- RelativePath="..\base\gsiparm2.h"
- >
- </File>
- <File
RelativePath="..\base\gsiparm3.h"
>
</File>
diff --git a/windows/ghostscript_rt.vcxproj b/windows/ghostscript_rt.vcxproj
index 8097e86e1..589b2d19b 100644
--- a/windows/ghostscript_rt.vcxproj
+++ b/windows/ghostscript_rt.vcxproj
@@ -762,7 +762,6 @@
<ClCompile Include="..\base\gximag3x.c" />
<ClCompile Include="..\base\gximage.c" />
<ClCompile Include="..\base\gximage1.c" />
- <ClCompile Include="..\base\gximage2.c" />
<ClCompile Include="..\base\gximage3.c" />
<ClCompile Include="..\base\gximage4.c" />
<ClCompile Include="..\base\gximask.c" />
@@ -1736,7 +1735,6 @@
<ClInclude Include="..\base\gsiorom.h" />
<ClInclude Include="..\base\gsipar3x.h" />
<ClInclude Include="..\base\gsiparam.h" />
- <ClInclude Include="..\base\gsiparm2.h" />
<ClInclude Include="..\base\gsiparm3.h" />
<ClInclude Include="..\base\gsiparm4.h" />
<ClInclude Include="..\base\gsjconf.h" />