#include "mwindow.h"
#include "mwindowgui.h"
#include "plugin.h"
+#include "transition.h"
MainSession::MainSession(MWindow *mwindow)
{
current_operation = NO_OPERATION;
drag_pluginservers = new ArrayList<PluginServer*>;
drag_plugin = 0;
+ drag_transition = 0;
drag_assets = new ArrayList<Indexable*>;
drag_auto_gang = new ArrayList<Auto*>;
drag_clips = new ArrayList<EDL*>;
gwindow_x = gwindow_y = 0;
cswindow_x = cswindow_y = cswindow_w = cswindow_h = 0;
swindow_x = swindow_y = swindow_w = swindow_h = 0;
+ tile_mixers_x = tile_mixers_y = tile_mixers_w = tile_mixers_h = 0;
ewindow_w = ewindow_h = 0;
channels_x = channels_y = 0;
picture_x = picture_y = 0;
use_vector = 0;
use_hist_parade = 0;
use_wave_parade = 0;
+ use_wave_gain = 5;
+ use_vect_gain = 5;
+ use_smooth = 0;
+ use_refresh = 0;
+ use_release = 0;
+ use_graticule = 0;
afolders_w = 0;
show_vwindow = show_awindow = show_cwindow = show_gwindow = show_lwindow = 0;
plugindialog_w = plugindialog_h = 0;
int border_bottom = display_info.get_bottom_border();
int dual_head = screens > 1 ? 1 : 0;
- int left_w = 0, right_w = root_w;
+ int left_w = 0, left_h = 0, right_w = 0;
int xin_screens = display_info.get_xinerama_screens();
if( xin_screens > 1 ) {
dual_head = 1;
if( display_info.xinerama_geometry(s, x, y, w, h) )
continue;
if( !y && !x ) {
- left_w = w;
+ left_w = w; left_h = h;
break;
}
}
if( left_w > 0 ) {
+ int min_x = INT_MAX;
for( int s=0; s<xin_screens; ++s ) {
if( display_info.xinerama_geometry(s, x, y, w, h) )
continue;
- if( !y && x == left_w ) {
+ if( !y && x >= left_w && x < min_x ) {
+ min_x = x;
right_w = w;
screens = 2;
- break;
}
}
if( window_config == 1 ) {
- root_x = left_w;
+ root_x = min_x;
root_w = right_w;
}
else {
- // use same aspect ratio to compute left height
root_w = left_w;
- root_h = (root_w*root_h) / right_w;
+ root_h = left_h;
}
}
}
// Wider than 16:9, narrower than dual head
- if( screens < 2 && (float)root_w / root_h > 1.8 ) {
+ else if( screens < 2 && (float)root_w / root_h > 1.8 ) {
dual_head = 1;
switch( root_h ) {
case 600: right_w = 800; break;
case 1024: right_w = 1280; break;
case 1200: right_w = 1600; break;
case 1080: right_w = 1920; break;
- default: right_w = root_w/2; break;
- }
- if( window_config == 1 ) {
- root_x = root_w - right_w;
- root_w = right_w;
+ default:
+ dual_head = 0;
+ break;
}
- else {
- // use same aspect ratio to compute left height
- root_w -= right_w;
- root_h = (root_w*root_h) / right_w;
+ if( dual_head ) {
+ if( window_config == 1 ) {
+ root_x = root_w - right_w;
+ root_w = right_w;
+ }
+ else {
+ // use same aspect ratio to compute left height
+ root_w -= right_w;
+ root_h = (root_w*root_h) / right_w;
+ }
}
}
use_vector = 1;
use_hist_parade = 1;
use_wave_parade = 1;
+ use_wave_gain = 5;
+ use_vect_gain = 5;
+ use_smooth = 1;
+ use_refresh = 0;
+ use_release = 0;
+ use_graticule = 0;
if(mwindow->edl)
lwindow_w = MeterPanel::get_meters_width(mwindow->theme,
swindow_w = xS(600);
swindow_h = yS(400);
+ tile_mixers_x = 1 + mwindow_x;
+ tile_mixers_y = 1;
+ tile_mixers_w = cwindow_x - tile_mixers_x;
+ tile_mixers_h = mwindow_y - tile_mixers_y;
+
batchrender_w = xS(750);
batchrender_h = yS(400);
batchrender_x = root_w / 2 - batchrender_w / 2;
int MainSession::load_defaults(BC_Hash *defaults)
{
// Setup main windows
- strcpy(a_x11_host, defaults->get("A_X11_HOST", a_x11_host));
- strcpy(b_x11_host, defaults->get("B_X11_HOST", b_x11_host));
+ char *a_host = defaults->get("A_X11_HOST", a_x11_host);
+ if( a_host != a_x11_host )
+ strcpy(a_x11_host, defaults->get("A_X11_HOST", a_x11_host));
+ char *b_host = defaults->get("B_X11_HOST", b_x11_host);
+ if( b_host != b_x11_host )
+ strcpy(b_x11_host, defaults->get("B_X11_HOST", b_x11_host));
window_config = defaults->get("WINDOW_CONFIG", window_config);
default_window_positions(window_config);
use_vector = defaults->get("USE_VECTOR", use_vector);
use_hist_parade = defaults->get("USE_HIST_PARADE", use_hist_parade);
use_wave_parade = defaults->get("USE_WAVE_PARADE", use_wave_parade);
+ use_wave_gain = defaults->get("USE_WAVE_GAIN", use_wave_gain);
+ use_vect_gain = defaults->get("USE_VECT_GAIN", use_vect_gain);
+ use_smooth = defaults->get("USE_SMOOTH", use_smooth);
+ use_refresh = defaults->get("USE_REFRESH", use_refresh);
+ use_release = defaults->get("USE_RELEASE", use_release);
+ use_graticule = defaults->get("USE_GRATICULE", use_graticule);
//printf("MainSession::load_defaults 1\n");
// Other windows
- afolders_w = defaults->get("ABINS_W", 200);
+ afolders_w = defaults->get("ABINS_W", xS(200));
bwindow_w = defaults->get("BWINDOW_W", bwindow_w);
bwindow_h = defaults->get("BWINDOW_H", bwindow_h);
rmonitor_w = defaults->get("RMONITOR_W", rmonitor_w);
rmonitor_h = defaults->get("RMONITOR_H", rmonitor_h);
+ tile_mixers_x = defaults->get("TILE_MIXERS_X", 0);
+ tile_mixers_y = defaults->get("TILE_MIXERS_Y", 0);
+ tile_mixers_w = defaults->get("TILE_MIXERS_W", 0);
+ tile_mixers_h = defaults->get("TILE_MIXERS_H", 0);
+
batchrender_x = defaults->get("BATCHRENDER_X", batchrender_x);
batchrender_y = defaults->get("BATCHRENDER_Y", batchrender_y);
batchrender_w = defaults->get("BATCHRENDER_W", batchrender_w);
cwindow_controls = defaults->get("CWINDOW_CONTROLS", cwindow_controls);
- plugindialog_w = defaults->get("PLUGINDIALOG_W", 510);
- plugindialog_h = defaults->get("PLUGINDIALOG_H", 415);
-// presetdialog_w = defaults->get("PRESETDIALOG_W", 510);
-// presetdialog_h = defaults->get("PRESETDIALOG_H", 415);
- keyframedialog_w = defaults->get("KEYFRAMEDIALOG_W", 320);
- keyframedialog_h = defaults->get("KEYFRAMEDIALOG_H", 415);
- keyframedialog_column1 = defaults->get("KEYFRAMEDIALOG_COLUMN1", 150);
- keyframedialog_column2 = defaults->get("KEYFRAMEDIALOG_COLUMN2", 100);
+ plugindialog_w = defaults->get("PLUGINDIALOG_W", xS(510));
+ plugindialog_h = defaults->get("PLUGINDIALOG_H", yS(415));
+// presetdialog_w = defaults->get("PRESETDIALOG_W", xS(510));
+// presetdialog_h = defaults->get("PRESETDIALOG_H", yS(415));
+ keyframedialog_w = defaults->get("KEYFRAMEDIALOG_W", xS(320));
+ keyframedialog_h = defaults->get("KEYFRAMEDIALOG_H", yS(415));
+ keyframedialog_column1 = defaults->get("KEYFRAMEDIALOG_COLUMN1", xS(150));
+ keyframedialog_column2 = defaults->get("KEYFRAMEDIALOG_COLUMN2", xS(100));
keyframedialog_all = defaults->get("KEYFRAMEDIALOG_ALL", 0);
- menueffect_w = defaults->get("MENUEFFECT_W", 580);
- menueffect_h = defaults->get("MENUEFFECT_H", 350);
- transitiondialog_w = defaults->get("TRANSITIONDIALOG_W", 320);
- transitiondialog_h = defaults->get("TRANSITIONDIALOG_H", 512);
+ menueffect_w = defaults->get("MENUEFFECT_W", xS(580));
+ menueffect_h = defaults->get("MENUEFFECT_H", yS(350));
+ transitiondialog_w = defaults->get("TRANSITIONDIALOG_W", xS(320));
+ transitiondialog_h = defaults->get("TRANSITIONDIALOG_H", yS(512));
current_tip = defaults->get("CURRENT_TIP", current_tip);
actual_frame_rate = defaults->get("ACTUAL_FRAME_RATE", (float)-1);
defaults->update("USE_VECTOR", use_vector);
defaults->update("USE_HIST_PARADE", use_hist_parade);
defaults->update("USE_WAVE_PARADE", use_wave_parade);
+ defaults->update("USE_WAVE_GAIN", use_wave_gain);
+ defaults->update("USE_VECT_GAIN", use_vect_gain);
+ defaults->update("USE_SMOOTH", use_smooth);
+ defaults->update("USE_REFRESH", use_refresh);
+ defaults->update("USE_RELEASE", use_release);
+ defaults->update("USE_GRATICULE", use_graticule);
defaults->update("ABINS_W", afolders_w);
defaults->update("RMONITOR_W", rmonitor_w);
defaults->update("RMONITOR_H", rmonitor_h);
+ defaults->update("TILE_MIXERS_X", tile_mixers_x);
+ defaults->update("TILE_MIXERS_Y", tile_mixers_y);
+ defaults->update("TILE_MIXERS_W", tile_mixers_w);
+ defaults->update("TILE_MIXERS_H", tile_mixers_h);
+
defaults->update("RWINDOW_X", rwindow_x);
defaults->update("RWINDOW_Y", rwindow_y);
defaults->update("RWINDOW_W", rwindow_w);
case DRAG_PLUGINHANDLE2:
track = drag_plugin->edits->track;
break;
+ case DRAG_TRANSNHANDLE1:
+ case DRAG_TRANSNHANDLE2:
+ track = drag_transition->edits->track;
+ break;
}
return track;
}