]> granicus.if.org Git - imagemagick/blob - magick/cache-private.h
(no commit message)
[imagemagick] / magick / cache-private.h
1 /*
2   Copyright 1999-2010 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 cache private methods.
17 */
18 #ifndef _MAGICKCORE_CACHE_PRIVATE_H
19 #define _MAGICKCORE_CACHE_PRIVATE_H
20
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24
25 #include <time.h>
26 #include "magick/random_.h"
27 #include "magick/thread-private.h"
28 #include "magick/semaphore.h"
29
30 typedef enum
31 {
32   UndefinedCache,
33   MemoryCache,
34   MapCache,
35   DiskCache,
36   PingCache
37 } CacheType;
38
39 typedef void
40   *Cache;
41
42 typedef const IndexPacket
43   *(*GetVirtualIndexesFromHandler)(const Image *);
44
45 typedef IndexPacket
46   *(*GetAuthenticIndexesFromHandler)(const Image *);
47
48 typedef MagickBooleanType
49   (*GetOneAuthenticPixelFromHandler)(Image *,const long,const long,
50     PixelPacket *,ExceptionInfo *),
51   (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
52     const long,const long,PixelPacket *,ExceptionInfo *),
53   (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
54
55 typedef const PixelPacket
56   *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,const long,
57     const long,const unsigned long,const unsigned long,ExceptionInfo *),
58   *(*GetVirtualPixelsHandler)(const Image *);
59
60 typedef PixelPacket
61   *(*GetAuthenticPixelsHandler)(Image *,const long,const long,
62     const unsigned long,const unsigned long,ExceptionInfo *);
63
64 typedef PixelPacket
65   *(*GetAuthenticPixelsFromHandler)(const Image *);
66
67 typedef PixelPacket
68   *(*QueueAuthenticPixelsHandler)(Image *,const long,const long,
69     const unsigned long,const unsigned long,ExceptionInfo *);
70
71 typedef void
72   (*DestroyPixelHandler)(Image *);
73
74 typedef struct _CacheMethods
75 {
76   GetVirtualPixelHandler
77     get_virtual_pixel_handler;
78
79   GetVirtualPixelsHandler
80     get_virtual_pixels_handler;
81
82   GetVirtualIndexesFromHandler
83     get_virtual_indexes_from_handler;
84
85   GetOneVirtualPixelFromHandler
86     get_one_virtual_pixel_from_handler;
87
88   GetAuthenticPixelsHandler
89     get_authentic_pixels_handler;
90
91   GetAuthenticIndexesFromHandler
92     get_authentic_indexes_from_handler;
93
94   GetOneAuthenticPixelFromHandler
95     get_one_authentic_pixel_from_handler;
96
97   GetAuthenticPixelsFromHandler
98     get_authentic_pixels_from_handler;
99
100   QueueAuthenticPixelsHandler
101     queue_authentic_pixels_handler;
102
103   SyncAuthenticPixelsHandler
104     sync_authentic_pixels_handler;
105
106   DestroyPixelHandler
107     destroy_pixel_handler;
108 } CacheMethods;
109
110 typedef struct _NexusInfo
111    NexusInfo;
112
113 typedef struct _CacheInfo
114 {
115   ClassType
116     storage_class;
117
118   ColorspaceType
119     colorspace;
120
121   CacheType
122     type;
123
124   MapMode
125     mode;
126
127   MagickBooleanType
128     mapped;
129
130   unsigned long
131     columns,
132     rows;
133
134   MagickOffsetType
135     offset;
136
137   MagickSizeType
138     length;
139
140   VirtualPixelMethod
141     virtual_pixel_method;
142
143   MagickPixelPacket
144     virtual_pixel_color;
145
146   unsigned long
147     number_threads;
148
149   NexusInfo
150     **nexus_info;
151
152   PixelPacket
153     *pixels;
154
155   IndexPacket
156     *indexes;
157
158   MagickBooleanType
159     active_index_channel;
160
161   int
162     file;
163
164   char
165     filename[MaxTextExtent],
166     cache_filename[MaxTextExtent];
167
168   CacheMethods
169     methods;
170
171   RandomInfo
172     *random_info;
173
174   MagickBooleanType
175     debug;
176
177   MagickThreadType
178     id;
179
180   long
181     reference_count;
182
183   SemaphoreInfo
184     *semaphore,
185     *disk_semaphore;
186
187   time_t
188     timestamp;
189
190   unsigned long
191     signature;
192 } CacheInfo;
193
194 extern MagickExport Cache
195   AcquirePixelCache(const unsigned long),
196   ClonePixelCache(const Cache),
197   DestroyPixelCache(Cache),
198   GetImagePixelCache(Image *,const MagickBooleanType,ExceptionInfo *),
199   ReferencePixelCache(Cache);
200
201 extern MagickExport CacheType
202   GetPixelCacheType(const Image *);
203
204 extern MagickExport ClassType
205   GetPixelCacheStorageClass(const Cache);
206
207 extern MagickExport ColorspaceType
208   GetPixelCacheColorspace(const Cache);
209
210 extern MagickExport const IndexPacket
211   *GetVirtualIndexesFromNexus(const Cache,NexusInfo *);
212
213 extern MagickExport const PixelPacket
214   *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,const long,
215     const long,const unsigned long,const unsigned long,NexusInfo *,
216     ExceptionInfo *),
217   *GetVirtualPixelsNexus(const Cache,NexusInfo *);
218
219 extern MagickExport IndexPacket
220   *GetPixelCacheNexusIndexes(const Cache,NexusInfo *);
221
222 extern MagickExport MagickBooleanType
223   SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *);
224
225 extern MagickExport MagickSizeType
226   GetPixelCacheNexusExtent(const Cache,NexusInfo *);
227
228 extern MagickExport NexusInfo
229   **AcquirePixelCacheNexus(const unsigned long),
230   **DestroyPixelCacheNexus(NexusInfo **,const unsigned long);
231
232 extern MagickExport PixelPacket
233   *GetAuthenticPixelCacheNexus(Image *,const long,const long,
234     const unsigned long,const unsigned long,NexusInfo *,ExceptionInfo *),
235   *GetPixelCacheNexusPixels(const Cache,NexusInfo *),
236   *QueueAuthenticNexus(Image *,const long,const long,const unsigned long,
237     const unsigned long,NexusInfo *,ExceptionInfo *);
238
239 extern MagickExport void
240   ClonePixelCacheMethods(Cache,const Cache),
241   GetPixelCacheTileSize(const Image *,unsigned long *,unsigned long *),
242   GetPixelCacheMethods(CacheMethods *),
243   SetPixelCacheMethods(Cache,CacheMethods *);
244
245 #if defined(__cplusplus) || defined(c_plusplus)
246 }
247 #endif
248
249 #endif