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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to