[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