X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvicon.C;h=dbee56da45adb7e043f27a97d70b9682d04e93be;hp=296b3b08f7b4205974552e0ffaada438215fa74e;hb=c3edaf190bc7ba23acdddded9635aad2d0fe9124;hpb=debf38f78ae5ce154f54183b1638278bf8a24736 diff --git a/cinelerra-5.1/guicast/vicon.C b/cinelerra-5.1/guicast/vicon.C index 296b3b08..dbee56da 100644 --- a/cinelerra-5.1/guicast/vicon.C +++ b/cinelerra-5.1/guicast/vicon.C @@ -8,10 +8,10 @@ #include "condition.h" VIcon:: -VIcon(int vw, int vh, double rate) +VIcon(int w, int h, double rate) { - this->vw = vw; - this->vh = vh; + this->w = w; + this->h = h; this->frame_rate = rate; cycle_start = 0; @@ -47,12 +47,12 @@ draw_vframe(VIconThread *vt, BC_WindowBase *wdw, int x, int y) if( !vfrm ) return; int sx0 = 0, sx1 = sx0 + vt->vw; int sy0 = 0, sy1 = sy0 + vt->vh; - int dx0 = x, dx1 = dx0 + vw; - int dy0 = y, dy1 = dy0 + vh; - if( (x=vt->draw_x0-dx0) > 0 ) { sx0 += (x*vt->vw)/vw; dx0 = vt->draw_x0; } - if( (x=dx1-vt->draw_x1) > 0 ) { sx1 -= (x*vt->vw)/vw; dx1 = vt->draw_x1; } - if( (y=vt->draw_y0-dy0) > 0 ) { sy0 += (y*vt->vh)/vh; dy0 = vt->draw_y0; } - if( (y=dy1-vt->draw_y1) > 0 ) { sy1 -= (y*vt->vh)/vh; dy1 = vt->draw_y1; } + int dx0 = x, dx1 = dx0 + w; + int dy0 = y, dy1 = dy0 + h; + if( (x=vt->draw_x0-dx0) > 0 ) { sx0 += (x*vt->vw)/w; dx0 = vt->draw_x0; } + if( (x=dx1-vt->draw_x1) > 0 ) { sx1 -= (x*vt->vw)/w; dx1 = vt->draw_x1; } + if( (y=vt->draw_y0-dy0) > 0 ) { sy0 += (y*vt->vh)/h; dy0 = vt->draw_y0; } + if( (y=dy1-vt->draw_y1) > 0 ) { sy1 -= (y*vt->vh)/h; dy1 = vt->draw_y1; } int sw = sx1 - sx0, sh = sy1 - sy0; int dw = dx1 - dx0, dh = dy1 - dy0; if( dw > 0 && dh > 0 && sw > 0 && sh > 0 ) @@ -179,9 +179,9 @@ bool VIconThread:: visible(VIcon *vicon, int x, int y) { if( vicon->hidden ) return false; - if( y+vicon->vh <= draw_y0 ) return false; + if( y+vicon->h <= draw_y0 ) return false; if( y >= draw_y1 ) return false; - if( x+vicon->vw <= draw_x0 ) return false; + if( x+vicon->w <= draw_x0 ) return false; if( x >= draw_x1 ) return false; return true; } @@ -193,7 +193,7 @@ int ViewPopup::keypress_event() } -ViewPopup::ViewPopup(VIconThread *vt, VFrame *frame, int x, int y, int w, int h) +ViewPopup::ViewPopup(VIconThread *vt, int x, int y, int w, int h) : BC_Popup(vt->wdw, x, y, w, h, BLACK) { this->vt = vt; @@ -204,7 +204,7 @@ ViewPopup::~ViewPopup() vt->wdw->set_active_subwindow(0); } -ViewPopup *VIconThread::new_view_window(VFrame *frame) +ViewPopup *VIconThread::new_view_window() { BC_WindowBase *parent = wdw->get_parent(); XineramaScreenInfo *info = parent->get_xinerama_info(-1); @@ -213,9 +213,9 @@ ViewPopup *VIconThread::new_view_window(VFrame *frame) int vx = viewing->get_vx(), rx = 0; int vy = viewing->get_vy(), ry = 0; wdw->get_root_coordinates(vx, vy, &rx, &ry); - rx += (rx >= cx ? -view_w : viewing->vw); - ry += (ry >= cy ? -view_h : viewing->vh); - ViewPopup *vwin = new ViewPopup(this, frame, rx, ry, view_w, view_h); + rx += (rx >= cx ? -view_w+viewing->w/4 : viewing->w-viewing->w/4); + ry += (ry >= cy ? -view_h+viewing->h/4 : viewing->h-viewing->h/4); + ViewPopup *vwin = new ViewPopup(this, rx, ry, view_w, view_h); wdw->set_active_subwindow(vwin); return vwin; } @@ -279,8 +279,9 @@ update_view() if( viewing ) viewing->stop_audio(); delete view_win; view_win = 0; if( (viewing=vicon) != 0 ) { - VFrame *frame = viewing->frame(); - view_win = new_view_window(frame); + view_win = new_view_window(); + view_win->draw_vframe(viewing->frame()); + view_win->flash(0); view_win->show_window(); vicon->start_audio(); }