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),
42 this->mwindow = mwindow;
45 FileFormat::~FileFormat()
47 lock_window("FileFormat::~FileFormat");
53 delete channels_button;
58 void FileFormat::create_objects(Asset *asset, char *string2)
60 // ================================= copy values
62 create_objects_(string2);
65 void FileFormat::create_objects_(char *string2)
68 int x1 = 10, x2 = 180;
71 lock_window("FileFormat::create_objects_");
72 add_subwindow(new BC_Title(x, y, string2));
74 add_subwindow(new BC_Title(x, y, _("Assuming raw PCM:")));
77 add_subwindow(new BC_Title(x, y, _("Channels:")));
78 sprintf(string, "%d", asset->channels);
79 channels_button = new FileFormatChannels(x2, y, this, string);
80 channels_button->create_objects();
83 add_subwindow(new BC_Title(x, y, _("Sample rate:")));
84 sprintf(string, "%d", asset->sample_rate);
85 add_subwindow(rate_button = new FileFormatRate(x2, y, this, string));
86 add_subwindow(new SampleRatePulldown(mwindow, rate_button, x2 + 100, y));
89 add_subwindow(new BC_Title(x, y, _("Bits:")));
90 bitspopup = new BitsPopup(this, x2, y,
91 &asset->bits, 0, 1, 1, 0, 1);
92 bitspopup->create_objects();
95 add_subwindow(new BC_Title(x, y, _("Header length:")));
96 sprintf(string, "%d", asset->header);
97 add_subwindow(header_button = new FileFormatHeader(x2, y, this, string));
101 //printf("FileFormat::create_objects_ 1 %d\n", asset->byte_order);
102 add_subwindow(new BC_Title(x, y, _("Byte order:")));
103 add_subwindow(lohi = new FileFormatByteOrderLOHI(x2, y, this, asset->byte_order));
104 add_subwindow(hilo = new FileFormatByteOrderHILO(x2 + 70, y, this, !asset->byte_order));
107 add_subwindow(signed_button = new FileFormatSigned(x, y, this, asset->signed_));
109 add_subwindow(new BC_OKButton(this));
110 add_subwindow(new BC_CancelButton(this));
116 FileFormatChannels::FileFormatChannels(int x, int y, FileFormat *fwindow, char *text)
117 : BC_TumbleTextBox(fwindow, (int)atol(text), (int)1, (int)MAXCHANNELS, x, y, 50)
119 this->fwindow = fwindow;
122 int FileFormatChannels::handle_event()
124 fwindow->asset->channels = atol(get_text());
128 FileFormatRate::FileFormatRate(int x, int y, FileFormat *fwindow, char *text)
129 : BC_TextBox(x, y, 100, 1, text)
131 this->fwindow = fwindow;
134 int FileFormatRate::handle_event()
136 fwindow->asset->sample_rate = atol(get_text());
140 FileFormatHeader::FileFormatHeader(int x, int y, FileFormat *fwindow, char *text)
141 : BC_TextBox(x, y, 100, 1, text)
143 this->fwindow = fwindow;
146 int FileFormatHeader::handle_event()
148 fwindow->asset->header = atol(get_text());
152 FileFormatByteOrderLOHI::FileFormatByteOrderLOHI(int x, int y, FileFormat *fwindow, int value)
153 : BC_Radial(x, y, value, _("Lo Hi"))
155 this->fwindow = fwindow;
158 int FileFormatByteOrderLOHI::handle_event()
161 fwindow->asset->byte_order = 1;
162 fwindow->hilo->update(0);
166 FileFormatByteOrderHILO::FileFormatByteOrderHILO(int x, int y, FileFormat *fwindow, int value)
167 : BC_Radial(x, y, value, _("Hi Lo"))
169 this->fwindow = fwindow;
172 int FileFormatByteOrderHILO::handle_event()
175 fwindow->asset->byte_order = 0;
176 fwindow->lohi->update(0);
180 FileFormatSigned::FileFormatSigned(int x, int y, FileFormat *fwindow, int value)
181 : BC_CheckBox(x, y, value, _("Values are signed"))
183 this->fwindow = fwindow;
186 int FileFormatSigned::handle_event()
188 fwindow->asset->signed_ = get_value();