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
23 #include "edlsession.h"
24 #include "formatpresets.h"
26 #include "setformat.h"
32 FormatPresets::FormatPresets(MWindow *mwindow,
34 SetFormatWindow *format_gui,
38 this->mwindow = mwindow;
39 this->new_gui = new_gui;
40 this->format_gui = format_gui;
41 gui_base = new_gui ? (BC_WindowBase*)new_gui : (BC_WindowBase*)(format_gui);
48 FormatPresets::~FormatPresets()
51 if(pulldown) delete pulldown;
52 for(int i = 0; i < preset_items.total; i++)
53 delete preset_items.values[i];
56 void FormatPresets::create_objects()
58 // Create preset items
59 FormatPresetItem *item;
60 item = new FormatPresetItem(mwindow, this, _("User Defined"));
61 preset_items.append(item);
63 item = new FormatPresetItem(mwindow, this, _("1080P/60"));
64 item->edl->session->audio_channels = 2;
65 item->edl->session->audio_tracks = 2;
66 item->edl->session->sample_rate = 48000;
67 item->edl->session->video_channels = 1;
68 item->edl->session->video_tracks = 1;
69 item->edl->session->frame_rate = (double)60000.0 / 1001;
70 // item->edl->session->track_w = 1920;
71 // item->edl->session->track_h = 1080;
72 item->edl->session->output_w = 1920;
73 item->edl->session->output_h = 1080;
74 item->edl->session->aspect_w = 16;
75 item->edl->session->aspect_h = 9;
76 preset_items.append(item);
78 item = new FormatPresetItem(mwindow, this, _("1080P/24"));
79 item->edl->session->audio_channels = 2;
80 item->edl->session->audio_tracks = 2;
81 item->edl->session->sample_rate = 48000;
82 item->edl->session->video_channels = 1;
83 item->edl->session->video_tracks = 1;
84 item->edl->session->frame_rate = 24;
85 // item->edl->session->track_w = 1920;
86 // item->edl->session->track_h = 1080;
87 item->edl->session->output_w = 1920;
88 item->edl->session->output_h = 1080;
89 item->edl->session->aspect_w = 16;
90 item->edl->session->aspect_h = 9;
91 preset_items.append(item);
93 item = new FormatPresetItem(mwindow, this, _("1080I"));
94 item->edl->session->audio_channels = 2;
95 item->edl->session->audio_tracks = 2;
96 item->edl->session->sample_rate = 48000;
97 item->edl->session->video_channels = 1;
98 item->edl->session->video_tracks = 1;
99 item->edl->session->frame_rate = (double)30000.0 / 1001;
100 // item->edl->session->track_w = 1920;
101 // item->edl->session->track_h = 1080;
102 item->edl->session->output_w = 1920;
103 item->edl->session->output_h = 1080;
104 item->edl->session->aspect_w = 16;
105 item->edl->session->aspect_h = 9;
106 preset_items.append(item);
108 item = new FormatPresetItem(mwindow, this, _("720P/60"));
109 item->edl->session->audio_channels = 2;
110 item->edl->session->audio_tracks = 2;
111 item->edl->session->sample_rate = 48000;
112 item->edl->session->video_channels = 1;
113 item->edl->session->video_tracks = 1;
114 item->edl->session->frame_rate = (double)60000.0 / 1001;
115 item->edl->session->output_w = 1280;
116 item->edl->session->output_h = 720;
117 item->edl->session->aspect_w = 16;
118 item->edl->session->aspect_h = 9;
119 preset_items.append(item);
121 item = new FormatPresetItem(mwindow, this, _("576I - DV(D) PAL"));
122 item->edl->session->audio_channels = 2;
123 item->edl->session->audio_tracks = 2;
124 item->edl->session->sample_rate = 48000;
125 item->edl->session->video_channels = 1;
126 item->edl->session->video_tracks = 1;
127 item->edl->session->frame_rate = 25;
128 item->edl->session->output_w = 720;
129 item->edl->session->output_h = 576;
130 item->edl->session->aspect_w = 4;
131 item->edl->session->aspect_h = 3;
132 preset_items.append(item);
134 item = new FormatPresetItem(mwindow, this, _("480P - DV(D) NTSC"));
135 item->edl->session->audio_channels = 2;
136 item->edl->session->audio_tracks = 2;
137 item->edl->session->sample_rate = 48000;
138 item->edl->session->video_channels = 1;
139 item->edl->session->video_tracks = 1;
140 item->edl->session->frame_rate = (double)60000.0 / 1001;
141 item->edl->session->output_w = 720;
142 item->edl->session->output_h = 480;
143 item->edl->session->aspect_w = 4;
144 item->edl->session->aspect_h = 3;
145 preset_items.append(item);
147 item = new FormatPresetItem(mwindow, this, _("480I - DV(D) NTSC"));
148 item->edl->session->audio_channels = 2;
149 item->edl->session->audio_tracks = 2;
150 item->edl->session->sample_rate = 48000;
151 item->edl->session->video_channels = 1;
152 item->edl->session->video_tracks = 1;
153 item->edl->session->frame_rate = (double)30000.0 / 1001;
154 item->edl->session->output_w = 720;
155 item->edl->session->output_h = 480;
156 item->edl->session->aspect_w = 4;
157 item->edl->session->aspect_h = 3;
158 preset_items.append(item);
160 item = new FormatPresetItem(mwindow, this, _("YouTube"));
161 item->edl->session->audio_channels = 1;
162 item->edl->session->audio_tracks = 1;
163 item->edl->session->sample_rate = 48000;
164 item->edl->session->video_channels = 1;
165 item->edl->session->video_tracks = 1;
166 item->edl->session->frame_rate = (double)30000.0 / 1001;
167 item->edl->session->output_w = 424;
168 item->edl->session->output_h = 318;
169 item->edl->session->aspect_w = 4;
170 item->edl->session->aspect_h = 3;
171 preset_items.append(item);
173 item = new FormatPresetItem(mwindow, this, _("Half D-1 PAL"));
174 item->edl->session->audio_channels = 2;
175 item->edl->session->audio_tracks = 2;
176 item->edl->session->sample_rate = 48000;
177 item->edl->session->video_channels = 1;
178 item->edl->session->video_tracks = 1;
179 item->edl->session->frame_rate = 25;
180 item->edl->session->output_w = 360;
181 item->edl->session->output_h = 288;
182 item->edl->session->aspect_w = 4;
183 item->edl->session->aspect_h = 3;
184 preset_items.append(item);
186 item = new FormatPresetItem(mwindow, this, _("Half D-1 NTSC"));
187 item->edl->session->audio_channels = 2;
188 item->edl->session->audio_tracks = 2;
189 item->edl->session->sample_rate = 48000;
190 item->edl->session->video_channels = 1;
191 item->edl->session->video_tracks = 1;
192 item->edl->session->frame_rate = (double)30000.0 / 1001;
193 item->edl->session->output_w = 360;
194 item->edl->session->output_h = 240;
195 item->edl->session->aspect_w = 4;
196 item->edl->session->aspect_h = 3;
197 preset_items.append(item);
199 item = new FormatPresetItem(mwindow, this, _("Internet"));
200 item->edl->session->audio_channels = 1;
201 item->edl->session->audio_tracks = 1;
202 item->edl->session->sample_rate = 22050;
203 item->edl->session->video_channels = 1;
204 item->edl->session->video_tracks = 1;
205 item->edl->session->frame_rate = 15;
206 item->edl->session->output_w = 320;
207 item->edl->session->output_h = 240;
208 item->edl->session->aspect_w = 4;
209 item->edl->session->aspect_h = 3;
210 preset_items.append(item);
212 item = new FormatPresetItem(mwindow, this, _("CD Audio"));
213 item->edl->session->audio_channels = 2;
214 item->edl->session->audio_tracks = 2;
215 item->edl->session->sample_rate = 44100;
216 item->edl->session->video_channels = 1;
217 item->edl->session->video_tracks = 0;
218 item->edl->session->frame_rate = (double)30000.0 / 1001;
219 item->edl->session->output_w = 720;
220 item->edl->session->output_h = 480;
221 item->edl->session->aspect_w = 4;
222 item->edl->session->aspect_h = 3;
223 preset_items.append(item);
225 item = new FormatPresetItem(mwindow, this, _("DAT Audio"));
226 item->edl->session->audio_channels = 2;
227 item->edl->session->audio_tracks = 2;
228 item->edl->session->sample_rate = 48000;
229 item->edl->session->video_channels = 1;
230 item->edl->session->video_tracks = 0;
231 item->edl->session->frame_rate = (double)30000.0 / 1001;
232 item->edl->session->output_w = 720;
233 item->edl->session->output_h = 480;
234 item->edl->session->aspect_w = 4;
235 item->edl->session->aspect_h = 3;
236 preset_items.append(item);
240 gui_base->add_subwindow(new BC_Title(x, y, _("Presets:")));
245 gui_base->add_subwindow(text = new FormatPresetsText(mwindow,
250 gui_base->add_subwindow(pulldown = new FormatPresetsPulldown(mwindow,
257 FormatPresetItem* FormatPresets::find_preset(EDL *edl)
259 for(int i = 1; i < preset_items.total; i++)
261 FormatPresetItem *preset = preset_items.values[i];
262 if(edl->session->audio_tracks == preset->edl->session->audio_tracks &&
263 edl->session->audio_channels == preset->edl->session->audio_channels &&
264 edl->session->sample_rate == preset->edl->session->sample_rate &&
265 edl->session->video_tracks == preset->edl->session->video_tracks &&
266 edl->session->frame_rate == preset->edl->session->frame_rate &&
267 edl->session->output_w == preset->edl->session->output_w &&
268 edl->session->output_h == preset->edl->session->output_h &&
269 edl->session->aspect_w == preset->edl->session->aspect_w &&
270 edl->session->aspect_h == preset->edl->session->aspect_h)
278 const char* FormatPresets::get_preset_text(EDL *edl)
280 FormatPresetItem *item = find_preset(edl);
282 return item->get_text();
288 int FormatPresets::handle_event()
293 EDL* FormatPresets::get_edl()
302 FormatPresetsText::FormatPresetsText(MWindow *mwindow,
310 gui->get_preset_text(gui->get_edl()))
313 this->mwindow = mwindow;
316 int FormatPresetsText::handle_event()
330 FormatPresetsPulldown::FormatPresetsPulldown(MWindow *mwindow,
338 LISTBOX_TEXT, // Display text list or icons
339 (ArrayList<BC_ListBoxItem*>*)&gui->preset_items, // Each column has an ArrayList of BC_ListBoxItems.
340 0, // Titles for columns. Set to 0 for no titles
341 0, // width of each column
343 0, // Pixel of top of window.
346 this->mwindow = mwindow;
350 int FormatPresetsPulldown::handle_event()
353 FormatPresetItem *preset = ((FormatPresetItem*)get_selection(0, 0));
354 gui->get_edl()->copy_all(preset->edl);
355 gui->text->update(preset->get_text());
360 FormatPresetItem::FormatPresetItem(MWindow *mwindow,
363 : BC_ListBoxItem(text)
365 this->mwindow = mwindow;
368 edl->create_objects();
369 edl->copy_all(gui->get_edl());
372 FormatPresetItem::~FormatPresetItem()
374 edl->Garbage::remove_user();