MagickCore 6.9.12-98
Convert, Edit, Or Compose Bitmap Images
Loading...
Searching...
No Matches
cache-private.h
1/*
2 Copyright 1999 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. You may
6 obtain a copy of the License at
7
8 https://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 <time.h>
22#include "magick/cache.h"
23#include "magick/distribute-cache.h"
24#include "magick/opencl-private.h"
25#include "magick/random_.h"
26#include "magick/thread-private.h"
27#include "magick/semaphore.h"
28
29#if defined(__cplusplus) || defined(c_plusplus)
30extern "C" {
31#endif
32
33typedef void
34 *Cache;
35
36typedef const IndexPacket
37 *(*GetVirtualIndexesFromHandler)(const Image *);
38
39typedef IndexPacket
40 *(*GetAuthenticIndexesFromHandler)(const Image *);
41
42typedef MagickBooleanType
43 (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
45 (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
46 const ssize_t,const ssize_t,PixelPacket *,ExceptionInfo *),
47 (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
48
49typedef const PixelPacket
50 *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
51 const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
52 *(*GetVirtualPixelsHandler)(const Image *);
53
54typedef PixelPacket
55 *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
56 const size_t,const size_t,ExceptionInfo *);
57
58typedef PixelPacket
59 *(*GetAuthenticPixelsFromHandler)(const Image *);
60
61typedef PixelPacket
62 *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
63 const size_t,const size_t,ExceptionInfo *);
64
65typedef void
66 (*DestroyPixelHandler)(Image *);
67
68typedef struct _CacheMethods
69{
70 GetVirtualPixelHandler
71 get_virtual_pixel_handler;
72
73 GetVirtualPixelsHandler
74 get_virtual_pixels_handler;
75
76 GetVirtualIndexesFromHandler
77 get_virtual_indexes_from_handler;
78
79 GetOneVirtualPixelFromHandler
80 get_one_virtual_pixel_from_handler;
81
82 GetAuthenticPixelsHandler
83 get_authentic_pixels_handler;
84
85 GetAuthenticIndexesFromHandler
86 get_authentic_indexes_from_handler;
87
88 GetOneAuthenticPixelFromHandler
89 get_one_authentic_pixel_from_handler;
90
91 GetAuthenticPixelsFromHandler
92 get_authentic_pixels_from_handler;
93
94 QueueAuthenticPixelsHandler
95 queue_authentic_pixels_handler;
96
97 SyncAuthenticPixelsHandler
98 sync_authentic_pixels_handler;
99
100 DestroyPixelHandler
101 destroy_pixel_handler;
103
104typedef struct _NexusInfo
105{
106 MagickBooleanType
107 mapped;
108
110 region;
111
112 MagickSizeType
113 length;
114
116 *cache,
117 *pixels;
118
119 MagickBooleanType
120 authentic_pixel_cache;
121
122 IndexPacket
123 *indexes;
124
125 size_t
126 signature;
127
128 struct _NexusInfo
129 *virtual_nexus;
130} NexusInfo;
131
132typedef struct _OpenCLCacheInfo
133{
134 cl_event
135 *events;
136
137 cl_mem
138 buffer;
139
140 cl_uint
141 event_count;
142
143 MagickSizeType
144 length;
145
147 *pixels;
148
150 *events_semaphore;
152
153typedef struct _CacheInfo
154{
155 ClassType
156 storage_class;
157
158 ColorspaceType
159 colorspace;
160
161 size_t
162 channels;
163
164 CacheType
165 type;
166
167 MapMode
168 mode,
169 disk_mode;
170
171 MagickBooleanType
172 mapped;
173
174 size_t
175 columns,
176 rows;
177
178 MagickOffsetType
179 offset;
180
181 MagickSizeType
182 length;
183
184 VirtualPixelMethod
185 virtual_pixel_method;
186
188 virtual_pixel_color;
189
190 size_t
191 number_threads;
192
194 **nexus_info;
195
197 *pixels;
198
199 IndexPacket
200 *indexes;
201
202 MagickBooleanType
203 active_index_channel;
204
205 int
206 file;
207
208 char
209 filename[MaxTextExtent],
210 cache_filename[MaxTextExtent];
211
213 methods;
214
216 *random_info;
217
218 size_t
219 number_connections;
220
221 void
222 *server_info;
223
224 MagickBooleanType
225 synchronize,
226 debug;
227
228 MagickThreadType
229 id;
230
231 ssize_t
232 reference_count;
233
235 *semaphore,
236 *file_semaphore;
237
238 time_t
239 timestamp;
240
241 size_t
242 signature;
243
245 *opencl;
246
247 MagickSizeType
248 width_limit,
249 height_limit;
250} CacheInfo;
251
252extern MagickExport Cache
253 AcquirePixelCache(const size_t),
254 ClonePixelCache(const Cache),
255 DestroyPixelCache(Cache),
256 ReferencePixelCache(Cache);
257
258extern MagickExport CacheType
259 GetPixelCacheType(const Image *);
260
261extern MagickExport ClassType
262 GetPixelCacheStorageClass(const Cache);
263
264extern MagickExport ColorspaceType
265 GetPixelCacheColorspace(const Cache);
266
267extern MagickExport const IndexPacket
268 *GetVirtualIndexesFromNexus(const Cache,NexusInfo *);
269
270extern MagickExport const PixelPacket
271 *GetVirtualPixelCacheNexus(const Image *,const VirtualPixelMethod,
272 const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
273 ExceptionInfo *) magick_hot_spot,
274 *GetVirtualPixelsNexus(const Cache,NexusInfo *);
275
276extern MagickExport MagickBooleanType
277 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
278 ExceptionInfo *) magick_hot_spot;
279
280extern MagickExport MagickSizeType
281 GetPixelCacheNexusExtent(const Cache,NexusInfo *);
282
283extern MagickExport NexusInfo
284 **AcquirePixelCacheNexus(const size_t),
285 **DestroyPixelCacheNexus(NexusInfo **,const size_t);
286
287extern MagickExport PixelPacket
288 *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
289 const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
290 *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const size_t,
291 const size_t,const MagickBooleanType,NexusInfo *,ExceptionInfo *),
292 *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
293 const size_t,const size_t,const MagickBooleanType,NexusInfo *,
294 ExceptionInfo *) magick_hot_spot;
295
296extern MagickExport size_t
297 GetPixelCacheChannels(const Cache);
298
299extern MagickExport void
300 ClonePixelCacheMethods(Cache,const Cache),
301 GetPixelCacheTileSize(const Image *,size_t *,size_t *),
302 GetPixelCacheMethods(CacheMethods *),
303 SetPixelCacheMethods(Cache,CacheMethods *);
304
305extern MagickPrivate MagickBooleanType
306 SyncImagePixelCache(Image *,ExceptionInfo *);
307
308#if defined(MAGICKCORE_OPENCL_SUPPORT)
309extern MagickPrivate cl_event
310 *GetOpenCLEvents(const Image *,cl_uint *);
311
312extern MagickPrivate cl_mem
313 GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
314
315extern MagickPrivate void
316 AddOpenCLEvent(const Image *,cl_event),
317 SyncAuthenticOpenCLBuffer(const Image *);
318#endif
319
320#if defined(__cplusplus) || defined(c_plusplus)
321}
322#endif
323
324#endif