home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
Utilities
/
ACDPlay
/
src
/
V1.5
/
ARexx
/
ACDPlay.h.BAK
next >
Wrap
Text File
|
1997-02-15
|
14KB
|
374 lines
/*
* ACDPlay - DER fantastische CDDA-Player für den Amiga
*
* Include V1.13
* passend zu ACDPlay.c V1.13
*
* Autor Version Datum Veränderungen
* ------- --------- -------- ------------------------------------------
* mak 0.11 22.09.96 Ersterstellung
* mak 0.12 23.09.96 alles dokumentiert
* mak 0.13 26.09.96 ACDPConfig-Struktur dazu
* MC3 0.14 28.09.96 Commodityspezifisches in Application-Struktur
* MC3 0.15 29.09.96 3 neue Config-Elemente (Commodity-Tooltypes)
* mak 0.16 07.10.96 Application.activewindow rausgenommen
* 08.10.96 ACDPConfig verändert
* MC3 0.17 15.10.96 CDStruct-Zeiger aus der Application-Struktur entfernt
* Flag-Word in Config- und Application-Struktur eingebaut
* MC3 0.18 16.10.96 CDStruct ist wieder drin...
* mak 0.19 18.10.96 Screennotifyspezifisches in App-Struktur eingefügt
* MC3 0.20 20.10.96 pubscreenname[] und pubscreenlist eingefügt
* 0.21 22.10.96 vorläufiges CDTitleNode
* mak 0.22 26.10.96 nicht lokalisierbare Texte hierher kopiert
* kleinere Änderungen
* MC3 0.23 26.10.96 time_percentage in CDStruct
* 31.10.96 time_curseconds in CDStruct
* 0.24 06.11.96 Neuigkeiten in CDStruct
* 07.11.96 String-Buffer eingefügt (Application), n. Fenster
* 0.25 09.11.96 '_'-Zeichen in Zahlen-Array eingefügt, n. Fenster
* 10.11.96 Neue Variable in App und Config: hotkeymode
* 0.26 11.11.96 Tooltypeflag-Variable
* 0.27 14.11.96 timemode in Application, menustrip nur in Application
* mak 0.28 23.11.96 ARexxport dazu
* MC3 0.29 24.11.96 ProgramTitleNode dazu
** 29.11.96 Noch ein Fenster
** 30.11.96 WinTitleBuffer erhöht (Titellänge erhöht)
* mak 0.30 20.11.96 Noch ein Fenster mehr
* Textbuffer ans Ende der AppStruct verlegt um Pointern
* an ungeraden Adressen vorzubeugen
* MC3 0.31 07.12.96 Node-Strukturen verändert
* 08.12.96 magicwbflag in app freigegeben
* 10.12.96 CDStruct und Config verändert
* 1.0 14.12.96 timebuf (o.ä.) vergrößert, Buffer für CD-Info-Gad zu haben
* 1.01 01.01.97 einiges geändert, u.a. in AppWin
* 04.01.97 2 neue Strukturen
*
* 1.1 26.01.97 Config-Struktur eingespart, etc, etc...
* 1.12 29.01.97 AppIcon-Zeugs eingebaut
* mak 1.13 02.02.97 CDxRequest Zeiger in CDStruct eingebaut
*
* MC3 14.02.97 Wichtig: Gadget-Define-Reihenfolge verändert!
* 15.02.97 struct DirNode dazu
*/
/********************
***** Konstanten **********************************************************
********************/
/* nicht lokalisierte Texte */
char PROG_NAME[] = "ACDPlay";
char *PROG_FULLNAME = PROG_VERSION + 7;
char *TEXT_MAIN_DIRECTCHOICE0[] = {"_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "1_0", NULL};
char *TEXT_MAIN_DIRECTCHOICE1[] = {"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", NULL};
/* Fenster */
#define ANZ_WINDOWS 8 /* Anzahl der Fenster insgesamt */
#define SIZE_WINDOW 18
#define SIZE_CONFIG (4 + ANZ_WINDOWS * SIZE_WINDOW + 4 + 4)
#define WINDOW_MAIN 0 /* Hauptfenster */
#define WINDOW_ABOUT 1 /* "Über"-Fenster */
#define WINDOW_CDINFO 2 /* CD-Informations-Fenster */
#define WINDOW_DRIVEINFO 3 /* Laufwerks-Informations-Fenster */
#define WINDOW_PUBSCREEN 4 /* PubScreen-Auswahl */
#define WINDOW_TITLES 5 /* Titelauswahl-Fenster */
#define WINDOW_EDIT 6 /* Fenster zum Editieren der CD-(Track)Titel */
#define WINDOW_PROGRAM 7 /* Titelprogrammierungsfenster */
#define WINDOW_VOLUME 8 /* "Lautstärke"-Fenster */
/* Verschiedenes */
#define LEFT 0 /* für AppWin-Struktur: */
#define TOP 1 /* minsize[LEFT] usw. */
#define WIDTH 2
#define HEIGHT 3
#define MINWIDTH_LISTVIEWWIN 100 /* Kleinste Größe für Listview-Fenster */
#define MINHEIGHT_LISTVIEWWIN 100
#define FAKEREQUESTSPACE 4
#define MAGIC 0x41434432 /* Zur Identifikation des Konfig-Files, */
#define HOTKEYMODE_SCREENTOFRONT 0 /* Default: ACDP-Screen nach vorne */
#define HOTKEYMODE_FRONTMOST 1 /* ACDP springt zum vordersten Screen */
#define HOTKEYMODE_HIDE 2 /* ACDPlay wird wieder verborgen */
#define EVENT_HOTKEYPRESSED 1 /* für die Commodity-Funktion, Hotkey wurde gedrückt */
#define EVENT_TIMER 2 /* Jede 1/10-Sekunde bekommt broker_mp ein Timer-Event */
#define BUTTONHEIGHT (app->font->ta_YSize + 6)
#define BUTTONSPACE 12
#define XOFFSET INTERWIDTH
#define YOFFSET (app->screen->WBorTop + app->font->ta_YSize + 1 + INTERHEIGHT)
#define WIDESTLETTER "M"
#define DISKPATHLENGTH 256 /* mehr verkraftet eine Zeile im CLI nicht */
#define MAXCDNAME 128 /* Gibt es nicht trotzdem so lange Pfade? */
#define MAXARTISTNAME 128
#define MAXTITLENAME 128
#define TIMEMODE_TRACKCUR 0
#define TIMEMODE_TRACKREM 1
#define TIMEMODE_ALLCUR 2
#define TIMEMODE_ALLREM 3
#define REPEATMODE_NOREP 0
#define REPEATMODE_REPTRACK 1
#define REPEATMODE_REPALL 2
#define REPEATMODE_REPAB 3
#define PLAYMODE_CD 0
#define PLAYMODE_RNDCD 1
#define PLAYMODE_PRG 2
#define PLAYMODE_RNDPRG 3
#define DEFAULTSEARCHSECONDS 10 /* Anzahl Sekunden, die ein 'Search' überspringt */
#define DEFAULTUPDATEDELAY 5 /* Anzahl 1/10-Sekunden */
/* Gadgets */
#define GADGET_MAIN_DIRECTCHOICE0 0 /* 10 Gadgets */
#define GADGET_MAIN_DIRECTCHOICE1 10 /* 10 Gadgets */
#define GADGET_MAIN_TITLESHOW 20
#define GADGET_MAIN_TRACKSHOW 21
#define GADGET_MAIN_INDEXSHOW 22
#define GADGET_MAIN_TIMESHOW 23
#define GADGET_MAIN_PLAYMODE 24
#define GADGET_MAIN_REPEATMODE 25
#define GADGET_MAIN_TRACKSLIDER 26
#define GADGET_MAIN_CDOUT 27
#define GADGET_MAIN_JUMPBWRD 28
#define GADGET_MAIN_JUMPFWRD 29
#define GADGET_MAIN_SRCHBWRD 30
#define GADGET_MAIN_SRCHFWRD 31
#define GADGET_MAIN_STOP 32
#define GADGET_MAIN_PAUSE 33
#define GADGET_MAIN_PLAY 34
#define GADGET_ABOUT_OK 0
#define GADGET_CDINFO_OK 0
#define GADGET_CDINFO_AUTHOR 1 /* Brauchen Textgadgets eine */
#define GADGET_CDINFO_TITLE 2 /* extra ID ? Von den empfängt */
#define GADGET_CDINFO_TRACKS 3 /* man doch sowieso nie Msgs. */
#define GADGET_CDINFO_TIME 4
#define GADGET_DRIVEINFO_OK 0
#define GADGET_DRIVEINFO_DEVICE 1 /* s.o. */
#define GADGET_DRIVEINFO_UNIT 2
#define GADGET_DRIVEINFO_VENDOR 3 /* Ja, brauchen sie. */
#define GADGET_DRIVEINFO_PRODUCT 4 /* Schließlich müssen sie mal */
#define GADGET_DRIVEINFO_SPECIFIC 5 /* verändert werden... */
#define GADGET_PUBSCREEN_LISTVIEW 0
#define GADGET_PUBSCREEN_UPDATE 1
#define GADGET_TITLES_LISTVIEW 0
#define GADGET_EDIT_TITLE 0
#define GADGET_EDIT_ARTIST 1
#define GADGET_EDIT_LISTVIEW 2
#define GADGET_EDIT_TRACKTITLE 3
#define GADGET_EDIT_SAVE 4
#define GADGET_PROGRAM_LVCD 0
#define GADGET_PROGRAM_LVPRG 1
#define GADGET_PROGRAM_COPYALL 2
#define GADGET_PROGRAM_DEL 3
#define GADGET_PROGRAM_LOAD 4
#define GADGET_PROGRAM_SAVE 5
#define GADGET_VOLUME_LEFT 0
#define GADGET_VOLUME_MASTER 1
#define GADGET_VOLUME_RIGHT 2
/* BOOL-ToolType-Flags */
/* hier werden verschiedene Flags von den Tooltypes gesetzt */
#define FLAG_TOOL_USEWINDOWBAR (1 << 0)
#define FLAG_TOOL_USESCREENBAR (1 << 1)
#define FLAG_TOOL_MWB (1 << 2)
#define FLAG_TOOL_QUITONCLOSE (1 << 3)
/* Flags für die unterschiedlichen GUI-Elemente im Hauptfenster */
#define FLAG_MAIN_DIRECTCHOICE0 (1 << 0)
#define FLAG_MAIN_DIRECTCHOICE1 (1 << 1)
#define FLAG_MAIN_TITLE (1 << 2)
#define FLAG_MAIN_TIME (1 << 3)
#define FLAG_MAIN_MODE (1 << 4)
#define FLAG_MAIN_PANEL (1 << 5)
#define FLAG_MAIN_TRACKSLIDER (1 << 6)
/* Flags für Application */
/* Application ist/war auf der Workbench geöffnet */
#define APPF_WORKBENCH (1 << 0)
/* Application wurde von der screennotify.library zum Schließen bewegt */
#define APPF_SNCLOSED (1 << 1)
/********************
***** Strukturen **********************************************************
********************/
/*------------------------------ BevelBox --------------------------------*/
struct BevelBox
{
struct BevelBox *bb_NextBevelBox;
WORD bb_LeftEdge;
WORD bb_TopEdge;
WORD bb_Width;
WORD bb_Height;
UBYTE bb_FrameType; /* BBFT_BUTTON, BBFT_RIDGE, BBFT_ICONDROPBOX, V39 */
BOOL bb_Recessed;
APTR bb_VisualInfo;
};
/*------------------------------ Scroll ----------------------------------*/
struct Scroll
{
char **Text;
BYTE *Flags; /* Flags für jeden Text einzeln, sehr unkomfortabel */
WORD LeftEdge;
WORD TopEdge;
WORD Width;
WORD Height;
TextAttr *Font;
/* interne Daten */
WORD p_height;
WORD p_pos;
struct RastPort *RPort;
struct Image Img;
};
/*------------------------------ ProgramTitleNode ------------------------*/
struct ProgramTitleNode
{
struct Node ptn_Node; /* ln_Name zeigt auf Titelnamen (Listen) */
BOOL ptn_randomplayed;
UBYTE ptn_track; /* Tracknummer */
};
/*------------------------------ DirNode ---------------------------------*/
struct DirNode
{
struct MinNode dn_Node;
char dn_Name[31];
};
/*------------------------------ CDStruct --------------------------------*/
struct CDStruct
{
ULONG unit; /* Unit des SCSI-Geräts */
ULONG lun;
CDRequest *cdrequest; /* Zeiger auf CDRequest-Struktur */
CDxRequest *cdx;
List *index; /* Zeiger auf CD-Index-Liste */
List *cdtitles; /* Zeiger auf Titel-Liste */
List *progtitles; /* Zeiger auf Programm-Liste */
ProgramTitleNode *actprognode; /* aktueller Track im Programm */
UBYTE searchseconds;
UBYTE updatedelay;
UBYTE timemode; /* Anzeigemodus - siehe oben */
UBYTE repeatmode;
UBYTE playmode;
BOOL useraction; /* Hat der User die Trackveränderung */
/* ausgelöst? wichtig f. Wiederholung */
UBYTE num_track; /* Anzahl Tracks */
UBYTE cur_track; /* aktueller Track */
UBYTE active; /* siehe cdr_active */
UBYTE time_percentage; /* Zeit des aktuellen Tracks in % */
/* wichtig für Trackslider */
ULONG time_curseconds; /* aktuelle Gesamtzeit in Sekunden */
char device[31];
char cdname[MAXCDNAME + 1]; /* Name der CD */
char artistname[MAXARTISTNAME + 1]; /* Name des Interpreten */
char diskpath[DISKPATHLENGTH + 1]; /* Pfadangabe für die CD-Titel */
};
/*------------------------------ AppWin ----------------------------------*/
struct AppWin
{
Window *window; /* Zeiger auf das Fenster */
/* Erst überprüfen ob überhaupt */
/* ein Fenster da ist */
BOOL winopen; /* ob das Fenster geöffnet werden soll */
UWORD minsize[4]; /* Größe und Position 1 */
UWORD maxsize[4]; /* Größe und Position 2 (ZIP) */
UWORD minwidth, minheight; /* Beschränkung bei Größenveränderung */
UWORD maxwidth, maxheight; /* des Fensters */
Gadget **gadget; /* Zeigerzeiger auf Gadget */
Gadget *gadgetlist; /* Zeiger auf Gadgetliste */
IntuiText *itext; /* IntuiText-Liste für Fenster */
Image *img; /* Image-Liste für das Fenster */
struct BevelBox *bbox;
};
/*------------------------------ Application -----------------------------*/
struct Application
{
Screen *screen; /* PublicScreen, */
/* auch um zu testen ob */
/* Application geöffnet ist */
List *pubscreenlist; /* Liste aller Public-Screens */
UWORD hotkeymode; /* Was tun bei Hotkey und Application offen? */
UWORD Flags; /* Flags für Application s.o. */
APTR visualinfo; /* VisualInfo für GadTools */
TextAttr *font; /* benutzter font */
struct AppWin appwin[ANZ_WINDOWS]; /* für jedes Window ein Feld */
Menu *menustrip; /* Menü für alle Fenster */
struct CDStruct *cdstr; /* Zeiger auf CDStruct-Struktur */
struct Scroll *scroller; /* für den Scroller im About-Fenster */
BOOL magicwbmode; /* wird noch nicht unterstützt */
UWORD flag_tool; /* Flags von speziellen Tooltypes */
UWORD flag_main; /* Enthält Flags für die GUI-Elemente in MAIN */
CxObj *broker; /* Commodity-Broker */
CxObj *filter_popkey;
CxObj *sender_popkey;
CxObj *translate_popkey;
CxObj *filter_timer;
CxObj *sender_timer;
BYTE cx_priority; /* Priorität -128 bis 127 */
BOOL cx_popup; /* Beim Start öffnen? */
APTR snhandle_wbench; /* Zeiger auf ScreenNotifyHandle für WB-Events */
/* APTR snhandle_closescr; */ /* Zeiger auf ScreenNotifyHandle für CloseScreen()-Events */
struct MsgPort *idcmp; /* shared IDCMP */
struct MsgPort *broker_mp; /* Messageport für Broker */
struct MsgPort *appicon_mp; /* Messageport für's AppIcon */
struct MsgPort *scrnotify_mp; /* Messageport für Screennotify Events */
struct MsgPort *arexx_mp; /* öffentlicher ARexxport 'ACDPLAY' */
struct AppIcon *appicon; /* Alles für's AppIcon */
struct DiskObject *diskobj;
char *progname; /* Zeiger auf Programmnamen */
char pubscreenname[MAXPUBSCREENNAME + 1]; /* Name des Public-Screens */
char winmaintitlebuf[MAXCDNAME + 50 + 3]; /* Möglicherweise keine gute Umsetzung, */
char wintitlestitlebuf[MAXCDNAME + MAXARTISTNAME + 3]; /* schreib' mal Deine Meinung.. */
char timeshowbuf[30]; /* für die Zeitanzeige */
/* ab 20 beginnt der andere Gad-Buffer */
char cx_popkey[41]; /* Input Description String */
};
/*------------------------------ MyPubScreenNode -------------------------*/
struct MyPubScreenNode
{
struct Node mpsn_Node; /* ln_Name zeigt auf den Screennamen */
char mpsn_pubscreenname[MAXPUBSCREENNAME + 1];
};
/*------------------------------ CDTitleNode -----------------------------*/
struct CDTitleNode
{
struct Node cdtn_Node; /* ln_Name zeigt auf Titelnamen */
BOOL cdtn_randomplayed; /* TRUE, wenn im Zufallsmodus schon gespielt worden */
char cdtn_titlename[MAXTITLENAME + 1];
};