Home | History | Annotate | Download | only in MagickCore
      1 /*
      2   Copyright 1999-2019 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 magick methods.
     17 */
     18 #ifndef MAGICKCORE_MAGICK_H
     19 #define MAGICKCORE_MAGICK_H
     20 
     21 #if defined(__cplusplus) || defined(c_plusplus)
     22 extern "C" {
     23 #endif
     24 
     25 #include <stdarg.h>
     26 #include "MagickCore/semaphore.h"
     27 
     28 typedef enum
     29 {
     30   UndefinedFormatType,
     31   ImplicitFormatType,
     32   ExplicitFormatType
     33 } MagickFormatType;
     34 
     35 typedef enum
     36 {
     37   CoderNoFlag = 0x0000,
     38   CoderAdjoinFlag = 0x0001,
     39   CoderBlobSupportFlag = 0x0002,
     40   CoderDecoderThreadSupportFlag = 0x0004,
     41   CoderEncoderThreadSupportFlag = 0x0008,
     42   CoderEndianSupportFlag = 0x0010,
     43   CoderRawSupportFlag = 0x0020,
     44   CoderSeekableStreamFlag = 0x0040, /* deprecated */
     45   CoderStealthFlag = 0x0080,
     46   CoderUseExtensionFlag = 0x0100,
     47   CoderDecoderSeekableStreamFlag = 0x0200,
     48   CoderEncoderSeekableStreamFlag = 0x0400,
     49 
     50 } MagickInfoFlag;
     51 
     52 typedef Image
     53   *DecodeImageHandler(const ImageInfo *,ExceptionInfo *);
     54 
     55 typedef MagickBooleanType
     56   EncodeImageHandler(const ImageInfo *,Image *,ExceptionInfo *);
     57 
     58 typedef MagickBooleanType
     59   IsImageFormatHandler(const unsigned char *,const size_t);
     60 
     61 typedef struct _MagickInfo
     62 {
     63   char
     64     *name,
     65     *description,
     66     *version,
     67     *mime_type,
     68     *note,
     69     *module;
     70 
     71   DecodeImageHandler
     72     *decoder;
     73 
     74   EncodeImageHandler
     75     *encoder;
     76 
     77   ImageInfo
     78     *image_info;
     79 
     80   IsImageFormatHandler
     81     *magick;
     82 
     83   MagickFormatType
     84     format_type;
     85 
     86   MagickStatusType
     87     flags;
     88 
     89   SemaphoreInfo
     90     *semaphore;
     91 
     92   size_t
     93     signature;
     94 
     95   void
     96     *client_data;
     97 } MagickInfo;
     98 
     99 extern MagickExport char
    100   **GetMagickList(const char *,size_t *,ExceptionInfo *);
    101 
    102 extern MagickExport const char
    103   *GetMagickDescription(const MagickInfo *),
    104   *GetMagickMimeType(const MagickInfo *);
    105 
    106 extern MagickExport DecodeImageHandler
    107   *GetImageDecoder(const MagickInfo *) magick_attribute((__pure__));
    108 
    109 extern MagickExport EncodeImageHandler
    110   *GetImageEncoder(const MagickInfo *) magick_attribute((__pure__));
    111 
    112 extern MagickExport int
    113   GetMagickPrecision(void),
    114   SetMagickPrecision(const int);
    115 
    116 extern MagickExport MagickBooleanType
    117   GetImageMagick(const unsigned char *,const size_t,char *),
    118   GetMagickAdjoin(const MagickInfo *) magick_attribute((__pure__)),
    119   GetMagickBlobSupport(const MagickInfo *) magick_attribute((__pure__)),
    120   GetMagickDecoderSeekableStream(const MagickInfo *)
    121     magick_attribute((__pure__)),
    122   GetMagickDecoderThreadSupport(const MagickInfo *)
    123     magick_attribute((__pure__)),
    124   GetMagickEncoderSeekableStream(const MagickInfo *)
    125      magick_attribute((__pure__)),
    126   GetMagickEncoderThreadSupport(const MagickInfo *)
    127     magick_attribute((__pure__)),
    128   GetMagickEndianSupport(const MagickInfo *) magick_attribute((__pure__)),
    129   GetMagickRawSupport(const MagickInfo *) magick_attribute((__pure__)),
    130   GetMagickStealth(const MagickInfo *) magick_attribute((__pure__)),
    131   GetMagickUseExtension(const MagickInfo *) magick_attribute((__pure__)),
    132   IsMagickCoreInstantiated(void) magick_attribute((__pure__)),
    133   RegisterMagickInfo(MagickInfo *),
    134   UnregisterMagickInfo(const char *);
    135 
    136 extern const MagickExport MagickInfo
    137   *GetMagickInfo(const char *,ExceptionInfo *),
    138   **GetMagickInfoList(const char *,size_t *,ExceptionInfo *);
    139 
    140 extern MagickExport MagickInfo
    141   *AcquireMagickInfo(const char *, const char *, const char *);
    142 
    143 extern MagickExport void
    144   MagickCoreGenesis(const char *,const MagickBooleanType),
    145   MagickCoreTerminus(void);
    146 
    147 #if defined(__cplusplus) || defined(c_plusplus)
    148 }
    149 #endif
    150 
    151 #endif
    152