[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15712] trunk/blender/source/blender: == Grease Pencil - UI Improvements ==

Joshua Leung aligorith at gmail.com
Wed Jul 23 14:27:08 CEST 2008


Revision: 15712
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15712
Author:   aligorith
Date:     2008-07-23 14:27:08 +0200 (Wed, 23 Jul 2008)

Log Message:
-----------
== Grease Pencil - UI Improvements ==

Based on user feedback, I've made some changes to the Grease Pencil UI (most notably in 'Time Editing' facilities). 
* 'Edit Timing' button gone
* Pin button and '<Grease Pencil Data' string gone from Action Editor
* Action Editor in 'Grease Pencil' mode now displays all grease-pencil datablocks for current screen. 
* AE: GP-Datablocks are drawn like 'groups', with an expand/collapse button to show/hide layers. Its name shows the type of space it comes from, and shows indicative status info (i.e. for 3d-view, it shows view-angle)
* Added refresh calls for action editor after editing relevant data.

I haven't tested all tools yet, but most should be stable. 

Also, I've removed some unnecessary buttons, and added a few tooltips. There's also some experimental code to try to get clearer indication of 'active' layer.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/include/BDR_gpencil.h
    trunk/blender/source/blender/include/BIF_editaction.h
    trunk/blender/source/blender/include/BSE_drawview.h
    trunk/blender/source/blender/makesdna/DNA_action_types.h
    trunk/blender/source/blender/makesdna/DNA_gpencil_types.h
    trunk/blender/source/blender/src/drawaction.c
    trunk/blender/source/blender/src/drawgpencil.c
    trunk/blender/source/blender/src/drawnode.c
    trunk/blender/source/blender/src/drawseq.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editaction.c
    trunk/blender/source/blender/src/editaction_gpencil.c
    trunk/blender/source/blender/src/gpencil.c
    trunk/blender/source/blender/src/header_action.c
    trunk/blender/source/blender/src/interface.c
    trunk/blender/source/blender/src/interface_draw.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2008-07-23 12:27:08 UTC (rev 15712)
@@ -4161,15 +4161,6 @@
 					link_gpencil(fd, sseq->gpd);
 				}
 			}
-			else if(sl->spacetype==SPACE_ACTION) {
-				SpaceAction *sact= (SpaceAction *)sl;
-				
-				/* WARNING: action-editor doesn't have it's own gpencil data! 
-				 * so only adjust pointer, but DON'T LINK
-				 */
-				if (sact->gpd) 
-					sact->gpd= newdataadr(fd, sact->gpd);
-			}
 		}
 
 		sa->v1= newdataadr(fd, sa->v1);

Modified: trunk/blender/source/blender/include/BDR_gpencil.h
===================================================================
--- trunk/blender/source/blender/include/BDR_gpencil.h	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/include/BDR_gpencil.h	2008-07-23 12:27:08 UTC (rev 15712)
@@ -53,8 +53,6 @@
 
 struct bGPdata *gpencil_data_getactive(struct ScrArea *sa);
 short gpencil_data_setactive(struct ScrArea *sa, struct bGPdata *gpd);
-struct bGPdata *gpencil_data_getetime(struct bScreen *sc);
-void gpencil_data_setetime(struct bScreen *sc, struct bGPdata *gpd);
 
 void gpencil_frame_delete_laststroke(struct bGPDframe *gpf);
 

Modified: trunk/blender/source/blender/include/BIF_editaction.h
===================================================================
--- trunk/blender/source/blender/include/BIF_editaction.h	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/include/BIF_editaction.h	2008-07-23 12:27:08 UTC (rev 15712)
@@ -49,7 +49,9 @@
 	ACTTYPE_FILLCON,
 	ACTTYPE_IPO,
 	ACTTYPE_SHAPEKEY,
-	ACTTYPE_GPLAYER
+	ACTTYPE_GPDATABLOCK,
+	ACTTYPE_GPLAYER,
+	ACTTYPE_SPECIALDATA
 };
 
 /* Macros for easier/more consistant state testing */
@@ -70,6 +72,8 @@
 #define EDITABLE_ICU(icu) ((icu->flag & IPO_PROTECT)==0)
 #define SEL_ICU(icu) (icu->flag & IPO_SELECT)
 
+#define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND) 
+
 #define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED)==0)
 #define SEL_GPL(gpl) ((gpl->flag & GP_LAYER_ACTIVE) || (gpl->flag & GP_LAYER_SELECT))
 
@@ -185,7 +189,7 @@
 /* Grease-Pencil Data */
 void gplayer_make_cfra_list(struct bGPDlayer *gpl, ListBase *elems, short onlysel);
 
