[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21687] branches/blender2.5/blender/source /blender: Store sketch in armature instead of ugly global.

Campbell Barton ideasman42 at gmail.com
Sat Jul 25 00:01:06 CEST 2009


Line 147 - ED_freeSketch(arm->sketch);
is reporting warning of implicit declaration, isn't having the kernel
call editor functions a bad-level-call?

On Sat, Jul 18, 2009 at 7:26 PM, Martin Poirier<theeth at yahoo.com> wrote:
> Revision: 21687
>          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21687
> Author:   theeth
> Date:     2009-07-19 04:26:01 +0200 (Sun, 19 Jul 2009)
>
> Log Message:
> -----------
> Store sketch in armature instead of ugly global.
>
> Like edit data, this isn't saved, just a temp pointer used during work session.
>
> Also bring back sketching panel for 3d view.
>
> Modified Paths:
> --------------
>    branches/blender2.5/blender/source/blender/blenkernel/intern/armature.c
>    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
>    branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
>    branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
>    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
>    branches/blender2.5/blender/source/blender/makesdna/DNA_armature_types.h
>    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c
>
> Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/armature.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/blenkernel/intern/armature.c     2009-07-19 01:55:21 UTC (rev 21686)
> +++ branches/blender2.5/blender/source/blender/blenkernel/intern/armature.c     2009-07-19 02:26:01 UTC (rev 21687)
> @@ -140,6 +140,12 @@
>                        MEM_freeN(arm->edbo);
>                        arm->edbo= NULL;
>                }
> +
> +               /* free sketch */
> +               if (arm->sketch) {
> +                       ED_freeSketch(arm->sketch);
> +                       arm->sketch = NULL;
> +               }
>        }
>  }
>
>
> Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     2009-07-19 01:55:21 UTC (rev 21686)
> +++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     2009-07-19 02:26:01 UTC (rev 21687)
> @@ -2342,6 +2342,7 @@
>
>        link_list(fd, &arm->bonebase);
>        arm->edbo= NULL;
> +       arm->sketch = NULL;
>
>        bone=arm->bonebase.first;
>        while (bone) {
>
> Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
> ===================================================================
> --- branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c   2009-07-19 01:55:21 UTC (rev 21686)
> +++ branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c   2009-07-19 02:26:01 UTC (rev 21687)
> @@ -186,7 +186,6 @@
>        GestureApplyFct         apply;
>  } SK_GestureAction;
>
> -SK_Sketch *GLOBAL_sketch = NULL;
>  SK_Point boneSnap;
>  int    LAST_SNAP_POINT_VALID = 0;
>  float  LAST_SNAP_POINT[3];
> @@ -217,6 +216,8 @@
>  int sk_detectConvertGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch);
>  void sk_applyConvertGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch);
>
> +SK_Sketch* contextSketch(const bContext *c, int create);
> +SK_Sketch* viewcontextSketch(ViewContext *vc, int create);
>
>  void sk_resetOverdraw(SK_Sketch *sketch);
>  int sk_hasOverdraw(SK_Sketch *sketch, SK_Stroke *stk);
> @@ -381,7 +382,7 @@
>  char * BIF_nameBoneTemplate(const bContext *C)
>  {
>        ToolSettings *ts = CTX_data_tool_settings(C);
> -       SK_Sketch *stk = GLOBAL_sketch;
> +       SK_Sketch *stk = contextSketch(C, 1);
>        RigGraph *rg;
>        int index = 0;
>
> @@ -1592,6 +1593,7 @@
>                float p[3];
>                float size = 0;
>
> +               BLI_freelistN(&sketch->depth_peels);
>                sketch->depth_peels.first = sketch->depth_peels.last = NULL;
>
>                peelObjectsContext(C, &sketch->depth_peels, dd->mval);
> @@ -3023,9 +3025,10 @@
>  {
>        if (ValidSketchViewContext(vc))
>        {
> -               if (GLOBAL_sketch != NULL)
> +               SK_Sketch *sketch = viewcontextSketch(vc, 0);
> +               if (sketch)
>                {
> -                       sk_drawSketch(vc->scene, vc->v3d, GLOBAL_sketch, 1);
> +                       sk_drawSketch(vc->scene, vc->v3d, sketch, 1);
>                        return 1;
>                }
>        }
> @@ -3037,18 +3040,20 @@
>  {
>        if (ED_operator_sketch_mode(C))
>        {
> -               if (GLOBAL_sketch != NULL)
> +               SK_Sketch *sketch = contextSketch(C, 0);
> +               if (sketch)
>                {
> -                       sk_drawSketch(CTX_data_scene(C), CTX_wm_view3d(C), GLOBAL_sketch, 0);
> +                       sk_drawSketch(CTX_data_scene(C), CTX_wm_view3d(C), sketch, 0);
>                }
>        }
>  }
>
>  static int sketch_delete(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       SK_Sketch *sketch = contextSketch(C, 0);
> +       if (sketch)
>        {
> -               sk_deleteSelectedStrokes(GLOBAL_sketch);
> +               sk_deleteSelectedStrokes(sketch);
>  //                     allqueue(REDRAWVIEW3D, 0);
>        }
>        return OPERATOR_FINISHED;
> @@ -3056,9 +3061,10 @@
>
>  void BIF_sk_selectStroke(bContext *C, short mval[2], short extend)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       SK_Sketch *sketch = contextSketch(C, 0);
> +       if (sketch)
>        {
> -               sk_selectStroke(C, GLOBAL_sketch, mval, extend);
> +               sk_selectStroke(C, sketch, mval, extend);
>        }
>  }
>
> @@ -3066,9 +3072,10 @@
>  {
>        if (ED_operator_sketch_full_mode(C))
>        {
> -               if (GLOBAL_sketch != NULL)
> +               SK_Sketch *sketch = contextSketch(C, 0);
> +               if (sketch)
>                {
> -                       sk_convert(C, GLOBAL_sketch);
> +                       sk_convert(C, sketch);
>  //                     BIF_undo_push("Convert Sketch");
>  //                     allqueue(REDRAWVIEW3D, 0);
>  //                     allqueue(REDRAWBUTSEDIT, 0);
> @@ -3080,42 +3087,86 @@
>  {
>        if (ED_operator_sketch_full_mode(C))
>        {
> -               if (GLOBAL_sketch != NULL)
> +               SK_Sketch *sketch = contextSketch(C, 0);
> +               if (sketch)
>                {
> -                       sk_deleteSelectedStrokes(GLOBAL_sketch);
> +                       sk_deleteSelectedStrokes(sketch);
>  //                     BIF_undo_push("Convert Sketch");
>  //                     allqueue(REDRAWVIEW3D, 0);
>                }
>        }
>  }
>
> -//void BIF_selectAllSketch(bContext *C, int mode)
> -//{
> -//     if (BIF_validSketchMode(C))
> -//     {
> -//             if (GLOBAL_sketch != NULL)
> -//             {
> -//                     sk_selectAllSketch(GLOBAL_sketch, mode);
> -////                   XXX
> -////                   allqueue(REDRAWVIEW3D, 0);
> -//             }
> -//     }
> -//}
> +#if 0
> +void BIF_selectAllSketch(bContext *C, int mode)
> +{
> +       if (BIF_validSketchMode(C))
> +       {
> +               SK_Sketch *sketch = contextSketch(C, 0);
> +               if (sketch)
> +               {
> +                       sk_selectAllSketch(sketch, mode);
> +//                     XXX
> +//                     allqueue(REDRAWVIEW3D, 0);
> +               }
> +       }
> +}
> +#endif
>
> -void BIF_freeSketch(bContext *C)
> +void ED_freeSketch(SK_Sketch *sketch)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       sk_freeSketch(sketch);
> +}
> +
> +SK_Sketch* ED_createSketch()
> +{
> +       return sk_createSketch();
> +}
> +
> +SK_Sketch* contextSketch(const bContext *C, int create)
> +{
> +       Object *obedit = CTX_data_edit_object(C);
> +       SK_Sketch *sketch = NULL;
> +
> +       if (obedit && obedit->type == OB_ARMATURE)
>        {
> -               sk_freeSketch(GLOBAL_sketch);
> -               GLOBAL_sketch = NULL;
> +               bArmature *arm = obedit->data;
> +
> +               if (arm->sketch == NULL && create)
> +               {
> +                       arm->sketch = sk_createSketch();
> +               }
> +               sketch = arm->sketch;
>        }
> +
> +       return sketch;
>  }
>
> +SK_Sketch* viewcontextSketch(ViewContext *vc, int create)
> +{
> +       Object *obedit = vc->obedit;
> +       SK_Sketch *sketch = NULL;
> +
> +       if (obedit && obedit->type == OB_ARMATURE)
> +       {
> +               bArmature *arm = obedit->data;
> +
> +               if (arm->sketch == NULL && create)
> +               {
> +                       arm->sketch = sk_createSketch();
> +               }
> +               sketch = arm->sketch;
> +       }
> +
> +       return sketch;
> +}
> +
>  static int sketch_cancel(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       SK_Sketch *sketch = contextSketch(C, 0);
> +       if (sketch != NULL)
>        {
> -               sk_cancelStroke(GLOBAL_sketch);
> +               sk_cancelStroke(sketch);
>                ED_area_tag_redraw(CTX_wm_area(C));
>                return OPERATOR_FINISHED;
>        }
> @@ -3124,9 +3175,10 @@
>
>  static int sketch_finish(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       SK_Sketch *sketch = contextSketch(C, 0);
> +       if (sketch != NULL)
>        {
> -               if (sk_finish_stroke(C, GLOBAL_sketch))
> +               if (sk_finish_stroke(C, sketch))
>                {
>                        ED_area_tag_redraw(CTX_wm_area(C));
>                        return OPERATOR_FINISHED;
> @@ -3137,10 +3189,11 @@
>
>  static int sketch_select(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       if (GLOBAL_sketch != NULL)
> +       SK_Sketch *sketch = contextSketch(C, 0);
> +       if (sketch)
>        {
>                short extend = 0;
> -               sk_selectStroke(C, GLOBAL_sketch, event->mval, extend);
> +               sk_selectStroke(C, sketch, event->mval, extend);
>                ED_area_tag_redraw(CTX_wm_area(C));
>        }
>
> @@ -3149,7 +3202,8 @@
>
>  static int sketch_draw_stroke_cancel(bContext *C, wmOperator *op)
>  {
> -       sk_cancelStroke(GLOBAL_sketch);
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
> +       sk_cancelStroke(sketch);
>        MEM_freeN(op->customdata);
>        return OPERATOR_CANCELLED;
>  }
> @@ -3158,18 +3212,14 @@
>  {
>        short snap = RNA_boolean_get(op->ptr, "snap");
>        SK_DrawData *dd;
> +       SK_Sketch *sketch = contextSketch(C, 1);
>
> -       if (GLOBAL_sketch == NULL)
> -       {
> -               GLOBAL_sketch = sk_createSketch();
> -       }
> -
>        op->customdata = dd = MEM_callocN(sizeof("SK_DrawData"), "SketchDrawData");
>        sk_initDrawData(dd, event->mval);
>
> -       sk_start_draw_stroke(GLOBAL_sketch);
> +       sk_start_draw_stroke(sketch);
>
> -       sk_draw_stroke(C, GLOBAL_sketch, GLOBAL_sketch->active_stroke, dd, snap);
> +       sk_draw_stroke(C, sketch, sketch->active_stroke, dd, snap);
>
>        WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
>
> @@ -3178,7 +3228,8 @@
>
>  static int sketch_draw_gesture_cancel(bContext *C, wmOperator *op)
>  {
> -       sk_cancelStroke(GLOBAL_sketch);
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
> +       sk_cancelStroke(sketch);
>        MEM_freeN(op->customdata);
>        return OPERATOR_CANCELLED;
>  }
> @@ -3187,17 +3238,14 @@
>  {
>        short snap = RNA_boolean_get(op->ptr, "snap");
>        SK_DrawData *dd;
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
> +       sk_cancelStroke(sketch);
>
> -       if (GLOBAL_sketch == NULL)
> -       {
> -               GLOBAL_sketch = sk_createSketch();
> -       }
> -
>        op->customdata = dd = MEM_callocN(sizeof("SK_DrawData"), "SketchDrawData");
>        sk_initDrawData(dd, event->mval);
>
> -       sk_start_draw_gesture(GLOBAL_sketch);
> -       sk_draw_stroke(C, GLOBAL_sketch, GLOBAL_sketch->gesture, dd, snap);
> +       sk_start_draw_gesture(sketch);
> +       sk_draw_stroke(C, sketch, sketch->gesture, dd, snap);
>
>        WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
>
> @@ -3208,6 +3256,7 @@
>  {
>        short snap = RNA_boolean_get(op->ptr, "snap");
>        SK_DrawData *dd = op->customdata;
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
>        int retval = OPERATOR_RUNNING_MODAL;
>
>        switch (event->type)
> @@ -3220,7 +3269,7 @@
>        case MOUSEMOVE:
>                dd->mval[0] = event->mval[0];
>                dd->mval[1] = event->mval[1];
> -               sk_draw_stroke(C, GLOBAL_sketch, stk, dd, snap);
> +               sk_draw_stroke(C, sketch, stk, dd, snap);
>                ED_area_tag_redraw(CTX_wm_area(C));
>                break;
>        case ESCKEY:
> @@ -3235,7 +3284,7 @@
>                        {
>                                sk_endContinuousStroke(stk);
>                                sk_filterLastContinuousStroke(stk);
> -                               sk_updateNextPoint(GLOBAL_sketch, stk);
> +                               sk_updateNextPoint(sketch, stk);
>                                ED_area_tag_redraw(CTX_wm_area(C));
>                                MEM_freeN(op->customdata);
>                                retval = OPERATOR_FINISHED;
> @@ -3248,11 +3297,11 @@
>                                if (stk->nb_points > 1)
>                                {
>                                        /* apply gesture here */
> -                                       sk_applyGesture(C, GLOBAL_sketch);
> +                                       sk_applyGesture(C, sketch);
>                                }
>
>                                sk_freeStroke(stk);
> -                               GLOBAL_sketch->gesture = NULL;
> +                               sketch->gesture = NULL;
>
>                                ED_area_tag_redraw(CTX_wm_area(C));
>                                MEM_freeN(op->customdata);
> @@ -3267,21 +3316,23 @@
>
>  static int sketch_draw_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       return sketch_draw_modal(C, op, event, 0, GLOBAL_sketch->active_stroke);
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
> +       return sketch_draw_modal(C, op, event, 0, sketch->active_stroke);
>  }
>
>  static int sketch_draw_gesture_modal(bContext *C, wmOperator *op, wmEvent *event)
>  {
> -       return sketch_draw_modal(C, op, event, 1, GLOBAL_sketch->gesture);
> +       SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */
> +       return sketch_draw_modal(C, op, event, 1, sketch->gesture);
>  }
>
>  static int sketch_draw_preview(bContext *C, wmOperator *op, wmEvent *event)
>  {
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>



-- 
- Campbell


More information about the Bf-committers mailing list