[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44946] trunk/blender/source/blender: == Sequencer ==
Peter Schlaile
peter at schlaile.de
Sat Mar 17 20:31:33 CET 2012
Revision: 44946
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44946
Author: schlaile
Date: 2012-03-17 19:31:28 +0000 (Sat, 17 Mar 2012)
Log Message:
-----------
== Sequencer ==
Bugfix: [#28159] sequencer strip crop values on proxy not scene render size
Also: IMB saturation change moved into imbuf-module.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/sequencer.c
trunk/blender/source/blender/imbuf/IMB_imbuf.h
trunk/blender/source/blender/imbuf/intern/divers.c
Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-03-17 19:14:08 UTC (rev 44945)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-03-17 19:31:28 UTC (rev 44946)
@@ -1171,6 +1171,20 @@
return IMB_PROXY_25;
}
+static double seq_rendersize_to_scale_factor(int size)
+{
+ if (size >= 99) {
+ return 1.0;
+ }
+ if (size >= 75) {
+ return 0.75;
+ }
+ if (size >= 50) {
+ return 0.50;
+ }
+ return 0.25;
+}
+
static void seq_open_anim_file(Sequence * seq)
{
char name[FILE_MAX];
@@ -1688,6 +1702,13 @@
StripTransform t= {0};
int sx,sy,dx,dy;
+ double f = seq_rendersize_to_scale_factor(
+ context.preview_render_size);
+
+ if (f != 1.0) {
+ IMB_scalefastImBuf(ibuf, ibuf->x / f, ibuf->y / f);
+ }
+
if(seq->flag & SEQ_USE_CROP && seq->strip->crop) {
c = *seq->strip->crop;
}
@@ -1728,29 +1749,7 @@
}
if(seq->sat != 1.0f) {
- /* inline for now, could become an imbuf function */
- int i;
- unsigned char *rct= (unsigned char *)ibuf->rect;
- float *rctf= ibuf->rect_float;
- const float sat= seq->sat;
- float hsv[3];
-
- if(rct) {
- float rgb[3];
- for (i = ibuf->x * ibuf->y; i > 0; i--, rct+=4) {
- rgb_uchar_to_float(rgb, rct);
- rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2);
- hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rgb, rgb+1, rgb+2);
- rgb_float_to_uchar(rct, rgb);
- }
- }
-
- if(rctf) {
- for (i = ibuf->x * ibuf->y; i > 0; i--, rctf+=4) {
- rgb_to_hsv(rctf[0], rctf[1], rctf[2], hsv, hsv+1, hsv+2);
- hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rctf, rctf+1, rctf+2);
- }
- }
+ IMB_saturation(ibuf, seq->sat);
}
mul = seq->mul;
Modified: trunk/blender/source/blender/imbuf/IMB_imbuf.h
===================================================================
--- trunk/blender/source/blender/imbuf/IMB_imbuf.h 2012-03-17 19:14:08 UTC (rev 44945)
+++ trunk/blender/source/blender/imbuf/IMB_imbuf.h 2012-03-17 19:31:28 UTC (rev 44946)
@@ -375,6 +375,7 @@
void IMB_convert_profile(struct ImBuf *ibuf, int profile);
float *IMB_float_profile_ensure(struct ImBuf *ibuf, int profile, int *alloc);
void IMB_color_to_bw(struct ImBuf *ibuf);
+void IMB_saturation(struct ImBuf *ibuf, float sat);
/* converting pixel buffers */
void IMB_buffer_byte_from_float(unsigned char *rect_to, const float *rect_from,
Modified: trunk/blender/source/blender/imbuf/intern/divers.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/divers.c 2012-03-17 19:14:08 UTC (rev 44945)
+++ trunk/blender/source/blender/imbuf/intern/divers.c 2012-03-17 19:31:28 UTC (rev 44946)
@@ -750,3 +750,30 @@
buf[i] = MIN2(1.0, buf[i]);
}
}
+
+/**************************** alter saturation *****************************/
+
+void IMB_saturation(ImBuf * ibuf, float sat)
+{
+ int i;
+ unsigned char *rct= (unsigned char *)ibuf->rect;
+ float *rctf= ibuf->rect_float;
+ float hsv[3];
+
+ if(rct) {
+ float rgb[3];
+ for (i = ibuf->x * ibuf->y; i > 0; i--, rct+=4) {
+ rgb_uchar_to_float(rgb, rct);
+ rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2);
+ hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rgb, rgb+1, rgb+2);
+ rgb_float_to_uchar(rct, rgb);
+ }
+ }
+
+ if(rctf) {
+ for (i = ibuf->x * ibuf->y; i > 0; i--, rctf+=4) {
+ rgb_to_hsv(rctf[0], rctf[1], rctf[2], hsv, hsv+1, hsv+2);
+ hsv_to_rgb(hsv[0], hsv[1] * sat, hsv[2], rctf, rctf+1, rctf+2);
+ }
+ }
+}
More information about the Bf-blender-cvs
mailing list