From 03ff6a4c83cf428b96768eadece4d69e8b0c9935 Mon Sep 17 00:00:00 2001 From: tentacle Date: Sat, 28 Jan 2006 21:47:46 +0000 Subject: [PATCH] Originally committed to SVN as r41. --- FexTracker/FexTrackerRel.lib | Bin 7926 -> 8262 bytes FexTracker/FexTrackerRel_Opti.lib | Bin 8074 -> 8416 bytes core/FexTracker.h | 1 + core/bitmaps/button_track_point_add.bmp | Bin 0 -> 1318 bytes core/bitmaps/button_track_point_del.bmp | Bin 0 -> 1318 bytes core/frame_main.h | 4 +++ core/frame_main_events.cpp | 16 ++++++++++ core/res.rc | 2 ++ core/video_box.cpp | 6 ++++ core/video_display.cpp | 38 ++++++++++++++++++++---- core/video_display.h | 2 ++ 11 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 core/bitmaps/button_track_point_add.bmp create mode 100644 core/bitmaps/button_track_point_del.bmp diff --git a/FexTracker/FexTrackerRel.lib b/FexTracker/FexTrackerRel.lib index 17dbb531ecf44f71582d3d2e63ce3cfca0191e0a..a998d6474d12b8316a97f15927f61a793114d7dc 100644 GIT binary patch delta 1243 zcmZWpOHUJF6unbg`T|Nj&(3tF7!we*KuaSn06YQoIcJy=iYO_e(kS;?cpbh`fRSJ zw>N{`n(`>!*PUsxAH@&=qyQot0I_WV@fbiaa>Ne+81yoSyam9Z<~R(}F_>NsWfOow z+vku+NKa4(IjmIxhGf2zo(S<-4sD7I1eG->B$ham>!c%?D;&ll4J24P1BSyFOI^aL z`ry#m!tHwxZY|7X+NbE#m-1Jy6bgmmS(uxeL&o{K`YsN#D`tYe-p(wLi0$zqs!=mvlQUc3=7@s8Z;mb{U<^Rt|H)4Op_ z_bHPOy{4)7TH*9ZWyYZ?KAuyh1~zAi=J>!1xa>>eL$%G(FzY9kXSqO{ddeaM+i}Wr zW$CatxULndE>3;ZrmK{S<0sK>#w*dfsXryQcTH3O5cMwzEg04-5tw9B7wwqrMub_+ zqXq*X*J^fk-lmH*4bR~rQ<49T99CrKko4ue^IVbn;jv-03&xt4>A8;ZZ`A*%|lK)F_3o`K<+Qs_)Z2zT jX63}!w2mNan5D9aXRUF^$G*{LmSh*{PX#1=XN~>?d|NBc delta 973 zcmZXRKWGzS7{;HZu}Mt4Be~1n<^Cj%kW{NfDh*YN5KyR6R0OS}h*Ad;6qmZhp>Z}t zr%NrK*%zr^d|dR zxrUUt3iuje3EqHBn^I;A5HdtK%jrrL)&L>5FXgz*U3!^X>Mce})6|XYlQYeSGnoK( z6d;-fsv6MAb5mAz~UiE+hYm-@vgNE$wI=~ulq0fGo z&%7`kLL3TGNI*jtX=LbLB14VD@!s3Sl_-5w%Jd+1xc4wso}%Sgnd-4P{Zv}x!smix zzhKf2Rh^o>@vZk;-HrzQd$uANCAIxAGO4Vq2N<9ELMg5I`nnzoF25QkJrNdMbr_VCyE%Tls4#%Q5k#Y{IoyDr2vVt_f7f8hIuu>ZP%pT5sq88 z0xaB5E$Mz?T??>in#xOD%3lbuaNjOU{3?HW605dsdV-rKMbmy{hA!IwHQlnqrs5IJ zk!eSrf99@v5^p)-+hTy{w#2jU-QexED>v}oy%`{p8w9L)VL($g=$)tg`}*vK0sX?9 szv7czJR^#KP%7jW!{Vcvlj3h!U{98w6vM8f)OJzxFVFI&M*GF(zeN+~Y5)KL diff --git a/FexTracker/FexTrackerRel_Opti.lib b/FexTracker/FexTrackerRel_Opti.lib index 910ca934bc46ebbd642df7a9bd4ff8422c63c09e..c38209731a85c198a5ca2c8140124c99f1a29f52 100644 GIT binary patch delta 1186 zcmZ`&-%C?r7=Gq-n=?Fkc7C62XW>P)N}HCZAu6FMxrKyafvxBll3E!Vh>*}#bt8N? zVfH5k!ssR}(yOo#rOP0~D=)>o=_1zqozHW&T{w8y+4H>b`#sOQ^S$c+-MbJEoju>$ z-rmMG>$T^Zj!a9+{oITKI1NY}fV>MRNx&WuusQ)3YxGUf_5~7i0EfLUpw9vv>Yjj^ z1~`mG0U8O8c3pHry$U1}@b^ z2B+>#JiR-0n`I2m8t&~I9mr<0J=c-Xk54|zcbCf%PiAjJKPp$!;;+OYvl|kyE7SQ3 zFkl0n7O+Ox*MPYMuuj~p4(zEw+5{GP6Q#_>fgM7B3RrP~Wzs^VEs@qlzh|g_ntEvG zFi-~_VML*@nusZBkkNnus)WLdVJ9rOAUhhi3geO1s*14XX-*VYqeH<%zGtSuO)c$G|Fml*N@q`WQTbB8<b>F5n@^@)a~)(ZLgt2R8`%xh zH@9Glj!))DX^3m=2v6NcT~Snn6$1{Nv?^kMI57Xsy5hB_Y%wis4|^0(|Irrdx9s~q zt?6teE;2oc`tqzo7E{#Yp}VZDcvamwCLDqtxr&{V;8s%ao7ZHffx}FG_uRw1H#xr5zPVw?s*T3= zdYy0R`dV$OHtBkwRsz5{kfvv@3@A+?zb<920-n0`B?l4^Qh4 zd|dL-zCQ0GofnyO-e3=V*fkj6WHR@FE%{gmEEvl^V*INioxhDoJxqT--ZW+IOS7LV z@Uf{5(Y&{(>F0}M0DL4h%AYvpVC(a|Y<-ho4C3CTm#hnkuPo_)XWb9FKRFU-?fwN? zF5_#qoc6u_tmhW%nvTTRoc?ZNS_<)|oup~gV%oQ1hyQWLd#xg|R#1{+qj~aVFu=bj z8o`A``r~0~nI%h>EN8K+LCg7FycBVl99g!bS9rzkpQYuNyg}|zSrLQ0j@J1X*Z2>B CmgHvu diff --git a/core/FexTracker.h b/core/FexTracker.h index 681f22057..2af2f9d57 100644 --- a/core/FexTracker.h +++ b/core/FexTracker.h @@ -72,6 +72,7 @@ public: FexTrackerConfig Cfg; //work void ProcessImage( float *Img, bool bFirst=0 ); //we assume grayscale image here + void InfluenceFeatures( int Frame, float x, float y, float off ); FexTrackingFeature* operator [] ( int i ); inline int GetCount(){ return nFeatures; }; diff --git a/core/bitmaps/button_track_point_add.bmp b/core/bitmaps/button_track_point_add.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9feacbf62ff1eae6ce88fad6e041217a77ff2ccc GIT binary patch literal 1318 zcmajdF>c&I429umz(ImEz5=TtCrC}C_Z@f?9)(4abFj`CQm{|6wNkAA(QL3V9Ke!3 zz2Qi!oss7I^Op}gw{MTqS6WXu5BhZWUpW8yyy<~rIk%KJl(~a5O?9{WckA-&r(})* z7p%}2$pr%q4+{o|+ly2qX%P+0%9-9f3rlG5eK-k&Zy3(3t(Y(nv=jQE1G5m1U$O zkSH`}zved55l9pobAAFJBOQT6p)pG4pE9hO2i9I_jM4;yBakRGW`8y}(h*1$8nZuX z80iQk3XR#Hn?K2P1QLbD?4?jfIs%D8WA-v>BOQT6p)uzY$}!RrNE8~QX8tXMBakSp zefH8aBOQT6p)q^exsi@QqR^PVB*REYAW>+{Uao1RBakRGW-sM3(h*1$8nc&q8|ern zN|(P^{ouajdD8VfbiJ+?*jE>)kFU2|%}u-ijN_m_j@7g3<5sT@YRY|m-SM{Or}vHP c_kz}c>i3@a=Kog*kGhX<4eQnT>G-$l1-2x9jQ{`u literal 0 HcmV?d00001 diff --git a/core/bitmaps/button_track_point_del.bmp b/core/bitmaps/button_track_point_del.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4757fa4c676164f342bcb095329d291b19ba1d42 GIT binary patch literal 1318 zcmajdF>c&I429umz(ImEz5=TtCrC}C_Z@f?9)(4abFj`CQm{|6t&n2e3%eke*q0AkeX{x)`zgw4IKP7Vn zxL}3GNG=#?cpy<|j1+>wK@o{UV{ZRzq$7|hG)AJSGB^T>LSq=DU~mKyg~mu68iON{ zC^SYchAG3^1BpUo_SDQsM<7vX%$~Lz=?EkWjoGgxjC2GNg~sgHl}0)Oi9%!ct1KfO zfkdG(`!%zv~K%&qXHS=#79Dzh( z?X#Db8R-Zl3XR#z&W&^g5{1U>B^gFK0*OLn_Hs=l9f3rlF?%VOk&Zy3(3ri<+ek+s zQM&xS>Ie5F&y%j_q3dyEcIKfP~U czZbOrQ@{7TH~+snc+`D-Ygn(wPshJaFP)HnSpWb4 literal 0 HcmV?d00001 diff --git a/core/frame_main.h b/core/frame_main.h index d79e2bfd9..01715bb1c 100644 --- a/core/frame_main.h +++ b/core/frame_main.h @@ -106,6 +106,8 @@ private: void OnVideoStop(wxCommandEvent &event); void OnVideoToggleScroll(wxCommandEvent &event); void OnVideoTrackPoints(wxCommandEvent &event); + void OnVideoTrackPointAdd(wxCommandEvent &event); + void OnVideoTrackPointDel(wxCommandEvent &event); void OnKeyDown(wxKeyEvent &event); @@ -323,6 +325,8 @@ enum { Video_Stop, Video_Auto_Scroll, Video_Track_Points, + Video_Track_Point_Add, + Video_Track_Point_Del, Menu_File_Recent = 2000, Menu_Video_Recent = 2200, diff --git a/core/frame_main_events.cpp b/core/frame_main_events.cpp index 90a0e8937..51dfe72c2 100644 --- a/core/frame_main_events.cpp +++ b/core/frame_main_events.cpp @@ -87,6 +87,8 @@ BEGIN_EVENT_TABLE(FrameMain, wxFrame) EVT_BUTTON(Video_Stop, FrameMain::OnVideoStop) EVT_TOGGLEBUTTON(Video_Auto_Scroll, FrameMain::OnVideoToggleScroll) EVT_BUTTON(Video_Track_Points, FrameMain::OnVideoTrackPoints) + EVT_BUTTON(Video_Track_Point_Add, FrameMain::OnVideoTrackPointAdd) + EVT_BUTTON(Video_Track_Point_Del, FrameMain::OnVideoTrackPointDel) EVT_CLOSE(FrameMain::OnCloseWindow) @@ -1168,6 +1170,20 @@ void FrameMain::OnVideoTrackPoints(wxCommandEvent &event) { } +/////////////////// +// Increase Influence +void FrameMain::OnVideoTrackPointAdd(wxCommandEvent &event) { + videoBox->videoDisplay->TrackerEdit = 1; +} + + +/////////////////// +// Decrease Influence +void FrameMain::OnVideoTrackPointDel(wxCommandEvent &event) { + videoBox->videoDisplay->TrackerEdit = -1; +} + + /////////////////////////////// // Choose a different language void FrameMain::OnChooseLanguage (wxCommandEvent &event) { diff --git a/core/res.rc b/core/res.rc index 9817a1287..d618c2011 100644 --- a/core/res.rc +++ b/core/res.rc @@ -80,6 +80,8 @@ shift_to_frame_disable BITMAP "bitmaps/shift_to_frame_disable.bmp" button_play BITMAP "bitmaps/button_play.bmp" button_stop BITMAP "bitmaps/button_stop.bmp" button_track_points BITMAP "bitmaps/button_track_points.bmp" +button_track_point_add BITMAP "bitmaps/button_track_point_add.bmp" +button_track_point_del BITMAP "bitmaps/button_track_point_del.bmp" button_bold BITMAP "bitmaps/button_bold.bmp" button_italics BITMAP "bitmaps/button_italics.bmp" diff --git a/core/video_box.cpp b/core/video_box.cpp index 3fab70338..a1ea01200 100644 --- a/core/video_box.cpp +++ b/core/video_box.cpp @@ -61,6 +61,10 @@ VideoBox::VideoBox(wxPanel *parent) { AutoScroll->SetValue(Options.AsBool(_T("Sync video with subs"))); wxBitmapButton *VideoTrackPointsButton = new wxBitmapButton(videoPage,Video_Track_Points,wxBITMAP(button_track_points),wxDefaultPosition,wxSize(25,-1)); VideoTrackPointsButton->SetToolTip(_("Track point movements in video")); + wxBitmapButton *VideoTrackPointAddButton = new wxBitmapButton(videoPage,Video_Track_Point_Add,wxBITMAP(button_track_point_add),wxDefaultPosition,wxSize(25,-1)); + VideoTrackPointAddButton->SetToolTip(_("Increase influence of tracking points")); + wxBitmapButton *VideoTrackPointDelButton = new wxBitmapButton(videoPage,Video_Track_Point_Del,wxBITMAP(button_track_point_del),wxDefaultPosition,wxSize(25,-1)); + VideoTrackPointDelButton->SetToolTip(_("Decrease influence of tracking points")); // Seek videoSlider = new VideoSlider(videoPage,-1); @@ -96,6 +100,8 @@ VideoBox::VideoBox(wxPanel *parent) { videoBottomSizer->Add(VideoPosition,1,wxLEFT|wxALIGN_CENTER,5); videoBottomSizer->Add(VideoSubsPos,1,wxALIGN_CENTER,0); videoBottomSizer->Add(VideoTrackPointsButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); + videoBottomSizer->Add(VideoTrackPointAddButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); + videoBottomSizer->Add(VideoTrackPointDelButton,0,wxTOP|wxBOTTOM|wxALIGN_CENTER,2); VideoSizer = new wxBoxSizer(wxVERTICAL); VideoSizer->Add(videoDisplay,0,wxEXPAND,0); VideoSizer->Add(videoSliderSizer,0,wxEXPAND,0); diff --git a/core/video_display.cpp b/core/video_display.cpp index e3c1b3cc7..a6b7fc6c2 100644 --- a/core/video_display.cpp +++ b/core/video_display.cpp @@ -232,10 +232,29 @@ void VideoDisplay::OnMouseEvent(wxMouseEvent& event) { return; } + if( event.ButtonDown(wxMOUSE_BTN_LEFT) ) + bTrackerEditing = 1; + if( event.ButtonUp(wxMOUSE_BTN_LEFT) ) + bTrackerEditing = 0; + // Coords int x = event.GetX(); int y = event.GetY(); + // Do tracker influence if needed + if( bTrackerEditing ) + { + AssDialogue *curline = grid->GetDialogue(grid->editBox->linen); + int StartFrame, EndFrame, localframe; + if( curline + && curline->Tracker + && (StartFrame = VFR_Output.CorrectFrameAtTime(curline->Start.GetMS(),true)) <= frame_n + && (EndFrame = VFR_Output.CorrectFrameAtTime(curline->End.GetMS(),false)) >= frame_n + && (localframe = frame_n - StartFrame) < curline->Tracker->GetFrame() + ) + curline->Tracker->InfluenceFeatures( localframe, float(x)/provider->GetZoom(), float(y)/provider->GetZoom(), TrackerEdit ); + } + // Text of current coords int sw,sh; GetScriptSize(sw,sh); @@ -272,14 +291,15 @@ void VideoDisplay::OnMouseEvent(wxMouseEvent& event) { wxMemoryDC dc; dc.SelectObject(*backbuffer); dc.BeginDrawing(); - dc.SetPen(wxPen(wxColour(255,255,255),1)); - dc.SetLogicalFunction(wxINVERT); // Draw frame dc.DrawBitmap(GetFrame(frame_n),0,0); // Draw the control points for FexTracker DrawTrackingOverlay( dc ); + dc.SetPen(wxPen(wxColour(255,255,255),1)); + dc.SetLogicalFunction(wxINVERT); + // Current position info if (x >= 0 && x < w && y >= 0 && y < h) { // Draw cross @@ -333,6 +353,8 @@ void VideoDisplay::OnMouseEvent(wxMouseEvent& event) { void VideoDisplay::OnMouseLeave(wxMouseEvent& event) { if (IsPlaying) return; + bTrackerEditing = 0; + RefreshVideo(); } @@ -545,8 +567,7 @@ void VideoDisplay::DrawTrackingOverlay( wxDC &dc ) int localframe = frame_n - StartFrame; if( curline->Tracker->GetFrame() <= localframe ) return; - dc.SetPen(wxPen(wxColour(255,255,255),1)); - dc.SetLogicalFunction(wxINVERT); + dc.SetLogicalFunction(wxCOPY); for( int i=0;iTracker->GetCount();i++ ) { @@ -559,8 +580,13 @@ void VideoDisplay::DrawTrackingOverlay( wxDC &dc ) pt.y *= provider->GetZoom(); pt.x = int(pt.x); pt.y = int(pt.y); - dc.DrawLine( pt.x-2, pt.y, pt.x+3, pt.y ); - dc.DrawLine( pt.x, pt.y-2, pt.x, pt.y+3 ); + + dc.SetPen(wxPen(wxColour(255*(1-f->Influence),255*f->Influence,0),1)); + + dc.DrawLine( pt.x-2, pt.y, pt.x, pt.y ); + dc.DrawLine( pt.x, pt.y-2, pt.x, pt.y ); + dc.DrawLine( pt.x+1, pt.y, pt.x+3, pt.y ); + dc.DrawLine( pt.x, pt.y+1, pt.x, pt.y+3 ); } } diff --git a/core/video_display.h b/core/video_display.h index 51d645077..68e44c910 100644 --- a/core/video_display.h +++ b/core/video_display.h @@ -104,6 +104,8 @@ public: bool loaded; bool IsPlaying; double fps; + double TrackerEdit; + bool bTrackerEditing; VideoSlider *ControlSlider; wxComboBox *zoomBox; wxTextCtrl *PositionDisplay;