LiVES 1.3.11-svn
|
00001 // mainwindow.h 00002 // LiVES (lives-exe) 00003 // (c) G. Finch <salsaman@xs4all.nl> 2003 - 2010 00004 // Released under the GPL 3 or later 00005 // see file ../COPYING for licensing details 00006 00007 00008 #ifndef _HAS_MAINWINDOW_H_ 00009 #define _HAS_MAINWINDOW_H_ 00010 00011 #include <pthread.h> 00012 00013 #ifdef ALSA_MIDI 00014 #include <alsa/asoundlib.h> 00015 #endif 00016 00017 #ifdef HAVE_PULSE_AUDIO 00018 #include "pulse.h" 00019 #endif 00020 00021 // hardware related prefs 00022 00026 #define U_SEC 100000000. 00027 #define U_SECL (gint64)100000000 00028 #define U_SEC_RATIO (U_SECL/1000000) ///< how many U_SECs (ticks) in a microsecond 00029 00030 // parameters for resizing the image frames, and for capture 00031 // TODO - make prefs 00032 #define V_RESIZE_ADJUST 36 00033 #define H_RESIZE_ADJUST 22 00034 00036 #define SEPWIN_VADJUST 200 00037 00039 #define DEF_GEN_WIDTH 640 00040 #define DEF_GEN_HEIGHT 480 00041 00043 #define FN_KEYS 12 00044 00046 #define FX_KEYS_PHYSICAL 9 00047 00050 #define FX_KEYS_MAX_VIRTUAL 64 00051 00053 #define FX_KEYS_MAX 65536 00054 00055 #define EFFECT_NONE 0 00056 #define GU641 ((guint64)1) 00057 00058 00060 #define MAX_EXT_CNTL 2 00061 00063 typedef enum { 00064 EXT_CNTL_NONE=-1, 00065 EXT_CNTL_JS=0, 00066 EXT_CNTL_MIDI=1 00067 } lives_ext_cntl_t; 00068 00069 00071 typedef enum { 00072 LIVES_TIME_SOURCE_NONE=0, 00073 LIVES_TIME_SOURCE_SYSTEM, 00074 LIVES_TIME_SOURCE_SOUNDCARD, 00075 LIVES_TIME_SOURCE_EXTERNAL 00076 } lives_time_source_t; 00077 00078 00079 00080 typedef enum { 00081 LIVES_TOY_NONE=0, 00082 LIVES_TOY_MAD_FRAMES, 00083 LIVES_TOY_TV, 00084 LIVES_TOY_AUTOLIVES 00085 } lives_toy_t; 00086 00087 00088 typedef enum { 00089 LIVES_DIALOG_WARN, 00090 LIVES_DIALOG_YESNO 00091 } lives_dialog_t; 00092 00094 typedef struct { 00095 gint style; 00096 #define STYLE_PLAIN 0 ///< no theme (theme 'none') 00097 #define STYLE_1 1<<0 ///< turn on theming if set 00098 #define STYLE_2 1<<1 ///< colour the spinbuttons on the front page if set 00099 #define STYLE_3 1<<2 ///< style is lightish - allow themeing of widgets with dark text, otherwise use menu bg 00100 #define STYLE_4 1<<3 ///< coloured bg for poly window in mt 00101 #define STYLE_5 1<<4 ///< drop down menu text col. in mt 00102 #define STYLE_6 1<<4 ///< separator col. in mt 00103 00104 GdkColor white; 00105 GdkColor black; 00106 GdkColor light_blue; 00107 GdkColor light_yellow; 00108 GdkColor pink; 00109 GdkColor light_red; 00110 GdkColor dark_red; 00111 GdkColor light_green; 00112 GdkColor grey20; 00113 GdkColor grey25; 00114 GdkColor grey45; 00115 GdkColor grey60; 00116 GdkColor dark_orange; 00117 GdkColor fade_colour; 00118 GdkColor normal_back; 00119 GdkColor normal_fore; 00120 00121 GdkColor menu_and_bars; 00122 GdkColor banner_fade_text; 00123 GdkColor info_text; 00124 GdkColor info_base; 00125 00126 GdkColor bm_opaque; 00127 GdkColor bm_trans; 00128 00129 } _palette; 00130 00131 00132 typedef struct { 00133 gint x; 00134 gint y; 00135 gint width; 00136 gint height; 00137 GdkScreen *screen; 00138 } lives_mgeometry_t; 00139 00140 00142 #define RFX_TOOL_MENU_POSN 2 00143 00145 typedef struct { 00146 gchar msg[512]; 00147 00148 // files 00149 gint current_file; 00150 gint first_free_file; 00151 file *files[MAX_FILES+1]; 00152 gchar vid_load_dir[256]; 00153 gchar vid_save_dir[256]; 00154 gchar audio_dir[256]; 00155 gchar image_dir[256]; 00156 gchar proj_load_dir[256]; 00157 gchar proj_save_dir[256]; 00158 gchar xmms_dir[256]; 00159 gint untitled_number; 00160 gint cap_number; 00161 gint clips_available; 00162 00164 GList *cliplist; 00165 00167 gchar set_name[256]; 00168 00169 // playback 00170 gboolean faded; 00171 gboolean double_size; 00172 gboolean sep_win; 00173 gboolean fs; 00174 gboolean loop; 00175 gboolean loop_cont; 00176 gboolean ping_pong; 00177 gboolean mute; 00178 gboolean must_resize; 00179 gint audio_start; 00180 gint audio_end; 00181 00182 gboolean ext_playback; 00183 gboolean ext_keyboard; 00184 00185 gint ptr_x; 00186 gint ptr_y; 00187 00188 gdouble fps_measure; 00189 00190 00191 // flags 00192 gboolean save_with_sound; 00193 gboolean ccpd_with_sound; 00194 gboolean selwidth_locked; 00195 gboolean is_ready; 00196 gboolean opening_loc; 00197 gboolean dvgrab_preview; 00198 gboolean switch_during_pb; 00199 gboolean clip_switched; 00200 gboolean record; 00201 00202 gboolean in_fs_preview; 00203 volatile lives_cancel_t cancelled; 00204 00205 gboolean error; 00206 00207 lives_cancel_type_t cancel_type; 00208 00209 weed_plant_t *event_list; 00210 weed_plant_t *stored_event_list; 00211 gboolean stored_event_list_changed; 00212 gboolean stored_layout_save_all_vals; 00213 gchar stored_layout_name[256]; 00214 00215 GList *stored_layout_undos; 00216 size_t sl_undo_buffer_used; 00217 unsigned char *sl_undo_mem; 00218 gint sl_undo_offset; 00219 00220 gshort endian; 00221 00222 gint pwidth; 00223 gint pheight; 00224 00225 lives_whentostop_t whentostop; 00226 00227 gboolean noframedrop; 00228 00229 gint play_start; 00230 gint play_end; 00231 gboolean playing_sel; 00232 gboolean preview; 00233 00234 gboolean is_processing; 00235 gboolean is_rendering; 00236 gboolean resizing; 00237 00238 gboolean foreign; 00239 gboolean record_foreign; 00240 gboolean t_hidden; 00241 00242 // recording from an external window 00243 guint foreign_key; 00244 unsigned int foreign_id; 00245 GdkColormap *foreign_cmap; 00246 GdkPixmap *foreign_map; 00247 gint foreign_width; 00248 gint foreign_height; 00249 gint foreign_bpp; 00250 00252 gboolean nervous; 00253 00254 lives_rfx_t *rendered_fx; 00255 gint num_rendered_effects_builtin; 00256 gint num_rendered_effects_custom; 00257 gint num_rendered_effects_test; 00258 00259 // for the merge dialog 00260 gint last_transition_idx; 00261 gint last_transition_loops; 00262 gboolean last_transition_loop_to_fit; 00263 gboolean last_transition_align_start; 00264 gboolean last_transition_ins_frames; 00265 00266 00267 guint64 rte; 00268 00269 guint last_grabable_effect; 00270 guint rte_keys; 00271 gint num_tr_applied; 00272 gdouble blend_factor; 00273 00274 gint blend_file; 00275 gint last_blend_file; 00276 00277 gint scrap_file; 00278 00280 gint playing_file; 00281 00282 gint pre_src_file; 00283 00284 gint scr_width; 00285 gint scr_height; 00286 lives_toy_t toy_type; 00287 00288 gboolean toy_go_wild; 00289 00290 // copy/paste 00291 gboolean insert_after; 00292 gboolean with_sound; 00293 00294 // selection 00295 gint sel_start; 00296 gshort sel_move; 00297 00299 #define SEL_MOVE_START 1 00300 #define SEL_MOVE_END 2 00301 #define SEL_MOVE_AUTO 3 00302 #define SEL_MOVE_SINGLE 4 00303 00304 // prefs (Save on exit) 00305 gint prefs_changed; 00306 #define PREFS_THEME_CHANGED (1<<0) 00307 #define PREFS_JACK_CHANGED (1<<1) 00308 #define PREFS_TEMPDIR_CHANGED (1<<2) 00309 gboolean prefs_need_restart; 00310 00312 gint def_width; 00313 gint def_height; 00314 00316 gint framedraw_frame; 00317 00318 00320 00321 // end of static-ish info 00322 gboolean save_all; 00323 gchar first_info_file[256]; 00324 gboolean leave_files; 00325 gboolean was_set; 00326 00328 gchar *file_open_params; 00329 gboolean open_deint; 00330 00331 gint last_dprint_file; 00332 gboolean no_switch_dprint; 00333 00335 gint actual_frame; 00336 00338 gdouble aframeno; 00339 00340 // ticks are measured in 1/U_SEC of a second (by defalt a tick is 10 nano seconds) 00341 00342 // for the internal player 00343 gdouble period; 00344 gint64 startticks; 00345 gint64 timeout_ticks; 00346 gint64 origsecs; 00347 gint64 origusecs; 00348 gint64 offsetticks; 00349 gint64 currticks; 00350 gint64 deltaticks; 00351 gint64 firstticks; 00352 gint64 stream_ticks; 00353 00354 gboolean size_warn; 00355 00358 gboolean noswitch; 00359 gint new_clip; 00360 00361 gint aud_file_to_kill; 00362 00363 gboolean reverse_pb; 00364 00366 gboolean osc_block; 00367 00368 gboolean osc_auto; 00369 00371 gint osc_enc_width; 00372 gint osc_enc_height; 00373 00374 00376 gint fixed_fps_numer; 00377 gint fixed_fps_denom; 00378 gdouble fixed_fpsd; 00379 00381 gboolean write_vpp_file; 00382 00383 volatile gshort scratch; 00384 #define SCRATCH_NONE 0 00385 #define SCRATCH_BACK -1 00386 #define SCRATCH_FWD 1 00387 #define SCRATCH_JUMP 2 00388 00390 gboolean internal_messaging; 00391 gint (*progress_fn) (gboolean reset); 00392 00393 volatile gboolean threaded_dialog; 00394 00395 // fx controls 00396 gdouble fx1_val; 00397 gdouble fx2_val; 00398 gdouble fx3_val; 00399 gdouble fx4_val; 00400 gdouble fx5_val; 00401 gdouble fx6_val; 00402 00403 gint fx1_start; 00404 gint fx2_start; 00405 gint fx3_start; 00406 gint fx4_start; 00407 00408 gint fx1_step; 00409 gint fx2_step; 00410 gint fx3_step; 00411 gint fx4_step; 00412 00413 gint fx1_end; 00414 gint fx2_end; 00415 gint fx3_end; 00416 gint fx4_end; 00417 00418 gboolean fx1_bool; 00419 gboolean fx2_bool; 00420 gboolean fx3_bool; 00421 gboolean fx4_bool; 00422 gboolean fx5_bool; 00423 gboolean fx6_bool; 00424 00425 gboolean effects_paused; 00426 gboolean did_rfx_preview; 00427 00428 //function pointers 00429 guint kb_timer; 00430 gulong config_func; 00431 gulong pb_fps_func; 00432 gulong spin_start_func; 00433 gulong spin_end_func; 00434 gulong record_perf_func; 00435 gulong vidbar_func; 00436 gulong laudbar_func; 00437 gulong raudbar_func; 00438 gulong hrule_func; 00439 gulong toy_func_none; 00440 gulong toy_func_random_frames; 00441 gulong toy_func_lives_tv; 00442 gulong hnd_id; 00443 gulong loop_cont_func; 00444 gulong mute_audio_func; 00445 00446 // for jack transport 00447 gboolean jack_can_stop; 00448 gboolean jack_can_start; 00449 00450 volatile gboolean video_seek_ready; 00451 00452 // selection pointers 00453 gulong mouse_fn1; 00454 gboolean mouse_blocked; 00455 gboolean hrule_blocked; 00456 00458 gint clipstore[FN_KEYS-1]; 00459 00461 GdkGC *gc; 00462 00464 guint ksnoop; 00465 00466 lives_mt *multitrack; 00467 00468 gint new_blend_file; 00469 00470 // Widgets -- TODO - move into sub struct mainw->widgets->* 00471 GdkNativeWindow xwin; 00472 GtkTooltips *tooltips; 00473 GtkWidget *frame1; 00474 GtkWidget *frame2; 00475 GtkWidget *playframe; 00476 GdkPixbuf *imframe; 00477 GdkPixbuf *camframe; 00478 GdkPixbuf *imsep; 00479 GtkWidget *LiVES; 00480 GtkWidget *open; 00481 GtkWidget *open_sel; 00482 GtkWidget *open_vcd_menu; 00483 GtkWidget *open_vcd_submenu; 00484 GtkWidget *open_vcd; 00485 GtkWidget *open_dvd; 00486 GtkWidget *open_loc; 00487 GtkWidget *open_yuv4m; 00488 GtkWidget *open_lives2lives; 00489 GtkWidget *send_lives2lives; 00490 GtkWidget *open_device_menu; 00491 GtkWidget *open_device_submenu; 00492 GtkWidget *open_firewire; 00493 GtkWidget *open_hfirewire; 00494 GtkWidget *add_live_menu; 00495 GtkWidget *recent_menu; 00496 GtkWidget *recent_submenu; 00497 GtkWidget *recent1; 00498 GtkWidget *recent2; 00499 GtkWidget *recent3; 00500 GtkWidget *recent4; 00501 GtkWidget *save_as; 00502 GtkWidget *backup; 00503 GtkWidget *restore; 00504 GtkWidget *save_selection; 00505 GtkWidget *close; 00506 GtkWidget *import_proj; 00507 GtkWidget *export_proj; 00508 GtkWidget *sw_sound; 00509 GtkWidget *clear_ds; 00510 GtkWidget *ccpd_sound; 00511 GtkWidget *quit; 00512 GtkWidget *undo; 00513 GtkWidget *redo; 00514 GtkWidget *copy; 00515 GtkWidget *cut; 00516 GtkWidget *insert; 00517 GtkWidget *paste_as_new; 00518 GtkWidget *merge; 00519 GtkWidget *delete; 00520 GtkWidget *select_submenu; 00521 GtkWidget *select_all; 00522 GtkWidget *select_new; 00523 GtkWidget *select_to_end; 00524 GtkWidget *select_from_start; 00525 GtkWidget *select_start_only; 00526 GtkWidget *select_end_only; 00527 GtkWidget *select_last; 00528 GtkWidget *select_invert; 00529 GtkWidget *lock_selwidth; 00530 GtkWidget *record_perf; 00531 GtkWidget *playall; 00532 GtkWidget *playsel; 00533 GtkWidget *playclip; 00534 GtkWidget *rev_clipboard; 00535 GtkWidget *stop; 00536 GtkWidget *rewind; 00537 GtkWidget *full_screen; 00538 GtkWidget *loop_video; 00539 GtkWidget *loop_continue; 00540 GtkWidget *loop_ping_pong; 00541 GtkWidget *sepwin; 00542 GtkWidget *mute_audio; 00543 GtkWidget *sticky; 00544 GtkWidget *showfct; 00545 GtkWidget *showsubs; 00546 GtkWidget *aload_subs; 00547 GtkWidget *load_subs; 00548 GtkWidget *erase_subs; 00549 GtkWidget *fade; 00550 GtkWidget *dsize; 00551 00552 GtkWidget *change_speed; 00553 GtkWidget *capture; 00554 GtkWidget *load_audio; 00555 GtkWidget *load_cdtrack; 00556 GtkWidget *eject_cd; 00557 GtkWidget *recaudio_submenu; 00558 GtkWidget *recaudio_clip; 00559 GtkWidget *recaudio_sel; 00560 GtkWidget *export_submenu; 00561 GtkWidget *export_allaudio; 00562 GtkWidget *export_selaudio; 00563 GtkWidget *append_audio; 00564 GtkWidget *trim_submenu; 00565 GtkWidget *trim_audio; 00566 GtkWidget *trim_to_pstart; 00567 GtkWidget *delaudio_submenu; 00568 GtkWidget *delsel_audio; 00569 GtkWidget *delall_audio; 00570 GtkWidget *ins_silence; 00571 GtkWidget *fade_aud_in; 00572 GtkWidget *fade_aud_out; 00573 GtkWidget *resample_audio; 00574 GtkWidget *resample_video; 00575 GtkWidget *preferences; 00576 GtkWidget *xmms_play_audio; 00577 GtkWidget *xmms_random_audio; 00578 GtkWidget *xmms_stop_audio; 00579 GtkWidget *rename; 00580 GtkWidget *toys; 00581 GtkWidget *toy_none; 00582 GtkWidget *toy_random_frames; 00583 GtkWidget *toy_tv; 00584 GtkWidget *show_file_info; 00585 GtkWidget *show_file_comments; 00586 GtkWidget *show_clipboard_info; 00587 GtkWidget *show_messages; 00588 GtkWidget *show_layout_errors; 00589 GtkWidget *sel_label; 00590 GtkAccelGroup *accel_group; 00591 GtkWidget *sep_image; 00592 GtkWidget *hruler; 00593 GtkWidget *vj_menu; 00594 GtkWidget *vj_save_set; 00595 GtkWidget *vj_load_set; 00596 GtkWidget *vj_show_keys; 00597 GtkWidget *rte_defs_menu; 00598 GtkWidget *rte_defs; 00599 GtkWidget *save_rte_defs; 00600 GtkWidget *vj_reset; 00601 GtkWidget *mt_menu; 00602 GtkWidget *troubleshoot; 00603 00605 GtkWidget *fs_playarea; 00606 GtkWidget *fs_playframe; 00607 00609 GtkWidget *framedraw; 00610 GtkWidget *framedraw_reset; 00611 GtkWidget *framedraw_preview; 00612 GtkWidget *framedraw_spinbutton; 00613 GtkWidget *framedraw_scale; 00614 GtkWidget *framedraw_image; 00615 GtkWidget *fd_frame; 00616 00617 GdkPixmap *framedraw_orig_pixmap; 00618 GdkPixmap *framedraw_copy_pixmap; 00619 GdkBitmap *framedraw_bitmap; 00620 GdkGC *framedraw_bitmapgc; 00621 GdkGC *framedraw_colourgc; 00622 00623 // bars here -> actually text above bars 00624 GtkWidget *vidbar; 00625 GtkWidget *laudbar; 00626 GtkWidget *raudbar; 00627 00628 #define MAIN_SPIN_SPACER 52 ///< pixel spacing for start/end spins for clip and multitrack editors 00629 GtkWidget *spinbutton_end; 00630 GtkWidget *spinbutton_start; 00631 00632 GtkWidget *arrow1; 00633 GtkWidget *arrow2; 00634 00635 GdkCursor *cursor; 00636 00637 weed_plant_t *filter_map; 00638 void ***pchains; 00639 00640 // for the internal player 00641 GtkWidget *image274; 00642 GtkWidget *play_window; 00643 weed_plant_t *frame_layer; 00644 GtkWidget *plug1; 00645 gulong pw_exp_func; 00646 gboolean pw_exp_is_blocked; 00647 00648 // frame preview in the separate window 00649 GtkWidget *preview_box; 00650 GtkWidget *preview_image; 00651 GtkWidget *preview_spinbutton; 00652 GtkWidget *preview_scale; 00653 gint preview_frame; 00654 gulong preview_spin_func; 00655 gint prv_link; 00656 #define PRV_FREE 0 00657 #define PRV_START 1 00658 #define PRV_END 2 00659 #define PRV_PTR 3 00660 00661 GtkWidget *image272; 00662 GtkWidget *image273; 00663 GtkWidget *playarea; 00664 GtkWidget *hseparator; 00665 GtkWidget *scrolledwindow; 00666 GtkWidget *message_box; 00667 GtkWidget *warning_label; 00668 00669 GtkWidget *textview1; 00670 GtkWidget *winmenu; 00671 GtkWidget *eventbox; 00672 GtkWidget *eventbox2; 00673 GtkWidget *eventbox3; 00674 GtkWidget *eventbox4; 00675 GtkWidget *eventbox5; 00676 00677 // toolbar buttons 00678 GtkWidget *t_stopbutton; 00679 GtkWidget *t_bckground; 00680 GtkWidget *t_fullscreen; 00681 GtkWidget *t_sepwin; 00682 GtkWidget *t_double; 00683 GtkWidget *t_infobutton; 00684 00685 GtkWidget *t_slower; 00686 GtkWidget *t_faster; 00687 GtkWidget *t_forward; 00688 GtkWidget *t_back; 00689 00690 GtkWidget *t_hide; 00691 00692 GtkWidget *toolbar; 00693 GtkWidget *tb_hbox; 00694 GtkWidget *fs1; 00695 GtkWidget *vbox1; 00696 00697 GtkWidget *volume_scale; 00698 GtkWidget *vol_toolitem; 00699 GtkWidget *vol_label; 00700 00701 // menubar buttons 00702 GtkWidget *btoolbar; 00703 GtkWidget *m_sepwinbutton; 00704 GtkWidget *m_playbutton; 00705 GtkWidget *m_stopbutton; 00706 GtkWidget *m_playselbutton; 00707 GtkWidget *m_rewindbutton; 00708 GtkWidget *m_loopbutton; 00709 GtkWidget *m_mutebutton; 00710 GtkWidget *menu_hbox; 00711 GtkWidget *menubar; 00712 00713 // separate window 00714 gint opwx; 00715 gint opwy; 00716 00717 // sepwin buttons 00718 GtkWidget *p_playbutton; 00719 GtkWidget *p_playselbutton; 00720 GtkWidget *p_rewindbutton; 00721 GtkWidget *p_loopbutton; 00722 GtkWidget *p_mutebutton; 00723 GtkWidget *p_mute_img; 00724 00725 // timer bars 00726 GtkWidget *video_draw; 00727 GdkPixmap *video_drawable; 00728 GtkWidget *laudio_draw; 00729 GdkPixmap *laudio_drawable; 00730 GtkWidget *raudio_draw; 00731 GdkPixmap *raudio_drawable; 00732 00733 // framecounter 00734 GtkWidget *framebar; 00735 GtkWidget *framecounter; 00736 GtkWidget *spinbutton_pb_fps; 00737 GtkWidget *vps_label; 00738 GtkWidget *curf_label; 00739 GtkWidget *banner; 00740 00741 // rendered effects 00742 GtkWidget *effects_menu; 00743 GtkWidget *tools_menu; 00744 GtkWidget *utilities_menu; 00745 GtkWidget *utilities_submenu; 00746 GtkWidget *gens_menu; 00747 GtkWidget *gens_submenu; 00748 GtkWidget *run_test_rfx_submenu; 00749 GtkWidget *run_test_rfx_menu; 00750 GtkWidget *custom_effects_menu; 00751 GtkWidget *custom_effects_submenu; 00752 GtkWidget *custom_effects_separator; 00753 GtkWidget *custom_tools_menu; 00754 GtkWidget *custom_tools_submenu; 00755 GtkWidget *custom_tools_separator; 00756 GtkWidget *custom_gens_menu; 00757 GtkWidget *custom_gens_submenu; 00758 GtkWidget *custom_utilities_menu; 00759 GtkWidget *custom_utilities_submenu; 00760 GtkWidget *custom_utilities_separator; 00761 GtkWidget *rte_separator; 00762 GtkWidget *invis; 00763 00764 gint num_tracks; 00765 gint *clip_index; 00766 gint *frame_index; 00767 00768 GtkWidget *resize_menuitem; 00769 00770 gboolean only_close; 00771 00772 #ifdef ENABLE_JACK 00773 jack_driver_t *jackd; 00774 jack_driver_t *jackd_read; 00775 #define RT_AUDIO 00776 #else 00777 void *jackd; 00778 void *jackd_read; 00779 #endif 00780 00781 #ifdef HAVE_PULSE_AUDIO 00782 pulse_driver_t *pulsed; 00783 pulse_driver_t *pulsed_read; 00784 #define RT_AUDIO 00785 #else 00786 void *pulsed; 00787 void *pulsed_read; 00788 #endif 00789 00790 // layouts 00791 GtkTextBuffer *layout_textbuffer; 00792 GList *affected_layouts_map; 00793 GList *current_layouts_map; 00794 00797 GList *affected_layout_marks; 00798 00800 GList *xlays; 00801 00802 gchar *recovery_file; 00803 gboolean leave_recovery; 00804 00805 gboolean unordered_blocks; 00806 00807 gboolean no_exit; 00808 00809 mt_opts multi_opts; 00810 00811 gint rec_aclip; 00812 gdouble rec_avel; 00813 gdouble rec_aseek; 00814 00815 gpointer do_not_free; 00816 GMemVTable alt_vtable; 00817 void (*free_fn)(gpointer); 00818 00819 pthread_mutex_t gtk_mutex; 00820 pthread_mutex_t interp_mutex; 00821 00822 pthread_mutex_t abuf_mutex; 00823 00824 lives_fx_candidate_t fx_candidates[MAX_FX_CANDIDATE_TYPES]; 00825 00826 GList *cached_list; 00827 FILE *clip_header; 00828 00829 gfloat volume; 00830 00831 int aud_rec_fd; 00832 gdouble rec_end_time; 00833 long rec_samples; 00834 gdouble rec_fps; 00835 gint rec_vid_frames; 00836 gint rec_arate; 00837 gint rec_achans; 00838 gint rec_asamps; 00839 gint rec_signed_endian; 00840 00841 gboolean suppress_dprint; 00842 gchar *any_string; 00843 gchar *none_string; 00844 gchar *recommended_string; 00845 gchar *disabled_string; 00846 gchar *cl_string; 00847 00848 gint opening_frames; 00849 00850 gboolean show_procd; 00851 00852 gboolean block_param_updates; 00853 gboolean no_interp; 00854 00855 gdouble fd_scale; 00856 00857 weed_timecode_t cevent_tc; 00858 00859 gboolean opening_multi; 00860 00861 gboolean record_paused; 00862 gboolean record_starting; 00863 00864 gint img_concat_clip; 00865 00866 GdkGC *general_gc; 00867 00869 gboolean gen_to_clipboard; 00870 gboolean is_generating; 00871 00872 gboolean keep_pre; 00873 00874 GtkWidget *textwidget_focus; 00875 00876 _vid_playback_plugin *vpp; 00877 00879 lives_mgeometry_t *mgeom; 00880 00881 00883 gboolean ext_cntl[MAX_EXT_CNTL]; 00884 00885 #ifdef ALSA_MIDI 00886 snd_seq_t *seq_handle; 00887 int alsa_midi_port; 00888 #endif 00889 00890 weed_plant_t *rte_textparm; 00891 00892 gint write_abuf; 00893 volatile gint abufs_to_fill; 00894 00895 GtkWidget *splash_window; 00896 GtkWidget *splash_label; 00897 GtkWidget *splash_progress; 00898 00899 gboolean recoverable_layout; 00900 00901 gboolean soft_debug; 00902 00904 GIOChannel *iochan; 00905 GtkTextView *optextview; 00906 00908 pthread_t sig_pid; 00909 gchar *sig_file; 00910 00912 gboolean decoders_loaded; 00913 GList *decoder_list; 00914 00915 gboolean go_away; 00916 gboolean debug; 00917 00918 gchar *subt_save_file; 00919 00920 gchar **fonts_array; 00921 gint nfonts; 00922 00923 GtkTargetEntry *target_table; 00924 00925 GList *videodevs; 00926 00927 gchar vpp_defs_file[PATH_MAX]; 00928 00929 } mainwindow; 00930 00931 GdkCursor *hidden_cursor; 00932 00933 extern _palette *palette; 00934 00935 typedef struct { 00936 gulong ins_frame_function; 00937 00938 GtkWidget *merge_dialog; 00939 GtkWidget *ins_frame_button; 00940 GtkWidget *drop_frame_button; 00941 GtkWidget *param_vbox; 00942 GtkWidget *spinbutton_loops; 00943 GtkWidget *trans_entry; 00944 00945 gboolean loop_to_fit; 00946 gboolean align_start; 00947 gboolean ins_frames; 00948 int *list_to_rfx_index; 00949 GList *trans_list; 00950 00951 } _merge_opts; 00952 00953 extern _merge_opts* merge_opts; 00954 00956 extern GtkWidget *fx_dialog[2]; 00957 00958 00959 00960 #ifdef ENABLE_JACK 00961 volatile aserver_message_t jack_message; 00962 volatile aserver_message_t jack_message2; 00963 #endif 00964 00965 #ifdef HAVE_PULSE_AUDIO 00966 volatile aserver_message_t pulse_message; 00967 volatile aserver_message_t pulse_message2; 00968 #endif 00969 00970 #endif // HAS_MAINWINDOW_H