[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