]> granicus.if.org Git - imagemagick/blob - MagickCore/cache-private.h
(no commit message)
[imagemagick] / MagickCore / cache-private.h
1 /*
2   Copyright 1999-2012 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     debug;
179
180   MagickThreadType
181     id;
182
183   ssize_t
184     reference_count;
185
186   SemaphoreInfo
187     *semaphore,
188     *disk_semaphore;
189
190   time_t
191     timestamp;
192
193   size_t
194     signature;
195 } CacheInfo;
196
197 extern MagickPrivate Cache
198   AcquirePixelCache(const size_t),
199   ClonePixelCache(const Cache),
200   DestroyPixelCache(Cache),
201   ReferencePixelCache(Cache);
202
203 extern MagickPrivate ClassType
204   GetPixelCacheStorageClass(const Cache);
205
206 extern MagickPrivate ColorspaceType
207   GetPixelCacheColorspace(const Cache);
208
209 extern MagickPrivate const Quantum
210   *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
211     const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
212     ExceptionInfo *) magick_hot_spot,
213   *GetVirtualPixelsNexus(const Cache,NexusInfo *);
214
215 extern MagickPrivate const void
216   *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *),
217   *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *);
218
219 extern MagickPrivate MagickBooleanType
220   CacheComponentGenesis(void),
221   SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *)
222     magick_hot_spot,
223   SyncImagePixelCache(Image *,ExceptionInfo *);
224
225 extern MagickPrivate MagickSizeType
226   GetPixelCacheNexusExtent(const Cache,NexusInfo *);
227
228 extern MagickPrivate NexusInfo
229   **AcquirePixelCacheNexus(const size_t),
230   **DestroyPixelCacheNexus(NexusInfo **,const size_t);
231
232 extern MagickPrivate Quantum
233   *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
234     const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
235   *GetPixelCacheNexusPixels(const Cache,NexusInfo *),
236   *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
237     const size_t,const size_t,const MagickBooleanType,NexusInfo *,
238     ExceptionInfo *) magick_hot_spot;
239
240 extern MagickPrivate size_t
241   GetPixelCacheChannels(const Cache);
242
243 extern MagickPrivate VirtualPixelMethod
244   GetPixelCacheVirtualMethod(const Image *),
245   SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
246
247 extern MagickPrivate void
248   CacheComponentTerminus(void),
249   ClonePixelCacheMethods(Cache,const Cache),
250   *GetPixelCacheNexusMetacontent(const Cache,NexusInfo *) magick_hot_spot,
251   *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *),
252   GetPixelCacheTileSize(const Image *,size_t *,size_t *),
253   GetPixelCacheMethods(CacheMethods *),
254   SetPixelCacheMethods(Cache,CacheMethods *);
255
256 #if defined(__cplusplus) || defined(c_plusplus)
257 }
258 #endif
259
260 #endif