MagickCore  6.9.9
Convert, Edit, Or Compose Bitmap Images
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  https://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
145 
149 
150 typedef struct _CacheInfo
151 {
152  ClassType
154 
157 
158  size_t
160 
161  CacheType
163 
164  MapMode
166 
169 
170  size_t
171  columns,
172  rows;
173 
176 
179 
180  VirtualPixelMethod
182 
185 
186  size_t
188 
189  NexusInfo
191 
192  PixelPacket
194 
197 
200 
201  int
203 
204  char
205  filename[MaxTextExtent],
206  cache_filename[MaxTextExtent];
207 
210 
211  RandomInfo
213 
214  size_t
216 
217  void
219 
222  debug;
223 
225  id;
226 
227  ssize_t
229 
232  *file_semaphore;
233 
234  time_t
236 
237  size_t
239 
242 } CacheInfo;
243 
244 extern MagickExport Cache
245  AcquirePixelCache(const size_t),
246  ClonePixelCache(const Cache),
249 
250 extern MagickExport CacheType
251  GetPixelCacheType(const Image *);
252 
253 extern MagickExport ClassType
255 
258 
259 extern MagickExport const IndexPacket
261 
262 extern MagickExport const PixelPacket
263  *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
264  const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
267 
271 
273  GetPixelCacheNexusExtent(const Cache,NexusInfo *);
274 
275 extern MagickExport NexusInfo
276  **AcquirePixelCacheNexus(const size_t),
277  **DestroyPixelCacheNexus(NexusInfo **,const size_t);
278 
279 extern MagickExport PixelPacket
280  *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
281  const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
282  *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const size_t,
283  const size_t,const MagickBooleanType,NexusInfo *,ExceptionInfo *),
284  *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
285  const size_t,const size_t,const MagickBooleanType,NexusInfo *,
286  ExceptionInfo *) magick_hot_spot;
287 
288 extern MagickExport size_t
289  GetPixelCacheChannels(const Cache);
290 
291 extern MagickExport void
292  ClonePixelCacheMethods(Cache,const Cache),
293  GetPixelCacheTileSize(const Image *,size_t *,size_t *),
295  SetPixelCacheMethods(Cache,CacheMethods *);
296 
297 extern MagickPrivate void
298  ResetPixelCacheEpoch(void);
299 
300 extern MagickPrivate MagickBooleanType
301  SyncImagePixelCache(Image *,ExceptionInfo *);
302 
303 #if defined(MAGICKCORE_OPENCL_SUPPORT)
304 extern MagickPrivate cl_event
305  *GetOpenCLEvents(const Image *,cl_uint *);
306 
307 extern MagickPrivate cl_mem
308  GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
309 
310 extern MagickPrivate void
311  AddOpenCLEvent(const Image *,cl_event),
312  SyncAuthenticOpenCLBuffer(const Image *);
313 #endif
314 
315 #if defined(__cplusplus) || defined(c_plusplus)
316 }
317 #endif
318 
319 #endif
#define magick_restrict
Definition: MagickCore.h:41
struct _CacheMethods CacheMethods
MagickSizeType length
Definition: cache-private.h:178
GetVirtualPixelsHandler get_virtual_pixels_handler
Definition: cache-private.h:74
MagickOffsetType offset
Definition: cache-private.h:175
IndexPacket * indexes
Definition: cache-private.h:123
size_t signature
Definition: cache-private.h:126
size_t number_connections
Definition: cache-private.h:215
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:1244
MapMode mode
Definition: cache-private.h:165
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:4904
MagickPrivate MagickBooleanType SyncImagePixelCache(Image *, ExceptionInfo *)
Definition: cache.c:5643
VirtualPixelMethod
Definition: cache-view.h:27
MagickThreadType id
Definition: cache-private.h:225
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:4965
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:4317
MagickBooleanType active_index_channel
Definition: cache-private.h:199
Definition: random.c:76
struct _CacheInfo CacheInfo
cl_event * events
Definition: cache-private.h:132
MagickExport ClassType GetPixelCacheStorageClass(const Cache)
Definition: cache.c:2602
ssize_t MagickOffsetType
Definition: magick-type.h:133
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:221
RandomInfo * random_info
Definition: cache-private.h:212
GetAuthenticPixelsHandler get_authentic_pixels_handler
Definition: cache-private.h:83
size_t channels
Definition: cache-private.h:159
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:2361
const IndexPacket *(* GetVirtualIndexesFromHandler)(const Image *)
Definition: cache-private.h:37
MagickBooleanType
Definition: magick-type.h:189
MagickExport Cache AcquirePixelCache(const size_t)
ClassType
Definition: magick-type.h:182
SemaphoreInfo * events_semaphore
Definition: cache-private.h:147
cl_uint event_count
Definition: cache-private.h:138
pid_t MagickThreadType
Definition: thread_.h:34
OpenCLCacheInfo * opencl
Definition: cache-private.h:241
void * server_info
Definition: cache-private.h:218
Definition: pixel.h:104
void * cl_uint
Definition: opencl-private.h:34
time_t timestamp
Definition: cache-private.h:235
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:209
#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:184
size_t MagickSizeType
Definition: magick-type.h:134
void(* DestroyPixelHandler)(Image *)
Definition: cache-private.h:66
DestroyPixelHandler destroy_pixel_handler
Definition: cache-private.h:101
CacheType type
Definition: cache-private.h:162
GetAuthenticIndexesFromHandler get_authentic_indexes_from_handler
Definition: cache-private.h:86
SemaphoreInfo * semaphore
Definition: cache-private.h:231
ColorspaceType colorspace
Definition: cache-private.h:156
MagickBooleanType mapped
Definition: cache-private.h:168
MagickExport void GetPixelCacheTileSize(const Image *, size_t *, size_t *)
MagickExport const IndexPacket * GetVirtualIndexesFromNexus(const Cache, NexusInfo *)
Definition: cache.c:2759
size_t signature
Definition: cache-private.h:238
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:181
IndexPacket * indexes
Definition: cache-private.h:196
int file
Definition: cache-private.h:202
PixelPacket * pixels
Definition: cache-private.h:116
MagickExport ColorspaceType GetPixelCacheColorspace(const Cache)
Definition: cache.c:2397
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:187
MagickExport void ClonePixelCacheMethods(Cache, const Cache)
MagickSizeType length
Definition: cache-private.h:113
ClassType storage_class
Definition: cache-private.h:153
CacheType
Definition: cache.h:27
void * cl_mem
Definition: opencl-private.h:33
NexusInfo ** nexus_info
Definition: cache-private.h:190
GetOneAuthenticPixelFromHandler get_one_authentic_pixel_from_handler
Definition: cache-private.h:89
Definition: cache-private.h:150
size_t rows
Definition: cache-private.h:171
MapMode
Definition: blob.h:30
ColorspaceType
Definition: colorspace.h:25
MagickPrivate void ResetPixelCacheEpoch(void)
Definition: cache.c:4936
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:3539
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:1949
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:193
MagickExport MagickBooleanType SyncAuthenticPixelCacheNexus(Image *, NexusInfo *magick_restrict, ExceptionInfo *) magick_hot_spot
Definition: semaphore.c:59
MagickExport MagickSizeType GetPixelCacheNexusExtent(const Cache, NexusInfo *)
Definition: cache.c:2512
ssize_t reference_count
Definition: cache-private.h:228