[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13223] trunk/blender/source/blender: === Custom Transform Orientation ===

Joshua Leung aligorith at gmail.com
Mon Jan 14 01:00:26 CET 2008


Hi,

Is there any reason in particular that the
uiPanelPush(block);/uiPanelPop(block);  lines have been added in
drawview.cfor the Transform Orientations panel? Removing them gets rid
of a little
redraw bug I'm getting with the panel here.


Regards,
Aligorith

On Jan 14, 2008 7:24 AM, Martin Poirier <theeth at yahoo.com> wrote:

> Revision: 13223
>
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13223
> Author:   theeth
> Date:     2008-01-13 19:24:09 +0100 (Sun, 13 Jan 2008)
>
> Log Message:
> -----------
> === Custom Transform Orientation ===
>
> Custom Orientations can be added with Ctrl-Shift-C (hotkey suggestions are
> welcomed), this adds and select the new alignment. Custom Orientations can
> also be added, deleted, selected from the Transform Orientations panel (View
> -> Transform Orientations). Standard orientations (global, local, normal,
> view) can also be selected from this panel.
>
> If you plan on using only a single custom orientation and don't really
> need a list, I suggest you use the hotkey as it adds and selects at the same
> time.
>
> Custom Orientations are save in the scene and are selected per 3D view
> (like normal orientation).
>
> Adding from an object, the orientation is a normalized version of the
> object's orientation.
> Adding from mesh data, a single element (vertex, edge, face) must be
> selected in its respective selection mode. Vertex orientation Z-axis is
> based on the normal, edge Z-axis on the edge itself (X-axis is on the XoY
> plane when possible, Y-axis is perpendicular to the rest). Face orientation
> Z-axis is the face normal, X-axis is perpendicular to the first edge, Y-axis
> is perpendicular to the rest.
> (More logical orientations can be suggested).
>
> I plan to add: 2 vertice (connected or not) => edge orientation , 3
> vertice = face orientation
>
> Differences from the patch:
> - orientations no longer link back to the object they came from,
> everything is copy on creation.
> - orientations are overwritten based on name (if you add an orientation
> with the same name as one that already exists, it overwrites the old one)
>
> Modified Paths:
> --------------
>    trunk/blender/source/blender/blenkernel/intern/scene.c
>    trunk/blender/source/blender/blenloader/intern/readfile.c
>    trunk/blender/source/blender/blenloader/intern/writefile.c
>    trunk/blender/source/blender/include/BIF_space.h
>    trunk/blender/source/blender/include/BIF_transform.h
>    trunk/blender/source/blender/include/blendef.h
>    trunk/blender/source/blender/include/butspace.h
>    trunk/blender/source/blender/include/transform.h
>    trunk/blender/source/blender/makesdna/DNA_scene_types.h
>    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
>    trunk/blender/source/blender/src/drawview.c
>    trunk/blender/source/blender/src/header_info.c
>    trunk/blender/source/blender/src/header_view3d.c
>    trunk/blender/source/blender/src/space.c
>    trunk/blender/source/blender/src/transform.c
>    trunk/blender/source/blender/src/transform_constraints.c
>    trunk/blender/source/blender/src/transform_manipulator.c
>
> Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/intern/scene.c      2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/blenkernel/intern/scene.c      2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -153,6 +153,7 @@
>        }
>
>        BLI_freelistN(&sce->markers);
> +       BLI_freelistN(&sce->transform_spaces);
>        BLI_freelistN(&sce->r.layers);
>
>        if(sce->toolsettings){
>
> Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
> ===================================================================
> --- trunk/blender/source/blender/blenloader/intern/readfile.c   2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/blenloader/intern/readfile.c   2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -3457,6 +3457,7 @@
>        }
>
>        link_list(fd, &(sce->markers));
> +       link_list(fd, &(sce->transform_spaces));
>        link_list(fd, &(sce->r.layers));
>
>        sce->nodetree= newdataadr(fd, sce->nodetree);
>
> Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
> ===================================================================
> --- trunk/blender/source/blender/blenloader/intern/writefile.c  2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/blenloader/intern/writefile.c  2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -1401,6 +1401,7 @@
>        MetaStack *ms;
>        Strip *strip;
>        TimeMarker *marker;
> +       TransformOrientation *ts;
>        SceneRenderLayer *srl;
>        int a;
>
> @@ -1505,6 +1506,10 @@
>                for(marker= sce->markers.first; marker; marker=
> marker->next)
>                        writestruct(wd, DATA, "TimeMarker", 1, marker);
>
> +               /* writing dynamic list of TransformOrientations to the
> blend file */
> +               for(ts = sce->transform_spaces.first; ts; ts = ts->next)
> +                       writestruct(wd, DATA, "TransformOrientation", 1,
> ts);
> +
>                for(srl= sce->r.layers.first; srl; srl= srl->next)
>                        writestruct(wd, DATA, "SceneRenderLayer", 1, srl);
>
>
> Modified: trunk/blender/source/blender/include/BIF_space.h
> ===================================================================
> --- trunk/blender/source/blender/include/BIF_space.h    2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/include/BIF_space.h    2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -55,6 +55,7 @@
>  #define VIEW3D_HANDLER_OBJECT          3
>  #define VIEW3D_HANDLER_PREVIEW         4
>  #define VIEW3D_HANDLER_MULTIRES         5
> +#define VIEW3D_HANDLER_TRANSFORM       6
>
>  /* ipo handler codes */
>  #define IPO_HANDLER_PROPERTIES 20
>
> Modified: trunk/blender/source/blender/include/BIF_transform.h
> ===================================================================
> --- trunk/blender/source/blender/include/BIF_transform.h        2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/include/BIF_transform.h        2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -81,6 +81,8 @@
>
>  struct TransInfo;
>  struct ScrArea;
> +struct Base;
> +struct Scene;
>
>  struct TransInfo * BIF_GetTransInfo(void);
>  void BIF_setSingleAxisConstraint(float vec[3], char *text);
> @@ -88,6 +90,18 @@
>  void BIF_setLocalAxisConstraint(char axis, char *text);
>  void BIF_setLocalLockConstraint(char axis, char *text);
>
> +struct TransformOrientation;
> +
> +void BIF_clearTransformOrientation(void);
> +void BIF_removeTransformOrientation(struct TransformOrientation *ts);
> +void BIF_manageTransformOrientation(int confirm, int set);
> +int BIF_menuselectTransformOrientation(void);
> +void BIF_selectTransformOrientation(struct TransformOrientation *ts);
> +void BIF_selectTransformOrientationFromIndex(int index);
> +
> +char * BIF_menustringTransformOrientation(); /* the returned value was
> allocated and needs to be freed after use */
> +int BIF_countTransformOrientation();
> +
>  /* Drawing callbacks */
>  void BIF_drawConstraint(void);
>  void BIF_drawPropCircle(void);
>
> Modified: trunk/blender/source/blender/include/blendef.h
> ===================================================================
> --- trunk/blender/source/blender/include/blendef.h      2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/include/blendef.h      2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -237,6 +237,7 @@
>  #define B_SEL_PATH             166
>  #define B_SEL_POINT            167
>  #define B_SEL_END              168
> +#define B_MAN_MODE             169
>
>  /* IPO: 200 */
>  #define B_IPOHOME              201
>
> Modified: trunk/blender/source/blender/include/butspace.h
> ===================================================================
> --- trunk/blender/source/blender/include/butspace.h     2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/include/butspace.h     2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -170,6 +170,8 @@
>  #define B_ARMATUREPANEL3       1013
>  #define B_OBJECTPANELSCALE     1014
>  #define B_OBJECTPANELDIMS      1015
> +#define B_TRANSFORMSPACEADD    1016
> +#define B_TRANSFORMSPACECLEAR  1017
>
>  /* *********************** */
>  #define B_LAMPBUTS             1200
>
> Modified: trunk/blender/source/blender/include/transform.h
> ===================================================================
> --- trunk/blender/source/blender/include/transform.h    2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/include/transform.h    2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -463,6 +463,15 @@
>  void applyNumInput(NumInput *n, float *vec);
>  char handleNumInput(NumInput *n, unsigned short event);
>
> +/*********************** TransSpace ******************************/
> +
> +int manageObjectSpace(int confirm, int set);
> +int manageMeshSpace(int confirm, int set);
> +
> +int addMatrixSpace(float mat[3][3], char name[]);
> +int addObjectSpace(struct Object *ob);
> +void applyTransformOrientation(void);
> +
>  #endif
>
>
>
> Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
> ===================================================================
> --- trunk/blender/source/blender/makesdna/DNA_scene_types.h     2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/makesdna/DNA_scene_types.h     2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -333,6 +333,12 @@
>        int draw_timed;
>  } ParticleEditSettings;
>
> +typedef struct TransformOrientation {
> +       struct TransformOrientation *next, *prev;
> +       char name[36];
> +       float mat[3][3];
> +} TransformOrientation;
> +
>  typedef struct ToolSettings {
>        /* Subdivide Settings */
>        short cornertype;
> @@ -366,7 +372,7 @@
>        /* Auto-IK */
>        short autoik_chainlen;
>
> -       /* Image Paint (8 byte aligned please!) */
> +       /* Image Paint (8 byttse aligned please!) */
>        struct ImagePaintSettings imapaint;
>
>        /* Particle Editing */
> @@ -494,6 +500,7 @@
>        ScriptLink scriptlink;
>
>        ListBase markers;
> +       ListBase transform_spaces;
>
>        short jumpframe, pad1;
>        short snap_flag, snap_target;
>
> Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
> ===================================================================
> --- trunk/blender/source/blender/makesdna/DNA_view3d_types.h    2008-01-13
> 18:13:39 UTC (rev 13222)
> +++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h    2008-01-13
> 18:24:09 UTC (rev 13223)
> @@ -200,6 +200,7 @@
>  #define V3D_MANIP_LOCAL                        1
>  #define V3D_MANIP_NORMAL               2
>  #define V3D_MANIP_VIEW                 3
> +#define V3D_MANIP_CUSTOM               4 /* anything of value 4 or higher
> is custom */
>
>  /* View3d->twflag */
>    /* USE = user setting, DRAW = based on selection */
>
> Modified: trunk/blender/source/blender/src/drawview.c
> ===================================================================
> --- trunk/blender/source/blender/src/drawview.c 2008-01-13 18:13:39 UTC
> (rev 13222)
> +++ trunk/blender/source/blender/src/drawview.c 2008-01-13 18:24:09 UTC
> (rev 13223)
> @@ -2228,9 +2228,83 @@
>                        allqueue(REDRAWVIEW3D, 1);
>                }
>                break;
> +       case B_TRANSFORMSPACEADD:
> +               BIF_manageTransformOrientation(1, 0);
> +               allqueue(REDRAWVIEW3D, 1);
> +               break;
> +       case B_TRANSFORMSPACECLEAR:
> +               BIF_clearTransformOrientation();
> +               allqueue(REDRAWVIEW3D, 1);
>        }
>  }
>
> +void removeTransformOrientation_func(void *target, void *unused)
> +{
> +       BIF_removeTransformOrientation((TransformOrientation *) target);
> +}
> +
> +void selectTransformOrientation_func(void *target, void *unused)
> +{
> +       BIF_selectTransformOrientation((TransformOrientation *) target);
> +}
> +
> +static void view3d_panel_transform_spaces(short cntrl)
> +{
> +       ListBase *transform_spaces = &G.scene->transform_spaces;
> +       TransformOrientation *ts = transform_spaces->first;
> +       uiBlock *block;
> +       uiBut *but;
> +       int xco = 20, yco = 70, height = 140;
> +       int index;
> +
> +       block= uiNewBlock(&curarea->uiblocks, "view3d_panel_transform",
> UI_EMBOSS, UI_HELV, curarea->win);
> +       uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE  | cntrl);
> +       uiSetPanelHandler(VIEW3D_HANDLER_TRANSFORM);  // for close and esc
> +
> +       if(uiNewPanel(curarea, block, "Transform Orientations", "View3d",
> 10, 230, 318, height)==0) return;
> +
> +       uiNewPanelHeight(block, height);
> +
> +       uiBlockBeginAlign(block);
> +
> +       if (G.obedit)
> +               uiDefBut(block, BUT, B_TRANSFORMSPACEADD, "Add",
> xco,120,80,20, 0, 0, 0, 0, 0, "Add the selected element as a Transform
> Orientation");
> +       else
> +               uiDefBut(block, BUT, B_TRANSFORMSPACEADD, "Add",
> xco,120,80,20, 0, 0, 0, 0, 0, "Add the active object as a Transform
> Orientation");
> +
> +       uiDefBut(block, BUT, B_TRANSFORMSPACECLEAR, "Clear", xco +
> 80,120,80,20, 0, 0, 0, 0, 0, "Removal all Transform Orientations");
> +
> +       uiBlockEndAlign(block);
> +
> +       uiPanelPush(block);
> +
> +       uiBlockBeginAlign(block);
> +
> +       uiDefButS(block, ROW, REDRAWHEADERS, "Global",  xco,
>  90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_GLOBAL,0, 0, "Global
> Transform Orientation");
> +       uiDefButS(block, ROW, REDRAWHEADERS, "Local",   xco + 40,
> 90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_LOCAL, 0, 0, "Local
> Transform Orientation");
> +       uiDefButS(block, ROW, REDRAWHEADERS, "Normal",  xco + 80,
> 90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_NORMAL,0, 0, "Normal
> Transform Orientation");
> +       uiDefButS(block, ROW, REDRAWHEADERS, "View",            xco + 120,
>      90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_VIEW,   0, 0, "View
> Transform Orientation");
> +
> +       for (index = V3D_MANIP_CUSTOM, ts = transform_spaces->first ; ts ;
> ts = ts->next, index++) {
> +
> +               BIF_ThemeColor(TH_BUT_ACTION);
> +               but = uiDefIconButS(block,ROW, REDRAWHEADERS,
> ICON_RIGHTARROW_THIN, xco,yco,XIC,YIC, &G.vd->twmode, 5.0, (float)index,
> 0, 0, "Use this Custom Transform Orientation");
> +               uiButSetFunc(but, selectTransformOrientation_func, ts,
> NULL);
> +               uiDefBut(block, TEX, 0, "", xco+=XIC, yco,100+XIC,20,
> &ts->name, 0, 30, 0, 0, "Edits the name of this Transform Orientation");
> +               but = uiDefIconBut(block, BUT, REDRAWVIEW3D, ICON_X,
> xco+=100+XIC,yco,XIC,YIC, 0, 0, 0, 0, 0, "Deletes this Transform
> Orientation");
> +               uiButSetFunc(but, removeTransformOrientation_func, ts,
> NULL);
> +
> +               xco = 20;
> +               yco -= 25;
> +       }
> +       uiBlockEndAlign(block);
> +
> +       uiPanelPop(block);
> +
>
> @@ 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/bf-committers/attachments/20080114/dbb63f9f/attachment-0001.htm 


More information about the Bf-committers mailing list