X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fmotion51%2Fmotion51.C;h=b16cdbc9b60b2bb29316ba7354338e3b6112fbee;hb=667a32e310893e4df0412eb8e91263d4dc57e12e;hp=9e4143f45cbe11510fd7077ff50e4deee02d1132;hpb=3b781cd7b4b9c477e637adb876a229d2781ee33b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/motion51/motion51.C b/cinelerra-5.1/plugins/motion51/motion51.C index 9e4143f4..b16cdbc9 100644 --- a/cinelerra-5.1/plugins/motion51/motion51.C +++ b/cinelerra-5.1/plugins/motion51/motion51.C @@ -565,41 +565,64 @@ void Motion51Main::centroid(double *pix[3], double *ctr_v, double *ctr_x, double } } +Motion51VVFrame::Motion51VVFrame(VFrame *vfrm, int n) + : VFrame(vfrm->get_data(), -1, vfrm->get_y()-vfrm->get_data(), + vfrm->get_u()-vfrm->get_data(), vfrm->get_v()-vfrm->get_data(), + vfrm->get_w(), vfrm->get_h(), vfrm->get_color_model(), + vfrm->get_bytes_per_line()) +{ + this->n = n; +} + +int Motion51VVFrame::draw_pixel(int x, int y) +{ + VFrame::draw_pixel(x+0, y+0); + for( int i=1; idraw_arrow(rx, ry, rx+current_dx, ry+current_dy); + int iw = img->get_w(), ih = img->get_h(); + int mx = iw > ih ? iw : ih; + Motion51VVFrame vfrm(img, mx/800+1); -// img->draw_smooth(rx-rr,ry, rx-rr,ry+rr, rx,ry+rr); -// img->draw_smooth(rx,ry+rr, rx+rr,ry+rr, rx+rr,ry); -// img->draw_smooth(rx+rr,ry, rx+rr,ry-rr, rx,ry-rr); -// img->draw_smooth(rx,ry-rr, rx-rr,ry-rr, rx-rr,ry); + vfrm.draw_arrow(rx, ry, rx+current_dx, ry+current_dy); +// vfrm.draw_smooth(rx-rr,ry, rx-rr,ry+rr, rx,ry+rr); +// vfrm.draw_smooth(rx,ry+rr, rx+rr,ry+rr, rx+rr,ry); +// vfrm.draw_smooth(rx+rr,ry, rx+rr,ry-rr, rx,ry-rr); +// vfrm.draw_smooth(rx,ry-rr, rx-rr,ry-rr, rx-rr,ry); float rx1 = rx - 0.5*rw; float ry1 = ry - 0.5*rh; float rx2 = rx1 + rw; float ry2 = ry1 + rh; - img->draw_line(rx1, ry1, rx2, ry1); - img->draw_line(rx2, ry1, rx2, ry2); - img->draw_line(rx2, ry2, rx1, ry2); - img->draw_line(rx1, ry2, rx1, ry1); + vfrm.draw_line(rx1, ry1, rx2, ry1); + vfrm.draw_line(rx2, ry1, rx2, ry2); + vfrm.draw_line(rx2, ry2, rx1, ry2); + vfrm.draw_line(rx1, ry2, rx1, ry1); float sx1 = rx1 - rr, sy1 = ry1 - rr; float sx2 = rx2 + rr, sy2 = ry2 + rr; - img->draw_smooth(sx1, ry1, sx1, sy1, rx1, sy1); - img->draw_line(rx1, sy1, rx2, sy1); - img->draw_smooth(rx2, sy1, sx2, sy1, sx2, ry1); - img->draw_line(sx2, ry1, sx2, ry2); - img->draw_smooth(sx2, ry2, sx2, sy2, rx2, sy2); - img->draw_line(rx2, sy2, rx1, sy2); - img->draw_smooth(rx1, sy2, sx1, sy2, sx1, ry2); - img->draw_line(sx1, ry2, sx1, ry1); + vfrm.draw_smooth(sx1, ry1, sx1, sy1, rx1, sy1); + vfrm.draw_line(rx1, sy1, rx2, sy1); + vfrm.draw_smooth(rx2, sy1, sx2, sy1, sx2, ry1); + vfrm.draw_line(sx2, ry1, sx2, ry2); + vfrm.draw_smooth(sx2, ry2, sx2, sy2, rx2, sy2); + vfrm.draw_line(rx2, sy2, rx1, sy2); + vfrm.draw_smooth(rx1, sy2, sx1, sy2, sx1, ry2); + vfrm.draw_line(sx1, ry2, sx1, ry1); double *xp = xpts, *yp = ypts; for( int i=cir_sz; --i>=0; ++xp, ++yp ) - img->draw_pixel(rx+*xp, ry+*yp); + vfrm.draw_pixel(rx+*xp, ry+*yp); } int Motion51Main::open_cache_file()