/*
 * ScreenMode.h   enthält Deklarationen von Konstanten und Strukturen,
 *                die von anderen Funktionen gebraucht werden.
 *
 * $Id: ScreenMode.h,v 1.3 1993/07/09 00:42:20 David_Göhler Exp David_Göhler $
 */

#ifndef VILINTUISUP_SCREENMODE_H
#define VILINTUISUP_SCREENMODE_H

#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif

#define VIL_MODENAMELEN 40         /* Zeichenzahl des Listview-Gadgets  */

/*
 * Struktur zur Verwaltung von ScreenModes in einem normalen Listview
 * Da eine Exec-Node noch keine Speicherplatz für einen String enthält
 * (sie hat nur einen Zeiger auf einen String, aber keine Platz dafür)
 * muß man diesen der Node anfügen. Das gleiche gilt verständlicherweise
 * für die DisplayID.
 */

struct VilCustomModeNode {             /* Die Struktur heißt Zeile       */
    struct Node Node;                  /* Zur Verkettung untereinander   */
    char        Text[VIL_MODENAMELEN]; /* ZEICHENZAHL Zeichen Platz      */
    ULONG       DisplayID;             /* ScreenModus-Display-ID         */
    UWORD       Width;                 /* Breite dieses Modus            */
    UWORD       Height;                /* Höhe dieses Modus              */
    UWORD       Depth;                 /* Tiefe dieses Modus             */
};

/*
 * Für das spezielle ScreenMode-Fenster der VilIntuiSup-Library kann
 * man ein TagItem-Array angeben. Hierüber läßt sich eine Auswahl
 * treffen, was für Texte ausgegeben werden und welche ScreenModes im
 * Fenster erscheinen.
 *
 * Im Hilfstext sollten "\n" vorkommen, wenn er länger wird.
 *
 * Font- und Fenstereinstellungen (Größe, Auswahl) kann man momentan
 * nicht treffen. Als Font wird der System-Default-Font verwendet.
 * Das Fenster wird immer mittig auf dem sichtbaren Bildschirmteil
 * des Default-Public-Screens geöffnet (wichtig bei Auto-Rollen-Screens).
 * Die Breite des Fensters wird durch die Breite des breitesten
 * Eintrags im gültigen Font errechnet. Die Höhe wird so gewählt, das
 * höchstens 12 Zeilen im Listview zu sehen sind.
 */

#define TAVIS_FIRSTITEM         TAG_USER + 4711 /* TAVIS = TagItemVilIntuiSup */

/****** Values for filtering alien modes *********************/
#define TAVIS_MINDEPTH          TAVIS_FIRSTITEM +  0
#define TAVIS_MAXDEPTH          TAVIS_FIRSTITEM +  1
#define TAVIS_MINHEIGHT         TAVIS_FIRSTITEM +  2
#define TAVIS_MAXHEIGHT         TAVIS_FIRSTITEM +  3
#define TAVIS_MINWIDTH          TAVIS_FIRSTITEM +  4
#define TAVIS_MAXWIDTH          TAVIS_FIRSTITEM +  5

/****** Values for string constants **************************/
#define TAVIS_WINDOWTITLE       TAVIS_FIRSTITEM +  6

#define TAVIS_LISTVIEW          TAVIS_FIRSTITEM +  7
#define TAVIS_OKGADGET          TAVIS_FIRSTITEM +  8
#define TAVIS_CANCELGADGET      TAVIS_FIRSTITEM +  9

#define TAVIS_HELP_TEXT         TAVIS_FIRSTITEM +  10
#define TAVIS_ABOUT_TEXT        TAVIS_FIRSTITEM +  11
#define TAVIS_NOTICE_TEXT       TAVIS_FIRSTITEM +  12
#define TAVIS_CHOOSE_TEXT       TAVIS_FIRSTITEM +  13

#define TAVIS_MENU_QUIT         TAVIS_FIRSTITEM +  14
#define TAVIS_MENU_HELP         TAVIS_FIRSTITEM +  15
#define TAVIS_MENU_ABOUT        TAVIS_FIRSTITEM +  16
#define TAVIS_MENU_PROJECT      TAVIS_FIRSTITEM +  17

