X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fresourcepixmap.C;h=66073a0838cad41c2b89699666c53ee6a2dc6036;hb=8cad02a7b02e4a8543bc5514892b51aed877a193;hp=79a4e94374d1c53ff03d22f0b4f00ed388c2699e;hpb=9a7a880b549aed850fd3c29abb152d69a94e23f8;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/resourcepixmap.C b/cinelerra-5.1/cinelerra/resourcepixmap.C index 79a4e943..66073a08 100644 --- a/cinelerra-5.1/cinelerra/resourcepixmap.C +++ b/cinelerra-5.1/cinelerra/resourcepixmap.C @@ -238,10 +238,11 @@ VFrame *ResourcePixmap::change_title_color(VFrame *title_bg, int color) VFrame *title_bar = new VFrame(tw, th, colormodel); uint8_t cr = (color>>16), cg = (color>>8), cb = (color>>0); uint8_t **bar_rows = title_bar->get_rows(); + const uint8_t gap_grey = 0x4a; if( th > 0 ) { uint8_t *cp = bar_rows[0]; for( int x=0; x 3 ) cp[3] = 0xff; cp += bpp; } @@ -249,7 +250,7 @@ VFrame *ResourcePixmap::change_title_color(VFrame *title_bg, int color) for( int y=1; y 0 ) { - cp[0] = cp[1] = cp[2] = 0; + cp[0] = cp[1] = cp[2] = gap_grey; if( bpp > 3 ) cp[3] = 0xff; cp += bpp; } @@ -259,7 +260,7 @@ VFrame *ResourcePixmap::change_title_color(VFrame *title_bg, int color) cp += bpp; } if( tw > 1 ) { - cp[0] = cp[1] = cp[2] = 0; + cp[0] = cp[1] = cp[2] = gap_grey; if( bpp > 3 ) cp[3] = 0xff; } } @@ -384,10 +385,15 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i { w++; Indexable *indexable = edit->get_source(); - int center_pixel = mwindow->edl->local_session->zoom_track / 2; + int rect_audio = mwindow->preferences->rectify_audio; + int center_pixel = !rect_audio ? + mwindow->edl->local_session->zoom_track / 2 : + mwindow->edl->local_session->zoom_track ; if( edit->track->show_titles() ) center_pixel += mwindow->theme->get_image("title_bg_data")->get_h(); - int64_t scale_y = mwindow->edl->local_session->zoom_y; + int64_t scale_y = !rect_audio ? + mwindow->edl->local_session->zoom_y : + mwindow->edl->local_session->zoom_y * 2; int y_max = center_pixel + scale_y / 2 - 1; double project_zoom = mwindow->edl->local_session->zoom_sample; @@ -468,7 +474,8 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i if( !result ) { double *samples = buffer->get_data(); - int y1 = center_pixel - samples[0] * scale_y / 2; + double sample = !rect_audio ? samples[0] : fabs(samples[0]); + int y1 = center_pixel - sample * scale_y / 2; int y2 = CLIP(y1, 0, y_max); for( int x0=0; x0draw_line(x0, y0, x2, y2, this); @@ -516,10 +524,12 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i WaveCacheItem *item = mwindow->wave_cache->get_wave(indexable->id, edit->channel, prev_position, next_position); if( item ) { + double item_low = !rect_audio ? item->low : fabs(item->low); //printf("ResourcePixmap::draw_audio_source %d\n", __LINE__); - int y_lo = (int)(center_pixel - item->low * scale_y / 2); + int y_lo = (int)(center_pixel - item_low * scale_y / 2); int y1 = CLIP(y_lo, 0, y_max); - int y_hi = (int)(center_pixel - item->high * scale_y / 2); + double item_high = !rect_audio ? item->high : fabs(item->high); + int y_hi = (int)(center_pixel - item_high * scale_y / 2); int y2 = CLIP(y_hi, 0, y_max); if( !first_pixel ) { y_lo = MIN(y1,prev_y2); @@ -550,15 +560,19 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i void ResourcePixmap::draw_wave(TrackCanvas *canvas, int x, double high, double low) { - int top_pixel = 0; - if( mwindow->edl->session->show_titles ) - top_pixel += mwindow->theme->get_image("title_bg_data")->get_h(); - int center_pixel = mwindow->edl->local_session->zoom_track / 2 + top_pixel; + int rect_audio = mwindow->preferences->rectify_audio; + if( rect_audio ) { low = fabs(low); high = fabs(high); } + int top_pixel = mwindow->edl->session->show_titles ? 0 : + mwindow->theme->get_image("title_bg_data")->get_h(); + int center_pixel = !rect_audio ? + mwindow->edl->local_session->zoom_track / 2 + top_pixel : + mwindow->edl->local_session->zoom_track + top_pixel ; + int scale_y = !rect_audio ? + mwindow->edl->local_session->zoom_y / 2 : + mwindow->edl->local_session->zoom_y ; int bottom_pixel = top_pixel + mwindow->edl->local_session->zoom_track; - int y1 = (int)(center_pixel - - low * mwindow->edl->local_session->zoom_y / 2); - int y2 = (int)(center_pixel - - high * mwindow->edl->local_session->zoom_y / 2); + int y1 = (int)(center_pixel - low * scale_y); + int y2 = (int)(center_pixel - high * scale_y); CLAMP(y1, top_pixel, bottom_pixel); CLAMP(y2, top_pixel, bottom_pixel); canvas->set_color(mwindow->theme->audio_color);