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/paint_toolslots.c')
-rw-r--r--source/blender/blenkernel/intern/paint_toolslots.c138
1 files changed, 68 insertions, 70 deletions
diff --git a/source/blender/blenkernel/intern/paint_toolslots.c b/source/blender/blenkernel/intern/paint_toolslots.c
index 24b801ce67f..942d5e758f3 100644
--- a/source/blender/blenkernel/intern/paint_toolslots.c
+++ b/source/blender/blenkernel/intern/paint_toolslots.c
@@ -35,65 +35,64 @@
void BKE_paint_toolslots_len_ensure(Paint *paint, int len)
{
- /* Tool slots are 'uchar'. */
- BLI_assert(len <= UCHAR_MAX);
- if (paint->tool_slots_len < len) {
- paint->tool_slots = MEM_recallocN(paint->tool_slots, sizeof(*paint->tool_slots) * len);
- paint->tool_slots_len = len;
- }
+ /* Tool slots are 'uchar'. */
+ BLI_assert(len <= UCHAR_MAX);
+ if (paint->tool_slots_len < len) {
+ paint->tool_slots = MEM_recallocN(paint->tool_slots, sizeof(*paint->tool_slots) * len);
+ paint->tool_slots_len = len;
+ }
}
static void paint_toolslots_init(Main *bmain, Paint *paint)
{
- if (paint == NULL) {
- return;
- }
- const eObjectMode ob_mode = paint->runtime.ob_mode;
- BLI_assert(paint->runtime.tool_offset && ob_mode);
- for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) {
- if (brush->ob_mode & ob_mode) {
- const int slot_index = BKE_brush_tool_get(brush, paint);
- BKE_paint_toolslots_len_ensure(paint, slot_index + 1);
- if (paint->tool_slots[slot_index].brush == NULL) {
- paint->tool_slots[slot_index].brush = brush;
- id_us_plus(&brush->id);
- }
- }
- }
+ if (paint == NULL) {
+ return;
+ }
+ const eObjectMode ob_mode = paint->runtime.ob_mode;
+ BLI_assert(paint->runtime.tool_offset && ob_mode);
+ for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) {
+ if (brush->ob_mode & ob_mode) {
+ const int slot_index = BKE_brush_tool_get(brush, paint);
+ BKE_paint_toolslots_len_ensure(paint, slot_index + 1);
+ if (paint->tool_slots[slot_index].brush == NULL) {
+ paint->tool_slots[slot_index].brush = brush;
+ id_us_plus(&brush->id);
+ }
+ }
+ }
}
void BKE_paint_toolslots_init_from_main(struct Main *bmain)
{
- for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) {
- ToolSettings *ts = scene->toolsettings;
- paint_toolslots_init(bmain, &ts->imapaint.paint);
- paint_toolslots_init(bmain, &ts->sculpt->paint);
- paint_toolslots_init(bmain, &ts->vpaint->paint);
- paint_toolslots_init(bmain, &ts->wpaint->paint);
- paint_toolslots_init(bmain, &ts->gp_paint->paint);
- }
+ for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) {
+ ToolSettings *ts = scene->toolsettings;
+ paint_toolslots_init(bmain, &ts->imapaint.paint);
+ paint_toolslots_init(bmain, &ts->sculpt->paint);
+ paint_toolslots_init(bmain, &ts->vpaint->paint);
+ paint_toolslots_init(bmain, &ts->wpaint->paint);
+ paint_toolslots_init(bmain, &ts->gp_paint->paint);
+ }
}
-
void BKE_paint_toolslots_brush_update_ex(Paint *paint, Brush *brush)
{
- const uint tool_offset = paint->runtime.tool_offset;
- UNUSED_VARS_NDEBUG(tool_offset);
- BLI_assert(tool_offset != 0);
- const int slot_index = BKE_brush_tool_get(brush, paint);
- BKE_paint_toolslots_len_ensure(paint, slot_index + 1);
- PaintToolSlot *tslot = &paint->tool_slots[slot_index];
- id_us_plus(&brush->id);
- id_us_min(&tslot->brush->id);
- tslot->brush = brush;
+ const uint tool_offset = paint->runtime.tool_offset;
+ UNUSED_VARS_NDEBUG(tool_offset);
+ BLI_assert(tool_offset != 0);
+ const int slot_index = BKE_brush_tool_get(brush, paint);
+ BKE_paint_toolslots_len_ensure(paint, slot_index + 1);
+ PaintToolSlot *tslot = &paint->tool_slots[slot_index];
+ id_us_plus(&brush->id);
+ id_us_min(&tslot->brush->id);
+ tslot->brush = brush;
}
void BKE_paint_toolslots_brush_update(Paint *paint)
{
- if (paint->brush == NULL) {
- return;
- }
- BKE_paint_toolslots_brush_update_ex(paint, paint->brush);
+ if (paint->brush == NULL) {
+ return;
+ }
+ BKE_paint_toolslots_brush_update_ex(paint, paint->brush);
}
/**
@@ -102,35 +101,34 @@ void BKE_paint_toolslots_brush_update(Paint *paint)
*/
void BKE_paint_toolslots_brush_validate(Main *bmain, Paint *paint)
{
- /* Clear slots with invalid slots or mode (unlikely but possible). */
- const uint tool_offset = paint->runtime.tool_offset;
- UNUSED_VARS_NDEBUG(tool_offset);
- const eObjectMode ob_mode = paint->runtime.ob_mode;
- BLI_assert(tool_offset && ob_mode);
- for (int i = 0; i < paint->tool_slots_len; i++) {
- PaintToolSlot *tslot = &paint->tool_slots[i];
- if (tslot->brush) {
- if ((i != BKE_brush_tool_get(tslot->brush, paint)) ||
- (tslot->brush->ob_mode & ob_mode) == 0)
- {
- id_us_min(&tslot->brush->id);
- tslot->brush = NULL;
- }
- }
- }
-
- /* Unlikely but possible the active brush is not currently using a slot. */
- BKE_paint_toolslots_brush_update(paint);
-
- /* Fill slots from brushes. */
- paint_toolslots_init(bmain, paint);
+ /* Clear slots with invalid slots or mode (unlikely but possible). */
+ const uint tool_offset = paint->runtime.tool_offset;
+ UNUSED_VARS_NDEBUG(tool_offset);
+ const eObjectMode ob_mode = paint->runtime.ob_mode;
+ BLI_assert(tool_offset && ob_mode);
+ for (int i = 0; i < paint->tool_slots_len; i++) {
+ PaintToolSlot *tslot = &paint->tool_slots[i];
+ if (tslot->brush) {
+ if ((i != BKE_brush_tool_get(tslot->brush, paint)) ||
+ (tslot->brush->ob_mode & ob_mode) == 0) {
+ id_us_min(&tslot->brush->id);
+ tslot->brush = NULL;
+ }
+ }
+ }
+
+ /* Unlikely but possible the active brush is not currently using a slot. */
+ BKE_paint_toolslots_brush_update(paint);
+
+ /* Fill slots from brushes. */
+ paint_toolslots_init(bmain, paint);
}
Brush *BKE_paint_toolslots_brush_get(Paint *paint, int slot_index)
{
- if (slot_index < paint->tool_slots_len) {
- PaintToolSlot *tslot = &paint->tool_slots[slot_index];
- return tslot->brush;
- }
- return NULL;
+ if (slot_index < paint->tool_slots_len) {
+ PaintToolSlot *tslot = &paint->tool_slots[slot_index];
+ return tslot->brush;
+ }
+ return NULL;
}