svn merge ^/trunk/blender -r43436:43443
[blender.git] / source / blender / blenkernel / BKE_colortools.h
index c83a260690be92be70dd8c8402a4758e8dcd35be..b358209a0f4eb3758d9e3c46a6b43bd50a05b0bc 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * $Id$ 
- *
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -15,7 +13,7 @@
  *
  * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2006 Blender Foundation.
  * All rights reserved.
 #ifndef BKE_COLORTOOLS_H
 #define BKE_COLORTOOLS_H
 
+/** \file BKE_colortools.h
+ *  \ingroup bke
+ */
+
 struct CurveMapping;
 struct CurveMap;
+struct Scopes;
 struct ImBuf;
 struct rctf;
 
-void                           gamma_correct_rec709(float *c, float gamma);
-void                           gamma_correct(float *c, float gamma);
-float                          srgb_to_linearrgb(float c);
-float                          linearrgb_to_srgb(float c);
-void                           color_manage_linearize(float *col_to, float *col_from);
-
-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);
+#if defined _WIN32
+#   define DO_INLINE __inline
+#elif defined (__sun) || defined (__sun__)
+#   define DO_INLINE
+#else
+#   define DO_INLINE static inline
+#endif
 
 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);
-void                           curvemapping_set_black_white(struct CurveMapping *cumap, float *black, float *white);
+void                           curvemapping_set_black_white(struct CurveMapping *cumap, const float black[3], const float white[3]);
 
+#define CURVEMAP_SLOPE_NEGATIVE        0
+#define CURVEMAP_SLOPE_POSITIVE        1
+void                           curvemap_reset(struct CurveMap *cuma, struct rctf *clipr, int preset, int slope);
 void                           curvemap_remove(struct CurveMap *cuma, int flag);
 void                           curvemap_insert(struct CurveMap *cuma, float x, float y);
-void                           curvemap_reset(struct CurveMap *cuma, struct rctf *clipr);
 void                           curvemap_sethandle(struct CurveMap *cuma, int type);
 
 void                           curvemapping_changed(struct CurveMapping *cumap, int rem_doubles);
@@ -59,16 +63,18 @@ void                                curvemapping_changed(struct CurveMapping *cumap, int rem_doubles);
 float                          curvemap_evaluateF(struct CurveMap *cuma, float value);
                                        /* single curve, with table check */
 float                          curvemapping_evaluateF(struct CurveMapping *cumap, int cur, float value);
-void                           curvemapping_evaluate3F(struct CurveMapping *cumap, float *vecout, const float *vecin);
-void                           curvemapping_evaluateRGBF(struct CurveMapping *cumap, float *vecout, const float *vecin);
-void                           curvemapping_evaluate_premulRGBF(struct CurveMapping *cumap, float *vecout, const float *vecin);
+void                           curvemapping_evaluate3F(struct CurveMapping *cumap, float vecout[3], const float vecin[3]);
+void                           curvemapping_evaluateRGBF(struct CurveMapping *cumap, float vecout[3], const float vecin[3]);
+void                           curvemapping_evaluate_premulRGBF(struct CurveMapping *cumap, float vecout[3], const float vecin[3]);
 void                           curvemapping_do_ibuf(struct CurveMapping *cumap, struct ImBuf *ibuf);
 void                           curvemapping_premultiply(struct CurveMapping *cumap, int restore);
 int                                    curvemapping_RGBA_does_something(struct CurveMapping *cumap);
 void                           curvemapping_initialize(struct CurveMapping *cumap);
 void                           curvemapping_table_RGBA(struct CurveMapping *cumap, float **array, int *size);
-void                           colorcorrection_do_ibuf(struct ImBuf *ibuf, const char *profile);
 
+void                           scopes_update(struct Scopes *scopes, struct ImBuf *ibuf, int use_color_management);
+void                           scopes_free(struct Scopes *scopes);
+void                           scopes_new(struct Scopes *scopes);
 
 #endif