From: Cristy Date: Wed, 1 Feb 2017 17:04:28 +0000 (-0500) Subject: ... X-Git-Tag: 7.0.4-7~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=797ac1c86acc9cc476975581b6677f025470c424;hp=93452f0abf7bf0b1ae34d8b1f8984f48a842383e;p=imagemagick ... --- diff --git a/MagickCore/blob-private.h b/MagickCore/blob-private.h index 7f7d797ec..152a0b259 100644 --- a/MagickCore/blob-private.h +++ b/MagickCore/blob-private.h @@ -139,12 +139,7 @@ extern MagickExport void GetBlobInfo(BlobInfo *), *MapBlob(int,const MapMode,const MagickOffsetType,const size_t), MSBOrderLong(unsigned char *,const size_t), - MSBOrderShort(unsigned char *,const size_t), - SetBlobCustomStream(BlobInfo *, - ssize_t (*reader)(const unsigned char *,const size_t,const void *), - ssize_t (*writer)(const unsigned char *,const size_t,const void *), - size_t (*seeker)(const MagickOffsetType,const int,const void *), - MagickOffsetType (*teller)(const void *)); + MSBOrderShort(unsigned char *,const size_t); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/blob.c b/MagickCore/blob.c index ae1ed4735..4102dbde7 100644 --- a/MagickCore/blob.c +++ b/MagickCore/blob.c @@ -94,31 +94,6 @@ /* Typedef declarations. */ -typedef ssize_t - (*BlobHandler)(const unsigned char *,const size_t,const void *); - -typedef size_t - (*BlobSeeker)(const MagickOffsetType offset,const int whence,const void *); - -typedef MagickOffsetType - (*BlobTeller)(const void *); - -struct _CustomStreamInfo -{ - BlobHandler - reader, - writer; - - BlobSeeker - seeker; - - BlobTeller - teller; - - void - *data; -}; - typedef union FileInfo { FILE @@ -1080,7 +1055,7 @@ MagickExport void *FileToBlob(const char *filename,const size_t extent, blob[*length]='\0'; return(blob); } - *length=(size_t) MagickMin(offset,(MagickOffsetType) + *length=(size_t) MagickMin(offset,(MagickOffsetType) MagickMin(extent,SSIZE_MAX)); blob=(unsigned char *) NULL; if (~(*length) >= (MagickPathExtent-1)) @@ -2293,8 +2268,8 @@ MagickExport MagickBooleanType InjectImageBlob(const ImageInfo *image_info, (void) RelinquishUniqueFileResource(filename); return(MagickFalse); } - (void) FormatLocaleString(byte_image->filename,MagickPathExtent,"%s:%s",format, - filename); + (void) FormatLocaleString(byte_image->filename,MagickPathExtent,"%s:%s", + format,filename); DestroyBlob(byte_image); byte_image->blob=CloneBlobInfo((BlobInfo *) NULL); write_info=CloneImageInfo(image_info); @@ -4385,54 +4360,6 @@ MagickExport MagickOffsetType SeekBlob(Image *image, % % % % % % -% S e t B l o b C u s t o m S t r e a m % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% SetBlobCustomStream() sets the blob's custom stream handlers. -% -% The format of the SetBlobCustomStream method is: -% -% void SetBlobCustomStream(BlobInfo *blob_info, -% ssize_t (*reader)(const unsigned char *,const size_t,const void *), -% ssize_t (*writer)(const unsigned char *,const size_t,const void *), -% size_t (*seeker)(const MagickOffsetType,const int,const void *), -% MagickOffsetType (*teller)(const void *)) -% -% A description of each parameter follows: -% -% o blob_info: the blob info. -% -% o reader: your custom stream reader. -% -% o writer: your custom stream writer. -% -% o seeker: your custom stream seeker. -% -% o teller: your custom stream teller. -% -*/ -MagickExport void SetBlobCustomStream(BlobInfo *blob_info, - ssize_t (*reader)(const unsigned char *,const size_t,const void *), - ssize_t (*writer)(const unsigned char *,const size_t,const void *), - size_t (*seeker)(const MagickOffsetType,const int,const void *), - MagickOffsetType (*teller)(const void *)) -{ - assert(blob_info != (BlobInfo *) NULL); - assert(blob_info->signature == MagickCoreSignature); - blob_info->custom_stream->reader=reader; - blob_info->custom_stream->writer=writer; - blob_info->custom_stream->seeker=seeker; - blob_info->custom_stream->teller=teller; -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % + S e t B l o b E x e m p t % % % % % diff --git a/MagickCore/blob.h b/MagickCore/blob.h index f4fe4e15c..61064f495 100644 --- a/MagickCore/blob.h +++ b/MagickCore/blob.h @@ -18,9 +18,6 @@ #ifndef MAGICKCORE_BLOB_H #define MAGICKCORE_BLOB_H -#include "MagickCore/image.h" -#include "MagickCore/stream.h" - #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -34,8 +31,34 @@ typedef enum IOMode } MapMode; +typedef ssize_t + (*BlobHandler)(const unsigned char *,const size_t,const void *); + +typedef size_t + (*BlobSeeker)(const MagickOffsetType offset,const int whence,const void *); + +typedef MagickOffsetType + (*BlobTeller)(const void *); + typedef struct _CustomStreamInfo - CustomStreamInfo; +{ + BlobHandler + reader, + writer; + + BlobSeeker + seeker; + + BlobTeller + teller; + + void + *data; +} CustomStreamInfo; + +#include "MagickCore/image.h" +#include "MagickCore/stream.h" + extern MagickExport FILE *GetBlobFileHandle(const Image *); diff --git a/MagickCore/image.c b/MagickCore/image.c index a7058da6b..6e8f6910e 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -2981,36 +2981,24 @@ MagickExport void SetImageInfoBlob(ImageInfo *image_info,const void *blob, % The format of the SetImageInfoCustomStream method is: % % void SetImageInfoCustomStream(ImageInfo *image_info, -% ssize_t (*reader)(const unsigned char *,const size_t,const void *), -% ssize_t (*writer)(const unsigned char *,const size_t,const void *), -% size_t (*seeker)(const MagickOffsetType,const int,const void *), -% MagickOffsetType (*teller)(const void *)) +% CustomStreamInfo *custom_stream) % % A description of each parameter follows: % % o image_info: the image info. % -% o reader: your custom stream reader. -% -% o writer: your custom stream writer. -% -% o seeker: your custom stream seeker. -% -% o teller: your custom stream teller. +% o custom_stream: your custom stream methods. % */ MagickExport void SetImageInfoCustomStream(ImageInfo *image_info, - ssize_t (*reader)(const unsigned char *,const size_t,const void *), - ssize_t (*writer)(const unsigned char *,const size_t,const void *), - size_t (*seeker)(const MagickOffsetType,const int,const void *), - MagickOffsetType (*teller)(const void *)) + CustomStreamInfo *custom_stream) { assert(image_info != (ImageInfo *) NULL); assert(image_info->signature == MagickCoreSignature); if (image_info->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", image_info->filename); - SetBlobCustomStream(image_info->blob,reader,writer,seeker,teller); + image_info->custom_stream=(void *) custom_stream; } /* @@ -4058,8 +4046,6 @@ MagickExport MagickBooleanType SyncImageSettings(const ImageInfo *image_info, into per-image artifacts, while ensuring only specifically set per-image artifacts are preserved when parenthesis ends. */ - if (image->image_info != (ImageInfo *) NULL) - image->image_info=DestroyImageInfo(image->image_info); image->image_info=CloneImageInfo(image_info); return(MagickTrue); } diff --git a/MagickCore/image.h b/MagickCore/image.h index 6cd033f13..76e5ad59c 100644 --- a/MagickCore/image.h +++ b/MagickCore/image.h @@ -18,9 +18,6 @@ #ifndef MAGICKCORE_IMAGE_H #define MAGICKCORE_IMAGE_H -#include "MagickCore/color.h" -#include "MagickCore/pixel.h" - #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -565,11 +562,7 @@ extern MagickExport void GetImageInfo(ImageInfo *), SetImageInfoBlob(ImageInfo *,const void *,const size_t), SetImageInfoFile(ImageInfo *,FILE *), - SetImageInfoCustomStream(ImageInfo *, - ssize_t (*reader)(const unsigned char *,const size_t,const void *), - ssize_t (*writer)(const unsigned char *,const size_t,const void *), - size_t (*seeker)(const MagickOffsetType,const int,const void *), - MagickOffsetType (*teller)(const void *)); + SetImageInfoCustomStream(ImageInfo *,CustomStreamInfo *); #if defined(__cplusplus) || defined(c_plusplus) }