blob: 0c5508321211dc9b4b22cfaabee75de2de8e5b8f [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
cristy7e41fe82010-12-04 23:12:08 +00002 Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization
cristy3ed852e2009-09-05 21:47:34 +00003 dedicated to making software imaging solutions freely available.
4
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
7
8 http://www.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 methods.
17*/
18#ifndef _MAGICKCORE_BLOB_H
19#define _MAGICKCORE_BLOB_H
20
21#if defined(__cplusplus) || defined(c_plusplus)
22extern "C" {
23#endif
24
cristy4c08aed2011-07-01 19:47:50 +000025#include "MagickCore/image.h"
26#include "MagickCore/stream.h"
cristy3ed852e2009-09-05 21:47:34 +000027
cristy51221362011-02-07 00:33:21 +000028#define MagickMaxBufferExtent (32*8192)
cristy3ed852e2009-09-05 21:47:34 +000029
30typedef enum
31{
cristy7832dc22011-09-05 01:21:53 +000032 UndefinedBlobMode,
33 ReadBlobMode,
34 ReadBinaryBlobMode,
35 WriteBlobMode,
36 WriteBinaryBlobMode,
37 AppendBlobMode,
38 AppendBinaryBlobMode
39} BlobMode;
40
41typedef enum
42{
cristy3ed852e2009-09-05 21:47:34 +000043 ReadMode,
44 WriteMode,
45 IOMode
46} MapMode;
47
cristy7832dc22011-09-05 01:21:53 +000048typedef int
49 *(*BlobFifo)(const Image *,const void *,const size_t);
50
51extern MagickExport BlobInfo
52 *CloneBlobInfo(const BlobInfo *),
53 *ReferenceBlob(BlobInfo *);
54
55extern MagickExport char
56 *ReadBlobString(Image *,char *);
57
58extern MagickExport double
59 ReadBlobDouble(Image *);
60
cristy3ed852e2009-09-05 21:47:34 +000061extern MagickExport FILE
62 *GetBlobFileHandle(const Image *);
63
cristy7832dc22011-09-05 01:21:53 +000064extern MagickExport float
65 ReadBlobFloat(Image *);
66
cristy3ed852e2009-09-05 21:47:34 +000067extern MagickExport Image
68 *BlobToImage(const ImageInfo *,const void *,const size_t,ExceptionInfo *),
69 *PingBlob(const ImageInfo *,const void *,const size_t,ExceptionInfo *);
70
cristy7832dc22011-09-05 01:21:53 +000071extern MagickExport int
72 EOFBlob(const Image *),
73 ReadBlobByte(Image *);
74
cristy3ed852e2009-09-05 21:47:34 +000075extern MagickExport MagickBooleanType
76 BlobToFile(char *,const void *,const size_t,ExceptionInfo *),
cristy7832dc22011-09-05 01:21:53 +000077 CloseBlob(Image *),
78 DiscardBlobBytes(Image *,const MagickSizeType),
cristy3ed852e2009-09-05 21:47:34 +000079 FileToImage(Image *,const char *),
cristy3ed852e2009-09-05 21:47:34 +000080 ImageToFile(Image *,char *,ExceptionInfo *),
81 InjectImageBlob(const ImageInfo *,Image *,Image *,const char *,
82 ExceptionInfo *),
cristy7832dc22011-09-05 01:21:53 +000083 OpenBlob(const ImageInfo *,Image *,const BlobMode,ExceptionInfo *),
84 UnmapBlob(void *,const size_t);
85
86extern MagickExport MagickOffsetType
87 SeekBlob(Image *,const MagickOffsetType,const int),
88 TellBlob(const Image *);
cristy3ed852e2009-09-05 21:47:34 +000089
90extern MagickExport MagickSizeType
cristy7832dc22011-09-05 01:21:53 +000091 GetBlobSize(const Image *),
92 ReadBlobLongLong(Image *),
93 ReadBlobMSBLongLong(Image *);
cristy3ed852e2009-09-05 21:47:34 +000094
cristy7832dc22011-09-05 01:21:53 +000095extern MagickExport ssize_t
96 ReadBlob(Image *,const size_t,unsigned char *),
97 WriteBlob(Image *,const size_t,const unsigned char *),
98 WriteBlobByte(Image *,const unsigned char),
99 WriteBlobFloat(Image *,const float),
100 WriteBlobLong(Image *,const unsigned int),
101 WriteBlobShort(Image *,const unsigned short),
102 WriteBlobLSBLong(Image *,const unsigned int),
103 WriteBlobLSBShort(Image *,const unsigned short),
104 WriteBlobMSBLong(Image *,const unsigned int),
105 WriteBlobMSBLongLong(Image *,const MagickSizeType),
106 WriteBlobMSBShort(Image *,const unsigned short),
107 WriteBlobString(Image *,const char *);
cristy3ed852e2009-09-05 21:47:34 +0000108
109extern MagickExport unsigned char
cristy7832dc22011-09-05 01:21:53 +0000110 *DetachBlob(BlobInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000111 *FileToBlob(const char *,const size_t,size_t *,ExceptionInfo *),
112 *GetBlobStreamData(const Image *),
113 *ImageToBlob(const ImageInfo *,Image *,size_t *,ExceptionInfo *),
cristy7832dc22011-09-05 01:21:53 +0000114 *ImagesToBlob(const ImageInfo *,Image *,size_t *,ExceptionInfo *),
115 *MapBlob(int,const MapMode,const MagickOffsetType,const size_t);
116
117extern MagickExport unsigned int
118 ReadBlobLong(Image *),
119 ReadBlobLSBLong(Image *),
120 ReadBlobMSBLong(Image *);
121
122extern MagickExport unsigned short
123 ReadBlobShort(Image *),
124 ReadBlobLSBShort(Image *),
125 ReadBlobMSBShort(Image *);
cristy3ed852e2009-09-05 21:47:34 +0000126
127extern MagickExport void
cristy7832dc22011-09-05 01:21:53 +0000128 AttachBlob(BlobInfo *,const void *,const size_t),
cristy3ed852e2009-09-05 21:47:34 +0000129 DestroyBlob(Image *),
130 DuplicateBlob(Image *,const Image *),
cristy7832dc22011-09-05 01:21:53 +0000131 MSBOrderLong(unsigned char *,const size_t),
132 MSBOrderShort(unsigned char *,const size_t);
cristy3ed852e2009-09-05 21:47:34 +0000133
134#if defined(__cplusplus) || defined(c_plusplus)
135}
136#endif
137
138#endif