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