[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