[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42932] branches/bmesh/blender: svn merge ^/trunk/blender -r42927:42931
Campbell Barton
ideasman42 at gmail.com
Wed Dec 28 15:05:06 CET 2011
Revision: 42932
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42932
Author: campbellbarton
Date: 2011-12-28 14:05:02 +0000 (Wed, 28 Dec 2011)
Log Message:
-----------
svn merge ^/trunk/blender -r42927:42931
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42927
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/BKE_colortools.h
branches/bmesh/blender/source/blender/blenkernel/intern/colortools.c
branches/bmesh/blender/source/blender/blenlib/BLI_math_color.h
branches/bmesh/blender/source/blender/blenlib/intern/math_color.c
branches/bmesh/blender/source/blender/blenloader/intern/writefile.c
branches/bmesh/blender/source/blender/editors/render/render_internal.c
branches/bmesh/blender/source/blender/editors/render/render_opengl.c
branches/bmesh/blender/source/blender/editors/screen/glutil.c
branches/bmesh/blender/source/blender/imbuf/IMB_imbuf.h
branches/bmesh/blender/source/blender/imbuf/intern/divers.c
branches/bmesh/blender/source/blender/makesdna/DNA_mesh_types.h
branches/bmesh/blender/source/blender/nodes/composite/node_composite_util.c
branches/bmesh/blender/source/blender/nodes/composite/nodes/node_composite_image.c
branches/bmesh/blender/source/blender/python/intern/bpy_app_ffmpeg.c
branches/bmesh/blender/source/blender/render/intern/source/pipeline.c
branches/bmesh/blender/source/blender/windowmanager/intern/wm_operators.c
Added Paths:
-----------
branches/bmesh/blender/source/blender/blenlib/intern/math_color_inline.c
Property Changed:
----------------
branches/bmesh/blender/
Property changes on: branches/bmesh/blender
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/soc-2011-cucumber:37517
/branches/soc-2011-tomato:42376,42378-42379,42397,42400
/trunk/blender:39992-42927
+ /branches/soc-2011-cucumber:37517
/branches/soc-2011-tomato:42376,42378-42379,42397,42400
/trunk/blender:39992-42931
Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_colortools.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_colortools.h 2011-12-28 13:50:33 UTC (rev 42931)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_colortools.h 2011-12-28 14:05:02 UTC (rev 42932)
@@ -45,9 +45,6 @@
# define DO_INLINE static inline
#endif
-void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
-void floatbuf_to_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int w);
-
struct CurveMapping *curvemapping_add(int tot, float minx, float miny, float maxx, float maxy);
void curvemapping_free(struct CurveMapping *cumap);
struct CurveMapping *curvemapping_copy(struct CurveMapping *cumap);
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/colortools.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/colortools.c 2011-12-28 13:50:33 UTC (rev 42931)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/colortools.c 2011-12-28 14:05:02 UTC (rev 42932)
@@ -52,45 +52,6 @@
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-
-void floatbuf_to_srgb_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int UNUSED(w))
-{
- int x, y;
- float *rf= rectf;
- float srgb[3];
- unsigned char *rc= rectc;
-
- for(y=y1; y<y2; y++) {
- for(x=x1; x<x2; x++, rf+=4, rc+=4) {
- srgb[0]= linearrgb_to_srgb(rf[0]);
- srgb[1]= linearrgb_to_srgb(rf[1]);
- srgb[2]= linearrgb_to_srgb(rf[2]);
-
- rc[0]= FTOCHAR(srgb[0]);
- rc[1]= FTOCHAR(srgb[1]);
- rc[2]= FTOCHAR(srgb[2]);
- rc[3]= FTOCHAR(rf[3]);
- }
- }
-}
-
-void floatbuf_to_byte(float *rectf, unsigned char *rectc, int x1, int x2, int y1, int y2, int UNUSED(w))
-{
- int x, y;
- float *rf= rectf;
- unsigned char *rc= rectc;
-
- for(y=y1; y<y2; y++) {
- for(x=x1; x<x2; x++, rf+=4, rc+=4) {
- rc[0]= FTOCHAR(rf[0]);
- rc[1]= FTOCHAR(rf[1]);
- rc[2]= FTOCHAR(rf[2]);
- rc[3]= FTOCHAR(rf[3]);
- }
- }
-}
-
-
/* ********************************* color curve ********************* */
/* ***************** operations on full struct ************* */
Modified: branches/bmesh/blender/source/blender/blenlib/BLI_math_color.h
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/BLI_math_color.h 2011-12-28 13:50:33 UTC (rev 42931)
+++ branches/bmesh/blender/source/blender/blenlib/BLI_math_color.h 2011-12-28 14:05:02 UTC (rev 42932)
@@ -34,6 +34,8 @@
extern "C" {
#endif
+#include "BLI_math_inline.h"
+
/* primaries */
#define BLI_XYZ_SMPTE 0
#define BLI_XYZ_REC709_SRGB 1
@@ -48,7 +50,7 @@
#define BLI_YCC_ITU_BT601 0
#define BLI_YCC_ITU_BT709 1
#define BLI_YCC_JFIF_0_255 2
-
+
/******************* Conversion to RGB ********************/
void hsv_to_rgb(float h, float s, float v, float *r, float *g, float *b);
@@ -70,22 +72,23 @@
float rgb_to_grayscale(float rgb[3]);
unsigned char rgb_to_grayscale_byte(unsigned char rgb[3]);
-/***************** Profile Transformations ********************/
+/**************** Profile Transformations *****************/
void gamma_correct(float *c, float gamma);
float rec709_to_linearrgb(float c);
float linearrgb_to_rec709(float c);
float srgb_to_linearrgb(float c);
float linearrgb_to_srgb(float c);
-void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from);
-void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from);
-/* rgba buffer convenience functions */
-void srgb_to_linearrgb_rgba_buf(float *col, int tot);
-void linearrgb_to_srgb_rgba_buf(float *col, int tot);
-void srgb_to_linearrgb_rgba_rgba_buf(float *col_to, float *col_from, int tot);
-void linearrgb_to_srgb_rgba_rgba_buf(float *col_to, float *col_from, int tot);
-
+MINLINE void srgb_to_linearrgb_v3_v3(float linear[3], const float srgb[3]);
+MINLINE void linearrgb_to_srgb_v3_v3(float srgb[3], const float linear[3]);
+
+MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4]);
+MINLINE void linearrgb_to_srgb_v4(float srgb[4], const float linear[4]);
+
+MINLINE void srgb_to_linearrgb_predivide_v4(float linear[4], const float srgb[4]);
+MINLINE void linearrgb_to_srgb_predivide_v4(float srgb[4], const float linear[4]);
+
/************************** Other *************************/
int constrain_rgb(float *r, float *g, float *b);
@@ -101,6 +104,10 @@
void rgb_byte_to_float(const unsigned char *in, float *out);
void rgb_float_to_byte(const float *in, unsigned char *out);
+#ifdef BLI_MATH_INLINE_H
+#include "intern/math_color_inline.c"
+#endif
+
#ifdef __cplusplus
}
#endif
Modified: branches/bmesh/blender/source/blender/blenlib/intern/math_color.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/math_color.c 2011-12-28 13:50:33 UTC (rev 42931)
+++ branches/bmesh/blender/source/blender/blenlib/intern/math_color.c 2011-12-28 14:05:02 UTC (rev 42932)
@@ -393,57 +393,6 @@
return 1.055f * powf(c, 1.0f/2.4f) - 0.055f;
}
-void srgb_to_linearrgb_v3_v3(float *col_to, float *col_from)
-{
- col_to[0] = srgb_to_linearrgb(col_from[0]);
- col_to[1] = srgb_to_linearrgb(col_from[1]);
- col_to[2] = srgb_to_linearrgb(col_from[2]);
-}
-
-void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from)
-{
- col_to[0] = linearrgb_to_srgb(col_from[0]);
- col_to[1] = linearrgb_to_srgb(col_from[1]);
- col_to[2] = linearrgb_to_srgb(col_from[2]);
-}
-
-/* todo, should these be moved elsewhere?, they dont belong in imbuf */
-void srgb_to_linearrgb_rgba_buf(float *col, int tot)
-{
- while(tot--) {
- srgb_to_linearrgb_v3_v3(col, col);
- col += 4;
- }
-}
-
-void linearrgb_to_srgb_rgba_buf(float *col, int tot)
-{
- while(tot--) {
- linearrgb_to_srgb_v3_v3(col, col);
- col += 4;
- }
-}
-
-void srgb_to_linearrgb_rgba_rgba_buf(float *col_to, float *col_from, int tot)
-{
- while(tot--) {
- srgb_to_linearrgb_v3_v3(col_to, col_from);
- col_to[3]= col_from[3];
- col_to += 4;
- col_from += 4;
- }
-}
-
-void linearrgb_to_srgb_rgba_rgba_buf(float *col_to, float *col_from, int tot)
-{
- while(tot--) {
- linearrgb_to_srgb_v3_v3(col_to, col_from);
- col_to[3]= col_from[3];
- col_to += 4;
- col_from += 4;
- }
-}
-
void minmax_rgb(short c[])
{
if(c[0]>255) c[0]=255;
Copied: branches/bmesh/blender/source/blender/blenlib/intern/math_color_inline.c (from rev 42931, trunk/blender/source/blender/blenlib/intern/math_color_inline.c)
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/math_color_inline.c (rev 0)
+++ branches/bmesh/blender/source/blender/blenlib/intern/math_color_inline.c 2011-12-28 14:05:02 UTC (rev 42932)
@@ -0,0 +1,109 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: some of this file.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ * */
+
+/** \file blender/blenlib/intern/math_color_inline.c
+ * \ingroup bli
+ */
+
+
+#include "BLI_math_color.h"
+#include "BLI_utildefines.h"
+
+#ifndef BLI_MATH_COLOR_INLINE_H
+#define BLI_MATH_COLOR_INLINE_H
+
+/******************************** Color Space ********************************/
+
+MINLINE void srgb_to_linearrgb_v3_v3(float linear[3], const float srgb[3])
+{
+ linear[0] = srgb_to_linearrgb(srgb[0]);
+ linear[1] = srgb_to_linearrgb(srgb[1]);
+ linear[2] = srgb_to_linearrgb(srgb[2]);
+}
+
+MINLINE void linearrgb_to_srgb_v3_v3(float srgb[3], const float linear[3])
+{
+ srgb[0] = linearrgb_to_srgb(linear[0]);
+ srgb[1] = linearrgb_to_srgb(linear[1]);
+ srgb[2] = linearrgb_to_srgb(linear[2]);
+}
+
+MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
+{
+ srgb_to_linearrgb_v3_v3(linear, srgb);
+ linear[3] = srgb[3];
+}
+
+MINLINE void linearrgb_to_srgb_v4(float srgb[4], const float linear[4])
+{
+ linearrgb_to_srgb_v3_v3(srgb, linear);
+ srgb[3] = linear[3];
+}
+
+/* predivide versions to work on associated/premultipled alpha. if this should
+ be done or not depends on the background the image will be composited over,
+ ideally you would never do color space conversion on an image with alpha
+ because it is ill defined */
+
+MINLINE void srgb_to_linearrgb_predivide_v4(float linear[4], const float srgb[4])
+{
+ float alpha, inv_alpha;
+
+ if(srgb[3] == 1.0f || srgb[3] == 0.0f) {
+ alpha = 1.0f;
+ inv_alpha = 1.0f;
+ }
+ else {
+ alpha = srgb[3];
+ inv_alpha = 1.0f/alpha;
+ }
+
+ linear[0] = srgb_to_linearrgb(srgb[0] * inv_alpha) * alpha;
+ linear[1] = srgb_to_linearrgb(srgb[1] * inv_alpha) * alpha;
+ linear[2] = srgb_to_linearrgb(srgb[2] * inv_alpha) * alpha;
+ linear[3] = srgb[3];
+}
+
+MINLINE void linearrgb_to_srgb_predivide_v4(float srgb[4], const float linear[4])
+{
+ float alpha, inv_alpha;
+
+ if(linear[3] == 1.0f || linear[3] == 0.0f) {
+ alpha = 1.0f;
+ inv_alpha = 1.0f;
+ }
+ else {
+ alpha = linear[3];
+ inv_alpha = 1.0f/alpha;
+ }
+
+ srgb[0] = linearrgb_to_srgb(linear[0] * inv_alpha) * alpha;
+ srgb[1] = linearrgb_to_srgb(linear[1] * inv_alpha) * alpha;
+ srgb[2] = linearrgb_to_srgb(linear[2] * inv_alpha) * alpha;
+ srgb[3] = linear[3];
+}
+
+#endif /* BLI_MATH_COLOR_INLINE_H */
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list