[Bf-blender-cvs] [1ef3c59beb8] temp-sculpt-brush-channel: tmep-sculpt-brush-channel: Fix unified size

Joseph Eagar noreply at git.blender.org
Wed Aug 10 01:19:11 CEST 2022


Commit: 1ef3c59beb86cc1f1957d97be416f3740314d752
Author: Joseph Eagar
Date:   Tue Aug 9 16:18:59 2022 -0700
Branches: temp-sculpt-brush-channel
https://developer.blender.org/rB1ef3c59beb86cc1f1957d97be416f3740314d752

tmep-sculpt-brush-channel: Fix unified size

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

M	source/blender/blenkernel/BKE_brush_channel.h
M	source/blender/blenkernel/intern/brush.cc
M	source/blender/blenkernel/intern/brush_channel.cc
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/makesrna/intern/rna_brush.c
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/blenkernel/BKE_brush_channel.h b/source/blender/blenkernel/BKE_brush_channel.h
index d102fa3bcfc..5eaede4c6e3 100644
--- a/source/blender/blenkernel/BKE_brush_channel.h
+++ b/source/blender/blenkernel/BKE_brush_channel.h
@@ -154,19 +154,24 @@ bool _BKE_brush_channelset_has(BrushChannelSet *chset, const char *idname);
    reevaluate values from RNA */
 void BKE_brush_channelset_begin(BrushChannelSet *chset, BrushChannelType *type);
 
