/*
 * Scan 'C' Header File
 * Written by Thomas Krehbiel
 *
 * Preview modules.
 *
 */

#ifndef SCAN_PREV_H


/*
 * Colors for the VM_Color() function:
 */

enum VM_Col {
   VCOL_COLOR = 0,      /* 24-Bit Color */
   VCOL_GREY,           /* 8-Bit Grey */
   VCOL_RED,            /* 8-Bit Red */
   VCOL_GREEN,          /* 8-Bit Green */
   VCOL_BLUE,           /* 8-Bit Blue */
   VCOL_3BIT,           /* Obsolete - do not use */
   VCOL_1BIT            /* Obsolete - do not use */
};

/*
 * Structure returned by VM_Identification() function:
 */
struct PreviewInfo {
   ULONG       Flags;         /* Various flags - see below */
   int       (*Open)(struct NewScreen *, struct Screen **, struct Window **);       /* Custom open hook */
   int       (*Close)(struct Screen *, struct Window *);      /* Custom close hook */

   /* below here is not implemented and only for possible future expansion */

   int       (*Point)();      /* Custom point drawing hook */
   int       (*Box)();        /* Custom box drawing hook */
   int       (*Line)();       /* Custom line drawing hook */
   int       (*Bezier)();     /* Custom bezier curve drawing hook */
   int       (*PutBrush)();   /* Custom brush drawing hook */
   int       (*RemBrush)();   /* Custom brush erasing hook */

   WORD        AspectX,       /* Horizontal pixel aspect ratio */
               AspectY;       /* Vertical pixel aspect ratio */

   UBYTE       GhostFrontPen, /* Ghosted area front pen (unused) */
               GhostBackPen,  /* Ghosted area back pen (unused) */
               pad1,
               pad2;

   ULONG       Reserved[30];  /* Reserved for future expansion */
};

#define VF_NODBUF       0x01  /* Do not double-buffer preview */
#define VF_FULLWIDTH    0x02  /* Redraw full width only (eg. HAM) */
#define VF_PRIVATE      0x04  /* Private - do not touch ever! */
#define VF_WORDALIGN    0x08  /* All renders should be word-aligned */
#define VF_NOBRUSH      0x10  /* Preview can't support brushes */

#ifdef SCANPRIVATE

/*
 * Palette Modes (Internal Use Only)
 */
enum PMode_Tags {
   PMODE_NORMAL = 0,    /* Nothing goin' on */
   PMODE_COPY,          /* Copying */
   PMODE_SWAP,          /* Swapping */
   PMODE_SPREAD,        /* Spreading */
   PMODE_RANGE          /* Ranging */
};

#endif

#define SCAN_PREV_H
#endif
