1 /* 2 Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization 3 dedicated to making software imaging solutions freely available. 4 5 You may not use this file except in compliance with the License. You may 6 obtain a copy of the License at 7 8 https://imagemagick.org/script/license.php 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 16 MagickCore Binary Large OBjects private methods. 17 */ 18 #ifndef MAGICKCORE_BLOB_PRIVATE_H 19 #define MAGICKCORE_BLOB_PRIVATE_H 20 21 #include "magick/image.h" 22 #include "magick/stream.h" 23 #include "magick/nt-base-private.h" 24 25 #if defined(__cplusplus) || defined(c_plusplus) 26 extern "C" { 27 #endif 28 29 #define MagickMinBlobExtent 32767L 30 #if defined(MAGICKCORE_HAVE_FSEEKO) 31 # define fseek fseeko 32 # define ftell ftello 33 #endif 34 35 typedef enum 36 { 37 UndefinedBlobMode, 38 ReadBlobMode, 39 ReadBinaryBlobMode, 40 WriteBlobMode, 41 WriteBinaryBlobMode, 42 AppendBlobMode, 43 AppendBinaryBlobMode 44 } BlobMode; 45 46 typedef enum 47 { 48 UndefinedStream, 49 FileStream, 50 StandardStream, 51 PipeStream, 52 ZipStream, 53 BZipStream, 54 FifoStream, 55 BlobStream 56 } StreamType; 57 58 typedef int 59 *(*BlobFifo)(const Image *,const void *,const size_t); 60 61 extern MagickExport BlobInfo 62 *CloneBlobInfo(const BlobInfo *), 63 *ReferenceBlob(BlobInfo *); 64 65 extern MagickExport char 66 *ReadBlobString(Image *,char *); 67 68 extern MagickExport const struct stat 69 *GetBlobProperties(const Image *); 70 71 extern MagickExport const void 72 *ReadBlobStream(Image *,const size_t,void *magick_restrict,ssize_t *) 73 magick_hot_spot; 74 75 extern MagickExport double 76 ReadBlobDouble(Image *); 77 78 extern MagickExport float 79 ReadBlobFloat(Image *); 80 81 extern MagickExport int 82 EOFBlob(const Image *), 83 ErrorBlob(const Image *), 84 ReadBlobByte(Image *); 85 86 extern MagickExport MagickBooleanType 87 CloseBlob(Image *), 88 DiscardBlobBytes(Image *,const MagickSizeType), 89 OpenBlob(const ImageInfo *,Image *,const BlobMode,ExceptionInfo *), 90 SetBlobExtent(Image *,const MagickSizeType), 91 UnmapBlob(void *,const size_t); 92 93 extern MagickExport MagickOffsetType 94 SeekBlob(Image *,const MagickOffsetType,const int), 95 TellBlob(const Image *); 96 97 extern MagickExport MagickSizeType 98 ReadBlobLongLong(Image *), 99 ReadBlobMSBLongLong(Image *); 100 101 extern MagickExport signed int 102 ReadBlobLSBSignedLong(Image *), 103 ReadBlobMSBSignedLong(Image *), 104 ReadBlobSignedLong(Image *); 105 106 extern MagickExport signed short 107 ReadBlobLSBSignedShort(Image *), 108 ReadBlobMSBSignedShort(Image *), 109 ReadBlobSignedShort(Image *); 110 111 extern MagickExport ssize_t 112 ReadBlob(Image *,const size_t,unsigned char *), 113 WriteBlob(Image *,const size_t,const unsigned char *), 114 WriteBlobByte(Image *,const unsigned char), 115 WriteBlobFloat(Image *,const float), 116 WriteBlobLong(Image *,const unsigned int), 117 WriteBlobShort(Image *,const unsigned short), 118 WriteBlobLSBLong(Image *,const unsigned int), 119 WriteBlobLSBShort(Image *,const unsigned short), 120 WriteBlobLSBSignedLong(Image *,const signed int), 121 WriteBlobLSBSignedShort(Image *,const signed short), 122 WriteBlobMSBLong(Image *,const unsigned int), 123 WriteBlobMSBLongLong(Image *,const MagickSizeType), 124 WriteBlobMSBShort(Image *,const unsigned short), 125 WriteBlobMSBSignedLong(Image *,const signed int), 126 WriteBlobMSBSignedShort(Image *,const signed short), 127 WriteBlobString(Image *,const char *); 128 129 extern MagickExport unsigned char 130 *DetachBlob(BlobInfo *), 131 *MapBlob(int,const MapMode,const MagickOffsetType,const size_t); 132 133 extern MagickExport unsigned int 134 ReadBlobLong(Image *), 135 ReadBlobLSBLong(Image *), 136 ReadBlobMSBLong(Image *); 137 138 extern MagickExport unsigned short 139 ReadBlobShort(Image *), 140 ReadBlobLSBShort(Image *), 141 ReadBlobMSBShort(Image *); 142 143 extern MagickExport void 144 AttachBlob(BlobInfo *,const void *,const size_t), 145 GetBlobInfo(BlobInfo *), 146 MSBOrderLong(unsigned char *,const size_t), 147 MSBOrderShort(unsigned char *,const size_t); 148 149 extern MagickPrivate void 150 DisassociateBlob(Image *); 151 152 #if defined(__cplusplus) || defined(c_plusplus) 153 } 154 #endif 155 156 #endif 157