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