#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;
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 )
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;
}
}
-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;
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);
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;
}
-int ViewPopup::zoom_scale(int dir)
-{
- int view_h = vt->view_h + dir*vt->view_h/10 + dir;
- bclamp(view_h, 16,512);
- vt->view_h = view_h;
- vt->view_w = view_h * vt->vw/vt->vh;
- vt->stop_viewing();
- return 1;
-}
-
void VIconThread::
reset_images()
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();
}
return 1;
}
+int VIconThread::zoom_scale(int dir)
+{
+ int view_h = this->view_h;
+ view_h += dir*view_h/10 + dir;
+ bclamp(view_h, 16,512);
+ this->view_h = view_h;
+ this->view_w = view_h * vw/vh;
+ stop_viewing();
+ return 1;
+}
+
void VIconThread::
draw_images()