MagickCore  6.9.12-19
Convert, Edit, Or Compose Bitmap Images
cache-private.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2021 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"
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
117  *pixels;
118 
121 
124 
125  size_t
127 
128  struct _NexusInfo
129  *virtual_nexus;
130 } NexusInfo;
131 
132 typedef struct _OpenCLCacheInfo
133 {
134  cl_event
136 
137  cl_mem
139 
140  cl_uint
142 
145 
146  PixelPacket
148 
152 
153 typedef struct _CacheInfo
154 {
155  ClassType
157 
160 
161  size_t
163 
164  CacheType
166 
167  MapMode
169  disk_mode;
170 
173 
174  size_t
176  rows;
177 
180 
183 
184  VirtualPixelMethod
186 
189 
190  size_t
192 
193  NexusInfo
195 
196  PixelPacket
198 
201 
204 
205  int
207 
208  char
211 
214 
215  RandomInfo
217 
218  size_t
220 
221  void
223 
226  debug;
227 
229  id;
230 
231  ssize_t
233 
237 
238  time_t
240 
241  size_t
243 
246 
249  height_limit;
250 } CacheInfo;
251 
252 extern MagickExport Cache
253  AcquirePixelCache(const size_t),
254  ClonePixelCache(const Cache),
257 
258 extern MagickExport CacheType
259  GetPixelCacheType(const Image *);
260 
261 extern MagickExport ClassType
263 
266 
267 extern MagickExport const IndexPacket
269 
270 extern MagickExport const PixelPacket
271  *GetVirtualPixelCacheNexus(const Image *,const VirtualPixelMethod,
272  const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
275 
279 
281  GetPixelCacheNexusExtent(const Cache,NexusInfo *);
282 
283 extern MagickExport NexusInfo
284  **AcquirePixelCacheNexus(const size_t),
285  **DestroyPixelCacheNexus(NexusInfo **,const size_t);
286 
287 extern 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 
296 extern MagickExport size_t
297  GetPixelCacheChannels(const Cache);
298 
299 extern MagickExport void
300  ClonePixelCacheMethods(Cache,const Cache),
301  GetPixelCacheTileSize(const Image *,size_t *,size_t *),
303  SetPixelCacheMethods(Cache,CacheMethods *);
304 
305 extern MagickPrivate void
306  ResetPixelCacheEpoch(void);
307 
308 extern MagickPrivate MagickBooleanType
309  SyncImagePixelCache(Image *,ExceptionInfo *);
310 
311 #if defined(MAGICKCORE_OPENCL_SUPPORT)
312 extern MagickPrivate cl_event
313  *GetOpenCLEvents(const Image *,cl_uint *);
314 
315 extern MagickPrivate cl_mem
316  GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
317 
318 extern MagickPrivate void
319  AddOpenCLEvent(const Image *,cl_event),
320  SyncAuthenticOpenCLBuffer(const Image *);
321 #endif
322 
323 #if defined(__cplusplus) || defined(c_plusplus)
324 }
325 #endif
326 
327 #endif
#define magick_restrict
Definition: MagickCore.h:41
SemaphoreInfo * file_semaphore
Definition: cache-private.h:235
struct _CacheMethods CacheMethods
PixelPacket *(* GetAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:55
MagickSizeType length
Definition: cache-private.h:182
const IndexPacket *(* GetVirtualIndexesFromHandler)(const Image *)
Definition: cache-private.h:37
GetVirtualPixelsHandler get_virtual_pixels_handler
Definition: cache-private.h:74
MagickOffsetType offset
Definition: cache-private.h:179
IndexPacket * indexes
Definition: cache-private.h:123
size_t signature
Definition: cache-private.h:126
size_t number_connections
Definition: cache-private.h:219
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:1251
MapMode mode
Definition: cache-private.h:168
Definition: exception.h:102
Definition: cache-private.h:132
SyncAuthenticPixelsHandler sync_authentic_pixels_handler
Definition: cache-private.h:98
MagickExport Cache ReferencePixelCache(Cache)
Definition: cache.c:4943
MagickPrivate MagickBooleanType SyncImagePixelCache(Image *, ExceptionInfo *)
Definition: cache.c:5683
VirtualPixelMethod
Definition: cache-view.h:27
MagickThreadType id
Definition: cache-private.h:229
MagickBooleanType authentic_pixel_cache
Definition: cache-private.h:120
MagickBooleanType debug
Definition: cache-private.h:225
GetOneVirtualPixelFromHandler get_one_virtual_pixel_from_handler
Definition: cache-private.h:80
MagickExport void SetPixelCacheMethods(Cache, CacheMethods *)
Definition: cache.c:5004
Definition: pixel.h:131
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:4363
MagickBooleanType active_index_channel
Definition: cache-private.h:203
Definition: random.c:77
struct _CacheInfo CacheInfo
cl_event * events
Definition: cache-private.h:135
MagickExport ClassType GetPixelCacheStorageClass(const Cache)
Definition: cache.c:2623
ssize_t MagickOffsetType
Definition: magick-type.h:135
cl_mem buffer
Definition: cache-private.h:138
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:225
RandomInfo * random_info
Definition: cache-private.h:216
GetAuthenticPixelsHandler get_authentic_pixels_handler
Definition: cache-private.h:83
size_t channels
Definition: cache-private.h:162
MagickExport Cache DestroyPixelCache(Cache)
struct _NexusInfo NexusInfo
MagickExport size_t GetPixelCacheChannels(const Cache)
Definition: cache.c:2382
MagickBooleanType
Definition: magick-type.h:198
MagickExport Cache AcquirePixelCache(const size_t)
ClassType
Definition: magick-type.h:191
SemaphoreInfo * events_semaphore
Definition: cache-private.h:150
cl_uint event_count
Definition: cache-private.h:141
pid_t MagickThreadType
Definition: thread_.h:34
OpenCLCacheInfo * opencl
Definition: cache-private.h:245
void * server_info
Definition: cache-private.h:222
Definition: pixel.h:104
void * cl_uint
Definition: opencl-private.h:34
time_t timestamp
Definition: cache-private.h:239
GetAuthenticPixelsFromHandler get_authentic_pixels_from_handler
Definition: cache-private.h:92
MagickExport NexusInfo ** AcquirePixelCacheNexus(const size_t)
MagickSizeType length
Definition: cache-private.h:144
CacheMethods methods
Definition: cache-private.h:213
#define MaxTextExtent
Definition: method-attribute.h:89
#define magick_hot_spot
Definition: method-attribute.h:122
QueueAuthenticPixelsHandler queue_authentic_pixels_handler
Definition: cache-private.h:95
Definition: cache-private.h:68
MagickBooleanType(* GetOneAuthenticPixelFromHandler)(Image *, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:43
RectangleInfo region
Definition: cache-private.h:110
MagickPixelPacket virtual_pixel_color
Definition: cache-private.h:188
size_t MagickSizeType
Definition: magick-type.h:136
struct _NexusInfo * virtual_nexus
Definition: cache-private.h:128
DestroyPixelHandler destroy_pixel_handler
Definition: cache-private.h:101
CacheType type
Definition: cache-private.h:165
GetAuthenticIndexesFromHandler get_authentic_indexes_from_handler
Definition: cache-private.h:86
SemaphoreInfo * semaphore
Definition: cache-private.h:235
char filename[MaxTextExtent]
Definition: cache-private.h:209
ColorspaceType colorspace
Definition: cache-private.h:159
const PixelPacket *(*)*(* GetVirtualPixelsHandler)(const Image *)
Definition: cache-private.h:52
MagickBooleanType mapped
Definition: cache-private.h:172
MagickExport void GetPixelCacheTileSize(const Image *, size_t *, size_t *)
MagickExport const IndexPacket * GetVirtualIndexesFromNexus(const Cache, NexusInfo *)
Definition: cache.c:2780
IndexPacket *(* GetAuthenticIndexesFromHandler)(const Image *)
Definition: cache-private.h:40
size_t signature
Definition: cache-private.h:242
PixelPacket * pixels
Definition: cache-private.h:147
Definition: geometry.h:123
PixelPacket * cache
Definition: cache-private.h:116
VirtualPixelMethod virtual_pixel_method
Definition: cache-private.h:185
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
IndexPacket * indexes
Definition: cache-private.h:200
int file
Definition: cache-private.h:206
PixelPacket *(* QueueAuthenticPixelsHandler)(Image *, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo *)
Definition: cache-private.h:62
PixelPacket * pixels
Definition: cache-private.h:116
MagickExport ColorspaceType GetPixelCacheColorspace(const Cache)
Definition: cache.c:2418
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:191
size_t columns
Definition: cache-private.h:175
MagickBooleanType(*)(* GetOneVirtualPixelFromHandler)(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, PixelPacket *, ExceptionInfo *)
Definition: cache-private.h:45
MagickExport void ClonePixelCacheMethods(Cache, const Cache)
MagickSizeType length
Definition: cache-private.h:113
MagickSizeType height_limit
Definition: cache-private.h:248
ClassType storage_class
Definition: cache-private.h:156
CacheType
Definition: cache.h:27
void * cl_mem
Definition: opencl-private.h:33
NexusInfo ** nexus_info
Definition: cache-private.h:194
GetOneAuthenticPixelFromHandler get_one_authentic_pixel_from_handler
Definition: cache-private.h:89
Definition: cache-private.h:153
size_t rows
Definition: cache-private.h:175
MapMode
Definition: blob.h:31
ColorspaceType
Definition: colorspace.h:25
MagickSizeType width_limit
Definition: cache-private.h:248
MagickBooleanType(*)(*)(* SyncAuthenticPixelsHandler)(Image *, ExceptionInfo *)
Definition: cache-private.h:47
MagickPrivate void ResetPixelCacheEpoch(void)
Definition: cache.c:4975
MagickExport const PixelPacket * GetVirtualPixelCacheNexus(const Image *, const VirtualPixelMethod, const ssize_t, const ssize_t, const size_t, const size_t, NexusInfo *, ExceptionInfo *) magick_hot_spot
PixelPacket *(* GetAuthenticPixelsFromHandler)(const Image *)
Definition: cache-private.h:59
MagickExport void GetPixelCacheMethods(CacheMethods *)
#define MagickPrivate
Definition: method-attribute.h:81
MagickExport Cache ClonePixelCache(const Cache)
MagickExport const PixelPacket * GetVirtualPixelsNexus(const Cache, NexusInfo *)
Definition: cache.c:3540
#define MagickExport
Definition: method-attribute.h:80
void * Cache
Definition: cache-private.h:34
MagickExport CacheType GetPixelCacheType(const Image *)
Definition: cache.c:1972
Quantum IndexPacket
Definition: pixel.h:129
void(* DestroyPixelHandler)(Image *)
Definition: cache-private.h:66
PixelPacket * pixels
Definition: cache-private.h:197
char cache_filename[MaxTextExtent]
Definition: cache-private.h:209
MagickExport MagickBooleanType SyncAuthenticPixelCacheNexus(Image *, NexusInfo *magick_restrict, ExceptionInfo *) magick_hot_spot
MapMode disk_mode
Definition: cache-private.h:168
Definition: semaphore.c:60
MagickExport MagickSizeType GetPixelCacheNexusExtent(const Cache, NexusInfo *)
Definition: cache.c:2533
ssize_t reference_count
Definition: cache-private.h:232