-float _BKE_brush_channelset_eval_float(struct Brush *br,
-                                       struct Scene *scene,
-                                       BrushChannelSet *chset,
+float _BKE_brush_channelset_eval_float(const struct Brush *br,
+                                       const struct Scene *scene,
                                        const char *idname,
                                        BrushMappingData *mapping);
-#define BKE_brush_channelset_eval_float(br, scene, chset, channel, mapdata) \
-  _BKE_brush_channelset_eval_float(br, scene, chset, make_builtin_ch_name(channel), mapdata)
-
+int _BKE_brush_channelset_eval_int(const struct Brush *br,
+                                   const struct Scene *scene,
+                                   const char *idname,
+                                   BrushMappingData *mapping);
 float _BKE_brush_channelset_float_get(BrushChannelSet *chset, const char *idname);
 void _BKE_brush_channelset_float_set(BrushChannelSet *chset, const char *idname, float f);
 int _BKE_brush_channelset_int_get(BrushChannelSet *chset, const char *idname);
 void _BKE_brush_channelset_int_set(BrushChannelSet *chset, const char *idname, int i);
 
+#define BKE_brush_channelset_eval_float(br, scene, channel, mapdata) \
+  _BKE_brush_channelset_eval_float(br, scene, make_builtin_ch_name(channel), mapdata)
+#define BKE_brush_channelset_eval_int(br, scene, channel, mapdata) \
+  _BKE_brush_channelset_eval_int(br, scene, make_builtin_ch_name(channel), mapdata)
+
 #define BKE_brush_channelset_float_get(chset, idname) \
   _BKE_brush_channelset_float_get(chset, make_builtin_ch_name(idname))
 #define BKE_brush_channelset_float_set(chset, idname, f) \
@@ -180,8 +185,8 @@ BrushChannelSet *BKE_brush_channelset_copy(BrushChannelSet *chset);
 
 /* Create a (copied) final brush channel set with all inheritance and unified flags
    and input mappings taken into account. */
-BrushChannelSet *BKE_brush_channelset_create_final(struct Brush *brush,
-                                                   struct Scene *scene,
+BrushChannelSet *BKE_brush_channelset_create_final(const struct Brush *brush,
+                                                   const struct Scene *scene,
                                                    BrushMappingData *mapdata);
 
 BLI_INLINE const char *BKE_brush_mapping_type_to_typename(eBrushMappingType type)
@@ -208,17 +213,21 @@ BLI_INLINE const char *BKE_brush_mapping_type_to_typename(eBrushMappingType type
 
 const char *BKE_brush_channel_category_get(BrushChannel *ch);
 const void BKE_brush_channel_category_set(BrushChannel *ch, const char *category);
-bool BKE_brush_channel_inherits(struct Brush *brush,
-                                struct ToolSettings *tool_settings,
+bool BKE_brush_channel_inherits(const struct Brush *brush,
+                                const struct ToolSettings *tool_settings,
                                 BrushChannel *ch);
-BrushChannelSet *BKE_brush_channelset_get_final(struct Brush *brush,
-                                                struct ToolSettings *tool_settings);
+BrushChannelSet *BKE_brush_channelset_get_final(const struct Brush *brush,
+                                                const struct ToolSettings *tool_settings);
 
 void BKE_brush_channelset_toolsettings_init(struct ToolSettings *ts);
 
 /* Get rna path for brush channel. Calling code should call MEM_SAFE_FREE on result. */
 char *BKE_brush_channel_rna_path(ID *owner, BrushChannel *ch);
 
+void _BKE_brush_channelset_mark_update(BrushChannelSet *chset, const char *idname);
+#define BKE_brush_channelset_mark_update(chset, idname) \
+  _BKE_brush_channelset_mark_update(chset, make_builtin_ch_name(idname))
+
 /* Disable optimization for a function (for debugging use only!)*/
 #ifdef __clang__
 #  define ATTR_NO_OPT __attribute__((optnone))
diff --git a/source/blender/blenkernel/intern/brush.cc b/source/blender/blenkernel/intern/brush.cc
index 01adb4c5b03..4cd17a52735 100644
--- a/source/blender/blenkernel/intern/brush.cc
+++ b/source/blender/blenkernel/intern/brush.cc
@@ -2270,10 +2270,13 @@ void BKE_brush_size_set(Scene *scene, Brush *brush, int size)
 
 int BKE_brush_size_get(const Scene *scene, const Brush *brush)
 {
+  return BKE_brush_channelset_eval_int(brush, scene, size, NULL);
+#if 0
   UnifiedPaintSettings *ups = &scene->toolsettings->unified_paint_settings;
   int size = (ups->flag & UNIFIED_PAINT_SIZE) ? ups->size : brush->size;
 
   return size;
+#endif
 }
 
 bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush)
diff --git a/source/blender/blenkernel/intern/brush_channel.cc b/source/blender/blenkernel/intern/brush_channel.cc
index fe665c91a2f..6c290b16f57 100644
--- a/source/blender/blenkernel/intern/brush_channel.cc
+++ b/source/blender/blenkernel/intern/brush_channel.cc
@@ -45,12 +45,12 @@
 using string = std::string;
 
 using KeyString = const char *;
-using blender::StringRef;
-using blender::IndexRange;
-using blender::Vector;
 using blender::float3;
 using blender::float4;
+using blender::IndexRange;
 using blender::Map;
+using blender::StringRef;
+using blender::Vector;
 
 static Map<StringRef, BrushChannelType> builtin_channels;
 
@@ -357,7 +357,7 @@ char *BKE_brush_channel_rna_path(ID *owner, BrushChannel *ch)
   }
 }
 
-void brush_channel_ensure_value(ID *id, BrushChannel *ch)
+void brush_channel_ensure_value(const ID *id, BrushChannel *ch)
 {
   if (!(ch->flag & BRUSH_CHANNEL_NEEDS_EVALUATE)) {
     return;
@@ -385,7 +385,7 @@ void brush_channel_ensure_value(ID *id, BrushChannel *ch)
   PointerRNA ptr, ptr2;
   PropertyRNA *prop = nullptr;
 
-  RNA_pointer_create(id, srna, id, &ptr);
+  RNA_pointer_create(const_cast<ID *>(id), srna, const_cast<ID *>(id), &ptr);
   if (RNA_path_resolve(&ptr, path.c_str(), &ptr2, &prop)) {
     PropertyType prop_type = RNA_property_type(prop);
     PropertySubType prop_subtype = RNA_property_subtype(prop);
@@ -521,7 +521,9 @@ double BKE_brush_channel_eval_mappings(BrushChannel *ch,
   return f;
 }
 
-static BrushChannel *brush_channel_final(Brush *brush, Scene *scene, const char *idname)
+static BrushChannel *brush_channel_final(const Brush *brush,
+                                         const Scene *scene,
+                                         const char *idname)
 {
   BrushChannel *ch = _BKE_brush_channelset_lookup(brush->channels, idname);
 
@@ -536,19 +538,32 @@ static BrushChannel *brush_channel_final(Brush *brush, Scene *scene, const char
   return ch;
 }
 
-float _BKE_brush_channelset_eval_float(Brush *brush,
-                                       Scene *scene,
-                                       BrushChannelSet *chset,
+float _BKE_brush_channelset_eval_float(const Brush *brush,
+                                       const Scene *scene,
                                        const char *idname,
                                        BrushMappingData *mapping)
 {
   BrushChannel *ch = brush_channel_final(brush, scene, idname);
 
-  return BKE_brush_channel_eval_mappings(ch, mapping, ch->fvalue, 0);
+  return mapping ? BKE_brush_channel_eval_mappings(ch, mapping, ch->fvalue, 0) : ch->fvalue;
+}
+
+int _BKE_brush_channelset_eval_int(const Brush *brush,
+                                   const Scene *scene,
+                                   const char *idname,
+                                   BrushMappingData *mapping)
+{
+  BrushChannel *ch = brush_channel_final(brush, scene, idname);
+
+  return mapping ? (int)BKE_brush_channel_eval_mappings(ch, mapping, (double)ch->ivalue, 0) :
+                   ch->ivalue;
 }
 
-static void brush_channel_evaluate(
-    Brush *br, Scene *scene, BrushChannelSet *chset, const char *idname, BrushMappingData *mapping)
+static void brush_channel_evaluate(const Brush *br,
+                                   const Scene *scene,
+                                   BrushChannelSet *chset,
+                                   const char *idname,
+                                   BrushMappingData *mapping)
 {
   BrushChannel *ch = _BKE_brush_channelset_lookup(chset, idname);
 
@@ -697,7 +712,9 @@ void BKE_brush_channelset_blend_read(BrushChannelSet *chset, BlendDataReader *re
   }
 }
 
-bool BKE_brush_channel_inherits(Brush *brush, ToolSettings *tool_settings, BrushChannel *ch)
+bool BKE_brush_channel_inherits(const Brush *brush,
+                                const ToolSettings *tool_settings,
+                                BrushChannel *ch)
 {
   BrushChannel *scene_ch = _BKE_brush_channelset_lookup(tool_settings->unified_channels,
                                                         ch->idname);
@@ -717,8 +734,8 @@ bool BKE_brush_channel_inherits(Brush *brush, ToolSettings *tool_settings, Brush
   return false;
 }
 
-BrushChannelSet *BKE_brush_channelset_create_final(Brush *brush,
-                                                   Scene *scene,
+BrushChannelSet *BKE_brush_channelset_create_final(const Brush *brush,
+                                                   const Scene *scene,
                                                    BrushMappingData *mapdata)
 {
   BrushChannelSet *chset = BKE_brush_channelset_copy(brush->channels);
@@ -890,3 +907,12 @@ void BKE_brush_channelset_toolsettings_init(ToolSettings *ts)
 
   BKE_libblock_free_data(&defaults.id, false);
 }
+
+void _BKE_brush_channelset_mark_update(BrushChannelSet *chset, const char *idname)
+{
+  BrushChannel *ch = _BKE_brush_channelset_lookup(chset, idname);
+
+  if (ch) {
+    ch->flag |= BRUSH_CHANNEL_NEEDS_EVALUATE;
+  }
+}
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index e24548ed053..b9ca6cbfef6 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list