[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

#ifndef INTUITION_PREFERENCES_H
#define INTUITION_PREFERENCES_H TRUE
/*
**  $Filename: intuition/preferences.h $
**  $Release: 2.04 Includes, V37.4 $
**  $Revision: 36.8 $
**  $Date: 91/05/08 $
**
**  Structure definition for old-style preferences
**
**  (C) Copyright 1985-1999 Amiga, Inc.
**          All Rights Reserved
*/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif

/* ======================================================================== */
/* === Preferences ======================================================== */
/* ======================================================================== */

/* these are the definitions for the printer configurations */
#define FILENAME_SIZE   30                      /* Filename size */

#define POINTERSIZE (1 + 16 + 1) * 2    /* Size of Pointer data buffer */

/* These defines are for the default font size.  These actually describe the
 * height of the defaults fonts.  The default font type is the topaz
 * font, which is a fixed width font that can be used in either
 * eighty-column or sixty-column mode.  The Preferences structure reflects
 * which is currently selected by the value found in the variable FontSize,
 * which may have either of the values defined below.  These values actually
 * are used to select the height of the default font.  By changing the
 * height, the resolution of the font changes as well.
 */
#define TOPAZ_EIGHTY 8
#define TOPAZ_SIXTY 9

struct Preferences
{
    /* the default font height */
    BYTE FontHeight;                    /* height for system default font  */

    /* constant describing what's hooked up to the port */
    UBYTE PrinterPort;                  /* printer port connection         */

    /* the baud rate of the port */
    UWORD BaudRate;                     /* baud rate for the serial port   */

    /* various timing rates */
    struct timeval KeyRptSpeed;                /* repeat speed for keyboard       */
    struct timeval KeyRptDelay;                /* Delay before keys repeat        */
    struct timeval DoubleClick;         /* Interval allowed between clicks */

    /* Intuition Pointer data */
    UWORD PointerMatrix[POINTERSIZE];  /* Definition of pointer sprite    */
    BYTE XOffset;                      /* X-Offset for active 'bit'       */
    BYTE YOffset;                      /* Y-Offset for active 'bit'       */
    UWORD color17;                     /***********************************/
    UWORD color18;                     /* Colours for sprite pointer      */
    UWORD color19;                     /***********************************/
    UWORD PointerTicks;                 /* Sensitivity of the pointer      */

    /* Workbench Screen colors */
    UWORD color0;                      /***********************************/
    UWORD color1;                      /*  Standard default colours       */
    UWORD color2;                      /*   Used in the Workbench         */
    UWORD color3;                       /***********************************/

    /* positioning data for the Intuition View */
    BYTE ViewXOffset;                  /* Offset for top lefthand corner  */
    BYTE ViewYOffset;                  /* X and Y dimensions              */
    WORD ViewInitX, ViewInitY;          /* View initial offset values      */

    BOOL EnableCLI;                     /* CLI availability switch */

    /* printer configurations */
    UWORD PrinterType;                 /* printer type            */
    UBYTE PrinterFilename[FILENAME_SIZE];/* file for printer       */

    /* print format and quality configurations */
    UWORD PrintPitch;                  /* print pitch                     */
    UWORD PrintQuality;                        /* print quality                   */
    UWORD PrintSpacing;                        /* number of lines per inch        */
    UWORD PrintLeftMargin;             /* left margin in characters       */
    UWORD PrintRightMargin;            /* right margin in characters      */
    UWORD PrintImage;                  /* positive or negative            */
    UWORD PrintAspect;                 /* horizontal or vertical          */
    UWORD PrintShade;                  /* b&w, half-tone, or color           */
    WORD PrintThreshold;                /* darkness ctrl for b/w dumps     */

    /* print paper descriptors */
    UWORD PaperSize;                   /* paper size                      */
    UWORD PaperLength;                 /* paper length in number of lines */
    UWORD PaperType;                    /* continuous or single sheet      */

    /* Serial device settings: These are six nibble-fields in three bytes */
    /* (these look a little strange so the defaults will map out to zero) */
    UBYTE   SerRWBits;   /* upper nibble = (8-number of read bits)      */
                       /* lower nibble = (8-number of write bits)     */
    UBYTE   SerStopBuf;  /* upper nibble = (number of stop bits - 1)    */
                       /* lower nibble = (table value for BufSize)    */
    UBYTE   SerParShk;   /* upper nibble = (value for Parity setting)   */
                       /* lower nibble = (value for Handshake mode)   */
    UBYTE   LaceWB;      /* if workbench is to be interlaced            */

    UBYTE   WorkName[FILENAME_SIZE];  /* temp file for printer          */

    BYTE    RowSizeChange;    /* affect NormalDisplayRows/Columns     */
    BYTE    ColumnSizeChange;

    UWORD    PrintFlags;      /* user preference flags */
    UWORD    PrintMaxWidth;   /* max width of printed picture in 10ths/in */
    UWORD    PrintMaxHeight;  /* max height of printed picture in 10ths/in */
    UBYTE    PrintDensity;    /* print density */
    UBYTE    PrintXOffset;      /* offset of printed picture in 10ths/inch */

    UWORD    wb_Width;                /* override default workbench width  */
    UWORD    wb_Height;               /* override default workbench height */
    UBYTE    wb_Depth;          /* override default workbench depth  */

    UBYTE    ext_size;          /* extension information -- do not touch! */
                            /* extension size in blocks of 64 bytes */
};


/* Workbench Interlace (use one bit) */
#define LACEWB                        (1<< 0)
#define LW_RESERVED     1               /* internal use only */

/* Enable_CLI */
#define SCREEN_DRAG   (1<<14)
#define MOUSE_ACCEL     (1L<<15)

/* PrinterPort */
#define PARALLEL_PRINTER 0x00
#define SERIAL_PRINTER  0x01

/* BaudRate */
#define BAUD_110      0x00
#define BAUD_300      0x01
#define BAUD_1200     0x02
#define BAUD_2400     0x03
#define BAUD_4800     0x04
#define BAUD_9600     0x05
#define BAUD_19200    0x06
#define BAUD_MIDI       0x07

/* PaperType */
#define FANFOLD       0x00
#define SINGLE          0x80

/* PrintPitch */
#define PICA          0x000
#define ELITE         0x400
#define FINE            0x800

/* PrintQuality */
#define DRAFT         0x000
#define LETTER          0x100

/* PrintSpacing */
#define SIX_LPI               0x000
#define EIGHT_LPI       0x200

/* Print Image */
#define IMAGE_POSITIVE        0x00
#define IMAGE_NEGATIVE  0x01

/* PrintAspect */
#define ASPECT_HORIZ  0x00
#define ASPECT_VERT     0x01

/* PrintShade */
#define SHADE_BW      0x00
#define SHADE_GREYSCALE       0x01
#define SHADE_COLOR     0x02

/* PaperSize */
#define US_LETTER     0x00
#define US_LEGAL      0x10
#define N_TRACTOR     0x20
#define W_TRACTOR     0x30
#define CUSTOM          0x40

/* New PaperSizes for V36: */
#define EURO_A0       0x50            /* European size A0: 841 x 1189 */
#define EURO_A1       0x60            /* European size A1: 594 x 841 */
#define EURO_A2       0x70            /* European size A2: 420 x 594 */
#define EURO_A3       0x80            /* European size A3: 297 x 420 */
#define EURO_A4       0x90            /* European size A4: 210 x 297 */
#define EURO_A5       0xA0            /* European size A5: 148 x 210 */
#define EURO_A6       0xB0            /* European size A6: 105 x 148 */
#define EURO_A7       0xC0            /* European size A7: 74 x 105 */
#define EURO_A8       0xD0            /* European size A8: 52 x 74 */


/* PrinterType */
#define CUSTOM_NAME           0x00
#define ALPHA_P_101             0x01
#define BROTHER_15XL            0x02
#define CBM_MPS1000           0x03
#define DIAB_630              0x04
#define DIAB_ADV_D25          0x05
#define DIAB_C_150            0x06
#define EPSON                 0x07
#define EPSON_JX_80           0x08
#define OKIMATE_20              0x09
#define QUME_LP_20              0x0A
/* new printer entries, 3 October 1985 */
#define HP_LASERJET           0x0B
#define HP_LASERJET_PLUS        0x0C

/* Serial Input Buffer Sizes */
#define SBUF_512        0x00
#define SBUF_1024     0x01
#define SBUF_2048     0x02
#define SBUF_4096       0x03
#define SBUF_8000       0x04
#define SBUF_16000      0x05

/* Serial Bit Masks */
#define       SREAD_BITS      0xF0 /* for SerRWBits   */
#define       SWRITE_BITS     0x0F

#define SSTOP_BITS      0xF0 /* for SerStopBuf  */
#define SBUFSIZE_BITS   0x0F

#define       SPARITY_BITS    0xF0 /* for SerParShk   */
#define SHSHAKE_BITS  0x0F

/* Serial Parity (upper nibble, after being shifted by
 * macro SPARNUM() )
 */
#define SPARITY_NONE   0
#define SPARITY_EVEN   1
#define SPARITY_ODD    2
/* New parity definitions for V36: */
#define SPARITY_MARK   3
#define SPARITY_SPACE    4

/* Serial Handshake Mode (lower nibble, after masking using
 * macro SHANKNUM() )
 */
#define SHSHAKE_XON    0
#define SHSHAKE_RTS      1
#define SHSHAKE_NONE   2

/* new defines for PrintFlags */

#define CORRECT_RED       0x0001  /* color correct red shades */
#define CORRECT_GREEN       0x0002  /* color correct green shades */
#define CORRECT_BLUE      0x0004  /* color correct blue shades */

#define CENTER_IMAGE        0x0008  /* center image on paper */

#define IGNORE_DIMENSIONS   0x0000 /* ignore max width/height settings */
#define BOUNDED_DIMENSIONS  0x0010  /* use max width/height as boundaries */
#define ABSOLUTE_DIMENSIONS 0x0020  /* use max width/height as absolutes */
#define PIXEL_DIMENSIONS    0x0040  /* use max width/height as prt pixels */
#define MULTIPLY_DIMENSIONS 0x0080 /* use max width/height as multipliers */

#define INTEGER_SCALING     0x0100  /* force integer scaling */

#define ORDERED_DITHERING   0x0000 /* ordered dithering */
#define HALFTONE_DITHERING  0x0200  /* halftone dithering */
#define FLOYD_DITHERING     0x0400 /* Floyd-Steinberg dithering */

#define ANTI_ALIAS          0x0800 /* anti-alias image */
#define GREY_SCALE2         0x1000 /* for use with hi-res monitor */

/* masks used for checking bits */

#define CORRECT_RGB_MASK    (CORRECT_RED|CORRECT_GREEN|CORRECT_BLUE)
#define DIMENSIONS_MASK     (BOUNDED_DIMENSIONS|ABSOLUTE_DIMENSIONS|PIXEL_DIMENSIONS|MULTIPLY_DIMENSIONS)
#define DITHERING_MASK      (HALFTONE_DITHERING|FLOYD_DITHERING)

#endif