-void deselect_gpencil_layers(struct bGPdata *gpd, short select_mode);
+void deselect_gpencil_layers(void *data, short select_mode);
 
 short is_gplayer_frame_selected(struct bGPDlayer *gpl);
 void set_gplayer_frame_selection(struct bGPDlayer *gpl, short mode);
@@ -204,7 +208,7 @@
 struct Key *get_action_mesh_key(void);
 int get_nearest_key_num(struct Key *key, short *mval, float *x);
 
-void *get_nearest_act_channel(short mval[], short *ret_type);
+void *get_nearest_act_channel(short mval[], short *ret_type, void **owner);
 
 /* Action */
 struct bActionChannel *get_hilighted_action_channel(struct bAction* action);

Modified: trunk/blender/source/blender/include/BSE_drawview.h
===================================================================
--- trunk/blender/source/blender/include/BSE_drawview.h	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/include/BSE_drawview.h	2008-07-23 12:27:08 UTC (rev 15712)
@@ -76,6 +76,7 @@
 int play_anim(int mode);
 
 void make_axis_color(char *col, char *col2, char axis);
+char *view3d_get_name(struct View3D *v3d);
 
 /* SMOOTHVIEW */
 void smooth_view(struct View3D *v3d, float *ofs, float *quat, float *dist, float *lens);

Modified: trunk/blender/source/blender/makesdna/DNA_action_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_action_types.h	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/makesdna/DNA_action_types.h	2008-07-23 12:27:08 UTC (rev 15712)
@@ -184,7 +184,6 @@
 	View2D v2d;	
 	
 	bAction		*action;		/* the currently active action */
-	bGPdata 	*gpd;		/* the currently active gpencil block (for editing) */
 	
 	char  mode, autosnap;		/* mode: editing context; autosnap: automatic keyframe snapping mode   */
 	short flag, actnr; 			/* flag: bitmapped settings; */

Modified: trunk/blender/source/blender/makesdna/DNA_gpencil_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_gpencil_types.h	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/makesdna/DNA_gpencil_types.h	2008-07-23 12:27:08 UTC (rev 15712)
@@ -131,8 +131,8 @@
 #define GP_DATA_DISP		(1<<0)
 	/* show debugging info in viewport (i.e. status print) */
 #define GP_DATA_DISPINFO	(1<<1)
-	/* is the block being shown in Action Editor */
-#define GP_DATA_EDITTIME	(1<<2)
+	/* in Action Editor, show as expanded channel */
+#define GP_DATA_EXPAND	(1<<2)
 	/* is the block overriding all clicks? */
 #define GP_DATA_EDITPAINT	(1<<3)
 	/* new strokes are added in viewport space */

Modified: trunk/blender/source/blender/src/drawaction.c
===================================================================
--- trunk/blender/source/blender/src/drawaction.c	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/src/drawaction.c	2008-07-23 12:27:08 UTC (rev 15712)
@@ -89,6 +89,7 @@
 
 #include "BSE_drawnla.h"
 #include "BSE_drawipo.h"
+#include "BSE_drawview.h"
 #include "BSE_editaction_types.h"
 #include "BSE_editipo.h"
 #include "BSE_time.h"
@@ -467,7 +468,7 @@
 			bActionGroup *grp = NULL;
 			short indent= 0, offset= 0, sel= 0, group=0;
 			int expand= -1, protect = -1, special= -1, mute = -1;
-			char name[32];
+			char name[64];
 			
 			/* determine what needs to be drawn */
 			switch (ale->type) {
@@ -625,6 +626,70 @@
 					sprintf(name, "Constraint");
 				}
 					break;
