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