Commit: 313cfcb093cf8c937044ea519d50bc94705a43c1
Author: Julian Eisel
Date:   Sat Aug 29 00:39:04 2015 +0200
Branches: wiggly-widgets
https://developer.blender.org/rB313cfcb093cf8c937044ea519d50bc94705a43c1

Make offset a property for all widgets, not only certain widget types

===================================================================

M       source/blender/editors/space_sequencer/sequencer_view.c
M       source/blender/editors/transform/transform_manipulator.c
M       source/blender/windowmanager/WM_api.h
M       source/blender/windowmanager/intern/wm_generic_widgets.c
M       source/blender/windowmanager/intern/wm_widgets.c
M       source/blender/windowmanager/wm.h

===================================================================

diff --git a/source/blender/editors/space_sequencer/sequencer_view.c 
b/source/blender/editors/space_sequencer/sequencer_view.c
index d3292db..e8a0985 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -519,7 +519,7 @@ static int sequencer_image_transform_widget_modal(bContext 
*C, wmOperator *op, c
 
                        /* no offset needed in this case */
                        offset[0] = offset[1] = 0;
-                       WIDGET_rect_transform_set_offset(wmap->active_widget, 
offset);
+                       WM_widget_set_offset(wmap->active_widget, offset);
                        break;
                }
 
