cache-private.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization
00003   dedicated to making software imaging solutions freely available.
00004 
00005   You may not use this file except in compliance with the License.  You may
00006   obtain a copy of the License at
00007 
00008     https://imagemagick.org/script/license.php
00009 
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   MagickCore cache private methods.
00017 */
00018 #ifndef MAGICKCORE_CACHE_PRIVATE_H
00019 #define MAGICKCORE_CACHE_PRIVATE_H
00020 
00021 #include "MagickCore/cache.h"
00022 #include "MagickCore/distribute-cache.h"
00023 #include "MagickCore/opencl-private.h"
00024 #include "MagickCore/pixel.h"
00025 #include "MagickCore/random_.h"
00026 #include "MagickCore/thread-private.h"
00027 #include "MagickCore/semaphore.h"
00028 
00029 #if defined(__cplusplus) || defined(c_plusplus)
00030 extern "C" {
00031 #endif
00032 
00033 typedef void
00034   *Cache;
00035 
00036 typedef MagickBooleanType
00037   (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
00038     Quantum *,ExceptionInfo *),
00039   (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
00040     const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
00041   (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
00042 
00043 typedef const Quantum
00044   *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
00045     const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
00046   *(*GetVirtualPixelsHandler)(const Image *);
00047 
00048 typedef const void
00049   *(*GetVirtualMetacontentFromHandler)(const Image *);
00050 
00051 typedef Quantum
00052   *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
00053     const size_t,const size_t,ExceptionInfo *);
00054 
00055 typedef Quantum
00056   *(*GetAuthenticPixelsFromHandler)(const Image *);
00057 
00058 typedef Quantum
00059   *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
00060     const size_t,const size_t,ExceptionInfo *);
00061 
00062 typedef void
00063   (*DestroyPixelHandler)(Image *);
00064 
00065 typedef void
00066   *(*GetAuthenticMetacontentFromHandler)(const Image *);
00067 
00068 typedef struct _CacheMethods
00069 {
00070   GetVirtualPixelHandler
00071     get_virtual_pixel_handler;
00072 
00073   GetVirtualPixelsHandler
00074     get_virtual_pixels_handler;
00075 
00076   GetVirtualMetacontentFromHandler
00077     get_virtual_metacontent_from_handler;
00078 
00079   GetOneVirtualPixelFromHandler
00080     get_one_virtual_pixel_from_handler;
00081 
00082   GetAuthenticPixelsHandler
00083     get_authentic_pixels_handler;
00084 
00085   GetAuthenticMetacontentFromHandler
00086     get_authentic_metacontent_from_handler;
00087 
00088   GetOneAuthenticPixelFromHandler
00089     get_one_authentic_pixel_from_handler;
00090 
00091   GetAuthenticPixelsFromHandler
00092     get_authentic_pixels_from_handler;
00093 
00094   QueueAuthenticPixelsHandler
00095     queue_authentic_pixels_handler;
00096 
00097   SyncAuthenticPixelsHandler
00098     sync_authentic_pixels_handler;
00099 
00100   DestroyPixelHandler
00101     destroy_pixel_handler;
00102 } CacheMethods;
00103 
00104 typedef struct _NexusInfo
00105 {
00106   MagickBooleanType
00107     mapped;
00108 
00109   RectangleInfo
00110     region;
00111 
00112   MagickSizeType
00113     length;
00114 
00115   Quantum
00116     *cache,
00117     *pixels;
00118 
00119   MagickBooleanType
00120     authentic_pixel_cache;
00121 
00122   void
00123     *metacontent;
00124 
00125   size_t
00126     signature;
00127 
00128   struct _NexusInfo
00129     *virtual_nexus;
00130 } NexusInfo;
00131 
00132 typedef struct _CacheInfo
00133 {
00134   ClassType
00135     storage_class;
00136 
00137   ColorspaceType
00138     colorspace;
00139 
00140   PixelTrait
00141     alpha_trait;
00142 
00143   ChannelType
00144     channels;
00145 
00146   size_t
00147     columns,
00148     rows;
00149 
00150   size_t
00151     metacontent_extent,
00152     number_channels;
00153 
00154   PixelChannelMap
00155     channel_map[MaxPixelChannels];
00156 
00157   CacheType
00158     type;
00159 
00160   MapMode
00161     mode,
00162     disk_mode;
00163 
00164   MagickBooleanType
00165     mapped;
00166 
00167   MagickOffsetType
00168     offset;
00169 
00170   MagickSizeType
00171     length;
00172 
00173   VirtualPixelMethod
00174     virtual_pixel_method;
00175 
00176   PixelInfo
00177     virtual_pixel_color;
00178 
00179   size_t
00180     number_threads;
00181 
00182   NexusInfo
00183     **nexus_info;
00184 
00185   Quantum
00186     *pixels;
00187 
00188   void
00189     *metacontent;
00190 
00191   int
00192     file;
00193 
00194   char
00195     filename[MagickPathExtent],
00196     cache_filename[MagickPathExtent];
00197 
00198   CacheMethods
00199     methods;
00200 
00201   RandomInfo
00202     *random_info;
00203 
00204   void
00205     *server_info;
00206 
00207   MagickBooleanType
00208     synchronize,
00209     debug;
00210 
00211   MagickThreadType
00212     id;
00213 
00214   ssize_t
00215     reference_count;
00216 
00217   SemaphoreInfo
00218     *semaphore,
00219     *file_semaphore;
00220 
00221   time_t
00222     timestamp;
00223 
00224   size_t
00225     signature;
00226 
00227   MagickCLCacheInfo
00228     opencl;
00229 
00230   MagickBooleanType
00231     composite_mask;
00232 
00233   MagickSizeType
00234     width_limit,
00235     height_limit;
00236 } CacheInfo;
00237 
00238 extern MagickPrivate Cache
00239   AcquirePixelCache(const size_t),
00240   ClonePixelCache(const Cache),
00241   DestroyPixelCache(Cache),
00242   ReferencePixelCache(Cache);
00243 
00244 extern MagickPrivate ClassType
00245   GetPixelCacheStorageClass(const Cache);
00246 
00247 extern MagickPrivate ColorspaceType
00248   GetPixelCacheColorspace(const Cache);
00249 
00250 extern MagickPrivate const Quantum
00251   *GetVirtualPixelCacheNexus(const Image *,const VirtualPixelMethod,
00252     const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
00253     ExceptionInfo *) magick_hot_spot,
00254   *GetVirtualPixelsNexus(const Cache,NexusInfo *magick_restrict);
00255 
00256 extern MagickPrivate const void
00257   *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *magick_restrict);
00258 
00259 extern MagickPrivate MagickBooleanType
00260   CacheComponentGenesis(void),
00261   SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
00262     ExceptionInfo *) magick_hot_spot,
00263   SyncImagePixelCache(Image *,ExceptionInfo *);
00264 
00265 extern MagickPrivate MagickSizeType
00266   GetPixelCacheNexusExtent(const Cache,NexusInfo *magick_restrict);
00267 
00268 extern MagickPrivate NexusInfo
00269   **AcquirePixelCacheNexus(const size_t),
00270   **DestroyPixelCacheNexus(NexusInfo **,const size_t);
00271 
00272 extern MagickPrivate Quantum
00273   *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
00274     const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
00275   *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
00276     const size_t,const size_t,const MagickBooleanType,NexusInfo *,
00277     ExceptionInfo *) magick_hot_spot;
00278 
00279 extern MagickPrivate size_t
00280   GetPixelCacheChannels(const Cache);
00281 
00282 extern MagickPrivate VirtualPixelMethod
00283   GetPixelCacheVirtualMethod(const Image *),
00284   SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
00285 
00286 extern MagickPrivate void
00287   CacheComponentTerminus(void),
00288   ClonePixelCacheMethods(Cache,const Cache),
00289   GetPixelCacheTileSize(const Image *,size_t *,size_t *),
00290   GetPixelCacheMethods(CacheMethods *),
00291   ResetCacheAnonymousMemory(void),
00292   ResetPixelCacheEpoch(void),
00293   ResetPixelCacheChannels(Image *),
00294   SetPixelCacheMethods(Cache,CacheMethods *);
00295 
00296 #if defined(MAGICKCORE_OPENCL_SUPPORT)
00297 extern MagickPrivate cl_mem
00298   GetAuthenticOpenCLBuffer(const Image *,MagickCLDevice,ExceptionInfo *);
00299 
00300 extern MagickPrivate void
00301   SyncAuthenticOpenCLBuffer(const Image *);
00302 #endif
00303 
00304 #if defined(__cplusplus) || defined(c_plusplus)
00305 }
00306 #endif
00307 
00308 #endif

Generated on 17 Mar 2020 for MagickCore by  doxygen 1.6.1