+draw_vframe(VIconThread *vt, BC_WindowBase *wdw, int x, int y)
+{
+ VFrame *vfrm = frame();
+ if( !vfrm ) return;
+ int sx0 = 0, sx1 = sx0 + vt->view_w;
+ int sy0 = 0, sy1 = sy0 + vt->view_h;
+ int dx0 = x, dx1 = dx0 + vw;
+ int dy0 = y, dy1 = dy0 + vh;
+ if( (x=vt->draw_x0-dx0) > 0 ) { sx0 += (x*vt->view_w)/vw; dx0 = vt->draw_x0; }
+ if( (x=dx1-vt->draw_x1) > 0 ) { sx1 -= (x*vt->view_w)/vw; dx1 = vt->draw_x1; }
+ if( (y=vt->draw_y0-dy0) > 0 ) { sy0 += (y*vt->view_h)/vh; dy0 = vt->draw_y0; }
+ if( (y=dy1-vt->draw_y1) > 0 ) { sy1 -= (y*vt->view_h)/vh; 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 )
+ wdw->draw_vframe(vfrm, dx0,dy0, dw,dh, sx0,sy0, sw,sh);
+}
+
+void VIconThread::
+set_drawing_area(int x0, int y0, int x1, int y1)