[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20006] branches/blender2.5/blender/source /blender/editors: 2.5

Martin Poirier theeth at yahoo.com
Thu Apr 30 13:47:35 CEST 2009


Revision: 20006
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20006
Author:   theeth
Date:     2009-04-30 13:47:35 +0200 (Thu, 30 Apr 2009)

Log Message:
-----------
2.5

Transform helpline and experimental drawing code to indicate direction of motion for specific transformations.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_resources.h
    branches/blender2.5/blender/source/blender/editors/interface/resources.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/editors/transform/transform.h
    branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_input.c

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_resources.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_resources.h	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_resources.h	2009-04-30 11:47:35 UTC (rev 20006)
@@ -940,4 +940,6 @@
 char 	*UI_ThemeGetColorPtr(struct bTheme *btheme, int spacetype, int colorid);
 char 	*UI_ThemeColorsPup(int spacetype);
 
+void UI_make_axis_color(char *src_col, char *dst_col, char axis);
+
 #endif /*  UI_ICONS_H */

Modified: branches/blender2.5/blender/source/blender/editors/interface/resources.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/resources.c	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/interface/resources.c	2009-04-30 11:47:35 UTC (rev 20006)
@@ -841,6 +841,28 @@
 	col[2] = b;
 }
 
+void UI_make_axis_color(char *src_col, char *dst_col, char axis)
+{
+	switch(axis)
+	{
+		case 'x':
+		case 'X':
+			dst_col[0]= src_col[0]>219?255:src_col[0]+36;
+			dst_col[1]= src_col[1]<26?0:src_col[1]-26;
+			dst_col[2]= src_col[2]<26?0:src_col[2]-26;
+			break;
+		case 'y':
+		case 'Y':
+			dst_col[0]= src_col[0]<46?0:src_col[0]-36;
+			dst_col[1]= src_col[1]>189?255:src_col[1]+66;
+			dst_col[2]= src_col[2]<46?0:src_col[2]-36;
+			break;
+		default: 
+			dst_col[0]= src_col[0]<26?0:src_col[0]-26; 
+			dst_col[1]= src_col[1]<26?0:src_col[1]-26; 
+			dst_col[2]= src_col[2]>209?255:src_col[2]+46;
+	}
+}
 
 /* ************************************************************* */
 

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c	2009-04-30 11:47:35 UTC (rev 20006)
@@ -5135,7 +5135,7 @@
 			char col[4], col2[4];
 			
 			UI_GetThemeColor3ubv(TH_GRID, col);
-			make_axis_color(col, col2, 'z');
+			UI_make_axis_color(col, col2, 'z');
 			glColor3ubv((GLubyte *)col2);
 			
 			cob= constraints_make_evalob(scene, ob, NULL, CONSTRAINT_OBTYPE_OBJECT);

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-04-30 11:47:35 UTC (rev 20006)
@@ -232,27 +232,6 @@
 
 }
 
