[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