1 /* 2 Copyright 1999-2019 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 *,ssize_t *); 71 72 extern MagickExport double 73 ReadBlobDouble(Image *); 74 75 extern MagickExport float 76 ReadBlobFloat(Image *); 77 78 extern MagickExport int 79 EOFBlob(const Image *), 80 ErrorBlob(const Image *), 81 ReadBlobByte(Image *); 82 83 extern MagickExport MagickBooleanType 84 CloseBlob(Image *), 85 DiscardBlobBytes(Image *,const MagickSizeType), 86 OpenBlob(const ImageInfo *,Image *,const BlobMode,ExceptionInfo *), 87 SetBlobExtent(Image *,const MagickSizeType), 88 UnmapBlob(void *,const size_t); 89 90 extern MagickExport MagickOffsetType 91 SeekBlob(Image *,const MagickOffsetType,const int), 92 TellBlob(const Image *); 93 94 extern MagickExport MagickSizeType 95 ReadBlobLongLong(Image *), 96 ReadBlobMSBLongLong(Image *); 97 98 extern MagickExport signed int 99 ReadBlobLSBSignedLong(Image *), 100 ReadBlobMSBSignedLong(Image *), 101 ReadBlobSignedLong(Image *); 102 103 extern MagickExport signed short 104 ReadBlobLSBSignedShort(Image *), 105 ReadBlobMSBSignedShort(Image *), 106 ReadBlobSignedShort(Image *); 107 108 extern MagickExport ssize_t 109 ReadBlob(Image *,const size_t,void *), 110 WriteBlob(Image *,const size_t,const void *), 111 WriteBlobByte(Image *,const unsigned char), 112 WriteBlobFloat(Image *,const float), 113 WriteBlobLong(Image *,const unsigned int), 114 WriteBlobLongLong(Image *,const MagickSizeType), 115 WriteBlobShort(Image *,const unsigned short), 116 WriteBlobSignedLong(Image *,const signed int), 117 WriteBlobLSBLong(Image *,const unsigned int), 118 WriteBlobLSBShort(Image *,const unsigned short), 119 WriteBlobLSBSignedLong(Image *,const signed int), 120 WriteBlobLSBSignedShort(Image *,const signed short), 121 WriteBlobMSBLong(Image *,const unsigned int), 122 WriteBlobMSBShort(Image *,const unsigned short), 123 WriteBlobMSBSignedShort(Image *,const signed short), 124 WriteBlobString(Image *,const char *); 125 126 extern MagickExport unsigned int 127 ReadBlobLong(Image *), 128 ReadBlobLSBLong(Image *), 129 ReadBlobMSBLong(Image *); 130 131 extern MagickExport unsigned short 132 ReadBlobShort(Image *), 133 ReadBlobLSBShort(Image *), 134 ReadBlobMSBShort(Image *); 135 136 extern MagickExport void 137 AttachBlob(BlobInfo *,const void *,const size_t), 138 AttachCustomStream(BlobInfo *,CustomStreamInfo *), 139 *DetachBlob(BlobInfo *), 140 DisassociateBlob(Image *), 141 GetBlobInfo(BlobInfo *), 142 *MapBlob(int,const MapMode,const MagickOffsetType,const size_t), 143 MSBOrderLong(unsigned char *,const size_t), 144 MSBOrderShort(unsigned char *,const size_t); 145 146 #if defined(__cplusplus) || defined(c_plusplus) 147 } 148 #endif 149 150 #endif 151