Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/tracking.c')
-rw-r--r--source/blender/blenkernel/intern/tracking.c38
1 files changed, 18 insertions, 20 deletions
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index 8831d7e73b2..73170612ff7 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -1010,19 +1010,19 @@ void BKE_tracking_context_free(MovieTrackingContext *context)
/* zap channels from the imbuf that are disabled by the user. this can lead to
* better tracks sometimes. however, instead of simply zeroing the channels
* out, do a partial grayscale conversion so the display is better. */
-static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int grayscale)
+void BKE_tracking_disable_imbuf_channels(ImBuf *ibuf, int disable_red, int disable_green, int disable_blue, int grayscale)
{
int x, y;
float scale;
- if((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0 && !grayscale)
+ if(!disable_red && !disable_green && !disable_blue && !grayscale)
return;
/* If only some components are selected, it's important to rescale the result
* appropriately so that e.g. if only blue is selected, it's not zeroed out. */
- scale = ((track->flag&TRACK_DISABLE_RED ) ? 0.0f : 0.2126f) +
- ((track->flag&TRACK_DISABLE_GREEN) ? 0.0f : 0.7152f) +
- ((track->flag&TRACK_DISABLE_BLUE) ? 0.0f : 0.0722f);
+ scale = (disable_red ? 0.0f : 0.2126f) +
+ (disable_green ? 0.0f : 0.7152f) +
+ (disable_blue ? 0.0f : 0.0722f);
for(y= 0; y<ibuf->y; y++) {
for (x= 0; x<ibuf->x; x++) {
@@ -1030,9 +1030,9 @@ static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int g
if(ibuf->rect_float) {
float *rrgbf= ibuf->rect_float + pixel*4;
- float r = (track->flag&TRACK_DISABLE_RED) ? 0.0f : rrgbf[0];
- float g = (track->flag&TRACK_DISABLE_GREEN) ? 0.0f : rrgbf[1];
- float b = (track->flag&TRACK_DISABLE_BLUE) ? 0.0f : rrgbf[2];
+ float r = disable_red ? 0.0f : rrgbf[0];
+ float g = disable_green ? 0.0f : rrgbf[1];
+ float b = disable_blue ? 0.0f : rrgbf[2];
if (grayscale) {
float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
rrgbf[0] = rrgbf[1] = rrgbf[2] = gray;
@@ -1043,9 +1043,9 @@ static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int g
}
} else {
char *rrgb= (char*)ibuf->rect + pixel*4;
- char r = (track->flag&TRACK_DISABLE_RED) ? 0 : rrgb[0];
- char g = (track->flag&TRACK_DISABLE_GREEN) ? 0 : rrgb[1];
- char b = (track->flag&TRACK_DISABLE_BLUE) ? 0 : rrgb[2];
+ char r = disable_red ? 0 : rrgb[0];
+ char g = disable_green ? 0 : rrgb[1];
+ char b = disable_blue ? 0 : rrgb[2];
if (grayscale) {
float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
rrgb[0] = rrgb[1] = rrgb[2] = gray;
@@ -1059,12 +1059,18 @@ static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int g
}
}
+static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int grayscale)
+{
+ BKE_tracking_disable_imbuf_channels(ibuf, track->flag&TRACK_DISABLE_RED,
+ track->flag&TRACK_DISABLE_GREEN, track->flag&TRACK_DISABLE_RED, grayscale);
+}
+
static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker,
float min[2], float max[2], int margin, int anchored, float pos[2], int origin[2])
{
ImBuf *tmpibuf;
int x, y;
- int x1, y1 /*, x2, y2 */ /* UNUSED */, w, h;
+ int x1, y1, w, h;
float mpos[2];
copy_v2_v2(mpos, marker->pos);
@@ -1086,11 +1092,6 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki
x1= x-(int)(w/2.0f);
y1= y-(int)(h/2.0f);
-#if 0 /* UNUSED */
- x2= x+(int)(w/2.0f);
- y2= y+(int)(h/2.0f);
-#endif
-
/* dimensions should be odd */
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);
@@ -1113,9 +1114,6 @@ static ImBuf *get_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTracki
disable_imbuf_channels(tmpibuf, track, 1 /* grayscale */);
}
- tmpibuf->ftype= PNG;
- IMB_saveiff(tmpibuf, "/tmp/1.png", IB_rect);
-
return tmpibuf;
}