MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
cache-private.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2018 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  disk_mode;
167 
170 
171  size_t
172  columns,
173  rows;
174 
177 
180 
181  VirtualPixelMethod
183 
186 
187  size_t
189 
190  NexusInfo
192 
193  PixelPacket
195 
198 
201 
202  int
204 
205  char
206  filename[MaxTextExtent],
207  cache_filename[MaxTextExtent];
208 
211 
212  RandomInfo
214 
215  size_t
217 
218  void
220 
223  debug;
224 
226  id;
227 
228  ssize_t
230 
233  *file_semaphore;
234 
235  time_t
237 
238  size_t
240 
243 } CacheInfo;
244 
245 extern MagickExport Cache
246  AcquirePixelCache(const size_t),
247  ClonePixelCache(const Cache),
250 
251 extern MagickExport CacheType
252  GetPixelCacheType(const Image *);
253 
254 extern MagickExport ClassType
256 
259 
260 extern MagickExport const IndexPacket
262 
263 extern MagickExport const PixelPacket
264  *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
265  const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
268 
272 
275 
276 extern MagickExport NexusInfo
277  **AcquirePixelCacheNexus(const size_t),
278  **DestroyPixelCacheNexus(NexusInfo **,const size_t);
279 
280 extern MagickExport PixelPacket
281  *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
282  const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
283  *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const size_t,
284  const size_t,const MagickBooleanType,NexusInfo *,ExceptionInfo *),
285  *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
286  const size_t,const size_t,const MagickBooleanType,NexusInfo *,
288 
289 extern MagickExport size_t
291 
292 extern MagickExport void
294  GetPixelCacheTileSize(const Image *,size_t *,size_t *),
297 
298 extern MagickPrivate void
299  ResetPixelCacheEpoch(void);
300 
303 
304 #if defined(MAGICKCORE_OPENCL_SUPPORT)
305 extern MagickPrivate cl_event
306  *GetOpenCLEvents(const Image *,cl_uint *);
307 
308 extern MagickPrivate cl_mem
309  GetAuthenticOpenCLBuffer(const Image *,ExceptionInfo *);
310 
311 extern MagickPrivate void
312  AddOpenCLEvent(const Image *,cl_event),
313  SyncAuthenticOpenCLBuffer(const Image *);
314 #endif
315 
316 #if defined(__cplusplus) || defined(c_plusplus)
317 }
318 #endif
319 
320 #endif
#define magick_restrict
Definition: MagickCore.h:41
struct _CacheMethods CacheMethods
MagickSizeType length
Definition: cache-private.h:179
GetVirtualPixelsHandler get_virtual_pixels_handler
Definition: cache-private.h:74
MagickOffsetType offset
Definition: cache-private.h:176
IndexPacket * indexes
Definition: cache-private.h:123
size_t signature
Definition: cache-private.h:126
size_t number_connections
Definition: cache-private.h:216
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:1235
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:4925
MagickPrivate MagickBooleanType SyncImagePixelCache(Image *, ExceptionInfo *)
Definition: cache.c:5664
VirtualPixelMethod
Definition: cache-view.h:27
MagickThreadType id
Definition: cache-private.h:226
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:4986
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:4338
MagickBooleanType active_index_channel
Definition: cache-private.h:200
Definition: random.c:76
struct _CacheInfo CacheInfo
cl_event * events
Definition: cache-private.h:132
MagickExport ClassType GetPixelCacheStorageClass(const Cache)
Definition: cache.c:2606
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:222
RandomInfo * random_info
Definition: cache-private.h:213
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:2365
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:242
void * server_info
Definition: cache-private.h:219
Definition: pixel.h:104
void * cl_uint
Definition: opencl-private.h:34
time_t timestamp
Definition: cache-private.h:236
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:210
#define MaxTextExtent
Definition: method-attribute.h:107
#define magick_hot_spot
Definition: method-attribute.h:140
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:185
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:232
ColorspaceType colorspace
Definition: cache-private.h:156
MagickBooleanType mapped
Definition: cache-private.h:169
MagickExport void GetPixelCacheTileSize(const Image *, size_t *, size_t *)
MagickExport const IndexPacket * GetVirtualIndexesFromNexus(const Cache, NexusInfo *)
Definition: cache.c:2763
size_t signature
Definition: cache-private.h:239
PixelPacket * pixels
Definition: cache-private.h:144
Definition: geometry.h:122
PixelPacket *(* GetAuthenticPixelsFromHandler)(const Image *)
Definition: cache-private.h:59
VirtualPixelMethod virtual_pixel_method
Definition: cache-private.h:182
IndexPacket * indexes
Definition: cache-private.h:197
int file
Definition: cache-private.h:203
PixelPacket * pixels
Definition: cache-private.h:116
MagickExport ColorspaceType GetPixelCacheColorspace(const Cache)
Definition: cache.c:2401
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:188
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:191
GetOneAuthenticPixelFromHandler get_one_authentic_pixel_from_handler
Definition: cache-private.h:89
Definition: cache-private.h:150
size_t rows
Definition: cache-private.h:172
MapMode
Definition: blob.h:30
ColorspaceType
Definition: colorspace.h:25
MagickPrivate void ResetPixelCacheEpoch(void)
Definition: cache.c:4957
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:3538
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:1955
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:194
MagickExport MagickBooleanType SyncAuthenticPixelCacheNexus(Image *, NexusInfo *magick_restrict, ExceptionInfo *) magick_hot_spot
Definition: semaphore.c:59
MagickExport MagickSizeType GetPixelCacheNexusExtent(const Cache, NexusInfo *)
Definition: cache.c:2516
ssize_t reference_count
Definition: cache-private.h:229