/****** Values for special functions *************************/
#define TAVIS_CUSTOM_LIST       TAVIS_FIRSTITEM +  20

/*
 * Der neuen Funktion VillageModeID kann man diverse
 * TagItems übergeben. Die neuen IDs werden im folgenden
 * definiert. Die bereits definierten TAVIS_MIN/MAX...-
 * TagItems können auch bei VillageModeID verwendet werden.
 *
 * Nicht alle TagItems lassen sich mit allen anderen
 * frei kombinieren. Im Zweifelsfall hat das zuerst genannte
 * Tag Vorrang.
 */

/****** Values for screen handling ***************************/
#define TAVIS_SCREEN_HEIGHT     TAVIS_FIRSTITEM +  30
#define TAVIS_SCREEN_WIDTH      TAVIS_FIRSTITEM +  31
#define TAVIS_SCREEN_DEPTH      TAVIS_FIRSTITEM +  32
#define TAVIS_SCREEN_MODEID     TAVIS_FIRSTITEM +  33

/* use this Tag in conjuntion with the above */
#define TAVIS_BEST_MODEID       TAVIS_FIRSTITEM +  34

/* to open a screen behind all others */
#define TAVIS_OPEN_BEHIND       TAVIS_FIRSTITEM +  35

/* if you want autoscroll, set this to TRUE and */
/* suplly MODEID, DEPTH, HEIGHT and WIDTH */
#define TAVIS_AUTOSCROLL        TAVIS_FIRSTITEM +  36

/* if it is ok to get a smaller screen than the desired one */
/* set ti_Data to TRUE, default ist TRUE. */
#define TAVIS_ALLOW_FALLBACK    TAVIS_FIRSTITEM +  37

/* if you want to get additional memory on the board */
/* supply a pointer to a ULONG, where the desired size */
/* is written. After allocation, you will find an */
/* offset to the first adress of the screen you can get */
/* via LockVillageScreen in the ULONG. If the offset is */
/* zero, the allocation failed. The offset is only valid, */
/* if the screen is locked. */
#define TAVIS_ADDITIONAL_MEM    TAVIS_FIRSTITEM +  38

/* to here about errors, supply the address of a ULONG */
/* for #define's see below */
#define TAVIS_ERROR_CODE        TAVIS_FIRSTITEM +  39

/* if you want to get two screens, you can easily switch */
#define TAVIS_DOUBLE_BUFFER     TAVIS_FIRSTITEM +  40

/* to supply an old style struct Dimensions structure */
/* ti_Data should be a pointer to the structure */
#define TAVIS_DM_STRUCT         TAVIS_FIRSTITEM +  41

/****** Error Codes for TAVIS_ERROR_CODE *********************/
#define TAVIS_ERR_OK                    0  /* all O.K. */
#define TAVIS_ERR_NOMEM                 1  /* not enough memory for screen */
#define TAVIS_ERR_MODE_NOT_AVAILABLE    2  /* Mode with ModeID not present */
#define TAVIS_ERR_DIM_TOO_BIG           3  /* dimensions are too big */
#define TAVIS_ERR_DIM_TOO_DEPTH         4  /* color depth is too big */
#define TAVIS_ERR_DOUBLE_BUF_TOO_BIG    5  /* not enough memory for doublebuf */
#define TAVIS_ERR_CANT_OPEN_SCREEN      6  /* original OpenScreen failed */

/****** Values for VillageScreenData *************************/

#define TAVIS_SD_SCREEN_DEPTH      TAVIS_FIRSTITEM +   0
#define TAVIS_SD_SCREEN_MEMSIZE    TAVIS_FIRSTITEM +   1
#define TAVIS_SD_CARD_MEMSIZE      TAVIS_FIRSTITEM +   2
#define TAVIS_SD_CARD_SEGMENTED    TAVIS_FIRSTITEM +   3

#endif /* VILINTUISUP_SCREENMODE_H */
