Commit: 08d241f9e31b121d8a6d48bde0430bd43845d428
Author: Hans Goudey
Date:   Sun Jun 9 14:48:13 2019 -0400
Branches: soc-2019-bevel-profiles
https://developer.blender.org/rB08d241f9e31b121d8a6d48bde0430bd43845d428

Split profile path creation widget from colormapping code with added files

===================================================================

A       source/blender/blenkernel/BKE_profile_path.h
A       source/blender/blenkernel/intern/profile_path.c
M       source/blender/bmesh/operators/bmo_bevel.c
M       source/blender/bmesh/tools/bmesh_bevel.h
M       source/blender/modifiers/intern/MOD_bevel.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_profile_path.h 
b/source/blender/blenkernel/BKE_profile_path.h
new file mode 100644
index 00000000000..a0816244661
--- /dev/null
+++ b/source/blender/blenkernel/BKE_profile_path.h
@@ -0,0 +1,157 @@
+/*
+ * 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) 2006 Blender Foundation.
+ * All rights reserved.
+ */
+#ifndef __BKE_COLORTOOLS_H__
+#define __BKE_COLORTOOLS_H__
+
+/** \file
+ * \ingroup bke
+ */
+
+struct ColorManagedColorspaceSettings;
+struct ColorManagedDisplaySettings;
+struct ColorManagedViewSettings;
+struct CurveMap;
+struct CurveMapPoint;
+struct CurveMapping;
+struct Histogram;
+struct ImBuf;
+struct Scopes;
+struct rctf;
+
+void curvemapping_set_defaults(
+    struct CurveMapping *cumap, int tot, float minx, float miny, float maxx, 
float maxy);
+struct CurveMapping *curvemapping_add(int tot, float minx, float miny, float 
maxx, float maxy);
+void curvemapping_free_data(struct CurveMapping *cumap);
+void curvemapping_free(struct CurveMapping *cumap);
+void curvemapping_copy_data(struct CurveMapping *target, const struct 
CurveMapping *cumap);
+struct CurveMapping *curvemapping_copy(const struct CurveMapping *cumap);
+void curvemapping_set_black_white_ex(const float black[3], const float 
white[3], float r_bwmul[3]);
+void curvemapping_set_black_white(struct CurveMapping *cumap,
+                                  const float black[3],
+                                  const float white[3]);
+
+/* Used for a path where the curve isn't necessarily a function. */
+
+/* Initialized with the number of segments to fill the table with */
+void curvemapping_path_initialize(
+    struct CurveMapping *cumap,
+    int nsegments);  // HANS-TODO: Hmm, this assumes there is only one curve
+/* Evaluates along the length of the path rather than with X coord */
+void curvemapping_path_evaluate(const struct CurveMapping *cumap,
+                                int segment,
+                                float *x_out,
+                                float *y_out);
+/* Length portion is the fraction of the total path length where we want the 
location */
+void curvemap_path_evaluate(const struct CurveMap *cuma,
+                            float length_portion,
+                            float *x_out,
+                            float *y_out);
+/* Need to find the total length of the curve to sample a portion of it */
+float curvemap_path_total_length(const struct CurveMap *cuma);
+/* Distance in 2D to the next point */
+float curvemap_path_linear_distance_to_next_point(const struct CurveMap *cuma, 
int i);
+
+enum {
+  CURVEMAP_SLOPE_NEGATIVE = 0,
+  CURVEMAP_SLOPE_POSITIVE = 1,
+  CURVEMAP_SLOPE_POS_NEG = 2,
+};
+
+void curvemap_reset(struct CurveMap *cuma, const struct rctf *clipr, int 
preset, int slope);
+void curvemap_remove(struct CurveMap *cuma, const short flag);
+bool curvemap_remove_point(struct CurveMap *cuma, struct CurveMapPoint *cmp);
+struct CurveMapPoint *curvemap_insert(struct CurveMap *cuma, float x, float y);
+void curvemap_handle_set(struct CurveMap *cuma, int type);
+
+void curvemapping_changed(struct CurveMapping *cumap, const bool rem_doubles);
+void curvemapping_changed_all(struct CurveMapping *cumap);
+
+/* call before _all_ evaluation functions */
+void curvemapping_initialize(struct CurveMapping *cumap);
+
+/* keep these (const CurveMap) - to help with thread safety */
+/* single curve, no table check */
+float curvemap_evaluateF(const struct CurveMap *cuma, float value);
+/* single curve, with table check */
+float curvemapping_evaluateF(const struct CurveMapping *cumap, int cur, float 
value);
+void curvemapping_evaluate3F(const struct CurveMapping *cumap,
+                             float vecout[3],
+                             const float vecin[3]);
+void curvemapping_evaluateRGBF(const struct CurveMapping *cumap,
+                               float vecout[3],
+                               const float vecin[3]);
+void curvemapping_evaluate_premulRGB(const struct CurveMapping *cumap,
+                                     unsigned char vecout_byte[3],
+                                     const unsigned char vecin_byte[3]);
+void curvemapping_evaluate_premulRGBF_ex(const struct CurveMapping *cumap,
+                                         float vecout[3],
+                                         const float vecin[3],
+                                         const float black[3],
+                                         const float bwmul[3]);
+void curvemapping_evaluate_premulRGBF(const struct CurveMapping *cumap,
+                                      float vecout[3],
+                                      const float vecin[3]);
+int curvemapping_RGBA_does_something(const struct CurveMapping *cumap);
+void curvemapping_table_RGBA(const struct CurveMapping *cumap, float **array, 
int *size);
+
+/* non-const, these modify the curve */
+void curvemapping_premultiply(struct CurveMapping *cumap, int restore);
+
+void BKE_histogram_update_sample_line(struct Histogram *hist,
+                                      struct ImBuf *ibuf,
+                                      const struct ColorManagedViewSettings 
*view_settings,
+                                      const struct ColorManagedDisplaySettings 
*display_settings);
+void scopes_update(struct Scopes *scopes,
+                   struct ImBuf *ibuf,
+                   const struct ColorManagedViewSettings *view_settings,
+                   const struct ColorManagedDisplaySettings *display_settings);
+void scopes_free(struct Scopes *scopes);
+void scopes_new(struct Scopes *scopes);
+
+void BKE_color_managed_display_settings_init(struct 
ColorManagedDisplaySettings *settings);
+void BKE_color_managed_display_settings_copy(struct 
ColorManagedDisplaySettings *new_settings,
+                                             const struct 
ColorManagedDisplaySettings *settings);
+
+/* Initialize view settings to be best suitable for render type of viewing.
+ * This will use default view transform from the OCIO configuration if none
+ * is specified. */
+void BKE_color_managed_view_settings_init_render(
+    struct ColorManagedViewSettings *settings,
+    const struct ColorManagedDisplaySettings *display_settings,
+    const char *view_transform);
+
+/* Initialize view settings which are best suitable for viewing non-render
+ * images. For example,s movie clips while tracking. */
+void BKE_color_managed_view_settings_init_default(
+    struct ColorManagedViewSettings *settings,
+    const struct ColorManagedDisplaySettings *display_settings);
+
+void BKE_color_managed_view_settings_copy(struct ColorManagedViewSettings 
*new_settings,
+                                          const struct 
ColorManagedViewSettings *settings);
+void BKE_color_managed_view_settings_free(struct ColorManagedViewSettings 
*settings);
+
+void BKE_color_managed_colorspace_settings_init(
+    struct ColorManagedColorspaceSettings *colorspace_settings);
+void BKE_color_managed_colorspace_settings_copy(
+    struct ColorManagedColorspaceSettings *colorspace_settings,
+    const struct ColorManagedColorspaceSettings *settings);
+bool BKE_color_managed_colorspace_settings_equals(
+    const struct ColorManagedColorspaceSettings *settings1,
+    const struct ColorManagedColorspaceSettings *settings2);
+#endif
diff --git a/source/blender/blenkernel/intern/profile_path.c 
b/source/blender/blenkernel/intern/profile_path.c
new file mode 100644
index 00000000000..4b73cd60f60
--- /dev/null
+++ b/source/blender/blenkernel/intern/profile_path.c
@@ -0,0 +1,1974 @@
+/*
+ * 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) 2005 Blender Foundation.
+ * All rights reserved.
+ */
+
+/** \file
+ * \ingroup bke
+ */
+
+#include <string.h>
+#include <math.h>
+#include <stdlib.h>
+#include <float.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_color_types.h"
+#include "DNA_curve_types.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_math.h"
+#include "BLI_utildefines.h"
+#include "BLI_task.h"
+#include "BLI_threads.h"
+
+#include "BKE_profile_path.h"
+#include "BKE_curve.h"
+#include "BKE_fcurve.h"
+
+#include "IMB_colormanagement.h"
+#include "IMB_imbuf_types.h"
+
+/* ********************************* color curve ********************* */
+
+/* ***************** operations on full struct ************* */
+
+void curvemapping_set_defaults(
+    CurveMapping *cumap, int tot, float minx, float miny, float maxx, float 
maxy)
+{
+  int a;
+  float clipminx, clipminy, clipmaxx, clipmaxy;
+
+  cumap->flag = CUMA_DO_CLIP;
+  if (tot == 4) {
+    cumap->cur = 3; /* rhms, hack for 'col' curve? */
+  }
+
+  clipminx = min_ff(minx, maxx);
+  clipminy = min_ff(miny, maxy);
+  clipmaxx = max_ff(minx, maxx);
+  clipmaxy = max_ff(miny, maxy);
+
+  BLI_rctf_init(&cumap->curr, clipminx, cli

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to