[Bf-blender-cvs] [9a5b61c] master: Transform: skip setting colors when picking with the manipulator

Campbell Barton noreply at git.blender.org
Thu Feb 20 04:35:55 CET 2014


Commit: 9a5b61cf581c3aa4e6179c326902ffe071a1fcec
Author: Campbell Barton
Date:   Thu Feb 20 14:34:50 2014 +1100
https://developer.blender.org/rB9a5b61cf581c3aa4e6179c326902ffe071a1fcec

Transform: skip setting colors when picking with the manipulator

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

M	source/blender/editors/transform/transform_manipulator.c

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

diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 98afa2a..861a35c 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -865,15 +865,20 @@ static void manipulator_axis_order(RegionView3D *rv3d, int r_axis_order[3])
 
 /* viewmatrix should have been set OK, also no shademode! */
 static void draw_manipulator_axes_single(View3D *v3d, RegionView3D *rv3d, int colcode,
-                                         int flagx, int flagy, int flagz, int axis)
+                                         int flagx, int flagy, int flagz, int axis,
+                                         const bool is_picksel)
 {
 	switch (axis) {
 		case 0:
 			/* axes */
 			if (flagx) {
-				manipulator_setcolor(v3d, 'X', colcode, axisBlendAngle(rv3d->twangle[0]));
-				if (flagx & MAN_SCALE_X) glLoadName(MAN_SCALE_X);
-				else if (flagx & MAN_TRANS_X) glLoadName(MAN_TRANS_X);
+				if (is_picksel) {
+					if      (flagx & MAN_SCALE_X) glLoadName(MAN_SCALE_X);
+					else if (flagx & MAN_TRANS_X) glLoadName(MAN_TRANS_X);
+				}
+				else {
+					manipulator_setcolor(v3d, 'X', colcode, axisBlendAngle(rv3d->twangle[0]));
+				}
 				glBegin(GL_LINES);
 				glVertex3f(0.2f, 0.0f, 0.0f);
 				glVertex3f(1.0f, 0.0f, 0.0f);
@@ -882,9 +887,13 @@ static void draw_manipulator_axes_single(View3D *v3d, RegionView3D *rv3d, int co
 			break;
 		case 1:
 			if (flagy) {
-				if (flagy & MAN_SCALE_Y) glLoadName(MAN_SCALE_Y);
-				else if (flagy & MAN_TRANS_Y) glLoadName(MAN_TRANS_Y);
-				manipulator_setcolor(v3d, 'Y', colcode, axisBlendAngle(rv3d->twangle[1]));
+				if (is_picksel) {
+					if      (flagy & MAN_SCALE_Y) glLoadName(MAN_SCALE_Y);
+					else if (flagy & MAN_TRANS_Y) glLoadName(MAN_TRANS_Y);
+				}
+				else {
+					manipulator_setcolor(v3d, 'Y', colcode, axisBlendAngle(rv3d->twangle[1]));
+				}
 				glBegin(GL_LINES);
 				glVertex3f(0.0f, 0.2f, 0.0f);
 				glVertex3f(0.0f, 1.0f, 0.0f);
@@ -893,9 +902,13 @@ static void draw_manipulator_axes_single(View3D *v3d, RegionView3D *rv3d, int co
 			break;
 		case 2:
 			if (flagz) {
-				if (flagz & MAN_SCALE_Z) glLoadName(MAN_SCALE_Z);
-				else if (flagz & MAN_TRANS_Z) glLoadName(MAN_TRANS_Z);
-				manipulator_setcolor(v3d, 'Z', colcode, axisBlendAngle(rv3d->twangle[2]));
+				if (is_picksel) {
+					if      (flagz & MAN_SCALE_Z) glLoadName(MAN_SCALE_Z);
+					else if (flagz & MAN_TRANS_Z) glLoadName(MAN_TRANS_Z);
+				}
+				else {
+					manipulator_setcolor(v3d, 'Z', colcode, axisBlendAngle(rv3d->twangle[2]));
+				}
 				glBegin(GL_LINES);
 				glVertex3f(0.0f, 0.0f, 0.2f);
 				glVertex3f(0.0f, 0.0f, 1.0f);
@@ -906,11 +919,11 @@ static void draw_manipulator_axes_single(View3D *v3d, RegionView3D *rv3d, int co
 }
 static void draw_manipulator_axes(View3D *v3d, RegionView3D *rv3d, int colcode,
                                   int flagx, int flagy, int flagz,
-                                  const int axis_order[3])
+                                  const int axis_order[3], const bool is_picksel)
 {
 	int i;
 	for (i = 0; i < 3; i++) {
-		draw_manipulator_axes_single(v3d, rv3d, colcode, flagx, flagy, flagz, axis_order[i]);
+		draw_manipulator_axes_single(v3d, rv3d, colcode, flagx, flagy, flagz, axis_order[i], is_picksel);
 	}
 }
 
@@ -978,15 +991,15 @@ static void draw_manipulator_rotate(
 	/* Screen aligned trackball rot circle */
 	if (drawflags & MAN_ROT_T) {
 		if (is_picksel) glLoadName(MAN_ROT_T);
+		else UI_ThemeColor(TH_TRANSFORM);
 
-		UI_ThemeColor(TH_TRANSFORM);
 		drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f * size, unitmat);
 	}
 
 	/* Screen aligned view rot circle */
 	if (drawflags & MAN_ROT_V) {
 		if (is_picksel) glLoadName(MAN_ROT_V);
-		UI_ThemeColor(TH_TRANSFORM);
+		else UI_ThemeColor(TH_TRANSFORM);
 		drawcircball(GL_LINE_LOOP, unitmat[3], 1.2f * size, unitmat);
 
 		if (is_moving) {
@@ -1065,7 +1078,7 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_Z) {
 			preOrthoFront(ortho, matt, 2);
 			if (is_picksel) glLoadName(MAN_ROT_Z);
-			manipulator_setcolor(v3d, 'Z', colcode, 255);
+			else manipulator_setcolor(v3d, 'Z', colcode, 255);
 			drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
 			postOrtho(ortho);
 		}
@@ -1073,8 +1086,8 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_X) {
 			preOrthoFront(ortho, matt, 0);
 			if (is_picksel) glLoadName(MAN_ROT_X);
+			else manipulator_setcolor(v3d, 'X', colcode, 255);
 			glRotatef(90.0, 0.0, 1.0, 0.0);
-			manipulator_setcolor(v3d, 'X', colcode, 255);
 			drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
 			glRotatef(-90.0, 0.0, 1.0, 0.0);
 			postOrtho(ortho);
@@ -1083,8 +1096,8 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_Y) {
 			preOrthoFront(ortho, matt, 1);
 			if (is_picksel) glLoadName(MAN_ROT_Y);
+			else manipulator_setcolor(v3d, 'Y', colcode, 255);
 			glRotatef(-90.0, 1.0, 0.0, 0.0);
-			manipulator_setcolor(v3d, 'Y', colcode, 255);
 			drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
 			glRotatef(90.0, 1.0, 0.0, 0.0);
 			postOrtho(ortho);
@@ -1100,7 +1113,7 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_Z) {
 			preOrthoFront(ortho, rv3d->twmat, 2);
 			if (is_picksel) glLoadName(MAN_ROT_Z);
-			manipulator_setcolor(v3d, 'Z', colcode, 255);
+			else manipulator_setcolor(v3d, 'Z', colcode, 255);
 			partial_doughnut(cusize / 4.0f, 1.0f, 0, 48, 8, 48);
 			postOrtho(ortho);
 		}
@@ -1108,8 +1121,8 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_X) {
 			preOrthoFront(ortho, rv3d->twmat, 0);
 			if (is_picksel) glLoadName(MAN_ROT_X);
+			else manipulator_setcolor(v3d, 'X', colcode, 255);
 			glRotatef(90.0, 0.0, 1.0, 0.0);
-			manipulator_setcolor(v3d, 'X', colcode, 255);
 			partial_doughnut(cusize / 4.0f, 1.0f, 0, 48, 8, 48);
 			glRotatef(-90.0, 0.0, 1.0, 0.0);
 			postOrtho(ortho);
@@ -1118,8 +1131,8 @@ static void draw_manipulator_rotate(
 		if (drawflags & MAN_ROT_Y) {
 			preOrthoFront(ortho, rv3d->twmat, 1);
 			if (is_picksel) glLoadName(MAN_ROT_Y);
+			else manipulator_setcolor(v3d, 'Y', colcode, 255);
 			glRotatef(-90.0, 1.0, 0.0, 0.0);
-			manipulator_setcolor(v3d, 'Y', colcode, 255);
 			partial_doughnut(cusize / 4.0f, 1.0f, 0, 48, 8, 48);
 			glRotatef(90.0, 1.0, 0.0, 0.0);
 			postOrtho(ortho);
@@ -1135,7 +1148,7 @@ static void draw_manipulator_rotate(
 			preOrthoFront(ortho, rv3d->twmat, 2);
 			glPushMatrix();
 			if (is_picksel) glLoadName(MAN_ROT_Z);
-			manipulator_setcolor(v3d, 'Z', colcode, 255);
+			else manipulator_setcolor(v3d, 'Z', colcode, 255);
 
 			partial_doughnut(0.7f * cusize, 1.0f, 31, 33, 8, 64);
 
@@ -1148,7 +1161,7 @@ static void draw_manipulator_rotate(
 			preOrthoFront(ortho, rv3d->twmat, 1);
 			glPushMatrix();
 			if (is_picksel) glLoadName(MAN_ROT_Y);
-			manipulator_setcolor(v3d, 'Y', colcode, 255);
+			else manipulator_setcolor(v3d, 'Y', colcode, 255);
 
 			glRotatef(90.0, 1.0, 0.0, 0.0);
 			glRotatef(90.0, 0.0, 0.0, 1.0);
@@ -1163,7 +1176,7 @@ static void draw_manipulator_rotate(
 			preOrthoFront(ortho, rv3d->twmat, 0);
 			glPushMatrix();
 			if (is_picksel) glLoadName(MAN_ROT_X);
-			manipulator_setcolor(v3d, 'X', colcode, 255);
+			else manipulator_setcolor(v3d, 'X', colcode, 255);
 
 			glRotatef(-90.0, 0.0, 1.0, 0.0);
 			glRotatef(90.0, 0.0, 0.0, 1.0);
@@ -1266,8 +1279,8 @@ static void draw_manipulator_scale(
 
 		/* center circle, do not add to selection when shift is pressed (planar constraint)  */
 		if (is_picksel && shift == 0) glLoadName(MAN_SCALE_C);
+		else manipulator_setcolor(v3d, 'C', colcode, 255);
 
-		manipulator_setcolor(v3d, 'C', colcode, 255);
 		glPushMatrix();
 		size = screen_aligned(rv3d, rv3d->twmat);
 		unit_m4(unitmat);
@@ -1298,7 +1311,7 @@ static void draw_manipulator_scale(
 	/* in combo mode, this is always drawn as first type */
 	draw_manipulator_axes(v3d, rv3d, colcode,
 	                      drawflags & MAN_SCALE_X, drawflags & MAN_SCALE_Y, drawflags & MAN_SCALE_Z,
-	                      axis_order);
+	                      axis_order, is_picksel);
 
 
 	for (i = 0; i < 3; i++) {
@@ -1307,7 +1320,7 @@ static void draw_manipulator_scale(
 				if (drawflags & MAN_SCALE_X) {
 					glTranslatef(dz, 0.0, 0.0);
 					if (is_picksel) glLoadName(MAN_SCALE_X);
-					manipulator_setcolor(v3d, 'X', colcode, axisBlendAngle(rv3d->twangle[0]));
+					else manipulator_setcolor(v3d, 'X', colcode, axisBlendAngle(rv3d->twangle[0]));
 					drawsolidcube(cusize);
 					glTranslatef(-dz, 0.0, 0.0);
 				}
@@ -1316,7 +1329,7 @@ static void draw_manipulator_scale(
 				if (drawflags & MAN_SCALE_Y) {
 					glTranslatef(0.0, dz, 0.0);
 					if (is_picksel) glLoadName(MAN_SCALE_Y);
-					manipulator_setcolor(v3d, 'Y', colcode, axisBlendAngle(rv3d->twangle[1]));
+					else manipulator_setcolor(v3d, 'Y', colcode, axisBlendAngle(rv3d->twangle[1]));
 					drawsolidcube(cusize);
 					glTranslatef(0.0, -dz, 0.0);
 				}
@@ -1325,7 +1338,7 @@ static void draw_manipulator_scale(
 				if (drawflags & MAN_SCALE_Z) {
 					glTranslatef(0.0, 0.0, dz);
 					if (is_picksel) glLoadName(MAN_SCALE_Z);
-					manipulator_setcolor(v3d, 'Z', colcode, axisBlendAngle(rv3d->twangle[2]));
+					else manipulator_setcolor(v3d, 'Z', colcode, axisBlendAngle(rv3d->twangle[2]));
 					drawsolidcube(cusize);
 					glTranslatef(0.0, 0.0, -dz);
 				}
@@ -1402,8 +1415,8 @@ static void draw_manipulator_translate(
 
 	/* center circle, do not add to selection when shift is pressed (planar constraint) */
 	if (is_picksel && shift == 0) glLoadName(MAN_TRANS_C);
+	else manipulator_setcolor(v3d, 'C', colcode, 255);
 
-	manipulator_setcolor(v3d, 'C', colcode, 255);
 	glPushMatrix();
 	size = screen_aligned(rv3d, rv3d->twmat);
 	unit_m4(unitmat);
@@ -1420,7 +1433,7 @@ static void draw_manipulator_translate(
 	if ((combo & V3D_MANIP_SCALE) == 0 || colcode == MAN_GHOST) {
 		draw_manipulator_axes(v3d, rv3d, colcode,
 		                      drawflags & MAN_TRANS_X, drawflags & MAN_TRANS_Y, drawflags & MAN_TRANS_Z,
-		                      axis_order);
+		                      axis_order, is_picksel);
 	}
 
 
@@ -1438,7 +1451,7 @@ static void draw_

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list