]> granicus.if.org Git - imagemagick/blob - MagickCore/cache-private.h
(no commit message)
[imagemagick] / MagickCore / cache-private.h
1 /*
2   Copyright 1999-2013 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 "MagickCore/cache.h"
27 #include "MagickCore/distribute-cache.h"
28 #include "MagickCore/pixel.h"
29 #include "MagickCore/random_.h"
30 #include "MagickCore/thread-private.h"
31 #include "MagickCore/semaphore.h"
32
33 typedef void
34   *Cache;
35
36 typedef MagickBooleanType
37   (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
38     Quantum *,ExceptionInfo *),
39   (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
40     const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
41   (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
42
43 typedef const Quantum
44   *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
45     const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
46   *(*GetVirtualPixelsHandler)(const Image *);
47
48 typedef const void
49   *(*GetVirtualMetacontentFromHandler)(const Image *);
50
51 typedef Quantum
52   *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
53     const size_t,const size_t,ExceptionInfo *);
54
55 typedef Quantum
56   *(*GetAuthenticPixelsFromHandler)(const Image *);
57
58 typedef Quantum
59   *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
60     const size_t,const size_t,ExceptionInfo *);
61
62 typedef void
63   (*DestroyPixelHandler)(Image *);
64
65 typedef void
66   *(*GetAuthenticMetacontentFromHandler)(const Image *);
67
68 typedef struct _CacheMethods
69 {
70   GetVirtualPixelHandler
71     get_virtual_pixel_handler;
72
73   GetVirtualPixelsHandler
74     get_virtual_pixels_handler;
75
76   GetVirtualMetacontentFromHandler
77     get_virtual_metacontent_from_handler;
78
79   GetOneVirtualPixelFromHandler
80     get_one_virtual_pixel_from_handler;
81
82   GetAuthenticPixelsHandler
83     get_authentic_pixels_handler;
84
85   GetAuthenticMetacontentFromHandler
86     get_authentic_metacontent_from_handler;
87
88   GetOneAuthenticPixelFromHandler
89     get_one_authentic_pixel_from_handler;
90
91   GetAuthenticPixelsFromHandler
92     get_authentic_pixels_from_handler;
93
94   QueueAuthenticPixelsHandler
95     queue_authentic_pixels_handler;
96
97   SyncAuthenticPixelsHandler
98     sync_authentic_pixels_handler;
99
100   DestroyPixelHandler
101     destroy_pixel_handler;
102 } CacheMethods;
103
104 typedef struct _NexusInfo
105 {
106   MagickBooleanType
107     mapped;
108
109   RectangleInfo
110     region;
111
112   MagickSizeType
113     length;
114
115   Quantum
116     *cache,
117     *pixels;
118
119   MagickBooleanType
120     authentic_cache;
121
122   void
123     *metacontent;
124
125   size_t
126     signature;
127 } NexusInfo;
128
129 typedef struct _CacheInfo
130 {
131   ClassType
132     storage_class;
133
134   ColorspaceType
135     colorspace;
136
137   PixelTrait
138     alpha_trait;
139
140   MagickBooleanType
141     read_mask,
142     write_mask;
143
144   size_t
145     columns,
146     rows;
147
148   size_t
149     metacontent_extent,
150     number_channels;
151
152   PixelChannelMap
153     channel_map[MaxPixelChannels];
154
155   CacheType
156     type;
157
158   MapMode
159     mode;
160
161   MagickBooleanType
162     mapped;
163
164   MagickOffsetType
165     offset;
166
167   MagickSizeType
168     length;
169
170   VirtualPixelMethod
171     virtual_pixel_method;
172
173   PixelInfo
174     virtual_pixel_color;
175
176   size_t
177     number_threads;
178
179   NexusInfo
180     **nexus_info;
181
182   Quantum
183     *pixels;
184
185   void
186     *metacontent;
187
188   int
189     file;
190
191   char
192     filename[MaxTextExtent],
193     cache_filename[MaxTextExtent];
194
195   CacheMethods
196     methods;
197
198   RandomInfo
199     *random_info;
200
201   void
202     *server_info;
203
204   MagickBooleanType
205     synchronize,
206     debug;
207
208   MagickThreadType
209     id;
210
211   ssize_t
212     reference_count;
213
214   SemaphoreInfo
215     *semaphore,
216     *file_semaphore;
217
218   time_t
219     timestamp;
220
221   size_t
222     signature;
223 } CacheInfo;
224
225 extern MagickPrivate Cache
226   AcquirePixelCache(const size_t),
227   ClonePixelCache(const Cache),
228   DestroyPixelCache(Cache),
229   ReferencePixelCache(Cache);
230
231 extern MagickPrivate ClassType
232   GetPixelCacheStorageClass(const Cache);
233
234 extern MagickPrivate ColorspaceType
235   GetPixelCacheColorspace(const Cache);
236
237 extern MagickPrivate const Quantum
238   *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
239     const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
240     ExceptionInfo *) magick_hot_spot,
241   *GetVirtualPixelsNexus(const Cache,NexusInfo *);
242
243 extern MagickPrivate const void
244   *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *),
245   *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *);
246
247 extern MagickPrivate MagickBooleanType
248   CacheComponentGenesis(void),
249   SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *)
250     magick_hot_spot,
251   SyncImagePixelCache(Image *,ExceptionInfo *);
252
253 extern MagickPrivate MagickSizeType
254   GetPixelCacheNexusExtent(const Cache,NexusInfo *);
255
256 extern MagickPrivate NexusInfo
257   **AcquirePixelCacheNexus(const size_t),
258   **DestroyPixelCacheNexus(NexusInfo **,const size_t);
259
260 extern MagickPrivate Quantum
261   *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
262     const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
263   *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
264     const size_t,const size_t,const MagickBooleanType,NexusInfo *,
265     ExceptionInfo *) magick_hot_spot;
266
267 extern MagickPrivate size_t
268   GetPixelCacheChannels(const Cache);
269
270 extern MagickPrivate VirtualPixelMethod
271   GetPixelCacheVirtualMethod(const Image *),
272   SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
273
274 extern MagickPrivate void
275   CacheComponentTerminus(void),
276   ClonePixelCacheMethods(Cache,const Cache),
277   *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *),
278   GetPixelCacheTileSize(const Image *,size_t *,size_t *),
279   GetPixelCacheMethods(CacheMethods *),
280   SetPixelCacheMethods(Cache,CacheMethods *);
281
282 #if defined(__cplusplus) || defined(c_plusplus)
283 }
284 #endif
285
286 #endif