Commit: 44b4ced395131534843412997ccea36780727296 Author: Antony Riakiotakis Date: Fri Nov 21 16:48:33 2014 +0100 Branches: wiggly-widgets https://developer.blender.org/rB44b4ced395131534843412997ccea36780727296
Correctly center the widget in node space =================================================================== M source/blender/editors/space_node/node_draw.c M source/blender/editors/space_node/space_node.c M source/blender/windowmanager/intern/wm_generic_widgets.c =================================================================== diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 70da0d7..fd4719a 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -1341,10 +1341,7 @@ void drawnodespace(const bContext *C, ARegion *ar) glPushMatrix(); glaDefine2DArea(&ar->winrct); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); + wmOrtho2_pixelspace(ar->winx, ar->winy); WM_widgets_draw(C, ar); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 6841972..b1764eb 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -864,13 +864,13 @@ static void WIDGETGROUP_node_transform_update(struct wmWidgetGroup *wgroup, cons float origin[3]; float xsize, ysize; - xsize = snode->zoom * ibuf->x / ar->winx; - ysize = snode->zoom * ibuf->y / ar->winy; + xsize = snode->zoom * ibuf->x; + ysize = snode->zoom * ibuf->y; origin[0] = (ar->winx - xsize) / 2 + snode->xof; origin[1] = (ar->winy - ysize) / 2 + snode->yof; - WIDGET_cage_bounds_set(cage, 2.0 * xsize, 2.0 * ysize); + WIDGET_cage_bounds_set(cage, xsize, ysize); WM_widget_set_origin(cage, origin); WM_widget_set_draw(cage, true); } diff --git a/source/blender/windowmanager/intern/wm_generic_widgets.c b/source/blender/windowmanager/intern/wm_generic_widgets.c index 4a055da..5ab0b3b 100644 --- a/source/blender/windowmanager/intern/wm_generic_widgets.c +++ b/source/blender/windowmanager/intern/wm_generic_widgets.c @@ -657,6 +657,10 @@ static void widget_cage_draw(struct wmWidget *widget, const struct bContext *UNU CageWidget *cage = (CageWidget *)widget; float w = BLI_rctf_size_x(&cage->bound); float h = BLI_rctf_size_y(&cage->bound); + float aspx = 1.0f, aspy = 1.0f; + + glPushMatrix(); + glTranslatef(widget->origin[0], widget->origin[1], 0.0f); glColor4f(1.0f, 0.6f, 0.0f, 0.1f); @@ -664,15 +668,24 @@ static void widget_cage_draw(struct wmWidget *widget, const struct bContext *UNU // glRectf(cage->bound.xmin, cage->bound.ymin, cage->bound.xmax, cage->bound.ymax); // glDisable(GL_BLEND); + if (w > h) + aspx = h / w; + else if (w < h) + aspy = w / h; + w = aspx * w / 8.0f; + h = aspy * h / 8.0f; + /* corner widgets */ glColor3f(0.0, 0.0, 0.0); glLineWidth(3.0); - cage_draw_corners(&cage->bound, w/8.0f, h/8.0f); + cage_draw_corners(&cage->bound, w, h); /* corner widgets */ glColor3f(1.0, 1.0, 1.0); glLineWidth(1.0); - cage_draw_corners(&cage->bound, w/8.0f, h/8.0f); + cage_draw_corners(&cage->bound, w, h); + + glPopMatrix(); } static int widget_cage_intersect(struct bContext *UNUSED(C), const struct wmEvent *event, struct wmWidget *widget) @@ -715,10 +728,10 @@ void WIDGET_cage_bind_to_rotation(struct wmWidget *widget, float rotation) void WIDGET_cage_bounds_set(struct wmWidget *widget, float w, float h) { CageWidget *cage = (CageWidget *)widget; - cage->bound.xmax = w/2; - cage->bound.ymax = h/2; - cage->bound.xmin = -w/2; - cage->bound.ymin = -h/2; + cage->bound.xmax = w; + cage->bound.ymax = h; + cage->bound.xmin = 0.0; + cage->bound.ymin = 0.0; } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs