309 lines
6.6 KiB
C
309 lines
6.6 KiB
C
/*
|
|
Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization
|
|
dedicated to making software imaging solutions freely available.
|
|
|
|
You may not use this file except in compliance with the License. You may
|
|
obtain a copy of the License at
|
|
|
|
https://imagemagick.org/script/license.php
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
MagickCore cache private methods.
|
|
*/
|
|
#ifndef MAGICKCORE_CACHE_PRIVATE_H
|
|
#define MAGICKCORE_CACHE_PRIVATE_H
|
|
|
|
#include "MagickCore/cache.h"
|
|
#include "MagickCore/distribute-cache.h"
|
|
#include "MagickCore/opencl-private.h"
|
|
#include "MagickCore/pixel.h"
|
|
#include "MagickCore/random_.h"
|
|
#include "MagickCore/thread-private.h"
|
|
#include "MagickCore/semaphore.h"
|
|
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef void
|
|
*Cache;
|
|
|
|
typedef MagickBooleanType
|
|
(*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
|
|
Quantum *,ExceptionInfo *),
|
|
(*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
|
|
const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
|
|
(*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
|
|
|
|
typedef const Quantum
|
|
*(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
|
|
const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
|
|
*(*GetVirtualPixelsHandler)(const Image *);
|
|
|
|
typedef const void
|
|
*(*GetVirtualMetacontentFromHandler)(const Image *);
|
|
|
|
typedef Quantum
|
|
*(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
|
|
const size_t,const size_t,ExceptionInfo *);
|
|
|
|
typedef Quantum
|
|
*(*GetAuthenticPixelsFromHandler)(const Image *);
|
|
|
|
typedef Quantum
|
|
*(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
|
|
const size_t,const size_t,ExceptionInfo *);
|
|
|
|
typedef void
|
|
(*DestroyPixelHandler)(Image *);
|
|
|
|
typedef void
|
|
*(*GetAuthenticMetacontentFromHandler)(const Image *);
|
|
|
|
typedef struct _CacheMethods
|
|
{
|
|
GetVirtualPixelHandler
|
|
get_virtual_pixel_handler;
|
|
|
|
GetVirtualPixelsHandler
|
|
get_virtual_pixels_handler;
|
|
|
|
GetVirtualMetacontentFromHandler
|
|
get_virtual_metacontent_from_handler;
|
|
|
|
GetOneVirtualPixelFromHandler
|
|
get_one_virtual_pixel_from_handler;
|
|
|
|
GetAuthenticPixelsHandler
|
|
get_authentic_pixels_handler;
|
|
|
|
GetAuthenticMetacontentFromHandler
|
|
get_authentic_metacontent_from_handler;
|
|
|
|
GetOneAuthenticPixelFromHandler
|
|
get_one_authentic_pixel_from_handler;
|
|
|
|
GetAuthenticPixelsFromHandler
|
|
get_authentic_pixels_from_handler;
|
|
|
|
QueueAuthenticPixelsHandler
|
|
queue_authentic_pixels_handler;
|
|
|
|
SyncAuthenticPixelsHandler
|
|
sync_authentic_pixels_handler;
|
|
|
|
DestroyPixelHandler
|
|
destroy_pixel_handler;
|
|
} CacheMethods;
|
|
|
|
typedef struct _NexusInfo
|
|
{
|
|
MagickBooleanType
|
|
mapped;
|
|
|
|
RectangleInfo
|
|
region;
|
|
|
|
MagickSizeType
|
|
length;
|
|
|
|
Quantum
|
|
*cache,
|
|
*pixels;
|
|
|
|
MagickBooleanType
|
|
authentic_pixel_cache;
|
|
|
|
void
|
|
*metacontent;
|
|
|
|
size_t
|
|
signature;
|
|
|
|
struct _NexusInfo
|
|
*virtual_nexus;
|
|
} NexusInfo;
|
|
|
|
typedef struct _CacheInfo
|
|
{
|
|
ClassType
|
|
storage_class;
|
|
|
|
ColorspaceType
|
|
colorspace;
|
|
|
|
PixelTrait
|
|
alpha_trait;
|
|
|
|
ChannelType
|
|
channels;
|
|
|
|
size_t
|
|
columns,
|
|
rows;
|
|
|
|
size_t
|
|
metacontent_extent,
|
|
number_channels;
|
|
|
|
PixelChannelMap
|
|
channel_map[MaxPixelChannels];
|
|
|
|
CacheType
|
|
type;
|
|
|
|
MapMode
|
|
mode,
|
|
disk_mode;
|
|
|
|
MagickBooleanType
|
|
mapped;
|
|
|
|
MagickOffsetType
|
|
offset;
|
|
|
|
MagickSizeType
|
|
length;
|
|
|
|
VirtualPixelMethod
|
|
virtual_pixel_method;
|
|
|
|
PixelInfo
|
|
virtual_pixel_color;
|
|
|
|
size_t
|
|
number_threads;
|
|
|
|
NexusInfo
|
|
**nexus_info;
|
|
|
|
Quantum
|
|
*pixels;
|
|
|
|
void
|
|
*metacontent;
|
|
|
|
int
|
|
file;
|
|
|
|
char
|
|
filename[MagickPathExtent],
|
|
cache_filename[MagickPathExtent];
|
|
|
|
CacheMethods
|
|
methods;
|
|
|
|
RandomInfo
|
|
*random_info;
|
|
|
|
void
|
|
*server_info;
|
|
|
|
MagickBooleanType
|
|
synchronize,
|
|
debug;
|
|
|
|
MagickThreadType
|
|
id;
|
|
|
|
ssize_t
|
|
reference_count;
|
|
|
|
SemaphoreInfo
|
|
*semaphore,
|
|
*file_semaphore;
|
|
|
|
time_t
|
|
timestamp;
|
|
|
|
size_t
|
|
signature;
|
|
|
|
MagickCLCacheInfo
|
|
opencl;
|
|
|
|
MagickBooleanType
|
|
composite_mask;
|
|
|
|
MagickSizeType
|
|
width_limit,
|
|
height_limit;
|
|
} CacheInfo;
|
|
|
|
extern MagickPrivate Cache
|
|
AcquirePixelCache(const size_t),
|
|
ClonePixelCache(const Cache),
|
|
DestroyPixelCache(Cache),
|
|
ReferencePixelCache(Cache);
|
|
|
|
extern MagickPrivate ClassType
|
|
GetPixelCacheStorageClass(const Cache);
|
|
|
|
extern MagickPrivate ColorspaceType
|
|
GetPixelCacheColorspace(const Cache);
|
|
|
|
extern MagickPrivate const Quantum
|
|
*GetVirtualPixelCacheNexus(const Image *,const VirtualPixelMethod,
|
|
const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
|
|
ExceptionInfo *) magick_hot_spot,
|
|
*GetVirtualPixelsNexus(const Cache,NexusInfo *magick_restrict);
|
|
|
|
extern MagickPrivate const void
|
|
*GetVirtualMetacontentFromNexus(const Cache,NexusInfo *magick_restrict);
|
|
|
|
extern MagickPrivate MagickBooleanType
|
|
CacheComponentGenesis(void),
|
|
SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
|
|
ExceptionInfo *) magick_hot_spot,
|
|
SyncImagePixelCache(Image *,ExceptionInfo *);
|
|
|
|
extern MagickPrivate MagickSizeType
|
|
GetPixelCacheNexusExtent(const Cache,NexusInfo *magick_restrict);
|
|
|
|
extern MagickPrivate NexusInfo
|
|
**AcquirePixelCacheNexus(const size_t),
|
|
**DestroyPixelCacheNexus(NexusInfo **,const size_t);
|
|
|
|
extern MagickPrivate Quantum
|
|
*GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
|
|
const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
|
|
*QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
|
|
const size_t,const size_t,const MagickBooleanType,NexusInfo *,
|
|
ExceptionInfo *) magick_hot_spot;
|
|
|
|
extern MagickPrivate size_t
|
|
GetPixelCacheChannels(const Cache);
|
|
|
|
extern MagickPrivate VirtualPixelMethod
|
|
GetPixelCacheVirtualMethod(const Image *),
|
|
SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
|
|
|
|
extern MagickPrivate void
|
|
CacheComponentTerminus(void),
|
|
ClonePixelCacheMethods(Cache,const Cache),
|
|
GetPixelCacheTileSize(const Image *,size_t *,size_t *),
|
|
GetPixelCacheMethods(CacheMethods *),
|
|
ResetCacheAnonymousMemory(void),
|
|
ResetPixelCacheEpoch(void),
|
|
ResetPixelCacheChannels(Image *),
|
|
SetPixelCacheMethods(Cache,CacheMethods *);
|
|
|
|
#if defined(MAGICKCORE_OPENCL_SUPPORT)
|
|
extern MagickPrivate cl_mem
|
|
GetAuthenticOpenCLBuffer(const Image *,MagickCLDevice,ExceptionInfo *);
|
|
|
|
extern MagickPrivate void
|
|
SyncAuthenticOpenCLBuffer(const Image *);
|
|
#endif
|
|
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|