[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