/* defines for "ColorDither" structure! */

#define PROC_ORDER     0
#define PROC_NEAR      1
#define PROC_FLOYD     2
#define PROC_JJN       3
#define PROC_STUCKI    4

#define CMAP_FIX       0
#define CMAP_USERDEF1  1
#define CMAP_USERDEF2  2
#define CMAP_OCTREEA   3
#define CMAP_OCTREE    4
#define CMAP_STATA     5
#define CMAP_STAT      6

typedef struct {
  unsigned      tocolors      : 16; /* # of color, range [4 .. 256]       */
  unsigned      process       :  4; /* type of processing algorithm       */
  unsigned      colormap      :  4; /* type of color computation          */
  unsigned      spec_active   :  1; /* activate installed values          */
  unsigned      spec_always   :  1; /* use always (also if no need)       */
  unsigned      spec_grey     :  1; /* dither to greys                    */
  unsigned      spec_noise    :  1; /* use noise reduction filter         */
  unsigned      spec_compress :  1; /* compress colormap to used colors   */
  unsigned      unused        :  3; /* for future use                     */
} ColorDither;



/* defines for "dither" field in "ImageOptions" structure! */

#define FS_Dither      1
#define JJN_Dither     2
#define Stk_Dither     3
#define Halftone       4
#define Ordereddither  5

/* defines for "full" field in "ImageOptions" structure! */

#define FULL_NO        0
#define FULL_ZOOM      1
#define FULL_REPEAT    2


typedef struct _ios{
  char         *name;         /* name (path) of image to load             */
  int           merged;       /* should merged to previous "image"        */
  int           atx, aty;     /* location to load/merge image at          */
  unsigned int  bright;       /* brightness multiplier in percentace      */
  unsigned int  clipx, clipy; /* area of image to be used                 */
  unsigned int  clipw, cliph; /* area of image, which is in used          */
  unsigned int  last_clipx;   /* (internal) set to null                   */
  unsigned int  last_clipy;   /* (internal) set to null                   */
  unsigned int  last_clipw;   /* (internal) set to null                   */
  unsigned int  last_cliph;   /* (internal) set to null                   */
  unsigned int  dither;       /* if image is to be dithered and how       */
  unsigned int  colors;       /* max # of colors to use for this image    */
                              /* simple color reduction algorithm         */
  int           rotate;	      /* # degrees to rotate, multiple of 90      */
  int           xzoom, yzoom; /* zoom promiles (1 by 1000)
                                 positiv number: realtiv zoom promiles
                                 negativ number: size of dest. (absolut)  */
  int           align;        /* (internal) always set to 16 on ATARI     */
  int           save;         /* save image using:
                                 1) monochrome routine (dither if need)
                                 2) color routine (color quantisation)
                                 3) true color routine                    */
  char         *savename;     /* name of the destination image            */
  int           autoname;     /* (internal) automatical name construction */
  unsigned int  full,         /* full image to area by zoom or repeatation*/
                fullw, fullh; /* full image area                          */
  ColorDither   colordither;  /* see above                                */
  Scaling       scalered;     /* see IMAGE.H                              */
  Scaling       scalegreen;
  Scaling       scaleblue;
  Scaling       scaleadjust;
  int           load_hexdump; /* load file as hexdump                     */
  struct _ios  *prev, *next;  /* double link structure list               */
  char          tc_saver   [14]; /* filename without path for saving mono */
  char          color_saver[14]; /* filename of module for saving color   */
  char          mono_saver [14]; /* filename of module for saving true col*/
} ImageOptions;
