diff --git a/source/blender/src/seqeffects.c b/source/blender/src/seqeffects.c index 85693546789..4a9e934a691 100644 --- a/source/blender/src/seqeffects.c +++ b/source/blender/src/seqeffects.c @@ -2572,26 +2572,67 @@ static void do_solid_color(Sequence * seq,int cfra, float *rect_float; if (out->rect) { + unsigned char col0[3]; + unsigned char col1[3]; + + col0[0] = facf0 * cv->col[0] * 255; + col0[1] = facf0 * cv->col[1] * 255; + col0[2] = facf0 * cv->col[2] * 255; + + col1[0] = facf1 * cv->col[0] * 255; + col1[1] = facf1 * cv->col[1] * 255; + col1[2] = facf1 * cv->col[2] * 255; + rect = (unsigned char *)out->rect; for(y=0; yy; y++) { for(x=0; xx; x++, rect+=4) { - rect[0]= (char)(cv->col[0]*255); - rect[1]= (char)(cv->col[1]*255); - rect[2]= (char)(cv->col[2]*255); + rect[0]= col0[0]; + rect[1]= col0[1]; + rect[2]= col0[2]; rect[3]= 255; - } + } + y++; + if (yy) { + for(x=0; xx; x++, rect+=4) { + rect[0]= col1[0]; + rect[1]= col1[1]; + rect[2]= col1[2]; + rect[3]= 255; + } + } } + } else if (out->rect_float) { + float col0[3]; + float col1[3]; + + col0[0] = facf0 * cv->col[0]; + col0[1] = facf0 * cv->col[1]; + col0[2] = facf0 * cv->col[2]; + + col1[0] = facf1 * cv->col[0]; + col1[1] = facf1 * cv->col[1]; + col1[2] = facf1 * cv->col[2]; + rect_float = out->rect_float; for(y=0; yy; y++) { for(x=0; xx; x++, rect_float+=4) { - rect_float[0]= cv->col[0]; - rect_float[1]= cv->col[1]; - rect_float[2]= cv->col[2]; + rect_float[0]= col0[0]; + rect_float[1]= col0[1]; + rect_float[2]= col0[2]; rect_float[3]= 1.0; } + y++; + if (yy) { + for(x=0; xx; x++, rect_float+=4) { + rect_float[0]= col1[0]; + rect_float[1]= col1[1]; + rect_float[2]= col1[2]; + rect_float[3]= 1.0; + } + } } } } diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c index c6843557f52..62bf02d4ef1 100644 --- a/source/blender/src/sequence.c +++ b/source/blender/src/sequence.c @@ -875,7 +875,8 @@ TStripElem *give_tstripelem(Sequence *seq, int cfra) alpha over mode... */ if (seq->blend_mode != SEQ_BLEND_REPLACE || - (seq->ipo && seq->ipo->curve.first && !(seq->type & SEQ_EFFECT))) { + (seq->ipo && seq->ipo->curve.first && ( + !(seq->type & SEQ_EFFECT) || !seq->seq1))) { Strip * s = seq->strip; if (cfra < seq->start) { se = s->tstripdata_startstill;