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