+				case ACTTYPE_GPDATABLOCK: /* gpencil datablock */
+				{
+					bGPdata *gpd = (bGPdata *)ale->data;
+					ScrArea *sa = (ScrArea *)ale->owner;
+					
+					indent = 0;
+					group= 3;
+					
+					/* only show expand if there are any channels */
+					if (gpd->layers.first) {
+						if (gpd->flag & GP_DATA_EXPAND)
+							expand = ICON_TRIA_DOWN;
+						else
+							expand = ICON_TRIA_RIGHT;
+					}
+					
+					switch (sa->spacetype) {
+						case SPACE_VIEW3D:
+						{
+							/* this shouldn't cause any overflow... */
+							sprintf(name, "3D-View: <%s>", view3d_get_name(sa->spacedata.first));
+							special= ICON_VIEW3D;
+						}
+							break;
+						case SPACE_NODE:
+						{
+							SpaceNode *snode= sa->spacedata.first;
+							char treetype[12];
+							
+							if (snode->treetype == 1)
+								sprintf(treetype, "Composite");
+							else
+								sprintf(treetype, "Material");
+							sprintf(name, "Nodes: %s", treetype);
+							
+							special= ICON_NODE;
+						}
+							break;
+						case SPACE_SEQ:
+						{
+							SpaceSeq *sseq= sa->spacedata.first;
+							char imgpreview[10];
+							
+							switch (sseq->mainb) {
+								case 1: 	sprintf(imgpreview, "Image..."); 	break;
+								case 2: 	sprintf(imgpreview, "Luma..."); 	break;
+								case 3: 	sprintf(imgpreview, "Chroma...");	break;
+								case 4: 	sprintf(imgpreview, "Histogram");	break;
+								
+								default:	sprintf(imgpreview, "Sequence");	break;
+							}
+							sprintf(name, "Sequencer: %s", imgpreview);
+							
+							special= ICON_SEQUENCE;
+						}
+							break;
+						
+						default:
+							sprintf(name, "GP-Data");
+							special= -1;
+							break;
+					}
+				}
+					break;
 				case ACTTYPE_GPLAYER: /* gpencil layer */
 				{
 					bGPDlayer *gpl = (bGPDlayer *)ale->data;
@@ -632,7 +697,8 @@
 					indent = 0;
 					special = -1;
 					expand = -1;
-						
+					group = 1;
+					
 					if (EDITABLE_GPL(gpl))
 						protect = ICON_UNLOCKED;
 					else
@@ -651,8 +717,19 @@
 
 			/* now, start drawing based on this information */
 			/* draw backing strip behind channel name */
-			if (group == 2) {
-				/* only for group-channels */
+			if (group == 3) {
+				/* only for gp-data channels */
+				if (ale->owner == curarea) // fixme... currently useless
+					BIF_ThemeColorShade(TH_GROUP_ACTIVE, 10);
+				else
+					BIF_ThemeColorShade(TH_GROUP, 20);
+				uiSetRoundBox((expand == ICON_TRIA_DOWN)? (1):(1|8));
+				gl_round_box(GL_POLYGON, x,  yminc, (float)NAMEWIDTH, ymaxc, 8);
+				
+				offset = 0;
+			}
+			else if (group == 2) {
+				/* only for action group channels */
 				if (ale->flag & AGRP_ACTIVE)
 					BIF_ThemeColorShade(TH_GROUP_ACTIVE, 10);
 				else
@@ -1148,12 +1225,6 @@
 					G.saction->action= NULL;
 			}
 				break;
-			case SACTCONT_GPENCIL:
-			{
-				/* this searching could be slow (so users should pin after this is found) */
-				G.saction->gpd= gpencil_data_getetime(G.curscreen);
-			}
-				break;
 		}
 	}
 	

Modified: trunk/blender/source/blender/src/drawgpencil.c
===================================================================
--- trunk/blender/source/blender/src/drawgpencil.c	2008-07-23 11:50:51 UTC (rev 15711)
+++ trunk/blender/source/blender/src/drawgpencil.c	2008-07-23 12:27:08 UTC (rev 15712)
@@ -94,6 +94,7 @@
 void gp_ui_activelayer_cb (void *gpd, void *gpl)
 {
 	gpencil_layer_setactive(gpd, gpl);
+	force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* rename layer and set active */
@@ -104,18 +105,21 @@
 	
 	BLI_uniquename(&gpd->layers, gpl, "GP_Layer", offsetof(bGPDlayer, info[0]), 128);
 	gpencil_layer_setactive(gpd, gpl);
+	force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* add a new layer */
 void gp_ui_addlayer_cb (void *gpd, void *dummy)
 {
 	gpencil_layer_addnew(gpd);
+	force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* delete active layer */
 void gp_ui_dellayer_cb (void *gpd, void *dummy)
 {
 	gpencil_layer_delactive(gpd);
+	force_draw_plus(SPACE_ACTION, 0);
 }
 
 /* delete last stroke of active layer */
@@ -134,22 +138,10 @@
 	
 	gpencil_layer_setactive(gpd, gpl);
 	gpencil_layer_delframe(gpl, gpf);
-}
-
-
-/* set this set of gpencil data for editing in action editor */
-void gp_ui_dotime_cb (void *gpd_arg, void *dummy)
-{
-	bGPdata *gpd= (bGPdata *)gpd_arg;
 	
-	/* check if setting or clearing (note: setting was just set...) */
-	if (gpd->flag & GP_DATA_EDITTIME)
-		gpencil_data_setetime(G.curscreen, gpd);
-	else	
-		gpencil_data_setetime(G.curscreen, NULL);
+	force_draw_plus(SPACE_ACTION, 0);
 }
 
-
 /* ------- Drawing Code ------- */
 
 /* draw the controls for a given layer */
@@ -168,35 +160,31 @@
 		uiBlockSetEmboss(block, UI_EMBOSSN);
 		
 		/* rounded header */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list