Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/brush_engine.c')
-rw-r--r--source/blender/blenkernel/intern/brush_engine.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/brush_engine.c b/source/blender/blenkernel/intern/brush_engine.c
index a917c92879e..d247a69e4b5 100644
--- a/source/blender/blenkernel/intern/brush_engine.c
+++ b/source/blender/blenkernel/intern/brush_engine.c
@@ -214,7 +214,7 @@ void BKE_brush_channel_free(BrushChannel *ch)
}
}
-void BKE_brush_channel_copy(BrushChannel *dst, BrushChannel *src)
+ATTR_NO_OPT void BKE_brush_channel_copy(BrushChannel *dst, BrushChannel *src)
{
*dst = *src;
@@ -223,7 +223,7 @@ void BKE_brush_channel_copy(BrushChannel *dst, BrushChannel *src)
}
}
-void BKE_brush_channel_init(BrushChannel *ch, BrushChannelType *def)
+ATTR_NO_OPT void BKE_brush_channel_init(BrushChannel *ch, BrushChannelType *def)
{
memset(ch, 0, sizeof(*ch));
@@ -240,7 +240,7 @@ void BKE_brush_channel_init(BrushChannel *ch, BrushChannelType *def)
BrushMapping *map = ch->mappings + i;
CurveMapping *curve = &map->curve;
- BKE_curvemapping_init(curve);
+ memset(curve, 0, sizeof(*curve));
float min, max;
@@ -259,6 +259,17 @@ void BKE_brush_channel_init(BrushChannel *ch, BrushChannelType *def)
ch->mappings[i].flag |= BRUSH_MAPPING_INVERT;
}
+ int slope = CURVEMAP_SLOPE_POSITIVE;
+
+ for (int i = 0; i < 4; i++) {
+ BKE_curvemap_reset(&curve->cm[i],
+ &(struct rctf){.xmax = 0, .ymax = min, .xmax = 1, .ymax = max},
+ mdef->curve,
+ slope);
+ }
+
+ BKE_curvemapping_init(curve);
+
map->blendmode = mdef->blendmode;
map->factor = 1.0f;
@@ -290,17 +301,16 @@ void BKE_brush_channelset_add(BrushChannelSet *chset, BrushChannel *ch)
chset->totchannel++;
if (!chset->channels) {
- chset->channels = MEM_callocN(sizeof(BrushChannelSet) * chset->totchannel, "chset->channels");
+ chset->channels = MEM_callocN(sizeof(BrushChannel) * chset->totchannel, "chset->channels");
}
else {
- chset->channels = MEM_recallocN(chset->channels,
- sizeof(BrushChannelSet) * sizeof(chset->totchannel));
+ chset->channels = MEM_recallocN(chset->channels, sizeof(BrushChannel) * chset->totchannel);
}
- memcpy(chset->channels + chset->totchannel - 1, ch, sizeof(BrushChannelSet));
+ memcpy(chset->channels + chset->totchannel - 1, ch, sizeof(BrushChannel));
}
-BrushChannel *BKE_brush_channelset_lookup(BrushChannelSet *chset, const char *idname)
+ATTR_NO_OPT BrushChannel *BKE_brush_channelset_lookup(BrushChannelSet *chset, const char *idname)
{
for (int i = 0; i < chset->totchannel; i++) {
if (STREQ(chset->channels[i].idname, idname)) {
@@ -316,12 +326,12 @@ bool BKE_brush_channelset_has(BrushChannelSet *chset, const char *idname)
return BKE_brush_channelset_lookup(chset, idname) != NULL;
}
-void BKE_brush_channelset_add_builtin(BrushChannelSet *chset, const char *idname)
+ATTR_NO_OPT void BKE_brush_channelset_add_builtin(BrushChannelSet *chset, const char *idname)
{
BrushChannelType *def = NULL;
for (int i = 0; i < builtin_channel_len; i++) {
- BrushChannelType *def2 = builtin_channel_len + i;
+ BrushChannelType *def2 = brush_builtin_channels + i;
if (STREQ(def2->idname, idname)) {
def = def2;
@@ -485,8 +495,8 @@ void BKE_brush_builtin_create(Brush *brush, int tool)
ADDCH("STRENGTH");
ADDCH("AUTOSMOOTH");
ADDCH("TOPOLOGY_RAKE");
- ADDCH("AUTOSMOOTH_RADIUS_SCLAE");
- ADDCH("RAKE_RADIUS_SCALE");
+ ADDCH("AUTOSMOOTH_RADIUS_SCALE");
+ ADDCH("TOPOLOGY_RAKE_RADIUS_SCALE");
ADDCH("AUTOMASKING");
@@ -498,6 +508,12 @@ void BKE_brush_builtin_create(Brush *brush, int tool)
ch->flag = BRUSH_CHANNEL_INHERIT;
break;
}
+ default: {
+ // implement me!
+ BKE_brush_channelset_free(chset);
+ brush->channels = NULL;
+ break;
+ }
}
}