4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 #include "bitspopup.h"
25 #include "fileformat.h"
28 #include "mwindowgui.h"
33 FileFormat::FileFormat(MWindow *mwindow)
34 : BC_Window(_(PROGRAM_NAME ": File Format"),
35 mwindow->gui->get_abs_cursor_x(0),
36 mwindow->gui->get_abs_cursor_y(0),
37 xS(375), yS(300), xS(375), yS(300))
39 this->mwindow = mwindow;
42 FileFormat::~FileFormat()
44 lock_window("FileFormat::~FileFormat");
50 delete channels_button;
55 void FileFormat::create_objects(Asset *asset, char *string2)
57 // ================================= copy values
59 create_objects_(string2);
62 void FileFormat::create_objects_(char *string2)
65 int ys20 = yS(20), ys30 = yS(30);
67 int x1 = xs10, x2 = xS(180);
70 lock_window("FileFormat::create_objects_");
71 add_subwindow(new BC_Title(x, y, string2));
73 add_subwindow(new BC_Title(x, y, _("Assuming raw PCM:")));
76 add_subwindow(new BC_Title(x, y, _("Channels:")));
77 sprintf(string, "%d", asset->channels);
78 channels_button = new FileFormatChannels(x2, y, this, string);
79 channels_button->create_objects();
82 add_subwindow(new BC_Title(x, y, _("Sample rate:")));
83 sprintf(string, "%d", asset->sample_rate);
84 add_subwindow(rate_button = new FileFormatRate(x2, y, this, string));
85 add_subwindow(new SampleRatePulldown(mwindow, rate_button, x2 + yS(100), y));
88 add_subwindow(new BC_Title(x, y, _("Bits:")));
89 bitspopup = new BitsPopup(this, x2, y,
90 &asset->bits, 0, 1, 1, 0, 1);
91 bitspopup->create_objects();
94 add_subwindow(new BC_Title(x, y, _("Header length:")));
95 sprintf(string, "%d", asset->header);
96 add_subwindow(header_button = new FileFormatHeader(x2, y, this, string));
100 //printf("FileFormat::create_objects_ 1 %d\n", asset->byte_order);
101 add_subwindow(new BC_Title(x, y, _("Byte order:")));
102 add_subwindow(lohi = new FileFormatByteOrderLOHI(x2, y, this, asset->byte_order));
103 add_subwindow(hilo = new FileFormatByteOrderHILO(x2 + 70, y, this, !asset->byte_order));
106 add_subwindow(signed_button = new FileFormatSigned(x, y, this, asset->signed_));
108 add_subwindow(new BC_OKButton(this));
109 add_subwindow(new BC_CancelButton(this));
115 FileFormatChannels::FileFormatChannels(int x, int y, FileFormat *fwindow, char *text)
116 : BC_TumbleTextBox(fwindow, (int)atol(text), (int)1, (int)MAXCHANNELS, x, y, 50)
118 this->fwindow = fwindow;
121 int FileFormatChannels::handle_event()
123 fwindow->asset->channels = atol(get_text());
127 FileFormatRate::FileFormatRate(int x, int y, FileFormat *fwindow, char *text)
128 : BC_TextBox(x, y, 100, 1, text)
130 this->fwindow = fwindow;
133 int FileFormatRate::handle_event()
135 fwindow->asset->sample_rate = atol(get_text());
139 FileFormatHeader::FileFormatHeader(int x, int y, FileFormat *fwindow, char *text)
140 : BC_TextBox(x, y, 100, 1, text)
142 this->fwindow = fwindow;
145 int FileFormatHeader::handle_event()
147 fwindow->asset->header = atol(get_text());
151 FileFormatByteOrderLOHI::FileFormatByteOrderLOHI(int x, int y, FileFormat *fwindow, int value)
152 : BC_Radial(x, y, value, _("Lo Hi"))
154 this->fwindow = fwindow;
157 int FileFormatByteOrderLOHI::handle_event()
160 fwindow->asset->byte_order = 1;
161 fwindow->hilo->update(0);
165 FileFormatByteOrderHILO::FileFormatByteOrderHILO(int x, int y, FileFormat *fwindow, int value)
166 : BC_Radial(x, y, value, _("Hi Lo"))
168 this->fwindow = fwindow;
171 int FileFormatByteOrderHILO::handle_event()
174 fwindow->asset->byte_order = 0;
175 fwindow->lohi->update(0);
179 FileFormatSigned::FileFormatSigned(int x, int y, FileFormat *fwindow, int value)
180 : BC_CheckBox(x, y, value, _("Values are signed"))
182 this->fwindow = fwindow;
185 int FileFormatSigned::handle_event()
187 fwindow->asset->signed_ = get_value();