Alex: Added the new sources for terminatorX 3.5
[terminatorX.git] / src / main.cc
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999  Alexander K÷nig
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18     
19     File: main.c
20     
21     Description: This contains the main() function. All the initializing
22                  happens here.
23     
24     Changes:
25     
26     19 Mar 1999: Applied a patch by Andrew C. Bul+hac?k (eMail: acb@zikzak.net)
27                  that fixes wavfile reading routine for the overreading bug.
28                  
29     20 Mar 1999: Big endian support.
30     
31     23 Mar 1999: display of new keys (<-, ->)
32     
33     4 October 1999: Rewrite ;) - back to C++
34 */
35
36 #include <stdio.h>
37 #include "tX_mastergui.h"
38 #include <malloc.h>
39 #include <math.h>
40 #include <stdio.h>
41 #ifndef WIN32
42 #include <unistd.h>
43 #endif
44
45 #ifdef USE_3DNOW
46 #include "3dnow.h"
47 #endif
48
49 #include "endian.h"
50 #include "tX_types.h"
51 #include "tX_wavfunc.h"
52 #include "tX_global.h"
53 #include "version.h"
54 #include "tX_dialog.h"
55 #include <gtk/gtk.h>
56 #include <glib.h>
57
58 GTimer *my_time;
59 gint idle_tag;
60 /* main(): */
61
62 void idle()
63 {
64         gdouble time;
65         gulong ms;
66         
67         time=g_timer_elapsed(my_time, &ms);
68         if (time > 1.5)
69         {
70                 gtk_idle_remove(idle_tag);
71                 destroy_about();                
72                 display_mastergui();            
73         }
74 }
75
76 int main(int argc, char **argv)
77 {
78 #ifndef WIN32
79         fprintf(stderr, "%s, Copyright(C)1999 Alexander König, alkoit00@fht-esslingen.de\n", VERSIONSTRING);
80 #else
81         fprintf(stderr, "%s, Copyright(C)1999 Alexander König, alkoit00@fht-esslingen.de\n", VERSIONSTRING);
82         setenv ("CYGWIN", "binmode");
83 #endif
84         fprintf(stderr, "terminatorX comes with ABSOLUTELY NO WARRANTY - for details read the license.\n");
85
86 #ifdef USE_3DNOW
87         if (mm_support()!=5)
88         {
89                 printf("3DNow! not detected. Giving up.\n");
90                 return(1);
91         }
92         else
93         printf("3DNow! accelerations available.\n");    
94 #endif
95
96 #ifndef CREATE_BENCHMARK
97
98         gtk_init (&argc, &argv);         
99
100         load_globals();         
101
102         if (globals.show_nag)
103         {       
104                 show_about(1);
105
106                 my_time=g_timer_new();
107                 g_timer_start(my_time);         
108         
109                 idle_tag=gtk_idle_add((GtkFunction)idle, NULL);
110         }
111         /*      
112         if (strlen(globals.scratch_name))
113         {
114                 fprintf (stderr, "Loading: %s\n", globals.scratch_name);
115                 if (load_wav(globals.scratch_name, &globals.scratch_data, &globals.scratch_size))
116                 {
117                         strcpy(globals.scratch_name , "");
118                         globals.scratch_size=0;
119                         globals.scratch_len=0;
120                 }
121                 {
122                         globals.scratch_len=globals.scratch_size/sizeof(int16_t);
123                 }
124         }
125
126         if  (strlen(globals.loop_name))
127         {
128                 fprintf (stderr, "Loading: %s\n", globals.loop_name);
129                 if (load_wav(globals.loop_name, &globals.loop_data, &globals.loop_size))
130                 {
131                         strcpy(globals.loop_name , "");
132                         globals.loop_size=0;
133                         globals.loop_len=0;
134                         globals.do_mix=0;
135                 }
136                 {
137                         globals.loop_len=globals.loop_size/sizeof(int16_t);
138                 }
139         }
140         else
141         {
142                 globals.do_mix=0;
143         } */
144         
145         globals.rec_buffer=0;
146                 
147         create_mastergui(globals.width, globals.height);
148                 
149         if (!globals.show_nag)  display_mastergui();
150                 
151         gtk_main();
152
153         if (globals.scratch_data) free(globals.scratch_data);
154         if (globals.loop_data) free(globals.loop_data);
155         if (globals.rec_buffer) free(globals.rec_buffer);
156         
157         store_globals();
158
159         fprintf(stderr, "Have a nice life.\n");
160         
161         return (0);
162 #else
163 #endif
164         return (0);
165 }