Hi,<br><br>Is there any reason in particular that the uiPanelPush(block);/uiPanelPop(block); lines have been added in drawview.c for the Transform Orientations panel? Removing them gets rid of a little redraw bug I'm getting with the panel here.
<br><br><br>Regards,<br>Aligorith<br><br><div class="gmail_quote">On Jan 14, 2008 7:24 AM, Martin Poirier <<a href="mailto:theeth@yahoo.com">theeth@yahoo.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Revision: 13223<br> <a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13223" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13223
</a><br>Author: theeth<br>Date: 2008-01-13 19:24:09 +0100 (Sun, 13 Jan 2008)<br><br>Log Message:<br>-----------<br>=== Custom Transform Orientation ===<br><br>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.
<br><br>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.<br><br>Custom Orientations are save in the scene and are selected per 3D view (like normal orientation).
<br><br>Adding from an object, the orientation is a normalized version of the object's orientation.<br>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.
<br>(More logical orientations can be suggested).<br><br>I plan to add: 2 vertice (connected or not) => edge orientation , 3 vertice = face orientation<br><br>Differences from the patch:<br>- orientations no longer link back to the object they came from, everything is copy on creation.
<br>- 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)<br><br>Modified Paths:<br>--------------<br> trunk/blender/source/blender/blenkernel/intern/scene.c
<br> trunk/blender/source/blender/blenloader/intern/readfile.c<br> trunk/blender/source/blender/blenloader/intern/writefile.c<br> trunk/blender/source/blender/include/BIF_space.h<br> trunk/blender/source/blender/include/BIF_transform.h
<br> trunk/blender/source/blender/include/blendef.h<br> trunk/blender/source/blender/include/butspace.h<br> trunk/blender/source/blender/include/transform.h<br> trunk/blender/source/blender/makesdna/DNA_scene_types.h
<br> trunk/blender/source/blender/makesdna/DNA_view3d_types.h<br> trunk/blender/source/blender/src/drawview.c<br> trunk/blender/source/blender/src/header_info.c<br> trunk/blender/source/blender/src/header_view3d.c
<br> trunk/blender/source/blender/src/space.c<br> trunk/blender/source/blender/src/transform.c<br> trunk/blender/source/blender/src/transform_constraints.c<br> trunk/blender/source/blender/src/transform_manipulator.c
<br><br>Modified: trunk/blender/source/blender/blenkernel/intern/scene.c<br>===================================================================<br>--- trunk/blender/source/blender/blenkernel/intern/scene.c 2008-01-13 18:13:39 UTC (rev 13222)
<br>+++ trunk/blender/source/blender/blenkernel/intern/scene.c 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -153,6 +153,7 @@<br> }<br><br> BLI_freelistN(&sce->markers);<br>+ BLI_freelistN(&sce->transform_spaces);
<br> BLI_freelistN(&sce->r.layers);<br><br> if(sce->toolsettings){<br><br>Modified: trunk/blender/source/blender/blenloader/intern/readfile.c<br>===================================================================
<br>--- trunk/blender/source/blender/blenloader/intern/readfile.c 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -3457,6 +3457,7 @@
<br> }<br><br> link_list(fd, &(sce->markers));<br>+ link_list(fd, &(sce->transform_spaces));<br> link_list(fd, &(sce->r.layers));<br><br> sce->nodetree= newdataadr(fd, sce->nodetree);
<br><br>Modified: trunk/blender/source/blender/blenloader/intern/writefile.c<br>===================================================================<br>--- trunk/blender/source/blender/blenloader/intern/writefile.c 2008-01-13 18:13:39 UTC (rev 13222)
<br>+++ trunk/blender/source/blender/blenloader/intern/writefile.c 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -1401,6 +1401,7 @@<br> MetaStack *ms;<br> Strip *strip;<br> TimeMarker *marker;<br>+ TransformOrientation *ts;
<br> SceneRenderLayer *srl;<br> int a;<br><br>@@ -1505,6 +1506,10 @@<br> for(marker= sce->markers.first; marker; marker= marker->next)<br> writestruct(wd, DATA, "TimeMarker", 1, marker);
<br><br>+ /* writing dynamic list of TransformOrientations to the blend file */<br>+ for(ts = sce->transform_spaces.first; ts; ts = ts->next)<br>+ writestruct(wd, DATA, "TransformOrientation", 1, ts);
<br>+<br> for(srl= sce->r.layers.first; srl; srl= srl->next)<br> writestruct(wd, DATA, "SceneRenderLayer", 1, srl);<br><br><br>Modified: trunk/blender/source/blender/include/BIF_space.h
<br>===================================================================<br>--- trunk/blender/source/blender/include/BIF_space.h 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/include/BIF_space.h 2008-01-13 18:24:09 UTC (rev 13223)
<br>@@ -55,6 +55,7 @@<br> #define VIEW3D_HANDLER_OBJECT 3<br> #define VIEW3D_HANDLER_PREVIEW 4<br> #define VIEW3D_HANDLER_MULTIRES 5<br>+#define VIEW3D_HANDLER_TRANSFORM 6<br><br> /* ipo handler codes */
<br> #define IPO_HANDLER_PROPERTIES 20<br><br>Modified: trunk/blender/source/blender/include/BIF_transform.h<br>===================================================================<br>--- trunk/blender/source/blender/include/BIF_transform.h 2008-01-13 18:13:39 UTC (rev 13222)
<br>+++ trunk/blender/source/blender/include/BIF_transform.h 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -81,6 +81,8 @@<br><br> struct TransInfo;<br> struct ScrArea;<br>+struct Base;<br>+struct Scene;<br><br> struct TransInfo * BIF_GetTransInfo(void);
<br> void BIF_setSingleAxisConstraint(float vec[3], char *text);<br>@@ -88,6 +90,18 @@<br> void BIF_setLocalAxisConstraint(char axis, char *text);<br> void BIF_setLocalLockConstraint(char axis, char *text);<br><br>+struct TransformOrientation;
<br>+<br>+void BIF_clearTransformOrientation(void);<br>+void BIF_removeTransformOrientation(struct TransformOrientation *ts);<br>+void BIF_manageTransformOrientation(int confirm, int set);<br>+int BIF_menuselectTransformOrientation(void);
<br>+void BIF_selectTransformOrientation(struct TransformOrientation *ts);<br>+void BIF_selectTransformOrientationFromIndex(int index);<br>+<br>+char * BIF_menustringTransformOrientation(); /* the returned value was allocated and needs to be freed after use */
<br>+int BIF_countTransformOrientation();<br>+<br> /* Drawing callbacks */<br> void BIF_drawConstraint(void);<br> void BIF_drawPropCircle(void);<br><br>Modified: trunk/blender/source/blender/include/blendef.h<br>===================================================================
<br>--- trunk/blender/source/blender/include/blendef.h 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/include/blendef.h 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -237,6 +237,7 @@<br> #define B_SEL_PATH 166
<br> #define B_SEL_POINT 167<br> #define B_SEL_END 168<br>+#define B_MAN_MODE 169<br><br> /* IPO: 200 */<br> #define B_IPOHOME 201<br><br>Modified: trunk/blender/source/blender/include/butspace.h
<br>===================================================================<br>--- trunk/blender/source/blender/include/butspace.h 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/include/butspace.h 2008-01-13 18:24:09 UTC (rev 13223)
<br>@@ -170,6 +170,8 @@<br> #define B_ARMATUREPANEL3 1013<br> #define B_OBJECTPANELSCALE 1014<br> #define B_OBJECTPANELDIMS 1015<br>+#define B_TRANSFORMSPACEADD 1016<br>+#define B_TRANSFORMSPACECLEAR 1017
<br><br> /* *********************** */<br> #define B_LAMPBUTS 1200<br><br>Modified: trunk/blender/source/blender/include/transform.h<br>===================================================================<br>--- trunk/blender/source/blender/include/transform.h 2008-01-13 18:13:39 UTC (rev 13222)
<br>+++ trunk/blender/source/blender/include/transform.h 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -463,6 +463,15 @@<br> void applyNumInput(NumInput *n, float *vec);<br> char handleNumInput(NumInput *n, unsigned short event);
<br><br>+/*********************** TransSpace ******************************/<br>+<br>+int manageObjectSpace(int confirm, int set);<br>+int manageMeshSpace(int confirm, int set);<br>+<br>+int addMatrixSpace(float mat[3][3], char name[]);
<br>+int addObjectSpace(struct Object *ob);<br>+void applyTransformOrientation(void);<br>+<br> #endif<br><br><br><br>Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h<br>===================================================================
<br>--- trunk/blender/source/blender/makesdna/DNA_scene_types.h 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -333,6 +333,12 @@
<br> int draw_timed;<br> } ParticleEditSettings;<br><br>+typedef struct TransformOrientation {<br>+ struct TransformOrientation *next, *prev;<br>+ char name[36];<br>+ float mat[3][3];<br>+} TransformOrientation;
<br>+<br> typedef struct ToolSettings {<br> /* Subdivide Settings */<br> short cornertype;<br>@@ -366,7 +372,7 @@<br> /* Auto-IK */<br> short autoik_chainlen;<br><br>- /* Image Paint (8 byte aligned please!) */
<br>+ /* Image Paint (8 byttse aligned please!) */<br> struct ImagePaintSettings imapaint;<br><br> /* Particle Editing */<br>@@ -494,6 +500,7 @@<br> ScriptLink scriptlink;<br><br> ListBase markers;
<br>+ ListBase transform_spaces;<br><br> short jumpframe, pad1;<br> short snap_flag, snap_target;<br><br>Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h<br>===================================================================
<br>--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -200,6 +200,7 @@
<br> #define V3D_MANIP_LOCAL 1<br> #define V3D_MANIP_NORMAL 2<br> #define V3D_MANIP_VIEW 3<br>+#define V3D_MANIP_CUSTOM 4 /* anything of value 4 or higher is custom */
<br><br> /* View3d->twflag */<br> /* USE = user setting, DRAW = based on selection */<br><br>Modified: trunk/blender/source/blender/src/drawview.c<br>===================================================================
<br>--- trunk/blender/source/blender/src/drawview.c 2008-01-13 18:13:39 UTC (rev 13222)<br>+++ trunk/blender/source/blender/src/drawview.c 2008-01-13 18:24:09 UTC (rev 13223)<br>@@ -2228,9 +2228,83 @@<br> allqueue(REDRAWVIEW3D, 1);
<br> }<br> break;<br>+ case B_TRANSFORMSPACEADD:<br>+ BIF_manageTransformOrientation(1, 0);<br>+ allqueue(REDRAWVIEW3D, 1);<br>+ break;<br>+ case B_TRANSFORMSPACECLEAR:
<br>+ BIF_clearTransformOrientation();<br>+ allqueue(REDRAWVIEW3D, 1);<br> }<br> }<br><br>+void removeTransformOrientation_func(void *target, void *unused)<br>+{<br>+ BIF_removeTransformOrientation((TransformOrientation *) target);
<br>+}<br>+<br>+void selectTransformOrientation_func(void *target, void *unused)<br>+{<br>+ BIF_selectTransformOrientation((TransformOrientation *) target);<br>+}<br>+<br>+static void view3d_panel_transform_spaces(short cntrl)
<br>+{<br>+ ListBase *transform_spaces = &G.scene->transform_spaces;<br>+ TransformOrientation *ts = transform_spaces->first;<br>+ uiBlock *block;<br>+ uiBut *but;<br>+ int xco = 20, yco = 70, height = 140;
<br>+ int index;<br>+<br>+ block= uiNewBlock(&curarea->uiblocks, "view3d_panel_transform", UI_EMBOSS, UI_HELV, curarea->win);<br>+ uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
<br>+ uiSetPanelHandler(VIEW3D_HANDLER_TRANSFORM); // for close and esc<br>+<br>+ if(uiNewPanel(curarea, block, "Transform Orientations", "View3d", 10, 230, 318, height)==0) return;<br>+<br>
+ uiNewPanelHeight(block, height);<br>+<br>+ uiBlockBeginAlign(block);<br>+<br>+ if (G.obedit)<br>+ uiDefBut(block, BUT, B_TRANSFORMSPACEADD, "Add", xco,120,80,20, 0, 0, 0, 0, 0, "Add the selected element as a Transform Orientation");
<br>+ else<br>+ uiDefBut(block, BUT, B_TRANSFORMSPACEADD, "Add", xco,120,80,20, 0, 0, 0, 0, 0, "Add the active object as a Transform Orientation");<br>+<br>+ uiDefBut(block, BUT, B_TRANSFORMSPACECLEAR, "Clear", xco + 80,120,80,20, 0, 0, 0, 0, 0, "Removal all Transform Orientations");
<br>+<br>+ uiBlockEndAlign(block);<br>+<br>+ uiPanelPush(block);<br>+<br>+ uiBlockBeginAlign(block);<br>+<br>+ uiDefButS(block, ROW, REDRAWHEADERS, "Global", xco, 90, 40,20, &G.vd->twmode,
5.0, (float)V3D_MANIP_GLOBAL,0, 0, "Global Transform Orientation");<br>+ uiDefButS(block, ROW, REDRAWHEADERS, "Local", xco + 40, 90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_LOCAL, 0, 0, "Local Transform Orientation");
<br>+ uiDefButS(block, ROW, REDRAWHEADERS, "Normal", xco + 80, 90, 40,20, &G.vd->twmode, 5.0, (float)V3D_MANIP_NORMAL,0, 0, "Normal Transform Orientation");<br>+ uiDefButS(block, ROW, REDRAWHEADERS, "View", xco + 120, 90, 40,20, &G.vd->twmode,
5.0, (float)V3D_MANIP_VIEW, 0, 0, "View Transform Orientation");<br>+<br>+ for (index = V3D_MANIP_CUSTOM, ts = transform_spaces->first ; ts ; ts = ts->next, index++) {<br>+<br>+ BIF_ThemeColor(TH_BUT_ACTION);
<br>+ 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");<br>+ uiButSetFunc(but, selectTransformOrientation_func, ts, NULL);
<br>+ uiDefBut(block, TEX, 0, "", xco+=XIC, yco,100+XIC,20, &ts->name, 0, 30, 0, 0, "Edits the name of this Transform Orientation");<br>+ but = uiDefIconBut(block, BUT, REDRAWVIEW3D, ICON_X, xco+=100+XIC,yco,XIC,YIC, 0, 0, 0, 0, 0, "Deletes this Transform Orientation");
<br>+ uiButSetFunc(but, removeTransformOrientation_func, ts, NULL);<br>+<br>+ xco = 20;<br>+ yco -= 25;<br>+ }<br>+ uiBlockEndAlign(block);<br>+<br>+ uiPanelPop(block);
<br>+<br><br>@@ Diff output truncated at 10240 characters. @@<br><br>_______________________________________________<br>Bf-blender-cvs mailing list<br><a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org
</a><br><a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br></blockquote></div><br>