Checked in terminatorX pre-3.65 - finally ;) - Alex
[terminatorX.git] / src / tX_global.c
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999, 2000  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: tX_global.c
20  
21     Description:  This file contains the routines for handling the
22                   "globals" block. Intializing, reading setup from
23                   disk and storing it.
24                   
25     Changes:
26     
27     21 Jul 1999: introduced the lowpass globals.                          
28 */    
29
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include "tX_types.h"
33 #include "tX_global.h"
34 #include "string.h"
35
36 tx_global globals;
37
38 void get_rc_name(char *buffer)
39 {
40         strcpy(buffer,"");
41         
42         if (getenv("HOME"))
43         {
44                 strcpy(buffer, getenv("HOME"));
45                 if (buffer[strlen(buffer)-1]!='/')
46                 strcat(buffer, "/");
47         }
48         strcat(buffer, ".terminatorX3rc.bin");
49 }
50
51 void load_globals()
52 {
53         char rc_name[PATH_MAX]="";
54         FILE *rc;
55
56         strcpy(globals.audio_device, "/dev/dsp");
57         
58         strcpy(globals.xinput_device, "");
59         globals.xinput_enable=0;
60         
61         globals.update_idle=18;
62         globals.update_delay=1;
63         
64         globals.buff_no=2;
65         globals.buff_size=8;
66                 
67         globals.sense_cycles=12;
68         
69         globals.mouse_speed=0.8;
70         
71         globals.width=800;
72         globals.height=440;     
73         
74         globals.tooltips=1;
75         
76         globals.use_stdout=0;
77         
78         globals.show_nag=1;
79         globals.prelis=1;
80         
81         strcpy(globals.last_fn,"");
82         
83         globals.pitch=1.0;
84         globals.volume=1.0;
85         globals.gui_wrap=3;
86         
87         globals.flash_response=0.95;
88         
89         globals.button_type=BUTTON_TYPE_BOTH;
90         
91         globals.true_block_size=0;
92         
93         strcpy(globals.tables_filename, "");
94         strcpy(globals.record_filename, "tX_record.wav");
95         strcpy(globals.file_editor, "");
96         
97         get_rc_name(rc_name);
98
99         rc=fopen(rc_name, "r");
100         if (rc)
101         {
102                 fread(&globals, sizeof(tx_global), 1, rc);
103                 fclose(rc);
104         }
105
106         /* i'll have to keep these as they're in the code
107           everywhere but I think it doesn't make sense resetting
108           to old values on startup....
109         */
110         globals.pitch=1.0;
111         globals.volume=1.0;     
112         if (!globals.true_block_size) globals.true_block_size=1<globals.buff_size;
113 }
114
115 void store_globals()
116 {
117         char rc_name[PATH_MAX]="";
118         FILE *rc;
119         
120         get_rc_name(rc_name);
121
122         rc=fopen(rc_name, "w");
123         if (rc)
124         {
125                 fwrite(&globals, sizeof(tx_global), 1, rc);
126                 fclose(rc);
127         }       
128 }