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