[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