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

Reply via email to