[Bf-blender-cvs] [b6a3231ba52] temp-udim-images: Fix filling in secondary tiles in 2D paint mode

Lukas Stockner noreply at git.blender.org
Fri Jun 15 20:46:02 CEST 2018


Commit: b6a3231ba52a8ee3d03a4e41e5e68b654e3d39c7
Author: Lukas Stockner
Date:   Fri Jun 15 20:01:11 2018 +0200
Branches: temp-udim-images
https://developer.blender.org/rBb6a3231ba52a8ee3d03a4e41e5e68b654e3d39c7

Fix filling in secondary tiles in 2D paint mode

===================================================================

M	source/blender/editors/sculpt_paint/paint_image_2d.c

===================================================================

diff --git a/source/blender/editors/sculpt_paint/paint_image_2d.c b/source/blender/editors/sculpt_paint/paint_image_2d.c
index 965de98e5ad..6aa30111380 100644
--- a/source/blender/editors/sculpt_paint/paint_image_2d.c
+++ b/source/blender/editors/sculpt_paint/paint_image_2d.c
@@ -132,6 +132,7 @@ typedef struct ImagePaintTile {
 	float uv_ofs[2];
 	bool need_redraw;
 	BrushPainterCache cache;
+	int tile_number;
 
 	ImagePaintTileState state;
 
@@ -1589,13 +1590,23 @@ void paint_2d_bucket_fill(
 	float uv_ofs[2];
 	float image_init[2], image_final[2];
 	paint_2d_transform_mouse(s, mouse_init, image_init);
-	int tile = BKE_image_get_tile_from_pos(ima, image_init, image_init, uv_ofs);
+	int tile_number = BKE_image_get_tile_from_pos(ima, image_init, image_init, uv_ofs);
 	if (mouse_final) {
 		paint_2d_transform_mouse(s, mouse_final, image_final);
 		sub_v2_v2(image_final, uv_ofs);
 	}
 
-	ibuf = BKE_image_acquire_ibuf(ima, &s->tiles[tile].iuser, NULL);
+	ImageUser *iuser = &s->tiles[0].iuser;
+	for (int i = 0; i < s->num_tiles; i++) {
+		if (s->tiles[i].iuser.tile == tile_number) {
+			if (!paint_2d_check_tile(s, i))
+				return;
+			iuser = &s->tiles[i].iuser;
+			break;
+		}
+	}
+
+	ibuf = BKE_image_acquire_ibuf(ima, iuser, NULL);
 
 	if (!ibuf)
 		return;
@@ -1740,7 +1751,7 @@ void paint_2d_bucket_fill(
 		BLI_stack_free(stack);
 	}
 
-	imapaint_image_update(sima, ima, ibuf, &s->tiles[tile].iuser, false);
+	imapaint_image_update(sima, ima, ibuf, iuser, false);
 	ED_imapaint_clear_partial_redraw();
 
 	BKE_image_release_ibuf(ima, ibuf, NULL);
@@ -1774,11 +1785,21 @@ void paint_2d_gradient_fill(
 	paint_2d_transform_mouse(s, mouse_init, image_init);
 
 	float uv_ofs[2];
-	int tile = BKE_image_get_tile_from_pos(ima, image_init, image_init, uv_ofs);
+	int tile_number = BKE_image_get_tile_from_pos(ima, image_init, image_init, uv_ofs);
 	sub_v2_v2(image_init, uv_ofs);
 	sub_v2_v2(image_final, uv_ofs);
 
-	ibuf = BKE_image_acquire_ibuf(ima, &s->tiles[tile].iuser, NULL);
+	ImageUser *iuser = &s->tiles[0].iuser;
+	for (int i = 0; i < s->num_tiles; i++) {
+		if (s->tiles[i].iuser.tile == tile_number) {
+			if (!paint_2d_check_tile(s, i))
+				return;
+			iuser = &s->tiles[i].iuser;
+			break;
+		}
+	}
+
+	ibuf = BKE_image_acquire_ibuf(ima, iuser, NULL);
 
 	if (!ibuf)
 		return;
@@ -1861,7 +1882,7 @@ void paint_2d_gradient_fill(
 		}
 	}
 
-	imapaint_image_update(sima, ima, ibuf, &s->tiles[tile].iuser, false);
+	imapaint_image_update(sima, ima, ibuf, iuser, false);
 	ED_imapaint_clear_partial_redraw();
 
 	BKE_image_release_ibuf(ima, ibuf, NULL);



More information about the Bf-blender-cvs mailing list