[Bf-blender-cvs] [82e2ea8fce4] temp-udim-images: Added Alt+LMouse key binding to select current tile

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


Commit: 82e2ea8fce4c0a54a861c9da8e12a2f51155be00
Author: Lukas Stockner
Date:   Fri Jun 15 20:39:24 2018 +0200
Branches: temp-udim-images
https://developer.blender.org/rB82e2ea8fce4c0a54a861c9da8e12a2f51155be00

Added Alt+LMouse key binding to select current tile

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

M	source/blender/editors/space_image/image_intern.h
M	source/blender/editors/space_image/image_ops.c
M	source/blender/editors/space_image/space_image.c

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

diff --git a/source/blender/editors/space_image/image_intern.h b/source/blender/editors/space_image/image_intern.h
index 585b1889cc5..671a9c50bcf 100644
--- a/source/blender/editors/space_image/image_intern.h
+++ b/source/blender/editors/space_image/image_intern.h
@@ -100,6 +100,7 @@ void IMAGE_OT_clear_render_border(struct wmOperatorType *ot);
 void IMAGE_OT_add_tile(struct wmOperatorType *ot);
 void IMAGE_OT_remove_tile(struct wmOperatorType *ot);
 void IMAGE_OT_generate_tile(struct wmOperatorType *ot);
+void IMAGE_OT_select_tile(struct wmOperatorType *ot);
 
 /* image_panels.c */
 struct ImageUser *ntree_get_active_iuser(struct bNodeTree *ntree);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 95fea88250b..d3017b24ad2 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -4110,3 +4110,45 @@ void IMAGE_OT_generate_tile(wmOperatorType *ot)
 	prop = RNA_def_int(ot->srna, "height", 1024, 1, INT_MAX, "Height", "Image height", 1, 16384);
 	RNA_def_property_subtype(prop, PROP_PIXEL);
 }
+
+/* ********************* Select tile operator ****************** */
+
+static int image_select_tile_poll(bContext *C)
+{
+	Image *ima = CTX_data_edit_image(C);
+
+	return (ima && ima->source == IMA_SRC_TILED);
+}
+
+static int image_select_tile_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
+{
+	SpaceImage *sima = CTX_wm_space_image(C);
+	ARegion *ar = CTX_wm_region(C);
+
+	float uv[2];
+	UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &uv[0], &uv[1]);
+
+	if (uv[0] >= 0.0f && uv[1] >= 0.0f && uv[0] < 10.0f) {
+		int tx = (int) uv[0];
+		int ty = (int) uv[1];
+
+		sima->curtile = 10*ty + tx;
+
+		WM_event_add_notifier(C, NC_WINDOW, NULL);
+		return OPERATOR_FINISHED;
+	}
+
+	return OPERATOR_CANCELLED;
+}
+
+void IMAGE_OT_select_tile(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Select tile";
+	ot->idname = "IMAGE_OT_select_tile";
+	ot->description = "Use mouse to select a tile of the image";
+
+	/* api callbacks */
+	ot->invoke = image_select_tile_invoke;
+	ot->poll = image_select_tile_poll;
+}
\ No newline at end of file
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index a15f0c0712d..77434119e85 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -292,6 +292,7 @@ static void image_operatortypes(void)
 	WM_operatortype_append(IMAGE_OT_add_tile);
 	WM_operatortype_append(IMAGE_OT_remove_tile);
 	WM_operatortype_append(IMAGE_OT_generate_tile);
+	WM_operatortype_append(IMAGE_OT_select_tile);
 }
 
 static void image_keymap(struct wmKeyConfig *keyconf)
@@ -358,6 +359,7 @@ static void image_keymap(struct wmKeyConfig *keyconf)
 	WM_keymap_add_item(keymap, "IMAGE_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0);
 	RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "point", 0);
 	RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "point", 1);
+	WM_keymap_add_item(keymap, "IMAGE_OT_select_tile", ACTIONMOUSE, KM_PRESS, KM_ALT, 0);
 
 	/* toggle editmode is handy to have while UV unwrapping */
 	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, 0, 0);



More information about the Bf-blender-cvs mailing list