13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
27ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dedicated to making software imaging solutions freely available.
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  You may not use this file except in compliance with the License.
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  obtain a copy of the License at
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    http://www.imagemagick.org/script/license.php
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Unless required by applicable law or agreed to in writing, software
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  distributed under the License is distributed on an "AS IS" BASIS,
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  See the License for the specific language governing permissions and
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  limitations under the License.
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImageMagick pixel wand API.
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
1883bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#ifndef MAGICKWAND_MAGICK_WAND_PRIVATE_H
1983bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#define MAGICKWAND_MAGICK_WAND_PRIVATE_H
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(__cplusplus) || defined(c_plusplus)
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern "C" {
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MagickWandId  "MagickWand"
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   (((i) & 0xfff) == 0) || \
283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1))))
297694fb099bf0055f25d62cb5429984e7593d0ae8cristy#define ThrowWandException(severity,tag,context) \
307694fb099bf0055f25d62cb5429984e7593d0ae8cristy{ \
317694fb099bf0055f25d62cb5429984e7593d0ae8cristy  (void) ThrowMagickException(wand->exception,GetMagickModule(),severity, \
327694fb099bf0055f25d62cb5429984e7593d0ae8cristy    tag,"`%s'",context); \
337694fb099bf0055f25d62cb5429984e7593d0ae8cristy  return(MagickFalse); \
347694fb099bf0055f25d62cb5429984e7593d0ae8cristy}
35369879c63719c63274b59a3b7893c1fbffde73b3cristy#define ThrowWandFatalException(severity,tag,context) \
36369879c63719c63274b59a3b7893c1fbffde73b3cristy{ \
37369879c63719c63274b59a3b7893c1fbffde73b3cristy  ExceptionInfo \
38fa589d6096099562cbc2bc14e508931968a8c055dirk    *fatal_exception; \
39369879c63719c63274b59a3b7893c1fbffde73b3cristy \
40fa589d6096099562cbc2bc14e508931968a8c055dirk  fatal_exception=AcquireExceptionInfo(); \
41fa589d6096099562cbc2bc14e508931968a8c055dirk  (void) ThrowMagickException(fatal_exception,GetMagickModule(),severity,tag, \
42369879c63719c63274b59a3b7893c1fbffde73b3cristy    "`%s'",context); \
43fa589d6096099562cbc2bc14e508931968a8c055dirk  CatchException(fatal_exception); \
44fa589d6096099562cbc2bc14e508931968a8c055dirk  (void) DestroyExceptionInfo(fatal_exception); \
45369879c63719c63274b59a3b7893c1fbffde73b3cristy  MagickWandTerminus(); \
46369879c63719c63274b59a3b7893c1fbffde73b3cristy  _exit((int) (severity-FatalErrorException)+1); \
47369879c63719c63274b59a3b7893c1fbffde73b3cristy}
483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
493ed852eea50f9d4cd633efb8c2b054b8e33c253cristystruct _MagickWand
503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
51bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    id;
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
55151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy    name[MagickPathExtent];  /* Wand name to use for MagickWand Logs */
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
57a89dd1754cb0d91d27735def18faff913a369be4anthony  Image
5831f1bf7bb6ee2698a2afab42ee0329b11663636canthony    *images;          /* The images in this wand - also the current image */
593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImageInfo
61a89dd1754cb0d91d27735def18faff913a369be4anthony    *image_info;      /* Global settings used for images in Wand */
623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6343f425dd7d5b33887726982b28ebfa06f5560636anthony  ExceptionInfo
6443f425dd7d5b33887726982b28ebfa06f5560636anthony    *exception;
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
6745083311df05d1400d94bdf855252fff6320fe06anthony    insert_before,    /* wand set to first image, prepend new images */
6845083311df05d1400d94bdf855252fff6320fe06anthony    image_pending,    /* this image is pending Next/Previous Iteration */
69a89dd1754cb0d91d27735def18faff913a369be4anthony    debug;            /* Log calls to MagickWand library */
70a89dd1754cb0d91d27735def18faff913a369be4anthony
71bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    signature;
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy};
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(__cplusplus) || defined(c_plusplus)
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
80