diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-11-05 08:26:34 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-11-05 08:26:34 +0300 |
commit | 7569a25a4f00575c690968eeb0ff53b6b4ab890b (patch) | |
tree | 73eda26f3ef63a271911e0ac99f6d1f20c6eba04 /source/blender/editors | |
parent | 36b8ebceb5020c0b697f4b3d23a3ac319ea5ab53 (diff) |
centralize function for calculating pixel size. (no functional changes)
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/include/ED_view3d.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 21 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 9 | ||||
-rw-r--r-- | source/blender/editors/transform/transform.h | 1 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 14 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_manipulator.c | 13 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 6 |
7 files changed, 18 insertions, 48 deletions
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index d2c13b7bf85..afc6787010a 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -118,6 +118,7 @@ void lattice_foreachScreenVert(struct ViewContext *vc, void (*func)(void *userDa void ED_view3d_local_clipping(struct RegionView3D *rv3d, float mat[][4]); int view3d_test_clipping(struct RegionView3D *rv3d, float *vec, int local); void view3d_align_axis_to_vector(struct View3D *v3d, struct RegionView3D *rv3d, int axisidx, float vec[3]); +float view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]); void drawcircball(int mode, float *cent, float rad, float tmat[][4]); @@ -164,7 +165,6 @@ void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct AR struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag); struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, unsigned int flag, int drawtype); -void view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]); Base *ED_view3d_give_base_under_cursor(struct bContext *C, short *mval); void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index d59f4066680..7d30c404bf0 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -528,14 +528,7 @@ void drawcircball(int mode, float *cent, float rad, float tmat[][4]) /* circle for object centers, special_color is for library or ob users */ static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, float *co, int selstate, int special_color) { - float size= rv3d->pixsize*((float)U.obcenter_dia*0.5f); - float vec[3]; - - vec[0]= rv3d->persmat[0][3]; - vec[1]= rv3d->persmat[1][3]; - vec[2]= rv3d->persmat[2][3]; - - size *= dot_v3v3(vec, co) + rv3d->persmat[3][3]; + const float size= view3d_pixel_size(rv3d, co) * (float)U.obcenter_dia * 0.5f; /* using gldepthfunc guarantees that it does write z values, but not checks for it, so centers remain visible independt order of drawing */ if(v3d->zbuf) glDepthFunc(GL_ALWAYS); @@ -906,9 +899,10 @@ static void draw_transp_spot_volume(Lamp *la, float x, float z) static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) { Object *ob= base->object; + const float pixsize= view3d_pixel_size(rv3d, ob->obmat[3]); Lamp *la= ob->data; float vec[3], lvec[3], vvec[3], circrad, x,y,z; - float pixsize, lampsize; + float lampsize; float imat[4][4], curcol[4]; char col[4]; int drawcone= (dt>OB_WIRE && !(G.f & G_PICKSEL) && la->type == LA_SPOT && (la->mode & LA_SHOW_CONE)); @@ -924,8 +918,6 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, glLoadMatrixf(rv3d->viewmat); /* lets calculate the scale: */ - pixsize= rv3d->persmat[0][3]*ob->obmat[3][0]+ rv3d->persmat[1][3]*ob->obmat[3][1]+ rv3d->persmat[2][3]*ob->obmat[3][2]+ rv3d->persmat[3][3]; - pixsize*= rv3d->pixsize; lampsize= pixsize*((float)U.obcenter_dia*0.5f); /* and view aligned matrix: */ @@ -3552,12 +3544,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv case PART_DRAW_CROSS: case PART_DRAW_AXIS: /* lets calculate the scale: */ - pixsize= rv3d->persmat[0][3]*ob->obmat[3][0]+ rv3d->persmat[1][3]*ob->obmat[3][1]+ rv3d->persmat[2][3]*ob->obmat[3][2]+ rv3d->persmat[3][3]; - pixsize*= rv3d->pixsize; - if(part->draw_size==0.0) - pixsize*=2.0; - else - pixsize*=part->draw_size; + pixsize= view3d_pixel_size(rv3d, ob->obmat[3]); if(draw_as==PART_DRAW_AXIS) create_cdata = 1; diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 2e75b5163f9..1be7816f5ea 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1873,3 +1873,12 @@ int view3d_is_ortho(View3D *v3d, RegionView3D *rv3d) { return (rv3d->persp == RV3D_ORTHO || (v3d->camera && ((Camera *)v3d->camera->data)->type == CAM_ORTHO)); } + +float view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]) +{ + return (rv3d->persmat[3][3] + ( + rv3d->persmat[0][3]*co[0] + + rv3d->persmat[1][3]*co[1] + + rv3d->persmat[2][3]*co[2]) + ) * rv3d->pixsize; +} diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index ec18b2f81a0..b9f3382e9d3 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -557,7 +557,6 @@ void flushTransSeq(TransInfo *t); /*********************** exported from transform_manipulator.c ********** */ int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */ int calc_manipulator_stats(const struct bContext *C); -float get_drawsize(struct ARegion *ar, float *co); /*********************** TransData Creation and General Handling *********** */ void createTransData(struct bContext *C, TransInfo *t); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 7ff93be87ee..22888a6b007 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1568,17 +1568,3 @@ void calculatePropRatio(TransInfo *t) strcpy(t->proptext, ""); } } - -float get_drawsize(ARegion *ar, float *co) -{ - RegionView3D *rv3d= ar->regiondata; - float size= rv3d->pixsize * 5; - float vec[3]; - - vec[0]= rv3d->persmat[0][3]; - vec[1]= rv3d->persmat[1][3]; - vec[2]= rv3d->persmat[2][3]; - - size *= dot_v3v3(vec, co) + rv3d->persmat[3][3]; - return size; -} diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 23b4cf5fd99..7ed569dab93 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -1401,17 +1401,6 @@ static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int mov /* ********************************************* */ -static float get_manipulator_drawsize(ARegion *ar) -{ - RegionView3D *rv3d= ar->regiondata; - float size = get_drawsize(ar, rv3d->twmat[3]); - - size*= (float)U.tw_size; - - return size; -} - - /* main call, does calc centers & orientation too */ /* uses global G.moving */ static int drawflags= 0xFFFF; // only for the calls below, belongs in scene...? @@ -1459,7 +1448,7 @@ void BIF_draw_manipulator(const bContext *C) break; } - mul_mat3_m4_fl(rv3d->twmat, get_manipulator_drawsize(ar)); + mul_mat3_m4_fl(rv3d->twmat, view3d_pixel_size(rv3d, rv3d->twmat[3]) * U.tw_size * 5.0f); } test_manipulator_axis(C); diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index adaaf7c9de6..06a2db527fd 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -146,16 +146,16 @@ void drawSnapping(const struct bContext *C, TransInfo *t) glDisable(GL_DEPTH_TEST); - size = 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); + size = 2.5f * UI_GetThemeValuef(TH_VERTEX_SIZE); invert_m4_m4(imat, rv3d->viewmat); for (p = t->tsnap.points.first; p; p = p->next) { - drawcircball(GL_LINE_LOOP, p->co, size * get_drawsize(t->ar, p->co), imat); + drawcircball(GL_LINE_LOOP, p->co, view3d_pixel_size(rv3d, p->co) * size, imat); } if (t->tsnap.status & POINT_INIT) { - drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size * get_drawsize(t->ar, t->tsnap.snapPoint), imat); + drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, view3d_pixel_size(rv3d, t->tsnap.snapPoint) * size, imat); } /* draw normal if needed */ |