[Bf-blender-cvs] [6c4bab2] pie-menus: add ui_radial_dir_to_num lookup to avoid long switch ()

Campbell Barton noreply at git.blender.org
Wed Jul 30 14:41:22 CEST 2014


Commit: 6c4bab22db32e86d52be7c2b00210237ffd6b8fb
Author: Campbell Barton
Date:   Wed Jul 30 22:40:36 2014 +1000
Branches: pie-menus
https://developer.blender.org/rB6c4bab22db32e86d52be7c2b00210237ffd6b8fb

add ui_radial_dir_to_num lookup to avoid long switch ()

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

M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_intern.h

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

diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 726aef1..1e68de0 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -1076,34 +1076,12 @@ static bool ui_but_event_property_operator_string(const bContext *C, uiBut *but,
 	return found;
 }
 
+const char ui_radial_dir_to_num[8] = {8, 9, 6, 3, 2, 1, 4, 7};
+
 static void ui_pie_direction_string(uiBut *but, char *buf, int size)
 {
-	switch(but->pie_dir) {
-		case UI_RADIAL_N:
-			BLI_strncpy(buf, "8", size);
-			break;
-		case UI_RADIAL_NE:
-			BLI_strncpy(buf, "9", size);
-			break;
-		case UI_RADIAL_E:
-			BLI_strncpy(buf, "6", size);
-			break;
-		case UI_RADIAL_SE:
-			BLI_strncpy(buf, "3", size);
-			break;
-		case UI_RADIAL_S:
-			BLI_strncpy(buf, "2", size);
-			break;
-		case UI_RADIAL_SW:
-			BLI_strncpy(buf, "1", size);
-			break;
-		case UI_RADIAL_W:
-			BLI_strncpy(buf, "4", size);
-			break;
-		case UI_RADIAL_NW:
-			BLI_strncpy(buf, "7", size);
-			break;
-	}
+	BLI_assert((unsigned int)(but->pie_dir - 1) < ARRAY_SIZE(ui_radial_dir_to_num));
+	BLI_snprintf(buf, size, "%d", ui_radial_dir_to_num[but->pie_dir - 1]);
 }
 
 static void ui_menu_block_set_keymaps(const bContext *C, uiBlock *block)
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index f6c2e60..4197589 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -135,6 +135,8 @@ typedef enum RadialDirection {
 	UI_RADIAL_NW = 8
 } RadialDirection;
 
+extern const char ui_radial_dir_to_pad[8];
+
 /* internal panel drawing defines */
 #define PNL_GRID    (UI_UNIT_Y / 5) /* 4 default */
 #define PNL_HEADER  (UI_UNIT_Y + 4) /* 24 default */




More information about the Bf-blender-cvs mailing list