summaryrefslogtreecommitdiff
path: root/coders/ps.c
diff options
context:
space:
mode:
Diffstat (limited to 'coders/ps.c')
-rw-r--r--coders/ps.c47
1 files changed, 16 insertions, 31 deletions
diff --git a/coders/ps.c b/coders/ps.c
index 8d0c362b3..50aef44eb 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -17,7 +17,7 @@
% July 1992 %
% %
% %
-% Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
@@ -73,7 +73,6 @@
#include "MagickCore/quantum-private.h"
#include "MagickCore/static.h"
#include "MagickCore/string_.h"
-#include "MagickCore/string-private.h"
#include "MagickCore/timer-private.h"
#include "MagickCore/token.h"
#include "MagickCore/transform.h"
@@ -207,7 +206,7 @@ static void ReadPSInfo(const ImageInfo *image_info,Image *image,
{
#define BeginDocument "BeginDocument:"
#define EndDocument "EndDocument:"
-#define PostscriptLevel "PS-"
+#define PostscriptLevel "!PS-"
#define ImageData "ImageData:"
#define DocumentProcessColors "DocumentProcessColors:"
#define CMYKCustomColor "CMYKCustomColor:"
@@ -229,7 +228,6 @@ static void ReadPSInfo(const ImageInfo *image_info,Image *image,
c;
MagickBooleanType
- new_line,
skip;
MagickByteBuffer
@@ -291,7 +289,6 @@ static void ReadPSInfo(const ImageInfo *image_info,Image *image,
*version='\0';
spotcolor=0;
skip=MagickFalse;
- new_line=MagickTrue;
(void) memset(&buffer,0,sizeof(buffer));
buffer.image=image;
for (c=ReadMagickByteBuffer(&buffer); c != EOF; c=ReadMagickByteBuffer(&buffer))
@@ -305,18 +302,8 @@ static void ReadPSInfo(const ImageInfo *image_info,Image *image,
}
case '\n':
case '\r':
- new_line=MagickTrue;
- continue;
case '%':
- {
- if (new_line == MagickFalse)
- continue;
- new_line=MagickFalse;
- c=ReadMagickByteBuffer(&buffer);
- if ((c == '%') || (c == '!'))
- break;
- continue;
- }
+ break;
default:
continue;
}
@@ -353,9 +340,9 @@ static void ReadPSInfo(const ImageInfo *image_info,Image *image,
if (CompareMagickByteBuffer(&buffer,DocumentProcessColors,length) != MagickFalse)
{
p=GetMagickByteBufferDatum(&buffer);
- if ((StringLocateSubstring(p,"Cyan") != (char *) NULL) ||
- (StringLocateSubstring(p,"Magenta") != (char *) NULL) ||
- (StringLocateSubstring(p,"Yellow") != (char *) NULL))
+ if ((GlobExpression(p,"*Cyan*",MagickTrue) != MagickFalse) ||
+ (GlobExpression(p,"*Magenta*",MagickTrue) != MagickFalse) ||
+ (GlobExpression(p,"*Yellow*",MagickTrue) != MagickFalse))
ps_info->cmyk=MagickTrue;
}
if (CompareMagickByteBuffer(&buffer,CMYKCustomColor,strlen(CMYKCustomColor)) != MagickFalse)
@@ -623,10 +610,8 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception)
if (image_info->page != (char *) NULL)
(void) ParseAbsoluteGeometry(image_info->page,&page);
resolution=image->resolution;
- page.width=(size_t) ((ssize_t) ceil((double) (page.width*resolution.x/
- delta.x)-0.5));
- page.height=(size_t) ((ssize_t) ceil((double) (page.height*resolution.y/
- delta.y)-0.5));
+ page.width=(size_t) ceil((double) (page.width*resolution.x/delta.x)-0.5);
+ page.height=(size_t) ceil((double) (page.height*resolution.y/delta.y)-0.5);
/*
Determine page geometry from the Postscript bounding box.
*/
@@ -642,10 +627,10 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception)
info.bounds.x2-info.bounds.x1,info.bounds.y2-info.bounds.y1,
info.bounds.x1,info.bounds.y1);
(void) SetImageProperty(image,"ps:HiResBoundingBox",geometry,exception);
- page.width=(size_t) ((ssize_t) ceil((double) ((info.bounds.x2-
- info.bounds.x1)*resolution.x/delta.x)-0.5));
- page.height=(size_t) ((ssize_t) ceil((double) ((info.bounds.y2-
- info.bounds.y1)*resolution.y/delta.y)-0.5));
+ page.width=(size_t) ceil((double) ((info.bounds.x2-info.bounds.x1)*
+ resolution.x/delta.x)-0.5);
+ page.height=(size_t) ceil((double) ((info.bounds.y2-info.bounds.y1)*
+ resolution.y/delta.y)-0.5);
}
fitPage=MagickFalse;
option=GetImageOption(image_info,"eps:fit-page");
@@ -665,10 +650,10 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception)
image=DestroyImage(image);
return((Image *) NULL);
}
- page.width=(size_t) ((ssize_t) ceil((double) (page.width*
- image->resolution.x/delta.x)-0.5));
- page.height=(size_t) ((ssize_t) ceil((double) (page.height*
- image->resolution.y/delta.y) -0.5));
+ page.width=(size_t) ceil((double) (page.width*image->resolution.x/delta.x)
+ -0.5);
+ page.height=(size_t) ceil((double) (page.height*image->resolution.y/
+ delta.y) -0.5);
page_geometry=DestroyString(page_geometry);
fitPage=MagickTrue;
}