diff --git a/coders/pcl.c b/coders/pcl.c
index 22b5b62..ab0ef23 100644
--- a/coders/pcl.c
+++ b/coders/pcl.c
@@ -650,6 +650,9 @@
char
buffer[MaxTextExtent];
+ const char
+ *option;
+
long
y;
@@ -782,7 +785,12 @@
(void) WriteBlobString(image,buffer);
}
}
- (void) WriteBlobString(image,"\033*r1A"); /* start raster graphics */
+ option=GetImageOption(image_info,"pcl:fit-to-page");
+ if ((option != (const char *) NULL) &&
+ (IsMagickTrue(option) != MagickFalse))
+ (void) WriteBlobString(image,"\033*r3A");
+ else
+ (void) WriteBlobString(image,"\033*r1A"); /* start raster graphics */
(void) WriteBlobString(image,"\033*b0Y"); /* set y offset */
length=(image->columns*bits_per_pixel+7)/8;
pixels=(unsigned char *) AcquireQuantumMemory(length,sizeof(*pixels));
diff --git a/magick/cache.c b/magick/cache.c
index 30ca4dc..ac19da1 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -4122,7 +4122,7 @@
clone_image;
long
- pagesize;
+ page_size;
MagickBooleanType
status;
@@ -4134,14 +4134,7 @@
assert(image->cache != (void *) NULL);
assert(filename != (const char *) NULL);
assert(offset != (MagickOffsetType *) NULL);
- pagesize=(-1);
-#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGESIZE)
- pagesize=sysconf(_SC_PAGESIZE);
-#elif defined(MAGICKCORE_HAVE_GETPAGESIZE) && defined(MAGICKCORE_POSIX_SUPPORT)
- pagesize=getpagesize();
-#endif
- if (pagesize <= 0)
- pagesize=4096;
+ page_size=GetMagickPageSize();
cache_info=(CacheInfo *) image->cache;
assert(cache_info->signature == MagickSignature);
if (attach != MagickFalse)
@@ -4158,7 +4151,7 @@
cache_info->offset=(*offset);
if (OpenPixelCache(image,ReadMode,exception) == MagickFalse)
return(MagickFalse);
- *offset+=cache_info->length+pagesize-(cache_info->length % pagesize);
+ *offset+=cache_info->length+page_size-(cache_info->length % page_size);
return(MagickTrue);
}
if ((cache_info->mode != ReadMode) && (cache_info->type != MemoryCache) &&
@@ -4179,8 +4172,8 @@
{
(void) CopyMagickString(cache_info->cache_filename,filename,
MaxTextExtent);
- *offset+=cache_info->length+pagesize-(cache_info->length %
- pagesize);
+ *offset+=cache_info->length+page_size-(cache_info->length %
+ page_size);
(void) UnlockSemaphoreInfo(cache_info->semaphore);
cache_info=(CacheInfo *) ReferencePixelCache(cache_info);
if (image->debug != MagickFalse)
@@ -4209,7 +4202,7 @@
if (status != MagickFalse)
status=ClonePixelCachePixels(cache_info,clone_info,&image->exception);
}
- *offset+=cache_info->length+pagesize-(cache_info->length % pagesize);
+ *offset+=cache_info->length+page_size-(cache_info->length % page_size);
clone_info=(CacheInfo *) DestroyPixelCache(clone_info);
return(status);
}
diff --git a/magick/resource.c b/magick/resource.c
index 6ca29d8..9686917 100644
--- a/magick/resource.c
+++ b/magick/resource.c
@@ -707,12 +707,7 @@
/*
Set Magick resource limits.
*/
- pagesize=(-1);
-#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGESIZE)
- pagesize=sysconf(_SC_PAGESIZE);
-#elif defined(MAGICKCORE_HAVE_GETPAGESIZE) && defined(MAGICKCORE_POSIX_SUPPORT)
- pagesize=getpagesize();
-#endif
+ pagesize=GetMagickPageSize();
pages=(-1);
#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
pages=sysconf(_SC_PHYS_PAGES);
diff --git a/magick/utility.c b/magick/utility.c
index 84ffd97..9cb59b4 100644
--- a/magick/utility.c
+++ b/magick/utility.c
@@ -970,6 +970,43 @@
% %
% %
% %
+% G e t M a g i c k P a g e S i z e %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% GetMagickPageSize() returns the memory page size.
+%
+% The format of the GetMagickPageSize method is:
+%
+% long GetMagickPageSize()
+%
+*/
+MagickExport long GetMagickPageSize(void)
+{
+ static long
+ page_size = -1;
+
+ if (page_size > 0)
+ return(page_size);
+#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGE_SIZE)
+ page_size=sysconf(_SC_PAGE_SIZE);
+#endif
+#if defined(MAGICKCORE_HAVE_GETPAGESIZE)
+ if (page_size <= 0)
+ page_size=getpagesize();
+#endif
+ if (page_size <= 0)
+ page_size=16384;
+ return(page_size);
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% G e t P a t h A t t r i b u t e s %
% %
% %
diff --git a/magick/utility.h b/magick/utility.h
index 0ba2e6f..d650ae1 100644
--- a/magick/utility.h
+++ b/magick/utility.h
@@ -46,6 +46,9 @@
extern MagickExport int
SystemCommand(const MagickBooleanType,const char *,ExceptionInfo *);
+extern MagickExport long
+ GetMagickPageSize(void);
+
extern MagickExport MagickBooleanType
AcquireUniqueFilename(char *),
AcquireUniqueSymbolicLink(const char *,char *),