Camera tracking: fixes for preview widget
authorSergey Sharybin <sergey.vfx@gmail.com>
Mon, 9 Jan 2012 20:19:07 +0000 (20:19 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Mon, 9 Jan 2012 20:19:07 +0000 (20:19 +0000)
- Clamping of image on boundaries now happens nicely
- Looks like to prevent dark edges on image boundary when doing
  bicubic interpolation, margin should be 3px. Maybe somebody can verify this?

source/blender/blenkernel/intern/movieclip.c
source/blender/editors/interface/interface_draw.c

index 4c78ab1..33a6782 100644 (file)
@@ -861,7 +861,7 @@ void BKE_movieclip_update_scopes(MovieClip *clip, MovieClipUser *user, MovieClip
                                        }
 
                                        /* NOTE: margin should be kept in sync with value from ui_draw_but_TRACKPREVIEW */
-                                       tmpibuf= BKE_tracking_get_pattern_imbuf(ibuf, track, &undist_marker, 2 /* margin */,
+                                       tmpibuf= BKE_tracking_get_pattern_imbuf(ibuf, track, &undist_marker, 3 /* margin */,
                                                        1 /* anchor */, scopes->track_pos, NULL);
 
                                        if(tmpibuf->rect_float)
index 1f1228a..56f7fd0 100644 (file)
@@ -1511,8 +1511,8 @@ void ui_draw_but_TRACKPREVIEW(ARegion *ar, uiBut *but, uiWidgetColors *UNUSED(wc
        else if(scopes->track_preview) {
                /* additional margin around image */
                /* NOTE: should be kept in sync with value from BKE_movieclip_update_scopes */
-               const int margin= 2;
-               float zoomx, zoomy, track_pos[2], off_x, off_y;
+               const int margin= 3;
+               float zoomx, zoomy, track_pos[2], off_x, off_y, x0, y0;
                int a;
                ImBuf *drawibuf;
 
@@ -1529,11 +1529,11 @@ void ui_draw_but_TRACKPREVIEW(ARegion *ar, uiBut *but, uiWidgetColors *UNUSED(wc
 
                off_x= ((int)track_pos[0]-track_pos[0]+0.5)*zoomx;
                off_y= ((int)track_pos[1]-track_pos[1]+0.5)*zoomy;
+               x0= (int)(off_x+rect.xmin-zoomx*(margin-0.5f))+1;
+               y0= (int)(off_y+rect.ymin-zoomy*(margin-0.5f))+1;
 
                drawibuf= scale_trackpreview_ibuf(scopes->track_preview, zoomx, zoomy);
-               glaDrawPixelsSafe(off_x+rect.xmin-zoomx*(margin-0.5f), off_y+rect.ymin-zoomy*(margin-0.5f),
-                                 rect.xmax-rect.xmin+2+(int)(zoomx*(margin-0.5f)-off_x),
-                                 rect.ymax-rect.ymin+2+(int)(zoomy*(margin-0.5f)-off_y),
+               glaDrawPixelsSafe(x0, y0, rect.xmax-x0+1, rect.ymax-y0+1,
                                  drawibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, drawibuf->rect);
                IMB_freeImBuf(drawibuf);