-// not intern, called in editobject for constraint axis too
-void make_axis_color(char *col, char *col2, char axis)
-{
-	if(axis=='x') {
-		col2[0]= col[0]>219?255:col[0]+36;
-		col2[1]= col[1]<26?0:col[1]-26;
-		col2[2]= col[2]<26?0:col[2]-26;
-	}
-	else if(axis=='y') {
-		col2[0]= col[0]<46?0:col[0]-36;
-		col2[1]= col[1]>189?255:col[1]+66;
-		col2[2]= col[2]<46?0:col[2]-36; 
-	}
-	else {
-		col2[0]= col[0]<26?0:col[0]-26; 
-		col2[1]= col[1]<26?0:col[1]-26; 
-		col2[2]= col[2]>209?255:col[2]+46;
-	}
-	
-}
-
 static void drawgrid(ARegion *ar, View3D *v3d)
 {
 	/* extern short bgpicmode; */
@@ -365,15 +344,15 @@
 	
 	/* center cross */
 	if( ELEM(rv3d->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT)) 
-		make_axis_color(col, col2, 'y');
-	else make_axis_color(col, col2, 'x');
+		UI_make_axis_color(col, col2, 'y');
+	else UI_make_axis_color(col, col2, 'x');
 	glColor3ubv((GLubyte *)col2);
 	
 	fdrawline(0.0,  y,  (float)ar->winx,  y); 
 	
 	if( ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) 
-		make_axis_color(col, col2, 'y');
-	else make_axis_color(col, col2, 'z');
+		UI_make_axis_color(col, col2, 'y');
+	else UI_make_axis_color(col, col2, 'z');
 	glColor3ubv((GLubyte *)col2);
 
 	fdrawline(x, 0.0, x, (float)ar->winy); 
@@ -412,7 +391,7 @@
 		if(a==0) {
 			/* check for the 'show Y axis' preference */
 			if (v3d->gridflag & V3D_SHOW_Y) { 
-				make_axis_color(col, col2, 'y');
+				UI_make_axis_color(col, col2, 'y');
 				glColor3ubv((GLubyte *)col2);
 				
 				draw_line = 1;
@@ -451,7 +430,7 @@
 		if(a==0) {
 			/* check for the 'show X axis' preference */
 			if (v3d->gridflag & V3D_SHOW_X) { 
-				make_axis_color(col, col2, 'x');
+				UI_make_axis_color(col, col2, 'x');
 				glColor3ubv((GLubyte *)col2);
 				
 				draw_line = 1;
@@ -488,7 +467,7 @@
 	/* draw the Z axis line */	
 	/* check for the 'show Z axis' preference */
 	if (v3d->gridflag & V3D_SHOW_Z) {
-		make_axis_color(col, col2, 'z');
+		UI_make_axis_color(col, col2, 'z');
 		glColor3ubv((GLubyte *)col2);
 		
 		glBegin(GL_LINE_STRIP);
@@ -567,7 +546,7 @@
 	vec[1] = vec[2] = 0;
 	QuatMulVecf(rv3d->viewquat, vec);
 	
-	make_axis_color((char *)gridcol, (char *)col, 'x');
+	UI_make_axis_color((char *)gridcol, (char *)col, 'x');
 	rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
 	s = s<0.5 ? s+0.5 : 1.0;
 	v = 0.3;
@@ -588,7 +567,7 @@
 	vec[0] = vec[2] = 0;
 	QuatMulVecf(rv3d->viewquat, vec);
 	
-	make_axis_color((char *)gridcol, (char *)col, 'y');
+	UI_make_axis_color((char *)gridcol, (char *)col, 'y');
 	rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
 	s = s<0.5 ? s+0.5 : 1.0;
 	v = 0.3;
@@ -609,7 +588,7 @@
 	vec[1] = vec[0] = 0;
 	QuatMulVecf(rv3d->viewquat, vec);
 	
-	make_axis_color((char *)gridcol, (char *)col, 'z');
+	UI_make_axis_color((char *)gridcol, (char *)col, 'z');
 	rgb_to_hsv(col[0]/255.0f, col[1]/255.0f, col[2]/255.0f, &h, &s, &v);
 	s = s<0.5 ? s+0.5 : 1.0;
 	v = 0.5;

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h	2009-04-30 11:47:35 UTC (rev 20006)
@@ -99,7 +99,6 @@
 void view3d_clr_clipping(void);
 void view3d_set_clipping(RegionView3D *rv3d);
 void add_view3d_after(View3D *v3d, Base *base, int type, int flag);
-void make_axis_color(char *col, char *col2, char axis);
 void calc_viewborder(Scene *scene, struct ARegion *ar, View3D *v3d, rctf *viewborder_r);
 
 void circf(float x, float y, float rad);

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-04-30 11:33:07 UTC (rev 20005)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-04-30 11:47:35 UTC (rev 20006)
@@ -111,54 +111,14 @@
 
 #include "PIL_time.h"			/* sleep				*/
 
+#include "UI_resources.h"
+
 //#include "blendef.h"
 //
 //#include "mydevice.h"
 
 #include "transform.h"
 
-/* ************************** Dashed help line **************************** */
-
-
-/* bad frontbuffer call... because it is used in transform after force_draw() */
-static void helpline(TransInfo *t, float *vec)
-{
-#if 0 // TRANSFORM_FIX_ME
-	float vecrot[3], cent[2];
-	short mval[2];
-	
-	VECCOPY(vecrot, vec);
-	if(t->flag & T_EDIT) {
-		Object *ob= t->obedit;
-		if(ob) Mat4MulVecfl(ob->obmat, vecrot);
-	}
-	else if(t->flag & T_POSE) {
-		Object *ob=t->poseobj;
-		if(ob) Mat4MulVecfl(ob->obmat, vecrot);
-	}
-	
-	getmouseco_areawin(mval);
-	projectFloatView(t, vecrot, cent);	// no overflow in extreme cases
-
-	persp(PERSP_WIN);
-	
-	glDrawBuffer(GL_FRONT);
-	
-	BIF_ThemeColor(TH_WIRE);
-	
-	setlinestyle(3);
-	glBegin(GL_LINE_STRIP); 
-	glVertex2sv(mval); 
-	glVertex2fv(cent); 
-	glEnd();
-	setlinestyle(0);
-	
-	persp(PERSP_VIEW);
-	bglFlush(); // flush display for frontbuffer
-	glDrawBuffer(GL_BACK);
-#endif
-}
-
 /* ************************** SPACE DEPENDANT CODE **************************** */
 
 void setTransformViewMatrices(TransInfo *t)
@@ -936,6 +896,231 @@
 	return success;
 }
 
+typedef enum {
+	UP,
+	DOWN,
+	LEFT,
+	RIGHT
+} ArrowDirection;
+static void drawArrow(ArrowDirection d, short offset, short length, short size)
+{
+	switch(d)
+	{
+		case LEFT:
+			offset = -offset;
+			length = -length;
+			size = -size;
+		case RIGHT:
+			glBegin(GL_LINES); 
+			glVertex2s( offset, 0); 
+			glVertex2s( offset + length, 0); 
+			glVertex2s( offset + length, 0); 
+			glVertex2s( offset + length - size, -size); 
+			glVertex2s( offset + length, 0); 
+			glVertex2s( offset + length - size,  size);
+			glEnd(); 
+			break;
+		case DOWN:
+			offset = -offset;
+			length = -length;
+			size = -size;
+		case UP:
+			glBegin(GL_LINES); 
+			glVertex2s( 0, offset); 
+			glVertex2s( 0, offset + length); 
+			glVertex2s( 0, offset + length); 
+			glVertex2s(-size, offset + length - size); 
+			glVertex2s( 0, offset + length); 
+			glVertex2s( size, offset + length - size);
+			glEnd(); 
+			break;
+	}
+}
+
+static void drawArrowHead(ArrowDirection d, short size)
+{
+	switch(d)
+	{
+		case LEFT:
+			size = -size;
+		case RIGHT:
+			glBegin(GL_LINES); 
+			glVertex2s( 0, 0); 
+			glVertex2s( -size, -size); 
+			glVertex2s( 0, 0); 
+			glVertex2s( -size,  size);
+			glEnd(); 
+			break;
+		case DOWN:
+			size = -size;
+		case UP:
+			glBegin(GL_LINES); 
+			glVertex2s( 0, 0); 
+			glVertex2s(-size, -size); 
+			glVertex2s( 0, 0); 
+			glVertex2s( size, -size);
+			glEnd(); 
+			break;
+	}
+}
+
+static void drawArc(float size, float angle_start, float angle_end, int segments)
+{
+	float delta = (angle_end - angle_start) / segments;
+	float angle;
+	
+	glBegin(GL_LINE_STRIP);
+	
+	for( angle = angle_start; angle < angle_end; angle += delta)
+	{
+		glVertex2f( cosf(angle) * size, sinf(angle) * size);
+	}
+	glVertex2f( cosf(angle_end) * size, sinf(angle_end) * size);
+	
+	glEnd();
+}
+
+void drawHelpline(const struct bContext *C, TransInfo *t)
+{
+	if (t->helpline != HLP_NONE && !(t->flag & T_USES_MANIPULATOR))
+	{
+		float vecrot[3], cent[2];
+		
+		VECCOPY(vecrot, t->center);
+		if(t->flag & T_EDIT) {
+			Object *ob= t->obedit;
+			if(ob) Mat4MulVecfl(ob->obmat, vecrot);
+		}
+		else if(t->flag & T_POSE) {
+			Object *ob=t->poseobj;
+			if(ob) Mat4MulVecfl(ob->obmat, vecrot);
+		}
+		
+		projectFloatView(t, vecrot, cent);	// no overflow in extreme cases
+	
+		glDisable(GL_DEPTH_TEST);
+
+		glMatrixMode(GL_PROJECTION);
+		glPushMatrix();
+		glMatrixMode(GL_MODELVIEW);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list