gui->resource_pixmaps.remove_all_objects();
if(debug) PRINT_TRACE
+ if(mode != IGNORE_THREAD)
+ gui->resource_thread->reset(pane->number);
// Search every edit
for(Track *current = mwindow->edl->tracks->first;
// }
// }
- pixmap_h = mwindow->edl->local_session->zoom_track;
Track *track = edit->edits->track;
+ pixmap_h = track->data_h;
if( track->show_titles() )
pixmap_h += mwindow->theme->get_image("title_bg_data")->get_h();
//printf("get_pixmap_size %d %d %d %d\n", edit_x, edit_w, pixmap_x, pixmap_w);
if( edit->track->show_titles() )
edit_h += mwindow->theme->get_image("title_bg_data")->get_h();
if( edit->track->show_assets() )
- edit_h += resource_h();
+ edit_h += edit->track->data_h;
h = edit_h;
}
if( plugin->track->show_titles() )
y += mwindow->theme->get_image("title_bg_data")->get_h();
if( plugin->track->show_assets() )
- y += resource_h();
+ y += plugin->track->data_h;
y += plugin->plugin_set->get_number() *
mwindow->theme->get_image("plugin_bg_data")->get_h();
h = mwindow->theme->get_image("plugin_bg_data")->get_h();
}
-int TrackCanvas::resource_h()
-{
- return mwindow->edl->local_session->zoom_track;
-}
void TrackCanvas::draw_highlight_rectangle(int x, int y, int w, int h)
{
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;
+ int data_h = edit->track->data_h;
+ double ys = has_assets ? data_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) ;
+ ( has_assets ? title_bg_h + data_h/2 : title_bg_h/2 ) :
+ ( has_assets ? data_h/2 : 0) ;
double title_h = mwindow->theme->title_h;
if( dy < title_h / 2 ) { ys = title_h; dy = ys / 2; }
y += dy;
if( track->show_titles() )
y1 += mwindow->theme->get_image("title_bg_data")->get_h();
if( track->show_assets() )
- y1 += resource_h();
+ y1 += track->data_h;
if( y1 == y )
y1 += mwindow->theme->title_h;
if( edit->hard_left ) {
}
}
-void TrackCanvas::draw_auto(Auto *current,
- int x,
- int y,
- int center_pixel,
- int zoom_track)
+void TrackCanvas::draw_auto(Auto *current, int x, int y,
+ int center_pixel, int data_h)
{
int x1, y1, x2, y2;
y1 = center_pixel + y - HANDLE_W / 2;
y2 = center_pixel + y + HANDLE_W / 2;
- if(y1 < center_pixel + -zoom_track / 2) y1 = center_pixel + -zoom_track / 2;
- if(y2 > center_pixel + zoom_track / 2) y2 = center_pixel + zoom_track / 2;
+ if( y1 < center_pixel - data_h/2 ) y1 = center_pixel - data_h/2;
+ if( y2 > center_pixel + data_h/2 ) y2 = center_pixel + data_h/2;
draw_box(x1, y1, x2 - x1, y2 - y1);
}
}
-void TrackCanvas::draw_floatauto(FloatAuto *current,
- int x,
- int y,
- int in_x,
- int in_y,
- int out_x,
- int out_y,
- int center_pixel,
- int zoom_track,
- int color)
+void TrackCanvas::draw_floatauto(FloatAuto *current, int x, int y,
+ int in_x, int in_y, int out_x, int out_y,
+ int center_pixel, int data_h, int color)
{
int x1 = x - HANDLE_W / 2; // Center
int x2 = x + HANDLE_W / 2;
int y1 = center_pixel + y - HANDLE_H / 2;
int y2 = center_pixel + y + HANDLE_H / 2;
- int ymin = center_pixel - zoom_track / 2;
- int ymax = center_pixel + zoom_track / 2;
+ int ymin = center_pixel - data_h / 2;
+ int ymax = center_pixel + data_h / 2;
CLAMP(y1, ymin, ymax);
CLAMP(y2, ymin, ymax);
return;
if(in_x != x)
- draw_floatauto_ctrlpoint(x, y, in_x, in_y, center_pixel, zoom_track, color);
+ draw_floatauto_ctrlpoint(x, y, in_x, in_y, center_pixel, data_h, color);
if(out_x != x)
- draw_floatauto_ctrlpoint(x, y, out_x, out_y, center_pixel, zoom_track, color);
+ draw_floatauto_ctrlpoint(x, y, out_x, out_y, center_pixel, data_h, color);
}
inline int quantize(float f) { return (int)floor(f + 0.5); }
inline void TrackCanvas::draw_floatauto_ctrlpoint(
- int x, int y, int cp_x, int cp_y, int center_pixel,
- int zoom_track, int color)
+ int x, int y, int cp_x, int cp_y, int center_pixel,
+ int data_h, int color)
// draw the tangent and a handle for given bézier ctrl point
{
- bool handle_visible = (abs(cp_y) <= zoom_track / 2);
+ bool handle_visible = (abs(cp_y) <= data_h/2);
float slope = (float)(cp_y - y)/(cp_x - x);
- CLAMP(cp_y, -zoom_track / 2, zoom_track / 2);
+ CLAMP(cp_y, -data_h/2, data_h/2);
if(slope != 0)
cp_x = x + quantize((cp_y - y) / slope);
int TrackCanvas::test_auto(Auto *current,
- int x, int y, int center_pixel, int zoom_track,
+ int x, int y, int center_pixel, int data_h,
int cursor_x, int cursor_y, int buttonpress)
{
int x1, y1, x2, y2;
x2 = x + HANDLE_W / 2;
y1 = center_pixel + y - HANDLE_H / 2;
y2 = center_pixel + y + HANDLE_H / 2;
- int ymin = center_pixel - zoom_track / 2;
- int ymax = center_pixel + zoom_track / 2;
+ int ymin = center_pixel - data_h/2;
+ int ymax = center_pixel + data_h/2;
CLAMP(y1, ymin, ymax);
CLAMP(y2, ymin, ymax);
int TrackCanvas::test_floatauto(FloatAuto *current, int x, int y, int in_x,
- int in_y, int out_x, int out_y, int center_pixel, int zoom_track,
+ int in_y, int out_x, int out_y, int center_pixel, int data_h,
int cursor_x, int cursor_y, int buttonpress, int autogrouptype)
{
int result = 0;
int x2 = x + HANDLE_W / 2;
int y1 = center_pixel + y - HANDLE_W / 2;
int y2 = center_pixel + y + HANDLE_W / 2;
- int ymin = center_pixel - zoom_track / 2;
- int ymax = center_pixel + zoom_track / 2;
+ int ymin = center_pixel - data_h/2;
+ int ymax = center_pixel + data_h/2;
CLAMP(y1, ymin, ymax);
CLAMP(y2, ymin, ymax);
{
if( !prev || !next ) return 1;
if( prev->curve_mode == FloatAuto::LINEAR ) return 1;
- int64_t ipos, opos;
- if( !(ipos = prev->get_control_in_position()) &&
- !(opos = prev->get_control_out_position()) ) return 1;
+ int64_t ipos = prev->get_control_in_position();
+ int64_t opos = prev->get_control_out_position();
+ if( !ipos && !opos ) return 1;
if( !ipos || !opos ) return 0;
float ival = prev->get_control_in_value();
float oval = prev->get_control_out_value();
CLAMP(new_value, auto_min, auto_max);
keyframe->adjust_to_new_coordinates(current_position, new_value);
}
- else {
+ else if( all >= 0 ) {
// create keyframe on neighbouring track at the point in time given by fauto
FloatAuto *previous = 0, *next = 0;
float value = fade_autos->get_value(current_position, PLAY_FORWARD, previous, next);
keyframe = (FloatAuto*)fade_autos->insert_auto(current_position);
keyframe->set_value(new_value);
}
+ if( !keyframe ) continue;
mwindow->session->drag_auto_gang->append((Auto *)keyframe);
}
}
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 data_h = track->data_h;
+ double ys = has_assets ? data_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) ;
+ ( has_assets ? title_bg_h + data_h/2 : title_bg_h/2) :
+ ( has_assets ? data_h/2 : 0) ;
if( dy < title_h/2 ) { ys = title_h; dy = ys / 2; }
yscale = ys;
center_pixel = y + dy;
if( track->show_titles() )
center_pixel += mwindow->theme->get_image("title_bg_data")->get_h();
if( track->show_assets() )
- center_pixel += resource_h();
+ center_pixel += track->data_h;
center_pixel += (i + 0.5) * mwindow->theme->get_image("plugin_bg_data")->get_h();
for(Plugin *plugin = (Plugin*)plugin_set->first;
return 0;
}
-void TrackCanvas::draw_bline(int x1, int y1, int x2, int y2, BC_Pixmap *pixmap)
-{
-// Short lines are all overhead to hw or sw setup, use bresenhams
- if( y1 > y2 ) {
- int tx = x1; x1 = x2; x2 = tx;
- int ty = y1; y1 = y2; y2 = ty;
- }
-
- int x = x1, y = y1;
- int dx = x2-x1, dy = y2-y1;
- int dx2 = 2*dx, dy2 = 2*dy;
- if( dx < 0 ) dx = -dx;
- int r = dx > dy ? dx : dy, n = r;
- int dir = 0;
- if( dx2 < 0 ) dir += 1;
- if( dy >= dx ) {
- if( dx2 >= 0 ) do { /* +Y, +X */
- draw_pixel(x, y++, pixmap);
- if( (r -= dx2) < 0 ) { r += dy2; ++x; }
- } while( --n >= 0 );
- else do { /* +Y, -X */
- draw_pixel(x, y++, pixmap);
- if( (r += dx2) < 0 ) { r += dy2; --x; }
- } while( --n >= 0 );
- }
- else {
- if( dx2 >= 0 ) do { /* +X, +Y */
- draw_pixel(x++, y, pixmap);
- if( (r -= dy2) < 0 ) { r += dx2; ++y; }
- } while( --n >= 0 );
- else do { /* -X, +Y */
- draw_pixel(x--, y, pixmap);
- if( (r -= dy2) < 0 ) { r -= dx2; ++y; }
- } while( --n >= 0 );
- }
-}
-
void TrackCanvas::draw_overlays()
{
int new_cursor, update_cursor, rerender;