Camera tracking: fixes for tracking of float images

- Fixed suddenly disappearing preview image from track widget
- Also suddenly stopping tracking should be fixed now

Both issues were caused by mixing working with floats and bytes and
in some cases it was wrong or missed checks done for this.
This commit is contained in:
Sergey Sharybin 2012-05-09 08:33:11 +00:00
parent 91227ff6d0
commit f4705b38f9
2 changed files with 6 additions and 2 deletions

@ -1040,7 +1040,7 @@ void BKE_movieclip_update_scopes(MovieClip *clip, MovieClipUser *user, MovieClip
scopes->track_disabled = FALSE; scopes->track_disabled = FALSE;
if (ibuf && ibuf->rect) { if (ibuf && (ibuf->rect || ibuf->rect_float)) {
ImBuf *tmpibuf; ImBuf *tmpibuf;
MovieTrackingMarker undist_marker = *marker; MovieTrackingMarker undist_marker = *marker;

@ -1193,7 +1193,11 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki
x1 = x - (int)(w * (-min[0] / (max[0] - min[0]))); x1 = x - (int)(w * (-min[0] / (max[0] - min[0])));
y1 = y - (int)(h * (-min[1] / (max[1] - min[1]))); y1 = y - (int)(h * (-min[1] / (max[1] - min[1])));
tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rect); if (ibuf->rect_float)
tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rectfloat);
else
tmpibuf = IMB_allocImBuf(w + margin * 2, h + margin * 2, 32, IB_rect);
IMB_rectcpy(tmpibuf, ibuf, 0, 0, x1 - margin, y1 - margin, w + margin * 2, h + margin * 2); IMB_rectcpy(tmpibuf, ibuf, 0, 0, x1 - margin, y1 - margin, w + margin * 2, h + margin * 2);
if (pos != NULL) { if (pos != NULL) {