diff --git a/source/blender/editors/transform/transform_manipulator.c 
b/source/blender/editors/transform/transform_manipulator.c
index f121348..fb2bd9f 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -1167,7 +1167,7 @@ void WIDGETGROUP_manipulator_create(const struct bContext 
*C, struct wmWidgetGro
 
                                WM_widget_set_scale(axis, 0.07f);
                                WM_widget_set_origin(axis, rv3d->twmat[3]);
-                               WIDGET_plane_set_offset(axis, ofs);
+                               WM_widget_set_offset(axis, ofs);
                                WIDGET_plane_set_direction(axis, 
rv3d->twmat[aidx_norm - 1 < 0 ? 2 : aidx_norm - 1]);
                                WIDGET_plane_set_up_vector(axis, 
rv3d->twmat[aidx_norm + 1 > 2 ? 0 : aidx_norm + 1]);
                                break;
diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index 6c7111a..7448d0d 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -514,6 +514,7 @@ void WM_widgetgroup_customdata_set(struct wmWidgetGroup 
*wgroup, void *data);
 void *WM_widgetgroup_customdata(const struct wmWidgetGroup *wgroup);
 
 void WM_widget_set_origin(struct wmWidget *widget, const float origin[3]);
+void WM_widget_set_offset(struct wmWidget *widget, const float offset[3]);
 void WM_widget_set_3d_scale(struct wmWidget *widget, const bool scale);
 void WM_widget_flag_set(struct wmWidget *widget, const int flag, const bool 
enable);
 void WM_widget_set_draw_on_hover_only(struct wmWidget *widget, const bool 
draw);
@@ -585,13 +586,11 @@ void WIDGET_dial_set_direction(struct wmWidget *widget, 
const float direction[3]
 
 struct wmWidget *WIDGET_plane_new(struct wmWidgetGroup *wgroup, const char 
*name, const int style);
 void WIDGET_plane_set_direction(struct wmWidget *widget, const float 
direction[3]);
-void WIDGET_plane_set_offset(struct wmWidget *widget, const float offset[3]);
 void WIDGET_plane_set_up_vector(struct wmWidget *widget, const float 
direction[3]);
 
 struct wmWidget *WIDGET_rect_transform_new(
         struct wmWidgetGroup *wgroup, const char *name, const int style,
         const float width, const float height);
-void WIDGET_rect_transform_set_offset(struct wmWidget *widget, const float 
offset[2]);
 
 struct wmWidget *WIDGET_facemap_new(
         struct wmWidgetGroup *wgroup, const char *name, const int style,
diff --git a/source/blender/windowmanager/intern/wm_generic_widgets.c 
b/source/blender/windowmanager/intern/wm_generic_widgets.c
index 092ec7e..aa3a2e7 100644
--- a/source/blender/windowmanager/intern/wm_generic_widgets.c
+++ b/source/blender/windowmanager/intern/wm_generic_widgets.c
@@ -322,6 +322,7 @@ static void arrow_draw_intern(ArrowWidget *arrow, const 
bool select, const bool
        }
 
        glEnable(GL_BLEND);
+       glTranslatef(UNPACK3(arrow->widget.offset));
        arrow_draw_geom(arrow, select);
        glDisable(GL_BLEND);
 
@@ -710,6 +711,7 @@ static void dial_draw_intern(DialWidget *dial, const bool 
select, const bool hig
        else
                glColor4fv(dial->widget.col);
 
+       glTranslatef(UNPACK3(dial->widget.offset));
        dial_draw_geom(dial, select);
 
        glPopMatrix();
@@ -810,13 +812,12 @@ typedef struct PlaneWidget {
        wmWidget widget;
 
        float direction[3];
-       float offset[3];
        float up[3];
        int flag;
 } PlaneWidget;
 
 
-static void widget_plane_draw_geom(const float ofs[3], const float 
col_inner[4], const float col_outer[4])
+static void widget_plane_draw_geom(const float col_inner[4], const float 
col_outer[4])
 {
        static float vec[4][3] = {
                {-1, -1, 0},
@@ -825,8 +826,6 @@ static void widget_plane_draw_geom(const float ofs[3], 
const float col_inner[4],
                {-1,  1, 0},
        };
 
-       glTranslatef(UNPACK3(ofs));
-
        glEnable(GL_MULTISAMPLE_ARB);
 
        glEnableClientState(GL_VERTEX_ARRAY);
@@ -874,7 +873,8 @@ static void widget_plane_draw_intern(PlaneWidget *plane, 
const bool UNUSED(selec
        col_inner[3] *= 0.5f;
 
        glEnable(GL_BLEND);
-       widget_plane_draw_geom(plane->offset, col_inner, col_outer);
+       glTranslatef(UNPACK3(plane->widget.offset));
+       widget_plane_draw_geom(col_inner, col_outer);
        glDisable(GL_BLEND);
 
        glPopMatrix();
@@ -903,7 +903,6 @@ wmWidget *WIDGET_plane_new(wmWidgetGroup *wgroup, const 
char *name, const int UN
 
        /* defaults */
        copy_v3_v3(plane->direction, dir_default);
-       zero_v3(plane->offset);
 
        wm_widget_register(wgroup, &plane->widget, name);
 
@@ -918,13 +917,6 @@ void WIDGET_plane_set_direction(wmWidget *widget, const 
float direction[3])
        normalize_v3(plane->direction);
 }
 
-void WIDGET_plane_set_offset(wmWidget *widget, const float offset[3])
-{
-       PlaneWidget *plane = (PlaneWidget *)widget;
-
-       copy_v3_v3(plane->offset, offset);
-}
-
 void WIDGET_plane_set_up_vector(wmWidget *widget, const float direction[3])
 {
        PlaneWidget *plane = (PlaneWidget *)widget;
@@ -954,7 +946,6 @@ enum {
 
 typedef struct RectTransformWidget {
        wmWidget widget;
-       float offset[2]; /* position of widget */
        float w, h;      /* dimensions of widget */
        float rotation;  /* rotation of the rectangle */
        float scale[2]; /* scaling for the widget for non-destructive editing. 
*/
@@ -1072,7 +1063,7 @@ static void widget_rect_transform_draw(const bContext 
*UNUSED(C), wmWidget *widg
        r.ymax = half_h;
        
        glPushMatrix();
-       glTranslatef(widget->origin[0] + cage->offset[0], widget->origin[1] + 
cage->offset[1], 0.0f);
+       glTranslatef(widget->origin[0] + widget->offset[0], widget->origin[1] + 
widget->offset[1], 0.0f);
        if (cage->style & WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
                glScalef(cage->scale[0], cage->scale[0], 1.0);
        else
@@ -1136,8 +1127,8 @@ static int widget_rect_tranfrorm_intersect(bContext 
*UNUSED(C), const wmEvent *e
        
        /* rotate mouse in relation to the center and relocate it */
        sub_v2_v2v2(point_local, mouse, widget->origin);
-       point_local[0] -= cage->offset[0];
-       point_local[1] -= cage->offset[1];
+       point_local[0] -= widget->offset[0];
+       point_local[1] -= widget->offset[1];
        //rotate_m2(matrot, -cage->transform.rotation);
 
        if (cage->style & WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
@@ -1256,7 +1247,7 @@ static int widget_rect_transform_invoke(bContext 
*UNUSED(C), const wmEvent *even
        RectTransformWidget *cage = (RectTransformWidget *) widget;
        RectTransformInteraction *data = MEM_callocN(sizeof 
(RectTransformInteraction), "cage_interaction");
        
-       copy_v2_v2(data->orig_offset, cage->offset);
+       copy_v2_v2(data->orig_offset, widget->offset);
        copy_v2_v2(data->orig_scale, cage->scale);
        
        data->orig_mouse[0] = event->mval[0];
@@ -1269,30 +1260,30 @@ static int widget_rect_transform_invoke(bContext 
*UNUSED(C), const wmEvent *even
 
 static int widget_rect_transform_handler(bContext *C, const wmEvent *event, 
wmWidget *widget)
 {
-       RectTransformWidget *cage = (RectTransformWidget *) widget;
+       RectTransformWidget *cage = (RectTransformWidget *)widget;
        RectTransformInteraction *data = widget->interaction_data;
        ARegion *ar = CTX_wm_region(C);
        float valuex, valuey;
        /* needed here as well in case clamping occurs */
-       const float orig_ofx = cage->offset[0], orig_ofy = cage->offset[1];
+       const float orig_ofx = widget->offset[0], orig_ofy = widget->offset[1];
        
        valuex = (event->mval[0] - data->orig_mouse[0]);
        valuey = (event->mval[1] - data->orig_mouse[1]);
        
        if (widget->highlighted_part == 
WIDGET_RECT_TRANSFORM_INTERSECT_TRANSLATE) {
-               cage->offset[0] = data->orig_offset[0] + valuex;
-               cage->offset[1] = data->orig_offset[1] + valuey;
+               widget->offset[0] = data->orig_offset[0] + valuex;
+               widget->offset[1] = data->orig_offset[1] + valuey;
        }
        else if (widget->highlighted_part == 
WIDGET_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT) {
-               cage->offset[0] = data->orig_offset[0] + valuex / 2.0;
+               widget->offset[0] = data->orig_offset[0] + valuex / 2.0;
                cage->scale[0] = (cage->w * data->orig_scale[0] - valuex) / 
cage->w;
        }
        else if (widget->highlighted_part == 
WIDGET_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT) {
-               cage->offset[0] = data->orig_offset[0] + valuex / 2.0;
+               widget->offset[0] = data->orig_offset[0] + valuex / 2.0;
                cage->scale[0] = (cage->w * data->orig_scale[0] + valuex) / 
cage->w;
        }
        else if (widget->highlighted_part == 
WIDGET_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN) {
-               cage->offset[1] = data->orig_offset[1] + valuey / 2.0;
+               widget->offset[1] = data->orig_offset[1] + valuey / 2.0;
                
                if (cage->style & WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
                        cage->scale[0] = (cage->h * data->orig_scale[0] - 
valuey) / cage->h;
@@ -1302,7 +1293,7 @@ static int widget_rect_transform_handler(bContext *C, 
const wmEvent *event, wmWi
                }
        }
        else if (widget->highlighted_part == 
WIDGET_RECT_TRANSFORM_INTERSECT_SCALEY_UP) {
-               cage->offset[1] = data->orig_offset[1] + valuey / 2.0;
+               widget->offset[1] = data->orig_offset[1] + valuey / 2.0;
                
                if (cage->style & WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
                        cage->scale[0] = (cage->h * data->orig_scale[0] + 
valuey) / cage->h;
@@ -1318,18 +1309,18 @@ static int widget_rect_transform_handler(bContext *C, 
const wmEvent *event, wmWi
                    cage->scale[0] < WIDGET_RECT_MIN_WIDTH / cage->w) 
                {
                        cage->scale[0] = max_ff(WIDGET_RECT_MIN_WIDTH / 
cage->h, WIDGET_RECT_MIN_WIDTH / cage->w);
-                       cage->offset[0] = orig_ofx;
-                       cage->offset[1] = orig_ofy;
+                       widget->offset[0] = orig_ofx;
+                       widget->offset[1] = orig_ofy;
                }
        }
        else {
                if (cage->scale[0] < WIDGET_RECT_MIN_WIDTH / cage->w) {
                        cage->scale[0] = WIDGET_RECT_MIN_WIDTH / cage->w;
-                       cage->offset[0] = orig_ofx;
+                       widget->offset[0] = orig_ofx;
                }
                if (cage->scale[1] < WIDGET_RECT_MIN_WIDTH / cage->h) {
                        cage->scale[1] = WIDGET_RECT_MIN_WIDTH / cage->h;
-                       cage->offset[1] = orig_ofy;
+                       widget->offset[1] =

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