[Bf-blender-cvs] [f0432e37ab0] blender2.8: Fix T58636: repeat image in UV editor not working.

Brecht Van Lommel noreply at git.blender.org
Mon Dec 3 20:08:43 CET 2018


Commit: f0432e37ab06831167cf84c589fad7d5a28d54ef
Author: Brecht Van Lommel
Date:   Mon Dec 3 20:06:10 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBf0432e37ab06831167cf84c589fad7d5a28d54ef

Fix T58636: repeat image in UV editor not working.

A little too much code got removed in fb24813.

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

M	source/blender/editors/space_image/image_draw.c

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

diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c
index 4cbe25462af..a46767495dd 100644
--- a/source/blender/editors/space_image/image_draw.c
+++ b/source/blender/editors/space_image/image_draw.c
@@ -549,6 +549,26 @@ static void draw_image_buffer(const bContext *C, SpaceImage *sima, ARegion *ar,
 	}
 }
 
+static void draw_image_buffer_repeated(const bContext *C, SpaceImage *sima, ARegion *ar, Scene *scene, ImBuf *ibuf, float zoomx, float zoomy)
+{
+	const double time_current = PIL_check_seconds_timer();
+
+	const int xmax = ceil(ar->v2d.cur.xmax);
+	const int ymax = ceil(ar->v2d.cur.ymax);
+	const int xmin = floor(ar->v2d.cur.xmin);
+	const int ymin = floor(ar->v2d.cur.ymin);
+
+	for (int x = xmin; x < xmax; x++) {
+		for (int y = ymin; y < ymax; y++) {
+			draw_image_buffer(C, sima, ar, scene, ibuf, x, y, zoomx, zoomy);
+
+			/* only draw until running out of time */
+			if ((PIL_check_seconds_timer() - time_current) > 0.25)
+				return;
+		}
+	}
+}
+
 /* draw uv edit */
 
 /* draw grease pencil */
@@ -699,7 +719,10 @@ void draw_image_main(const bContext *C, ARegion *ar)
 		ED_region_grid_draw(ar, zoomx, zoomy);
 	}
 	else {
-		draw_image_buffer(C, sima, ar, scene, ibuf, 0.0f, 0.0f, zoomx, zoomy);
+		if (sima->flag & SI_DRAW_TILE)
+			draw_image_buffer_repeated(C, sima, ar, scene, ibuf, zoomx, zoomy);
+		else
+			draw_image_buffer(C, sima, ar, scene, ibuf, 0.0f, 0.0f, zoomx, zoomy);
 
 		if (sima->flag & SI_DRAW_METADATA) {
 			int x, y;



More information about the Bf-blender-cvs mailing list