[Bf-blender-cvs] [5442e0720f1] temp-T96710-pbvh-pixels: Add image user for painting on single image.
Jeroen Bakker
noreply at git.blender.org
Mon Apr 11 15:48:58 CEST 2022
Commit: 5442e0720f135361a115227310f278a72c03fdd7
Author: Jeroen Bakker
Date: Mon Apr 11 15:48:51 2022 +0200
Branches: temp-T96710-pbvh-pixels
https://developer.blender.org/rB5442e0720f135361a115227310f278a72c03fdd7
Add image user for painting on single image.
===================================================================
M source/blender/editors/include/ED_paint.h
M source/blender/editors/sculpt_paint/paint_canvas.cc
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/sculpt_paint/sculpt_intern.h
M source/blender/editors/sculpt_paint/sculpt_paint_color.c
M source/blender/editors/sculpt_paint/sculpt_paint_image.cc
M source/blender/makesdna/DNA_scene_types.h
===================================================================
diff --git a/source/blender/editors/include/ED_paint.h b/source/blender/editors/include/ED_paint.h
index 59d667b758f..557891f78f1 100644
--- a/source/blender/editors/include/ED_paint.h
+++ b/source/blender/editors/include/ED_paint.h
@@ -114,7 +114,7 @@ void ED_paintcurve_undo_push_end(struct bContext *C);
void ED_paintcurve_undosys_type(struct UndoType *ut);
/* paint_canvas.cc */
-bool ED_paint_canvas_image_get(const struct PaintModeSettings *paint_mode_settings,
+bool ED_paint_canvas_image_get(struct PaintModeSettings *paint_mode_settings,
struct Object *ob,
struct Image **r_image,
struct ImageUser **r_image_user);
diff --git a/source/blender/editors/sculpt_paint/paint_canvas.cc b/source/blender/editors/sculpt_paint/paint_canvas.cc
index a94a5933d96..9c0f16636d7 100644
--- a/source/blender/editors/sculpt_paint/paint_canvas.cc
+++ b/source/blender/editors/sculpt_paint/paint_canvas.cc
@@ -148,7 +148,7 @@ eV3DShadingColorType ED_paint_shading_color_override(bContext *C,
return color_type;
}
-bool ED_paint_canvas_image_get(const PaintModeSettings *settings,
+bool ED_paint_canvas_image_get(PaintModeSettings *settings,
Object *ob,
Image **r_image,
ImageUser **r_image_user)
@@ -162,7 +162,7 @@ bool ED_paint_canvas_image_get(const PaintModeSettings *settings,
case PAINT_CANVAS_SOURCE_IMAGE:
*r_image = settings->canvas_image;
- /* TODO: Should we have an image user inside the paint mode settings? */
+ *r_image_user = &settings->image_user;
break;
case PAINT_CANVAS_SOURCE_MATERIAL: {
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index d008deea485..5e5a8c86758 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2755,7 +2755,7 @@ static void update_brush_local_mat(Sculpt *sd, Object *ob)
/** \name Texture painting
* \{ */
-static bool sculpt_needs_pbvh_pixels(const PaintModeSettings *paint_mode_settings,
+static bool sculpt_needs_pbvh_pixels(PaintModeSettings *paint_mode_settings,
const Brush *brush,
Object *ob)
{
@@ -2768,7 +2768,7 @@ static bool sculpt_needs_pbvh_pixels(const PaintModeSettings *paint_mode_setting
return false;
}
-static void sculpt_pbvh_update_pixels(const PaintModeSettings *paint_mode_settings,
+static void sculpt_pbvh_update_pixels(PaintModeSettings *paint_mode_settings,
SculptSession *ss,
Object *ob)
{
@@ -5391,7 +5391,7 @@ static void sculpt_stroke_done(const bContext *C, struct PaintStroke *UNUSED(str
Object *ob = CTX_data_active_object(C);
SculptSession *ss = ob->sculpt;
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
- const ToolSettings *tool_settings = CTX_data_tool_settings(C);
+ ToolSettings *tool_settings = CTX_data_tool_settings(C);
/* Finished. */
if (!ss->cache) {
diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h
index 97f191a1860..4c11be18758 100644
--- a/source/blender/editors/sculpt_paint/sculpt_intern.h
+++ b/source/blender/editors/sculpt_paint/sculpt_intern.h
@@ -1627,7 +1627,7 @@ void SCULPT_multiplane_scrape_preview_draw(uint gpuattr,
void SCULPT_do_draw_face_sets_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode);
/* Paint Brush. */
-void SCULPT_do_paint_brush(const struct PaintModeSettings *paint_mode_settings,
+void SCULPT_do_paint_brush(struct PaintModeSettings *paint_mode_settings,
Sculpt *sd,
Object *ob,
PBVHNode **nodes,
@@ -1640,17 +1640,16 @@ void SCULPT_do_paint_brush(const struct PaintModeSettings *paint_mode_settings,
* image and image user. Returns false when the image isn't found. In the later case the r_image
* and r_image_user are set to nullptr/NULL.
*/
-bool SCULPT_paint_image_canvas_get(const struct PaintModeSettings *paint_mode_settings,
+bool SCULPT_paint_image_canvas_get(struct PaintModeSettings *paint_mode_settings,
struct Object *ob,
struct Image **r_image,
struct ImageUser **r_image_user) ATTR_NONNULL();
-void SCULPT_do_paint_brush_image(const struct PaintModeSettings *paint_mode_settings,
+void SCULPT_do_paint_brush_image(struct PaintModeSettings *paint_mode_settings,
Sculpt *sd,
Object *ob,
PBVHNode **nodes,
int totnode) ATTR_NONNULL();
-bool SCULPT_use_image_paint_brush(const struct PaintModeSettings *settings, Object *ob)
- ATTR_NONNULL();
+bool SCULPT_use_image_paint_brush(struct PaintModeSettings *settings, Object *ob) ATTR_NONNULL();
/* Smear Brush. */
void SCULPT_do_smear_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode);
diff --git a/source/blender/editors/sculpt_paint/sculpt_paint_color.c b/source/blender/editors/sculpt_paint/sculpt_paint_color.c
index ca753f7f5f1..7a8a6e8e484 100644
--- a/source/blender/editors/sculpt_paint/sculpt_paint_color.c
+++ b/source/blender/editors/sculpt_paint/sculpt_paint_color.c
@@ -240,11 +240,8 @@ static void sample_wet_paint_reduce(const void *__restrict UNUSED(userdata),
add_v4_v4(join->color, swptd->color);
}
-void SCULPT_do_paint_brush(const PaintModeSettings *paint_mode_settings,
- Sculpt *sd,
- Object *ob,
- PBVHNode **nodes,
- int totnode)
+void SCULPT_do_paint_brush(
+ PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
{
if (SCULPT_use_image_paint_brush(paint_mode_settings, ob)) {
SCULPT_do_paint_brush_image(paint_mode_settings, sd, ob, nodes, totnode);
diff --git a/source/blender/editors/sculpt_paint/sculpt_paint_image.cc b/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
index afde3bdbf2c..a1a703fe0a7 100644
--- a/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
+++ b/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
@@ -44,7 +44,7 @@ struct ImageData {
static bool init_active_image(Object *ob,
ImageData *r_image_data,
- const PaintModeSettings *paint_mode_settings)
+ PaintModeSettings *paint_mode_settings)
{
return ED_paint_canvas_image_get(
paint_mode_settings, ob, &r_image_data->image, &r_image_data->image_user);
@@ -392,7 +392,7 @@ extern "C" {
using namespace blender::ed::sculpt_paint::paint::image;
-bool SCULPT_paint_image_canvas_get(const PaintModeSettings *paint_mode_settings,
+bool SCULPT_paint_image_canvas_get(PaintModeSettings *paint_mode_settings,
Object *ob,
Image **r_image,
ImageUser **r_image_user)
@@ -409,7 +409,7 @@ bool SCULPT_paint_image_canvas_get(const PaintModeSettings *paint_mode_settings,
return true;
}
-bool SCULPT_use_image_paint_brush(const PaintModeSettings *settings, Object *ob)
+bool SCULPT_use_image_paint_brush(PaintModeSettings *settings, Object *ob)
{
if (!U.experimental.use_sculpt_texture_paint) {
return false;
@@ -422,11 +422,8 @@ bool SCULPT_use_image_paint_brush(const PaintModeSettings *settings, Object *ob)
return ED_paint_canvas_image_get(settings, ob, &image, &image_user);
}
-void SCULPT_do_paint_brush_image(const PaintModeSettings *paint_mode_settings,
- Sculpt *sd,
- Object *ob,
- PBVHNode **nodes,
- int totnode)
+void SCULPT_do_paint_brush_image(
+ PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
{
Brush *brush = BKE_paint_brush(&sd->paint);
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 9cc4d5ed55b..d6c1040110f 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -939,6 +939,7 @@ typedef struct PaintModeSettings {
/** Selected image when canvas_source=PAINT_CANVAS_SOURCE_IMAGE. */
Image *canvas_image;
+ ImageUser image_user;
} PaintModeSettings;
More information about the Bf-blender-cvs
mailing list