home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Utilities / ACDPlay / src / V1.5 / ACDPlay.h < prev    next >
C/C++ Source or Header  |  1997-12-02  |  9KB  |  240 lines

  1. /*
  2. *    ACDPlay - DER fantastische CDDA-Player für den Amiga
  3. *
  4. *                        Include V1.2
  5. *                  passend zu ACDPlay.c V1.6
  6. *
  7. *  Autor   Version   Datum      Veränderungen
  8. * ------- --------- --------   ------------------------------------------
  9. *    mak        0.11    22.09.96    Ersterstellung
  10. *    mak        0.12    23.09.96    alles dokumentiert
  11. *    mak        0.13    26.09.96    ACDPConfig-Struktur dazu
  12. *    MC3        0.14    28.09.96     Commodityspezifisches in Application-Struktur
  13. *    MC3        0.15    29.09.96    3 neue Config-Elemente (Commodity-Tooltypes)
  14. *    mak        0.16    07.10.96    Application.activewindow rausgenommen
  15. *                    08.10.96    ACDPConfig verändert
  16. *    MC3        0.17    15.10.96    CDStruct-Zeiger aus der Application-Struktur entfernt
  17. *                                Flag-Word in Config- und Application-Struktur eingebaut
  18. *    MC3        0.18    16.10.96    CDStruct ist wieder drin...
  19. *    mak        0.19    18.10.96    Screennotifyspezifisches in App-Struktur eingefügt
  20. *    MC3        0.20    20.10.96    pubscreenname[] und pubscreenlist eingefügt
  21. *            0.21    22.10.96    vorläufiges CDTitleNode
  22. *    mak        0.22    26.10.96    nicht lokalisierbare Texte hierher kopiert
  23. *                                kleinere Änderungen
  24. *    MC3        0.23    26.10.96    time_percentage in CDStruct
  25. *                    31.10.96    time_curseconds in CDStruct
  26. *            0.24    06.11.96    Neuigkeiten in CDStruct
  27. *                    07.11.96    String-Buffer eingefügt (Application), n. Fenster
  28. *            0.25    09.11.96    '_'-Zeichen in Zahlen-Array eingefügt, n. Fenster
  29. *                    10.11.96    Neue Variable in App und Config: hotkeymode
  30. *            0.26    11.11.96    Tooltypeflag-Variable
  31. *            0.27    14.11.96    timemode in Application, menustrip nur in Application
  32. *    mak        0.28    23.11.96    ARexxport dazu
  33. *    MC3        0.29    24.11.96    ProgramTitleNode dazu
  34. **                    29.11.96    Noch ein Fenster
  35. **                    30.11.96    WinTitleBuffer erhöht (Titellänge erhöht)
  36. *    mak        0.30    20.11.96    Noch ein Fenster mehr
  37. *                                Textbuffer ans Ende der AppStruct verlegt um Pointern
  38. *                                an ungeraden Adressen vorzubeugen
  39. *    MC3        0.31    07.12.96    Node-Strukturen verändert
  40. *                    08.12.96    magicwbflag in app freigegeben
  41. *                    10.12.96    CDStruct und Config verändert
  42. *            1.0        14.12.96    timebuf (o.ä.) vergrößert, Buffer für CD-Info-Gad zu haben
  43. *            1.01    01.01.97    einiges geändert, u.a. in AppWin
  44. *                    04.01.97    2 neue Strukturen
  45. *
  46. *            1.1        26.01.97    Config-Struktur eingespart, etc, etc...
  47. *            1.12    29.01.97    AppIcon-Zeugs eingebaut
  48. *    mak        1.13    02.02.97    CDxRequest Zeiger in CDStruct eingebaut
  49. *
  50. *    MC3                14.02.97    Wichtig: Gadget-Define-Reihenfolge verändert!
  51. *                    15.02.97    struct DirNode dazu
  52. *                    16.02.97    Application noch größer...
  53. *    mak        1.14    25.03.97    Application für Asm umstrukturiert
  54. *                    28.03.97    Volumefenster dazu
  55. *                                Konfigversion auf 3 gesetzt
  56. *
  57. *    MC3        1.15    28.03.97    cdstr->searchmode dazugefügt
  58. *
  59. *    mak        1.16    03.03.97    cdstr->cur_index hinzugefügt
  60. *            1.17    27.04.97    app->orgprwin dazu
  61. *                                Pointer für 'rexxcmds.s' in die CDStruct eingebaut
  62. *            1.18    16.07.97    appwin->request / Busy-Flag dazu
  63. *
  64. *    MC3        1.2        13.11.97    neues Fenster hinzu -> Audio Save
  65. *                                außerdem viele neue Variablen für's SCSI-Kopieren
  66.  */
  67.  
  68. /********************
  69. ***** Konstanten **********************************************************
  70.  ********************/
  71.  
  72. /* nicht lokalisierte Texte */
  73. char PROG_NAME[]    = "ACDPlay";
  74.  
  75. char *TEXT_MAIN_DIRECTCHOICE0[]    = {"_1",  "_2",  "_3",  "_4",  "_5",  "_6",  "_7",  "_8",  "_9",  "1_0", NULL};
  76. char *TEXT_MAIN_DIRECTCHOICE1[]    = {"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", NULL};
  77.  
  78. /********************
  79. ***** Strukturen **********************************************************
  80.  ********************/
  81.  
  82. /*------------------------------ BevelBox --------------------------------*/
  83. struct BevelBox
  84. {
  85.     struct BevelBox        *bb_NextBevelBox;
  86.     WORD                bb_LeftEdge;
  87.     WORD                bb_TopEdge;
  88.     WORD                bb_Width;
  89.     WORD                bb_Height;
  90.     UBYTE                bb_FrameType;    /* BBFT_BUTTON, BBFT_RIDGE, BBFT_ICONDROPBOX, V39 */
  91.     BOOL                bb_Recessed;
  92.     APTR                bb_VisualInfo;
  93. };
  94. /*------------------------------ Scroll ----------------------------------*/
  95. struct Scroll
  96. {
  97.     char                 **Text;
  98.     BYTE                *Flags;    /* Flags für jeden Text einzeln, sehr unkomfortabel */
  99.     WORD                LeftEdge;
  100.     WORD                TopEdge;
  101.     WORD                Width;
  102.     WORD                Height;
  103.     TextAttr            *Font;
  104.  
  105.     /* interne Daten */
  106.     WORD                p_height;
  107.     WORD                p_pos;
  108.     struct RastPort        *RPort;
  109.     struct Image        Img;
  110. };
  111.  
  112.  
  113. /*------------------------------ CDStruct --------------------------------*/
  114. struct CDStruct
  115. {
  116.     ULONG        unit;                    /* Unit des SCSI-Geräts */
  117.     ULONG        lun;
  118.     CDxRequest    *cdx;                    /* <- bis hierhin nicht ändern */
  119.     List        *cdtitles;                /* Zeiger auf Titel-Liste */
  120.     List        *progtitles;            /* Zeiger auf Programm-Liste */
  121.     ProgramTitleNode    *actprognode;    /* aktueller Track im Programm */
  122.  
  123.     UBYTE        searchseconds;
  124.     UBYTE        updatedelay;
  125.     UBYTE        searchmode;
  126.     UBYTE        timemode;                /* Anzeigemodus - siehe oben */
  127.     UBYTE        repeatmode;
  128.     UBYTE        playmode;
  129.     UBYTE        fileformat;                /* für Audio-Save */
  130.     UBYTE        freq;                    /* -||- */
  131.  
  132.     BOOL        useraction;                /* Hat der User die Trackveränderung  */
  133.                                         /* ausgelöst? wichtig f. Wiederholung */
  134.  
  135.     UBYTE        num_track;                /* Anzahl Tracks */
  136.     UBYTE        cur_track;                /* aktueller Track */
  137.     UBYTE        active;                    /* siehe cdx_Active */
  138.     UBYTE        time_percentage;        /* Zeit des aktuellen Tracks in % */
  139.                                         /* wichtig für Trackslider */
  140.     ULONG        time_curseconds;        /* aktuelle Gesamtzeit in Sekunden */
  141.  
  142.     char         *cdnameptr;                /* Damit sich die CDStruct ändern kann, ohne daß */
  143.     char         *artistptr;                /* das Asm-Zeugs neu gemacht werden muß */
  144.  
  145.     UBYTE        a_track, b_track;        /* für A-B-Repeat */
  146.     LONG        a_adr, b_adr;            /* für A-B-Repeat */
  147.  
  148.     UBYTE        cur_index;                /* aktueller Index (ist hier, damit LONGs an geraden Adressen liegen) */
  149.  
  150.     char        buf_cddb_id[10];        /* CD-ID für die CDDB-Database */
  151.  
  152.     char        buf_ab_time_a[16];
  153.     char        buf_ab_time_b[16];
  154.  
  155.     char        buf_copy_size[20];
  156.  
  157.     char        device[31];
  158.     char        cdname[MAXCDNAME + 1];    /* Name der CD */
  159.     char        artistname[MAXARTISTNAME + 1];    /* Name des Interpreten */
  160.     char        diskpath[DISKPATHLENGTH + 1];    /* Pfadangabe für die CD-Titel */
  161. };
  162. /*------------------------------ AppWin ----------------------------------*/
  163. struct AppWin
  164. {
  165.     Window        *window;                /* Zeiger auf das Fenster */
  166.                                         /* Erst überprüfen ob überhaupt */
  167.                                         /* ein Fenster da ist */
  168.     BOOL        winopen;                /* ob das Fenster geöffnet werden soll */
  169.     UWORD         minsize[4];                /* Größe und Position 1 */
  170.     UWORD         maxsize[4];                /* Größe und Position 2 (ZIP) */
  171.     UWORD        minwidth, minheight;    /* Beschränkung bei Größenveränderung */
  172.     UWORD        maxwidth, maxheight;    /* des Fensters */
  173.     Gadget        **gadget;                /* Zeigerzeiger auf Gadget */
  174.     Gadget        *gadgetlist;            /* Zeiger auf Gadgetliste */
  175.     IntuiText    *itext;                    /* IntuiText-Liste für Fenster */
  176.     Image        *img;                    /* Image-Liste für das Fenster */
  177.     struct BevelBox *bbox;
  178.     Requester        *request;                /* zum Blockieren von Fenstern */
  179. };
  180. /*------------------------------ Application -----------------------------*/
  181. struct Application
  182. {
  183.     Screen            *screen;                /* PublicScreen, */
  184.                                             /* auch um zu testen ob */
  185.                                             /* Application geöffnet ist */
  186.     List             *pubscreenlist;            /* Liste aller Public-Screens */
  187.  
  188.     UWORD            hotkeymode;                /* Was tun bei Hotkey und Application offen? */
  189.     UWORD            Flags;                    /* Flags für Application s.o. */
  190.     APTR            visualinfo;                /* VisualInfo für GadTools */
  191.     TextAttr        *font;                    /* benutzter font */
  192.  
  193.     struct MsgPort    *idcmp;                    /* shared IDCMP */
  194.     struct MsgPort    *broker_mp;                /* Messageport für Broker */
  195.     struct MsgPort    *appicon_mp;            /* Messageport für's AppIcon */
  196.     struct MsgPort  *scrnotify_mp;            /* Messageport für Screennotify Events */
  197.     struct MsgPort    *arexx_mp;                /* öffentlicher ARexxport 'ACDPLAY' */
  198.  
  199.     struct CDStruct *cdstr;                    /* Zeiger auf CDStruct-Struktur */
  200.                                             /* <- bis hierhin nicht ändern! */
  201.     struct Scroll    *scroller;                /* für den Scroller im About-Fenster */
  202.  
  203.     struct AppWin    appwin[ANZ_WINDOWS];    /* für jedes Window ein Feld */
  204.     struct AppAsl    appasl[ANZ_ASL];        /* Daten für ASL-Requester */
  205.     Menu            *menustrip;                /* Menü für alle Fenster */
  206.  
  207.     BYTE            edit_pos;                /* Welche Position im Edit-Window? */
  208.     BOOL            magicwbmode;             /* wird noch nicht unterstützt */
  209.     UWORD            flag_tool;                /* Flags von speziellen Tooltypes */
  210.     UWORD            flag_main;                /* Enthält Flags für die GUI-Elemente in MAIN */
  211.  
  212.     CxObj            *broker;                /* Commodity-Broker */
  213.     CxObj            *filter_popkey;
  214.     CxObj            *sender_popkey;
  215.     CxObj            *translate_popkey;
  216.     CxObj            *filter_timer;
  217.     CxObj            *sender_timer;
  218.     BYTE            cx_priority;            /* Priorität -128 bis 127 */
  219.     BOOL            cx_popup;                /* Beim Start öffnen? */
  220.  
  221.     APTR            snhandle_wbench;        /* Zeiger auf ScreenNotifyHandle für WB-Events */
  222.  /*    APTR            snhandle_closescr;    */    /* Zeiger auf ScreenNotifyHandle für CloseScreen()-Events */
  223.  
  224.     struct List        *arexxdir;                /* Zeiger auf Dateinamenliste */
  225.  
  226.     struct AppIcon    *appicon;                /* Alles für's AppIcon */
  227.     struct DiskObject    *diskobj;
  228.     char            *progname;                /* Zeiger auf Programmnamen */
  229.     struct Window    *orgprwin;                /* Zeiger auf das Fenster das ursprünglich in der Process-Struktur stand */
  230.                                             /* NICHT VERÄNDERN! */
  231.     char            pubscreenname[MAXPUBSCREENNAME + 1]; /* Name des Public-Screens */
  232.     char            winmaintitlebuf[MAXCDNAME + 50 + 3];        /* Möglicherweise keine gute Umsetzung, */
  233.     char            wintitlestitlebuf[MAXCDNAME + MAXARTISTNAME + 3];    /* schreib' mal Deine Meinung.. */
  234.     char            timeshowbuf[30];        /* für die Zeitanzeige */
  235.                                             /* ab 20 beginnt der andere Gad-Buffer */
  236.     char            cx_popkey[41];            /* Input Description String */
  237. };
  238.  
  239.  
  240.