Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2009-07-11 09:41:21 +0400
committerJoshua Leung <aligorith@gmail.com>2009-07-11 09:41:21 +0400
commit4a0df3ad7bd185bbc0ec5a6a42ed1d6b51de8a19 (patch)
tree0fbcae90bbccfb5c65d5e10fb1aca7e5a44c2bea /source/blender/editors/interface
parentb80b581bc03b6df28bd3a10118d85b78d5ca011b (diff)
parent576a642ff9b5ca5094f5bb84ada3c5639ae01a92 (diff)
2.5 - NLA SoC Branch Merged to 2.5!
(19863 to 21513) Highlights of the new NLA System (and related Animation System changes): * NLA Data is stored in AnimData alongside Action and Drivers. The NLA stack is evaluated before the Action, with the Action always overriding the results of the stack. * NLA Data is arranged in 'Tracks', which act like PhotoShop layers. These can be muted, protected, and/or made to be played back by themselves * Within each track, there can be multiple 'Strips'. There are 3 types of strip -> Action Clip (references some action), Transition (blends between the endpoints of two strips), and Meta (container for several strips that occur sequentially) * FModifiers can be applied to strips, and strips can have animated influence/time controls. Playback for strips can also be backwards now! * Playback can now go in forward and backwards directions. * Animation Editors have been polished (unfinished features added, existing features cleaned up and made more consistent) Notes for BuildSystem Maintainers: * Only scons has been actively tested. Makefiles should work fine. * MSVC ProjectFiles are broken due to the very way they work. * CMake status unknown... Other notes: * Hopefully I haven't made any mistakes while doing the merge. More files than expected were showing some weird conflicts, so you may have some broken code... * Not all old files (with NLA) data load exactly the same anymore. However, the bulk of the files out there should be ok (I hope)
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface_anim.c14
-rw-r--r--source/blender/editors/interface/resources.c39
-rw-r--r--source/blender/editors/interface/view2d.c26
3 files changed, 43 insertions, 36 deletions
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index 4a26db29160..7c439f408ba 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -18,6 +18,8 @@
#include "RNA_access.h"
#include "RNA_types.h"
+#include "ED_keyframing.h"
+
#include "UI_interface.h"
#include "WM_api.h"
@@ -28,12 +30,15 @@
void ui_but_anim_flag(uiBut *but, float cfra)
{
but->flag &= ~(UI_BUT_ANIMATED|UI_BUT_ANIMATED_KEY|UI_BUT_DRIVEN);
-
- if(but->rnaprop && but->rnapoin.id.data) {
+
+ /* there must be some RNA-pointer + property combo for this button */
+ if (but->rnaprop && but->rnapoin.id.data &&
+ RNA_property_animateable(&but->rnapoin, but->rnaprop))
+ {
AnimData *adt= BKE_animdata_from_id(but->rnapoin.id.data);
FCurve *fcu;
char *path;
-
+
if (adt) {
if ((adt->action && adt->action->curves.first) || (adt->drivers.first)) {
/* XXX this function call can become a performance bottleneck */
@@ -47,7 +52,7 @@ void ui_but_anim_flag(uiBut *but, float cfra)
if (fcu) {
but->flag |= UI_BUT_ANIMATED;
- if (on_keyframe_fcurve(fcu, cfra))
+ if (fcurve_frame_has_keyframe(fcu, cfra, 0))
but->flag |= UI_BUT_ANIMATED_KEY;
}
}
@@ -111,7 +116,6 @@ void ui_but_anim_remove_driver(bContext *C)
WM_operator_name_call(C, "ANIM_OT_remove_driver_button", WM_OP_INVOKE_DEFAULT, NULL);
}
-// TODO: refine the logic for adding/removing drivers...
void ui_but_anim_menu(bContext *C, uiBut *but)
{
uiPopupMenu *pup;
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index f83dee23417..2798f7a473f 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -505,7 +505,10 @@ void ui_theme_init_userdef(void)
btheme->tact= btheme->tipo;
SETCOL(btheme->tact.strip, 12, 10, 10, 128);
SETCOL(btheme->tact.strip_select, 255, 140, 0, 255);
-
+
+ /* space nla */
+ btheme->tnla= btheme->tact;
+
/* space file */
/* to have something initialized */
btheme->tfile= btheme->tv3d;
@@ -522,20 +525,6 @@ void ui_theme_init_userdef(void)
SETCOL(btheme->tfile.scene, 250, 250, 250, 255);
-
-
- /* space nla */
- btheme->tnla= btheme->tv3d;
- SETCOL(btheme->tnla.back, 116, 116, 116, 255);
- SETCOL(btheme->tnla.text, 0, 0, 0, 255);
- SETCOL(btheme->tnla.text_hi, 255, 255, 255, 255);
- SETCOL(btheme->tnla.grid, 94, 94, 94, 255);
- SETCOL(btheme->tnla.shade1, 172, 172, 172, 255); // sliders
- SETCOL(btheme->tnla.shade2, 84, 44, 31, 100); // bar
- SETCOL(btheme->tnla.hilite, 17, 27, 60, 100); // bar
- SETCOL(btheme->tnla.strip_select, 0xff, 0xff, 0xaa, 255);
- SETCOL(btheme->tnla.strip, 0xe4, 0x9c, 0xc6, 255);
-
/* space seq */
btheme->tseq= btheme->tv3d;
SETCOL(btheme->tseq.back, 116, 116, 116, 255);
@@ -1086,19 +1075,6 @@ void init_userdef_do_versions(void)
SETCOL(btheme->ttime.cframe, 0x60, 0xc0, 0x40, 255);
}
}
- if ((G.main->versionfile < 245) || (G.main->versionfile == 245 && G.main->subversionfile < 11)) {
- bTheme *btheme;
- for (btheme= U.themes.first; btheme; btheme= btheme->next) {
- /* these should all use the same color */
- SETCOL(btheme->tv3d.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->tipo.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->tact.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->tnla.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->tseq.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->tsnd.cframe, 0x60, 0xc0, 0x40, 255);
- SETCOL(btheme->ttime.cframe, 0x60, 0xc0, 0x40, 255);
- }
- }
if ((G.main->versionfile < 245) || (G.main->versionfile == 245 && G.main->subversionfile < 13)) {
bTheme *btheme;
for (btheme= U.themes.first; btheme; btheme= btheme->next) {
@@ -1221,6 +1197,13 @@ void init_userdef_do_versions(void)
/* Graph Editor - Group Channel color */
SETCOL(btheme->tipo.group, 79, 101, 73, 255);
SETCOL(btheme->tipo.group_active, 135, 177, 125, 255);
+
+ /* Nla Editor - (Object) Channel color */
+ SETCOL(btheme->tnla.ds_channel, 82, 96, 110, 255);
+ SETCOL(btheme->tnla.ds_subchannel, 124, 137, 150, 255);
+ /* NLA Editor - New Strip colors */
+ SETCOL(btheme->tnla.strip, 12, 10, 10, 128);
+ SETCOL(btheme->tnla.strip_select, 255, 140, 0, 255);
}
/* adjust grease-pencil distances */
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index e0e2af5472d..6df7b1c8e28 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -209,6 +209,23 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
}
break;
+ /* 'stack view' - practically the same as list/channel view, except is located in the pos y half instead.
+ * zoom, aspect ratio, and alignment restrictions are set here */
+ case V2D_COMMONVIEW_STACK:
+ {
+ /* zoom + aspect ratio are locked */
+ v2d->keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM|V2D_KEEPASPECT);
+ v2d->minzoom= v2d->maxzoom= 1.0f;
+
+ /* tot rect has strictly regulated placement, and must only occur in +/+ quadrant */
+ v2d->align = (V2D_ALIGN_NO_NEG_X|V2D_ALIGN_NO_NEG_Y);
+ v2d->keeptot = V2D_KEEPTOT_STRICT;
+ tot_changed= 1;
+
+ /* scroller settings are currently not set here... that is left for regions... */
+ }
+ break;
+
/* 'header' regions - zoom, aspect ratio, alignment, and panning restrictions are set here */
case V2D_COMMONVIEW_HEADER:
{
@@ -247,18 +264,21 @@ void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
v2d->tot.xmin= 0.0f;
v2d->tot.xmax= winx;
-
+
v2d->tot.ymax= 0.0f;
v2d->tot.ymin= -winy;
-
+
v2d->cur.xmin= 0.0f;
v2d->cur.xmax= winx*style->panelzoom;
v2d->cur.ymax= 0.0f;
v2d->cur.ymin= -winy*style->panelzoom;
+
+ v2d->cur.ymax= 0.0f;
+ v2d->cur.ymin= -winy*style->panelzoom;
}
break;
-
+
/* other view types are completely defined using their own settings already */
default:
/* we don't do anything here, as settings should be fine, but just make sure that rect */