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 "MagickCore/image.h" 22 #include "MagickCore/stream.h" 23 #include "MagickCore/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 CustomStream 57 } StreamType; 58 59 extern MagickExport BlobInfo 60 *CloneBlobInfo(const BlobInfo *), 61 *ReferenceBlob(BlobInfo *); 62 63 extern MagickExport char 64 *ReadBlobString(Image *,char *); 65 66 extern MagickExport const struct stat 67 *GetBlobProperties(const Image *); 68 69 extern MagickExport const void 70 *ReadBlobStream(Image *,const size_t,void *magick_restrict ,ssize_t *) 71 magick_hot_spot; 72 73 extern MagickExport double 74 ReadBlobDouble(Image *); 75 76 extern MagickExport float 77 ReadBlobFloat(Image *); 78 79 extern MagickExport int 80 EOFBlob(const Image *), 81 ErrorBlob(const Image *), 82 ReadBlobByte(Image *); 83 84 extern MagickExport MagickBooleanType 85 CloseBlob(Image *), 86 DiscardBlobBytes(Image *,const MagickSizeType), 87 OpenBlob(const ImageInfo *,Image *,const BlobMode,ExceptionInfo *), 88 SetBlobExtent(Image *,const MagickSizeType), 89 UnmapBlob(void *,const size_t); 90 91 extern MagickExport MagickOffsetType 92 SeekBlob(Image *,const MagickOffsetType,const int), 93 TellBlob(const Image *); 94 95 extern MagickExport MagickSizeType 96 ReadBlobLongLong(Image *), 97 ReadBlobMSBLongLong(Image *); 98 99 extern MagickExport signed int 100 ReadBlobLSBSignedLong(Image *), 101 ReadBlobMSBSignedLong(Image *), 102 ReadBlobSignedLong(Image *); 103 104 extern MagickExport signed short 105 ReadBlobLSBSignedShort(Image *), 106 ReadBlobMSBSignedShort(Image *), 107 ReadBlobSignedShort(Image *); 108 109 extern MagickExport ssize_t 110 ReadBlob(Image *,const size_t,void *), 111 WriteBlob(Image *,const size_t,const void *), 112 WriteBlobByte(Image *,const unsigned char), 113 WriteBlobFloat(Image *,const float), 114 WriteBlobLong(Image *,const unsigned int), 115 WriteBlobLongLong(Image *,const MagickSizeType), 116 WriteBlobShort(Image *,const unsigned short), 117 WriteBlobSignedLong(Image *,const signed int), 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 WriteBlobMSBShort(Image *,const unsigned short), 124 WriteBlobMSBSignedShort(Image *,const signed short), 125 WriteBlobString(Image *,const char *); 126 127 extern MagickExport unsigned int 128 ReadBlobLong(Image *), 129 ReadBlobLSBLong(Image *), 130 ReadBlobMSBLong(Image *); 131 132 extern MagickExport unsigned short 133 ReadBlobShort(Image *), 134 ReadBlobLSBShort(Image *), 135 ReadBlobMSBShort(Image *); 136 137 extern MagickExport void 138 AttachBlob(BlobInfo *,const void *,const size_t), 139 AttachCustomStream(BlobInfo *,CustomStreamInfo *), 140 *DetachBlob(BlobInfo *), 141 DisassociateBlob(Image *), 142 GetBlobInfo(BlobInfo *), 143 *MapBlob(int,const MapMode,const MagickOffsetType,const size_t), 144 MSBOrderLong(unsigned char *,const size_t), 145 MSBOrderShort(unsigned char *,const size_t); 146 147 #if defined(__cplusplus) || defined(c_plusplus) 148 } 149 #endif 150 151 #endif 152