filebox changes, mts fix, dvd/bd create changes, motionwindow layout
[goodguy/history.git] / cinelerra-5.1 / cinelerra / bdcreate.h
1 #ifndef __BDCREATE_H__
2 #define __BDCREATE_H__
3
4 #include "arraylist.h"
5 #include "batchrender.h"
6 #include "bcwindowbase.h"
7 #include "bcbutton.h"
8 #include "bcdialog.h"
9 #include "bclistboxitem.inc"
10 #include "bcmenuitem.h"
11 #include "bctextbox.h"
12 #include "browsebutton.h"
13 #include "mwindow.h"
14 #include "rescale.h"
15
16 #include "bdcreate.inc"
17
18
19 class CreateBD_MenuItem : public BC_MenuItem
20 {
21 public:
22         CreateBD_MenuItem(MWindow *mwindow);
23         int handle_event();
24         MWindow *mwindow;
25 };
26
27
28 class CreateBD_Thread : public BC_DialogThread
29 {
30         static const int64_t BD_SIZE;
31         static const int BD_STREAMS, BD_WIDTH, BD_HEIGHT;
32         static const double BD_ASPECT_WIDTH, BD_ASPECT_HEIGHT;
33         static const double BD_WIDE_ASPECT_WIDTH, BD_WIDE_ASPECT_HEIGHT;
34         static const int BD_MAX_BITRATE, BD_CHANNELS, BD_WIDE_CHANNELS;
35         static const double BD_FRAMERATE, BD_SAMPLERATE, BD_KAUDIO_RATE;
36         static const int BD_INTERLACE_MODE;
37 public:
38         CreateBD_Thread(MWindow *mwindow);
39         ~CreateBD_Thread();
40         void handle_close_event(int result);
41         BC_Window* new_gui();
42         int option_presets();
43         int create_bd_jobs(ArrayList<BatchRenderJob*> *jobs, const char *asset_dir);
44         int insert_video_plugin(const char *title, KeyFrame *default_keyframe);
45         int resize_tracks();
46
47         MWindow *mwindow;
48         CreateBD_GUI *gui;
49         char asset_title[BCTEXTLEN];
50         char tmp_path[BCTEXTLEN];
51         int use_deinterlace, use_inverse_telecine;
52         int use_scale, use_resize_tracks;
53         int use_wide_audio;
54         int use_histogram, use_label_chapters;
55         int use_standard;
56
57         int64_t bd_size;
58         int bd_width;
59         int bd_height;
60         double bd_aspect_width;
61         double bd_aspect_height;
62         double bd_framerate;
63         int bd_samplerate;
64         int bd_max_bitrate;
65         double bd_kaudio_rate;
66         int bd_interlace_mode;
67         int max_w, max_h;
68 };
69
70 class CreateBD_OK : public BC_OKButton
71 {
72 public:
73         CreateBD_OK(CreateBD_GUI *gui, int x, int y);
74         ~CreateBD_OK();
75         int button_press_event();
76         int keypress_event();
77
78         CreateBD_GUI *gui;
79 };
80
81 class CreateBD_Cancel : public BC_CancelButton
82 {
83 public:
84         CreateBD_Cancel(CreateBD_GUI *gui, int x, int y);
85         ~CreateBD_Cancel();
86         int button_press_event();
87
88         CreateBD_GUI *gui;
89 };
90
91
92 class CreateBD_DiskSpace : public BC_Title
93 {
94 public:
95         CreateBD_DiskSpace(CreateBD_GUI *gui, int x, int y);
96         ~CreateBD_DiskSpace();
97         int64_t tmp_path_space();
98         void update();
99
100         CreateBD_GUI *gui;
101 };
102
103 class CreateBD_TmpPath : public BC_TextBox
104 {
105 public:
106         CreateBD_TmpPath(CreateBD_GUI *gui, int x, int y, int w);
107         ~CreateBD_TmpPath();
108         int handle_event();
109
110         CreateBD_GUI *gui;
111 };
112
113
114 class CreateBD_AssetTitle : public BC_TextBox
115 {
116 public:
117         CreateBD_AssetTitle(CreateBD_GUI *gui, int x, int y, int w);
118         ~CreateBD_AssetTitle();
119         int handle_event();
120
121         CreateBD_GUI *gui;
122 };
123
124 class CreateBD_Deinterlace : public BC_CheckBox
125 {
126 public:
127         CreateBD_Deinterlace(CreateBD_GUI *gui, int x, int y);
128         ~CreateBD_Deinterlace();
129         int handle_event();
130
131         CreateBD_GUI *gui;
132 };
133
134 class CreateBD_InverseTelecine : public BC_CheckBox
135 {
136 public:
137         CreateBD_InverseTelecine(CreateBD_GUI *gui, int x, int y);
138         ~CreateBD_InverseTelecine();
139         int handle_event();
140
141         CreateBD_GUI *gui;
142 };
143
144 class CreateBD_ResizeTracks : public BC_CheckBox
145 {
146 public:
147         CreateBD_ResizeTracks(CreateBD_GUI *gui, int x, int y);
148         ~CreateBD_ResizeTracks();
149
150         CreateBD_GUI *gui;
151 };
152
153 class CreateBD_Histogram : public BC_CheckBox
154 {
155 public:
156         CreateBD_Histogram(CreateBD_GUI *gui, int x, int y);
157         ~CreateBD_Histogram();
158
159         CreateBD_GUI *gui;
160 };
161
162 class CreateBD_LabelChapters : public BC_CheckBox
163 {
164 public:
165         CreateBD_LabelChapters(CreateBD_GUI *gui, int x, int y);
166         ~CreateBD_LabelChapters();
167
168         CreateBD_GUI *gui;
169 };
170
171 class CreateBD_WideAudio : public BC_CheckBox
172 {
173 public:
174         CreateBD_WideAudio(CreateBD_GUI *gui, int x, int y);
175         ~CreateBD_WideAudio();
176
177         CreateBD_GUI *gui;
178 };
179
180 class CreateBD_GUI : public BC_Window
181 {
182 public:
183         CreateBD_GUI(CreateBD_Thread *thread,
184                 int x, int y, int w, int h);
185         ~CreateBD_GUI();
186
187         void create_objects();
188         int resize_event(int w, int h);
189         int translation_event();
190         int close_event();
191         void update();
192
193         CreateBD_Thread *thread;
194         int at_x, at_y;
195         CreateBD_AssetTitle *asset_title;
196         int tmp_x, tmp_y;
197         CreateBD_TmpPath *tmp_path;
198         BrowseButton *btmp_path;
199         CreateBD_DiskSpace *disk_space;
200         CreateBD_Format *standard;
201         CreateBD_Scale *scale;
202         ArrayList<BC_ListBoxItem *> media_sizes;
203         CreateBD_MediaSize *media_size;
204         CreateBD_Deinterlace *need_deinterlace;
205         CreateBD_InverseTelecine *need_inverse_telecine;
206         CreateBD_ResizeTracks *need_resize_tracks;
207         CreateBD_Histogram *need_histogram;
208         BC_Title *non_standard;
209         CreateBD_WideAudio *need_wide_audio;
210         CreateBD_LabelChapters *need_label_chapters;
211         int ok_x, ok_y, ok_w, ok_h;
212         CreateBD_OK *ok;
213         int cancel_x, cancel_y, cancel_w, cancel_h;
214         CreateBD_Cancel *cancel;
215 };
216
217 class CreateBD_FormatItem : public BC_MenuItem
218 {
219 public:
220         int handle_event();
221         CreateBD_FormatItem(CreateBD_Format *popup, int standard, const char *name);
222         ~CreateBD_FormatItem();
223
224         CreateBD_Format *popup;
225         int standard;
226 };
227
228 class CreateBD_Format : public BC_PopupMenu
229 {
230 public:
231         void create_objects();
232         int handle_event();
233         CreateBD_Format(CreateBD_GUI *gui, int x, int y);
234         ~CreateBD_Format();
235         void set_value(int v) { set_text(get_item(v)->get_text()); }
236
237         CreateBD_GUI *gui;
238 };
239
240 class CreateBD_ScaleItem : public BC_MenuItem
241 {
242 public:
243         int handle_event();
244         CreateBD_ScaleItem(CreateBD_Scale *popup, int scale, const char *text);
245         ~CreateBD_ScaleItem();
246
247         CreateBD_Scale *popup;
248         int scale;
249 };
250
251 class CreateBD_Scale : public BC_PopupMenu
252 {
253 public:
254         void create_objects();
255         int handle_event();
256         CreateBD_Scale(CreateBD_GUI *gui, int x, int y);
257         ~CreateBD_Scale();
258
259         CreateBD_GUI *gui;
260         void set_value(int v) { set_text(Rescale::scale_types[v]); }
261 };
262
263 class CreateBD_MediaSize : public BC_PopupTextBox
264 {
265 public:
266         CreateBD_MediaSize(CreateBD_GUI *gui, int x, int y);
267         ~CreateBD_MediaSize();
268         int handle_event();
269
270         CreateBD_GUI *gui;
271 };
272
273 #endif