MagickCore  6.9.7
cache-private.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2017 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 #include <time.h>
22 #include "magick/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)
30 extern "C" {
31 #endif
32 
33 typedef void
35 
36 typedef const IndexPacket
37  *(*GetVirtualIndexesFromHandler)(const Image *);
38 
39 typedef IndexPacket
40  *(*GetAuthenticIndexesFromHandler)(const Image *);
41 
42 typedef MagickBooleanType
43  (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
46  const ssize_t,const ssize_t,PixelPacket *,ExceptionInfo *),
48 
49 typedef 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 
54 typedef PixelPacket
55  *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
56  const size_t,const size_t,ExceptionInfo *);
57 
58 typedef PixelPacket
59  *(*GetAuthenticPixelsFromHandler)(const Image *);
60 
61 typedef PixelPacket
62  *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
63  const size_t,const size_t,ExceptionInfo *);
64 
65 typedef void
66  (*DestroyPixelHandler)(Image *);
67 
68 typedef struct _CacheMethods
69 {
72 
75 
78 
81 
84 
87 
90 
93 
96 
99 
102 } CacheMethods;
103 
104 typedef struct _NexusInfo
105 {
108 
111 
114 
115  PixelPacket
116  *cache,
117  *pixels;
118 
121 
124 
125  size_t
127 } NexusInfo;
128 
129 typedef struct _OpenCLCacheInfo
130 {
131  cl_event
133 
134  cl_mem
136 
137  cl_uint
139 
142 
143  PixelPacket
146 
147 typedef struct _CacheInfo
148 {
149  ClassType
151 
154 
155  size_t
157 
158  CacheType
160 
161  MapMode
163 
166 
167  size_t
168  columns,
169  rows;
170 
173 
176 
177  VirtualPixelMethod
179 
182 
183  size_t
185 
186  NexusInfo
188 
189  PixelPacket
191 
194 
197 
198  int
200 
201  char
202  filename[MaxTextExtent],
203  cache_filename[MaxTextExtent];
204 
207 
208  RandomInfo
210 
211  size_t
213 
214  void
216 
219  debug;
220 
222  id;
223 
224  ssize_t
226 
229  *file_semaphore;
230 
231  time_t
233 
234  size_t
236 
239 } CacheInfo;
240 
241 extern MagickExport Cache
242  AcquirePixelCache(const size_t),
243  ClonePixelCache(const Cache),
246 
247 extern MagickExport CacheType
248  GetPixelCacheType(const Image *);
249 
250 extern MagickExport ClassType
252 
255 
256 extern MagickExport const IndexPacket
258 
259 extern MagickExport const PixelPacket
260  *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
261  const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
264 
268 
270  GetPixelCacheNexusExtent(const Cache,NexusInfo *);
271 
272 extern MagickExport NexusInfo
273  **AcquirePixelCacheNexus(const size_t),
274  **DestroyPixelCacheNexus(NexusInfo **,const size_t);
275 
276 extern MagickExport PixelPacket
277  *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
278  const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
279  *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const size_t,
280  const size_t,const MagickBooleanType,NexusInfo *,ExceptionInfo *),
281  *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
282  const size_t,const size_t,const MagickBooleanType,NexusInfo *,
283  ExceptionInfo *) magick_hot_spot;
284 
285 extern MagickExport size_t
286  GetPixelCacheChannels(const Cache);
287 
288 extern MagickExport void
289  ClonePixelCacheMethods(Cache,const Cache),
290  GetPixelCacheTileSize(const Image *,size_t *,size_t *),
292  SetPixelCacheMethods(Cache,CacheMethods *);
293 
294 extern MagickPrivate void
295  ResetPixelCacheEpoch(void);
296 
297 extern MagickPrivate MagickBooleanType
298  SyncImagePixelCache(Image *,ExceptionInfo *);
299 
300 #if defined(MAGICKCORE_OPENCL_SUPPORT)
301 extern MagickPrivate const cl_event
302  *GetOpenCLEvents(const Image *,cl_uint *);
303 
304 extern MagickPrivate cl_mem
305  GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
306 
307 extern MagickPrivate void
308  AddOpenCLEvent(const Image *,cl_event),
309  SyncAuthenticOpenCLBuffer(const Image *);
310 #endif
311 
312 #if defined(__cplusplus) || defined(c_plusplus)
313 }
314 #endif
315 
316 #endif
#define magick_restrict
Definition: MagickCore.h:41
struct _CacheMethods CacheMethods
MagickSizeType length
Definition: cache-private.h:175
GetVirtualPixelsHandler get_virtual_pixels_handler
Definition: cache-private.h:74
MagickOffsetType offset
Definition: cache-private.h:172
IndexPacket * indexes
Definition: cache-private.h:123
size_t signature
Definition: cache-private.h:126
size_t number_connections
Definition: cache-private.h:212
void * cl_event
Definition: opencl-private.h:32
GetVirtualPixelHandler get_virtual_pixel_handler
Definition: cache-private.h:71
MagickExport NexusInfo ** DestroyPixelCacheNexus(NexusInfo **, const size_t)
Definition: cache.c:1183
MapMode mode
Definition: cache-private.h:162
MagickBooleanType(* GetOneAuthenticPixelFromHandler)(Image *, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:43
Definition: exception.h:102
Definition: cache-private.h:129
SyncAuthenticPixelsHandler sync_authentic_pixels_handler
Definition: cache-private.h:98
MagickExport Cache ReferencePixelCache(Cache)
Definition: cache.c:4817
MagickPrivate MagickBooleanType SyncImagePixelCache(Image *, ExceptionInfo *)
Definition: cache.c:5541
VirtualPixelMethod
Definition: cache-view.h:27
MagickThreadType id
Definition: cache-private.h:222
MagickBooleanType authentic_pixel_cache
Definition: cache-private.h:120
GetOneVirtualPixelFromHandler get_one_virtual_pixel_from_handler
Definition: cache-private.h:80
MagickExport void SetPixelCacheMethods(Cache, CacheMethods *)
Definition: cache.c:4878
Definition: pixel.h:131
const PixelPacket *(*) *(* GetVirtualPixelsHandler)(const Image *)
Definition: cache-private.h:52
struct _OpenCLCacheInfo OpenCLCacheInfo
MagickExport PixelPacket * QueueAuthenticPixelCacheNexus(Image *, const ssize_t, const ssize_t, const size_t, const size_t, const MagickBooleanType, NexusInfo *, ExceptionInfo *) magick_hot_spot
Definition: cache.c:4230
MagickBooleanType active_index_channel
Definition: cache-private.h:196
Definition: random.c:76
struct _CacheInfo CacheInfo
cl_event * events
Definition: cache-private.h:132
MagickExport ClassType GetPixelCacheStorageClass(const Cache)
Definition: cache.c:2505
ssize_t MagickOffsetType
Definition: magick-type.h:155
cl_mem buffer
Definition: cache-private.h:135
MagickBooleanType mapped
Definition: cache-private.h:107
MagickExport PixelPacket * QueueAuthenticPixel(Image *, const ssize_t, const ssize_t, const size_t, const size_t, const MagickBooleanType, NexusInfo *, ExceptionInfo *)
Definition: image.h:152
GetVirtualIndexesFromHandler get_virtual_indexes_from_handler
Definition: cache-private.h:77
MagickBooleanType synchronize
Definition: cache-private.h:218
RandomInfo * random_info
Definition: cache-private.h:209
GetAuthenticPixelsHandler get_authentic_pixels_handler
Definition: cache-private.h:83
size_t channels
Definition: cache-private.h:156
const PixelPacket *(* GetVirtualPixelHandler)(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:50
MagickExport Cache DestroyPixelCache(Cache)
MagickBooleanType(*)(*)(* SyncAuthenticPixelsHandler)(Image *, ExceptionInfo *)
Definition: cache-private.h:47
struct _NexusInfo NexusInfo
MagickExport size_t GetPixelCacheChannels(const Cache)
Definition: cache.c:2299
const IndexPacket *(* GetVirtualIndexesFromHandler)(const Image *)
Definition: cache-private.h:37
MagickBooleanType
Definition: magick-type.h:211
MagickExport Cache AcquirePixelCache(const size_t)
ClassType
Definition: magick-type.h:204
cl_uint event_count
Definition: cache-private.h:138
pid_t MagickThreadType
Definition: thread_.h:34
OpenCLCacheInfo * opencl
Definition: cache-private.h:238
void * server_info
Definition: cache-private.h:215
Definition: pixel.h:104
void * cl_uint
Definition: opencl-private.h:34
time_t timestamp
Definition: cache-private.h:232
GetAuthenticPixelsFromHandler get_authentic_pixels_from_handler
Definition: cache-private.h:92
MagickExport NexusInfo ** AcquirePixelCacheNexus(const size_t)
MagickSizeType length
Definition: cache-private.h:141
CacheMethods methods
Definition: cache-private.h:206
#define MaxTextExtent
Definition: method-attribute.h:106
#define magick_hot_spot
Definition: method-attribute.h:139
QueueAuthenticPixelsHandler queue_authentic_pixels_handler
Definition: cache-private.h:95
Definition: cache-private.h:68
RectangleInfo region
Definition: cache-private.h:110
MagickPixelPacket virtual_pixel_color
Definition: cache-private.h:181
size_t MagickSizeType
Definition: magick-type.h:156
void(* DestroyPixelHandler)(Image *)
Definition: cache-private.h:66
DestroyPixelHandler destroy_pixel_handler
Definition: cache-private.h:101
CacheType type
Definition: cache-private.h:159
GetAuthenticIndexesFromHandler get_authentic_indexes_from_handler
Definition: cache-private.h:86
SemaphoreInfo * semaphore
Definition: cache-private.h:228
ColorspaceType colorspace
Definition: cache-private.h:153
MagickBooleanType mapped
Definition: cache-private.h:165
MagickExport void GetPixelCacheTileSize(const Image *, size_t *, size_t *)
MagickExport const IndexPacket * GetVirtualIndexesFromNexus(const Cache, NexusInfo *)
Definition: cache.c:2662
size_t signature
Definition: cache-private.h:235
PixelPacket * pixels
Definition: cache-private.h:144
Definition: geometry.h:121
PixelPacket *(* GetAuthenticPixelsFromHandler)(const Image *)
Definition: cache-private.h:59
VirtualPixelMethod virtual_pixel_method
Definition: cache-private.h:178
IndexPacket * indexes
Definition: cache-private.h:193
int file
Definition: cache-private.h:199
PixelPacket * pixels
Definition: cache-private.h:116
MagickExport ColorspaceType GetPixelCacheColorspace(const Cache)
Definition: cache.c:2335
Definition: cache-private.h:104
MagickExport PixelPacket * GetAuthenticPixelCacheNexus(Image *, const ssize_t, const ssize_t, const size_t, const size_t, NexusInfo *, ExceptionInfo *) magick_hot_spot
size_t number_threads
Definition: cache-private.h:184
MagickExport void ClonePixelCacheMethods(Cache, const Cache)
MagickSizeType length
Definition: cache-private.h:113
ClassType storage_class
Definition: cache-private.h:150
CacheType
Definition: cache.h:27
void * cl_mem
Definition: opencl-private.h:33
NexusInfo ** nexus_info
Definition: cache-private.h:187
GetOneAuthenticPixelFromHandler get_one_authentic_pixel_from_handler
Definition: cache-private.h:89
Definition: cache-private.h:147
size_t rows
Definition: cache-private.h:168
MapMode
Definition: blob.h:30
ColorspaceType
Definition: colorspace.h:25
MagickPrivate void ResetPixelCacheEpoch(void)
Definition: cache.c:4849
MagickExport const PixelPacket * GetVirtualPixelsFromNexus(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, const size_t, const size_t, NexusInfo *, ExceptionInfo *) magick_hot_spot
MagickExport void GetPixelCacheMethods(CacheMethods *)
#define MagickPrivate
Definition: method-attribute.h:99
MagickExport Cache ClonePixelCache(const Cache)
MagickExport const PixelPacket * GetVirtualPixelsNexus(const Cache, NexusInfo *)
Definition: cache.c:3439
PixelPacket *(* GetAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:55
#define MagickExport
Definition: method-attribute.h:98
void * Cache
Definition: cache-private.h:34
MagickExport CacheType GetPixelCacheType(const Image *)
Definition: cache.c:1887
Quantum IndexPacket
Definition: pixel.h:129
PixelPacket *(* QueueAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:62
IndexPacket *(* GetAuthenticIndexesFromHandler)(const Image *)
Definition: cache-private.h:40
MagickBooleanType(*)(* GetOneVirtualPixelFromHandler)(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:45
PixelPacket * pixels
Definition: cache-private.h:190
MagickExport MagickBooleanType SyncAuthenticPixelCacheNexus(Image *, NexusInfo *magick_restrict, ExceptionInfo *) magick_hot_spot
Definition: semaphore.c:58
MagickExport MagickSizeType GetPixelCacheNexusExtent(const Cache, NexusInfo *)
Definition: cache.c:2414
ssize_t reference_count
Definition: cache-private.h:225