int64_t &x, int64_t &y, int64_t &w, int64_t &h)
{
int transition_w = 30, transition_h = 30;
-
- if( edit->track->show_titles() )
- y += mwindow->theme->get_image("title_bg_data")->get_h();
- if( edit->track->show_assets() )
- y += resource_h() / 2;
+ int has_titles = edit->track->show_titles();
+ int has_assets = edit->track->show_assets();
+ double title_bg_h = mwindow->theme->get_image("title_bg_data")->get_h();
+ double asset_h = resource_h();
+ double ys = has_assets ? asset_h : has_titles ? title_bg_h : 0;
+ double dy = has_titles ?
+ ( has_assets ? title_bg_h + asset_h/2 : title_bg_h/2 ) :
+ ( has_assets ? asset_h/2 : 0) ;
+ double title_h = mwindow->theme->title_h;
+ if( dy < title_h / 2 ) { ys = title_h; dy = ys / 2; }
+ y += dy;
x -= transition_w / 2;
y -= transition_h / 2;
for(Edit *edit = track->edits->first; edit; edit = edit->next) {
if(!edit->transition) continue;
edit_dimensions(edit, x, y, w, h);
- int strip_x = x, strip_y = y;
- if( track->show_titles() )
- strip_y += mwindow->theme->get_image("title_bg_data")->get_h();
+ int strip_x = x, edit_y = y;
get_transition_coords(edit, x, y, w, h);
+ int strip_y = y - mwindow->theme->get_image("plugin_bg_data")->get_h();
+ if( track->show_assets() && track->show_titles() )
+ edit_y += mwindow->theme->get_image("title_bg_data")->get_h();
+ if( strip_y < edit_y ) strip_y = edit_y;
+
int strip_w = Units::round(edit->track->from_units(edit->transition->length) *
mwindow->edl->session->sample_rate / mwindow->edl->local_session->zoom_sample);
if( MWindowGUI::visible(x, x + w, 0, get_w()) &&
- MWindowGUI::visible(y, y + h, 0, get_h()) )
- {
+ MWindowGUI::visible(y, y + h, 0, get_h()) ) {
PluginServer *server = mwindow->scan_plugindb(edit->transition->title,
track->data_type);
if( !server ) continue;
VFrame *picon = server->get_picon();
if( !picon ) continue;
- draw_vframe(picon, x, y, w, h, 0, 0, picon->get_w(), picon->get_h());
+ int picon_w = picon->get_w(), picon_h = picon->get_h();
+ int track_h = edit->track->vertical_span(mwindow->theme);
+ if( picon_h > track_h ) picon_h = track_h;
+ draw_vframe(picon, x, y, w, h, 0, 0, picon_w, picon_h);
}
if(MWindowGUI::visible(strip_x, strip_x + strip_w, 0, get_w()) &&
- MWindowGUI::visible(strip_y, strip_y + h, 0, get_h()))
- {
+ MWindowGUI::visible(strip_y, strip_y + h, 0, get_h())) {
int x = strip_x, w = strip_w;
- if(x < 0)
- {
- w -= -x;
- x = 0;
- }
- if(w + x > get_w()) w -= (w + x) - get_w();
+ if( x < 0 ) { w -= -x; x = 0; }
+ if( w + x > get_w() ) w -= (w + x) - get_w();
draw_3segmenth( x, strip_y, w, strip_x, strip_w,
mwindow->theme->get_image("plugin_bg_data"), 0);
double &zoom_sample,
double &zoom_units)
{
+
view_start = (double)mwindow->edl->local_session->view_start[pane->number] *
mwindow->edl->local_session->zoom_sample /
mwindow->edl->session->sample_rate;
mwindow->edl->local_session->zoom_sample /
mwindow->edl->session->sample_rate;
unit_end = track->to_doubleunits(view_end);
- yscale = resource_h();
- center_pixel = track->y_pixel
+
+ int y = track->y_pixel
- mwindow->edl->local_session->track_start[pane->number];
- if( track->show_assets() )
- center_pixel += yscale / 2;
- if( track->show_titles() )
- center_pixel += mwindow->theme->get_image("title_bg_data")->get_h();
- zoom_sample = mwindow->edl->local_session->zoom_sample;
+ int has_titles = track->show_titles();
+ int has_assets = track->show_assets();
+ double title_bg_h = mwindow->theme->get_image("title_bg_data")->get_h();
+ double asset_h = resource_h();
+ double title_h = mwindow->theme->title_h;
+ double ys = has_assets ? asset_h : has_titles ? title_bg_h : 0;
+ double dy = has_titles ?
+ ( has_assets ? title_bg_h + asset_h/2 : title_bg_h/2) :
+ ( has_assets ? asset_h/2 : 0) ;
+ if( dy < title_h/2 ) { ys = title_h; dy = ys / 2; }
+ yscale = ys;
+ center_pixel = y + dy;
+ zoom_sample = mwindow->edl->local_session->zoom_sample;
zoom_units = track->to_doubleunits(zoom_sample / mwindow->edl->session->sample_rate);
}