blob-private.h revision c9ca77c86e4d320c507e727896531924995ebb3b
1/*
2  Copyright 1999-2016 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.
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 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)
26extern "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
35typedef enum
36{
37  UndefinedBlobMode,
38  ReadBlobMode,
39  ReadBinaryBlobMode,
40  WriteBlobMode,
41  WriteBinaryBlobMode,
42  AppendBlobMode,
43  AppendBinaryBlobMode
44} BlobMode;
45
46typedef enum
47{
48  UndefinedStream,
49  FileStream,
50  StandardStream,
51  PipeStream,
52  ZipStream,
53  BZipStream,
54  FifoStream,
55  BlobStream
56} StreamType;
57
58typedef int
59  *(*BlobFifo)(const Image *,const void *,const size_t);
60
61extern MagickExport BlobInfo
62  *CloneBlobInfo(const BlobInfo *),
63  *ReferenceBlob(BlobInfo *);
64
65extern MagickExport char
66  *ReadBlobString(Image *,char *);
67
68extern MagickExport const struct stat
69  *GetBlobProperties(const Image *);
70
71extern MagickExport const void
72  *ReadBlobStream(Image *,const size_t,void *,ssize_t *);
73
74extern MagickExport double
75  ReadBlobDouble(Image *);
76
77extern MagickExport float
78  ReadBlobFloat(Image *);
79
80extern MagickExport int
81  EOFBlob(const Image *),
82  ReadBlobByte(Image *);
83
84extern 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
91extern MagickExport MagickOffsetType
92  SeekBlob(Image *,const MagickOffsetType,const int),
93  TellBlob(const Image *);
94
95extern MagickExport MagickSizeType
96  ReadBlobLongLong(Image *),
97  ReadBlobMSBLongLong(Image *);
98
99extern MagickExport ssize_t
100  ReadBlob(Image *,const size_t,void *),
101  WriteBlob(Image *,const size_t,const void *),
102  WriteBlobByte(Image *,const unsigned char),
103  WriteBlobFloat(Image *,const float),
104  WriteBlobLong(Image *,const unsigned int),
105  WriteBlobShort(Image *,const unsigned short),
106  WriteBlobLSBLong(Image *,const unsigned int),
107  WriteBlobLSBShort(Image *,const unsigned short),
108  WriteBlobMSBLong(Image *,const unsigned int),
109  WriteBlobMSBLongLong(Image *,const MagickSizeType),
110  WriteBlobMSBShort(Image *,const unsigned short),
111  WriteBlobString(Image *,const char *);
112
113extern MagickExport unsigned int
114  ReadBlobLong(Image *),
115  ReadBlobLSBLong(Image *),
116  ReadBlobMSBLong(Image *);
117
118extern MagickExport unsigned short
119  ReadBlobShort(Image *),
120  ReadBlobLSBShort(Image *),
121  ReadBlobMSBShort(Image *);
122
123extern MagickExport void
124  AttachBlob(BlobInfo *,const void *,const size_t),
125  *DetachBlob(BlobInfo *),
126  DisassociateBlob(Image *),
127  GetBlobInfo(BlobInfo *),
128  *MapBlob(int,const MapMode,const MagickOffsetType,const size_t),
129  MSBOrderLong(unsigned char *,const size_t),
130  MSBOrderShort(unsigned char *,const size_t);
131
132#if defined(__cplusplus) || defined(c_plusplus)
133}
134#endif
135
136#endif
137