]> 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   NexusInfo;
106
107 typedef struct _CacheInfo
108 {
109   ClassType
110     storage_class;
111
112   ColorspaceType
113     colorspace;
114
115   PixelTrait
116     alpha_trait;
117
118   MagickBooleanType
119     mask;
120
121   size_t
122     columns,
123     rows;
124
125   size_t
126     metacontent_extent,
127     number_channels;
128
129   PixelChannelMap
130     channel_map[MaxPixelChannels];
131
132   CacheType
133     type;
134
135   MapMode
136     mode;
137
138   MagickBooleanType
139     mapped;
140
141   MagickOffsetType
142     offset;
143
144   MagickSizeType
145     length;
146
147   VirtualPixelMethod
148     virtual_pixel_method;
149
150   PixelInfo
151     virtual_pixel_color;
152
153   size_t
154     number_threads;
155
156   NexusInfo
157     **nexus_info;
158
159   Quantum
160     *pixels;
161
162   void
163     *metacontent;
164
165   int
166     file;
167
168   char
169     filename[MaxTextExtent],
170     cache_filename[MaxTextExtent];
171
172   CacheMethods
173     methods;
174
175   RandomInfo
176     *random_info;
177
178   void
179     *server_info;
180
181   MagickBooleanType
182     synchronize,
183     debug;
184
185   MagickThreadType
186     id;
187
188   ssize_t
189     reference_count;
190
191   SemaphoreInfo
192     *semaphore,
193     *file_semaphore;
194
195   time_t
196     timestamp;
197
198   size_t
199     signature;
200 } CacheInfo;
201
202 extern MagickPrivate Cache
203   AcquirePixelCache(const size_t),
204   ClonePixelCache(const Cache),
205   DestroyPixelCache(Cache),
206   ReferencePixelCache(Cache);
207
208 extern MagickPrivate ClassType
209   GetPixelCacheStorageClass(const Cache);
210
211 extern MagickPrivate ColorspaceType
212   GetPixelCacheColorspace(const Cache);
213
214 extern MagickPrivate const Quantum
215   *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
216     const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
217     ExceptionInfo *) magick_hot_spot,
218   *GetVirtualPixelsNexus(const Cache,NexusInfo *);
219
220 extern MagickPrivate const void
221   *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *),
222   *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *);
223
224 extern MagickPrivate MagickBooleanType
225   CacheComponentGenesis(void),
226   SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *)
227     magick_hot_spot,
228   SyncImagePixelCache(Image *,ExceptionInfo *);
229
230 extern MagickPrivate MagickSizeType
231   GetPixelCacheNexusExtent(const Cache,NexusInfo *);
232
233 extern MagickPrivate NexusInfo
234   **AcquirePixelCacheNexus(const size_t),
235   **DestroyPixelCacheNexus(NexusInfo **,const size_t);
236
237 extern MagickPrivate Quantum
238   *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
239     const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
240   *GetPixelCacheNexusPixels(const Cache,NexusInfo *),
241   *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
242     const size_t,const size_t,const MagickBooleanType,NexusInfo *,
243     ExceptionInfo *) magick_hot_spot;
244
245 extern MagickPrivate size_t
246   GetPixelCacheChannels(const Cache);
247
248 extern MagickPrivate VirtualPixelMethod
249   GetPixelCacheVirtualMethod(const Image *),
250   SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
251
252 extern MagickPrivate void
253   CacheComponentTerminus(void),
254   ClonePixelCacheMethods(Cache,const Cache),
255   *GetPixelCacheNexusMetacontent(const Cache,NexusInfo *) magick_hot_spot,
256   *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *),
257   GetPixelCacheTileSize(const Image *,size_t *,size_t *),
258   GetPixelCacheMethods(CacheMethods *),
259   SetPixelCacheMethods(Cache,CacheMethods *);
260
261 #if defined(__cplusplus) || defined(c_plusplus)
262 }
263 #endif
264
265 #endif