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
path: root/source
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2007-12-02 08:50:38 +0300
committerJoshua Leung <aligorith@gmail.com>2007-12-02 08:50:38 +0300
commit77e6a2ba8657f06c49df2ca8971d06434a163c2b (patch)
tree8cd97090cd7763934f19f474c53e398d0302cce5 /source
parent1e32ec2000ef2e50a93d2934f4692c7a88e59ac5 (diff)
== Bone Path Drawing - More Tweaks Again ==
Bugfixes: * "Clear Paths" change from last commit wasn't complete yet. Now it REALLY only clears the paths of the selected bones * Button layout in "Armature Visualisation" panel has been reorganised a bit to better present the options (clearer separation between Display and Calculation buttons) New Stuff (Yay!): * Paths of active bones now draw more visibly than those of unselected bones. This makes it easier to identify the path that is taken by the bone * The part of path on the current frame is now drawn in green (the same shade that is used for the current-frame line in the Animation Editors). This nicely blends between the black and blue parts of the path (before and after current frame, respectively), and looks much nicer. * The colour of the current-frame marker in the Animation Editors and the 3D-View, are now theme-colours. This is needed to make the previous option work.
Diffstat (limited to 'source')
-rw-r--r--source/blender/include/BIF_resources.h1
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h25
-rw-r--r--source/blender/src/buttons_editing.c44
-rw-r--r--source/blender/src/drawaction.c6
-rw-r--r--source/blender/src/drawarmature.c75
-rw-r--r--source/blender/src/drawipo.c4
-rw-r--r--source/blender/src/drawsound.c5
-rw-r--r--source/blender/src/drawtime.c2
-rw-r--r--source/blender/src/poseobject.c32
-rw-r--r--source/blender/src/resources.c10
-rw-r--r--source/blender/src/usiblender.c13
11 files changed, 143 insertions, 74 deletions
diff --git a/source/blender/include/BIF_resources.h b/source/blender/include/BIF_resources.h
index f03364f099b..5c6c0384042 100644
--- a/source/blender/include/BIF_resources.h
+++ b/source/blender/include/BIF_resources.h
@@ -494,6 +494,7 @@ enum {
TH_NORMAL,
TH_FACE_DOT,
TH_FACEDOT_SIZE,
+ TH_CFRAME,
TH_SYNTAX_B,
TH_SYNTAX_V,
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 47c00813913..80897253727 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -41,8 +41,7 @@
/* themes; defines in BIF_resource.h */
struct ColorBand;
-// global, button colors
-
+/* global, button colors */
typedef struct ThemeUI {
char outline[4];
char neutral[4];
@@ -68,8 +67,9 @@ typedef struct ThemeUI {
} ThemeUI;
-// try to put them all in one, if needed a special struct can be created as well
-// for example later on, when we introduce wire colors for ob types or so...
+/* try to put them all in one, if needed a special struct can be created as well
+ * for example later on, when we introduce wire colors for ob types or so...
+ */
typedef struct ThemeSpace {
char back[4];
char text[4];
@@ -94,6 +94,7 @@ typedef struct ThemeSpace {
char normal[4];
char bone_solid[4], bone_pose[4];
char strip[4], strip_select[4];
+ char cframe[4], pad[4];
char vertex_size, facedot_size;
char bpad[2];
@@ -104,16 +105,25 @@ typedef struct ThemeSpace {
char movie[4], image[4], scene[4], audio[4]; // for sequence editor
char effect[4], plugin[4], transition[4], meta[4];
char editmesh_active[4];
-
} ThemeSpace;
+/* set of colors for use as a custom color set for Objects/Bones wire drawing */
+typedef struct ThemeWireColor {
+ char unselected[3];
+ char selected[3];
+ char active[3];
+ char pad[7];
+} ThemeWireColor;
+/* A theme */
typedef struct bTheme {
struct bTheme *next, *prev;
char name[32];
+ /* Interface Elements (buttons, menus, icons) */
ThemeUI tui;
+ /* Individual Spacetypes */
ThemeSpace tbuts;
ThemeSpace tv3d;
ThemeSpace tfile;
@@ -129,9 +139,12 @@ typedef struct bTheme {
ThemeSpace toops;
ThemeSpace ttime;
ThemeSpace tnode;
+
+ /* 20 sets of bone colors for this theme */
+ ThemeWireColor tarm[20];
+ /*ThemeWireColor tobj[20];*/
unsigned char bpad[4], bpad1[4];
-
} bTheme;
typedef struct SolidLight {
diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c
index 24191e8c38c..6c033c02db2 100644
--- a/source/blender/src/buttons_editing.c
+++ b/source/blender/src/buttons_editing.c
@@ -3986,10 +3986,10 @@ static void editing_panel_armature_visuals(Object *ob, bArmature *arm)
uiDefBut(block, LABEL, 0, "Ghost Options", 10,180,150,20, 0, 0, 0, 0, 0, "");
uiBlockBeginAlign(block);
- uiDefButS(block, MENU, REDRAWVIEW3D, "Ghosts %t|Around Current Frame %x0|In Range %x1",
- 10, 160, 150, 20, &arm->ghosttype, 0, 0, 0, 0, "Choose range of Ghosts to draw for current Action");
-
- uiDefButS(block, NUM, REDRAWVIEW3D, "GStep: ", 10,140,150,20, &arm->ghostsize, 1.0f, 20.0f, 0, 0, "How many frames between Ghost instances");
+ uiDefButS(block, MENU, REDRAWVIEW3D, "Ghosts %t|Around Current Frame %x0|In Range %x1",
+ 10, 160, 150, 20, &arm->ghosttype, 0, 0, 0, 0, "Choose range of Ghosts to draw for current Action");
+
+ uiDefButS(block, NUM, REDRAWVIEW3D, "GStep: ", 10,140,150,20, &arm->ghostsize, 1.0f, 20.0f, 0, 0, "How many frames between Ghost instances");
uiBlockEndAlign(block);
uiBlockBeginAlign(block);
@@ -4005,30 +4005,36 @@ static void editing_panel_armature_visuals(Object *ob, bArmature *arm)
uiBlockEndAlign(block);
/* Bone Path Drawing Options */
- uiDefBut(block, LABEL, 0, "Bone Paths", 165,180,150,20, 0, 0, 0, 0, 0, "");
+ uiDefBut(block, LABEL, 0, "Bone Paths Drawing:", 165,180,170,20, 0, 0, 0, 0, 0, "");
uiBlockBeginAlign(block);
uiDefButBitS(block, TOG, ARM_PATH_FNUMS, REDRAWVIEW3D, "Frame Nums", 170, 160, 80, 20, &arm->pathflag, 0, 0, 0, 0, "Show frame numbers on path");
- uiDefButS(block, NUM, REDRAWVIEW3D, "PStep:",250,160,80,20, &arm->pathsize,1,100, 10, 50, "Frames between highlighted points on bone path");
- uiDefButBitS(block, TOG, ARM_PATH_KFRAS, REDRAWVIEW3D, "Show Keys", 170, 140, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Show key frames on path");
+ uiDefButS(block, NUM, REDRAWVIEW3D, "PStep:",250,160,80,20, &arm->pathsize,1,100, 10, 50, "Frames between highlighted points on bone path");
+ uiDefButBitS(block, TOG, ARM_PATH_KFRAS, REDRAWVIEW3D, "Show Keys", 170, 140, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Show key frames on path");
uiBlockEndAlign(block);
uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, ARM_PATH_ACFRA, REDRAWVIEW3D, "Around Current Frame", 170, 105, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Only show Bone Path around the current frame");
- if (arm->pathflag & ARM_PATH_ACFRA) {
- uiDefButI(block, NUM,REDRAWVIEW3D,"PPre:",170,85,80,20, &arm->pathbc, 1.0, MAXFRAMEF/2, 0, 0, "The number of frames before current frame for Bone Path display range");
- uiDefButI(block, NUM,REDRAWVIEW3D,"PPost:",250,85,80,20, &arm->pathac, 1.0, MAXFRAMEF/2, 0, 0, "The number of frames after current frame for Bone Path display range");
- }
- else {
- uiDefButI(block, NUM,REDRAWVIEW3D,"PSta:",170,85,80,20, &arm->pathsf, 1.0, MAXFRAMEF, 0, 0, "The start frame for Bone Path display range");
- uiDefButI(block, NUM,REDRAWVIEW3D,"PEnd:",250,85,80,20, &arm->pathef, arm->pathsf, MAXFRAMEF, 0, 0, "The end frame for Bone Path display range");
- }
- uiDefButBitS(block, TOG, ARM_PATH_HEADS, REDRAWVIEW3D, "Bone-Head Path", 170, 65, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Calculate the Path travelled by the Bone's Head instead of Tail");
+ uiDefButBitS(block, TOG, ARM_PATH_ACFRA, REDRAWVIEW3D, "Around Current Frame", 170, 110, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Only show Bone Path around the current frame");
+
+ /* only show extra ranges when needed */
+ if (arm->pathflag & ARM_PATH_ACFRA) {
+ uiDefButI(block, NUM, REDRAWVIEW3D,"PPre:",170,90,80,20, &arm->pathbc, 1.0, MAXFRAMEF/2, 0, 0, "The number of frames before current frame for Bone Path display range");
+ uiDefButI(block, NUM, REDRAWVIEW3D,"PPost:",250,90,80,20, &arm->pathac, 1.0, MAXFRAMEF/2, 0, 0, "The number of frames after current frame for Bone Path display range");
+ }
+ uiBlockEndAlign(block);
+
+ /* Bone Path Calculation Options */
+ uiDefBut(block, LABEL, 0, "Bone Paths Calc.", 10,50,170,20, 0, 0, 0, 0, 0, "");
+
+ uiBlockBeginAlign(block);
+ uiDefBut(block, BUT, B_ARM_CALCPATHS, "Calculate Paths", 10,30,155,20, 0, 0, 0, 0, 0, "(Re)calculates the paths of the selected bones");
+ uiDefBut(block, BUT, B_ARM_CLEARPATHS, "Clear Paths", 10,10,155,20, 0, 0, 0, 0, 0, "Clears bone paths of the selected bones");
uiBlockEndAlign(block);
uiBlockBeginAlign(block);
- uiDefBut(block, BUT, B_ARM_CALCPATHS, "Calculate Paths", 170,30,160,20, 0, 0, 0, 0, 0, "(Re)calculates the paths of the selected bones");
- uiDefBut(block, BUT, B_ARM_CLEARPATHS, "Clear All Paths", 170,10,160,20, 0, 0, 0, 0, 0, "Clears bone paths of the selected bones");
+ uiDefButBitS(block, TOG, ARM_PATH_HEADS, REDRAWVIEW3D, "Bone-Head Path", 170, 30, 160, 20, &arm->pathflag, 0, 0, 0, 0, "Calculate the Path travelled by the Bone's Head instead of Tail");
+ uiDefButI(block, NUM,REDRAWVIEW3D,"PSta:",170,10,80,20, &arm->pathsf, 1.0, MAXFRAMEF, 0, 0, "The start frame for Bone Path display range");
+ uiDefButI(block, NUM,REDRAWVIEW3D,"PEnd:",250,10,80,20, &arm->pathef, arm->pathsf, MAXFRAMEF, 0, 0, "The end frame for Bone Path display range");
uiBlockEndAlign(block);
}
diff --git a/source/blender/src/drawaction.c b/source/blender/src/drawaction.c
index 183558b65bc..3cfe3731367 100644
--- a/source/blender/src/drawaction.c
+++ b/source/blender/src/drawaction.c
@@ -362,7 +362,7 @@ void draw_cfra_action (void)
vec[0]*= G.scene->r.framelen;
vec[1]= G.v2d->cur.ymin;
- glColor3ub(0x60, 0xc0, 0x40);
+ BIF_ThemeColor(TH_CFRAME);
glLineWidth(2.0);
glBegin(GL_LINE_STRIP);
@@ -373,10 +373,10 @@ void draw_cfra_action (void)
/* Draw dark green line if slow-parenting/time-offset is enabled */
ob= (G.scene->basact) ? (G.scene->basact->object) : 0;
- if(ob && ob->sf!=0.0 && (ob->ipoflag & OB_OFFS_OB) ) {
+ if ((ob) && (ob->sf!=0.0) && (ob->ipoflag & OB_OFFS_OB)) {
vec[0]-= ob->sf;
- glColor3ub(0x10, 0x60, 0);
+ BIF_ThemeColorShade(TH_CFRAME, -30);
glBegin(GL_LINE_STRIP);
glVertex2fv(vec);
diff --git a/source/blender/src/drawarmature.c b/source/blender/src/drawarmature.c
index b19d5104924..4cda89e071d 100644
--- a/source/blender/src/drawarmature.c
+++ b/source/blender/src/drawarmature.c
@@ -1787,35 +1787,60 @@ static void draw_pose_paths(Object *ob)
}
/* draw curve-line of path */
- if ((CFRA > sfra) && (CFRA < efra)) {
- /* Show before/after current frame with slight difference in colour intensity
- * This is done in two loops, as there seems to be some problems with changing color
- * or something during a loop (noted somewhere in the codebase)
- */
+ glShadeModel(GL_SMOOTH);
+
+ glBegin(GL_LINE_STRIP);
+ for (a=0, fp=fp_start; a<len; a++, fp+=3) {
+ float intensity; /* how faint */
- /* before cfra (darker) */
- BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.5);
- glBegin(GL_LINE_STRIP);
- for (a=0, fp=fp_start; (sfra+a)<=CFRA; a++, fp+=3)
- glVertex3fv(fp);
- glEnd();
+ /* set colour
+ * - more intense for active/selected bones, less intense for unselected bones
+ * - black for before current frame, green for current frame, blue for after current frame
+ * - intensity decreases as distance from current frame increases
+ */
+ #define SET_INTENSITY(A, B, C, min, max) (((1.0f - ((C - B) / (C - A))) * (max-min)) + min)
+ if ((a+sfra) < CFRA) {
+ /* black - before cfra */
+ if (pchan->bone->flag & BONE_SELECTED) {
+ // intensity= 0.5;
+ intensity = SET_INTENSITY(sfra, a, CFRA, 0.25f, 0.75f);
+ }
+ else {
+ //intensity= 0.8;
+ intensity = SET_INTENSITY(sfra, a, CFRA, 0.55f, 0.90f);
+ }
+ BIF_ThemeColorBlend(TH_WIRE, TH_BACK, intensity);
+ }
+ else if ((a+sfra) > CFRA) {
+ /* blue - after cfra */
+ if (pchan->bone->flag & BONE_SELECTED) {
+ //intensity = 0.5;
+ intensity = SET_INTENSITY(CFRA, a, efra, 0.25f, 0.75f);
+ }
+ else {
+ //intensity = 0.8;
+ intensity = SET_INTENSITY(CFRA, a, efra, 0.55f, 0.90f);
+ }
+ BIF_ThemeColorBlend(TH_BONE_POSE, TH_BACK, intensity);
+ }
+ else {
+ /* green - on cfra */
+ if (pchan->bone->flag & BONE_SELECTED) {
+ intensity= 0.3;
+ }
+ else {
+ intensity= 0.8;
+ }
+ BIF_ThemeColorBlend(TH_CFRAME, TH_BACK, intensity);
+ }
- /* after cfra (lighter) - backtrack a bit so that we don't have gaps */
- BIF_ThemeColorBlend(TH_BONE_POSE, TH_BACK, 0.5);
- glBegin(GL_LINE_STRIP);
- for (--a, fp-=3; a<len; a++, fp+=3)
- glVertex3fv(fp);
- glEnd();
- }
- else {
- /* show both directions with same intensity (cfra somewhere else) */
- BIF_ThemeColorBlend(TH_WIRE, TH_BACK, 0.7);
- glBegin(GL_LINE_STRIP);
- for (a=0, fp=fp_start; a<len; a++, fp+=3)
- glVertex3fv(fp);
- glEnd();
+ /* draw a vertex with this colour */
+ glVertex3fv(fp);
}
+ glEnd();
+ glShadeModel(GL_FLAT);
+
glPointSize(1.0);
/* draw little black point at each frame
diff --git a/source/blender/src/drawipo.c b/source/blender/src/drawipo.c
index 5759a5f3522..c4b7682347a 100644
--- a/source/blender/src/drawipo.c
+++ b/source/blender/src/drawipo.c
@@ -1560,7 +1560,7 @@ static void draw_cfra(SpaceIpo *sipo)
vec[0]*= G.scene->r.framelen;
vec[1]= v2d->cur.ymin;
- glColor3ub(0x60, 0xc0, 0x40); // no theme, should be global color once...
+ BIF_ThemeColor(TH_CFRAME);
glLineWidth(2.0);
glBegin(GL_LINE_STRIP);
@@ -1571,7 +1571,7 @@ static void draw_cfra(SpaceIpo *sipo)
if(sipo->blocktype==ID_OB) {
ob= (G.scene->basact) ? (G.scene->basact->object) : 0;
- if(ob && ob->sf!=0.0 && (ob->ipoflag & OB_OFFS_OB) ) {
+ if (ob && (ob->sf!=0.0) && (ob->ipoflag & OB_OFFS_OB) ) {
vec[0]-= ob->sf;
BIF_ThemeColorShade(TH_HILITE, -30);
diff --git a/source/blender/src/drawsound.c b/source/blender/src/drawsound.c
index fd82430e3b7..17d340b802c 100644
--- a/source/blender/src/drawsound.c
+++ b/source/blender/src/drawsound.c
@@ -176,8 +176,8 @@ static void draw_cfra_sound(SpaceSound *ssound)
vec[0]*= G.scene->r.framelen;
vec[1]= G.v2d->cur.ymin;
- glColor3ub(0x20, 0x90, 0x20);
- glLineWidth(4.0);
+ BIF_ThemeColor(TH_CFRAME);
+ glLineWidth(2.0);
glBegin(GL_LINE_STRIP);
glVertex2fv(vec);
@@ -186,7 +186,6 @@ static void draw_cfra_sound(SpaceSound *ssound)
glEnd();
glLineWidth(1.0);
-
}
void drawsoundspace(ScrArea *sa, void *spacedata)
diff --git a/source/blender/src/drawtime.c b/source/blender/src/drawtime.c
index d4c4c091aa0..3743d6c963e 100644
--- a/source/blender/src/drawtime.c
+++ b/source/blender/src/drawtime.c
@@ -93,7 +93,7 @@ static void draw_cfra_time(SpaceTime *stime)
vec[0]*= G.scene->r.framelen;
vec[1]= G.v2d->cur.ymin;
- glColor3ub(0x60, 0xc0, 0x40); // no theme, should be global color once...
+ BIF_ThemeColor(TH_CFRAME); // no theme, should be global color once...
glLineWidth(3.0);
glBegin(GL_LINES);
diff --git a/source/blender/src/poseobject.c b/source/blender/src/poseobject.c
index fe7dd0109e1..6a2fdac1e85 100644
--- a/source/blender/src/poseobject.c
+++ b/source/blender/src/poseobject.c
@@ -253,33 +253,33 @@ void pose_calculate_path(Object *ob)
DAG_object_update_flags(G.scene, ob, screen_view3d_layers());
/* malloc the path blocks */
- for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
- if(pchan->bone && (pchan->bone->flag & BONE_SELECTED)) {
- if(arm->layer & pchan->bone->layer) {
+ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) {
+ if (arm->layer & pchan->bone->layer) {
pchan->pathlen= efra-sfra+1;
pchan->pathsf= sfra;
pchan->pathef= efra+1;
- if(pchan->path)
+ if (pchan->path)
MEM_freeN(pchan->path);
pchan->path= MEM_callocN(3*pchan->pathlen*sizeof(float), "pchan path");
}
}
}
- for(CFRA=sfra; CFRA<=efra; CFRA++) {
+ for (CFRA=sfra; CFRA<=efra; CFRA++) {
/* do all updates */
- for(base= FIRSTBASE; base; base= base->next) {
- if(base->object->recalc) {
+ for (base= FIRSTBASE; base; base= base->next) {
+ if (base->object->recalc) {
int temp= base->object->recalc;
object_handle_update(base->object);
base->object->recalc= temp;
}
}
- for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
- if(pchan->bone && (pchan->bone->flag & BONE_SELECTED)) {
- if(arm->layer & pchan->bone->layer) {
- if(pchan->path) {
+ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if (pchan->bone && (pchan->bone->flag & BONE_SELECTED)) {
+ if (arm->layer & pchan->bone->layer) {
+ if (pchan->path) {
fp= pchan->path+3*(CFRA-sfra);
if (arm->pathflag & ARM_PATH_HEADS) {
@@ -307,14 +307,16 @@ void pose_clear_paths(Object *ob)
{
bPoseChannel *pchan;
- if(ob==NULL || ob->pose==NULL)
+ if (ob==NULL || ob->pose==NULL)
return;
/* free the path blocks */
for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
- if (pchan->path) {
- MEM_freeN(pchan->path);
- pchan->path= NULL;
+ if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) {
+ if (pchan->path) {
+ MEM_freeN(pchan->path);
+ pchan->path= NULL;
+ }
}
}
diff --git a/source/blender/src/resources.c b/source/blender/src/resources.c
index 125c80093a8..25295f4cd3c 100644
--- a/source/blender/src/resources.c
+++ b/source/blender/src/resources.c
@@ -274,6 +274,8 @@ char *BIF_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp= ts->strip; break;
case TH_STRIP_SELECT:
cp= ts->strip_select; break;
+ case TH_CFRAME:
+ cp= ts->cframe; break;
case TH_SYNTAX_B:
cp= ts->syntaxb; break;
@@ -399,6 +401,7 @@ void BIF_InitTheme(void)
SETCOL(btheme->tv3d.normal, 0x22, 0xDD, 0xDD, 255);
SETCOL(btheme->tv3d.face_dot, 255, 138, 48, 255);
btheme->tv3d.facedot_size= 4;
+ SETCOL(btheme->tv3d.cframe, 0x60, 0xc0, 0x40, 255);
SETCOL(btheme->tv3d.bone_solid, 200, 200, 200, 255);
SETCOL(btheme->tv3d.bone_pose, 80, 200, 255, 80); // alpha 80 is not meant editable, used for wire+action draw
@@ -605,6 +608,7 @@ char *BIF_ThemeColorsPup(int spacetype)
str += sprintf(str, "Normal %%x%d|", TH_NORMAL);
str += sprintf(str, "Bone Solid %%x%d|", TH_BONE_SOLID);
str += sprintf(str, "Bone Pose %%x%d", TH_BONE_POSE);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_IPO:
str += sprintf(str, "Panel %%x%d|", TH_PANEL);
@@ -615,6 +619,7 @@ char *BIF_ThemeColorsPup(int spacetype)
str += sprintf(str, "Vertex %%x%d|", TH_VERTEX);
str += sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT);
str += sprintf(str, "Vertex Size %%x%d|", TH_VERTEX_SIZE);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_FILE:
str += sprintf(str, "Selected file %%x%d", TH_HILITE);
@@ -628,6 +633,7 @@ char *BIF_ThemeColorsPup(int spacetype)
str += sprintf(str, "Bars selected %%x%d|", TH_HILITE);
str += sprintf(str, "Strips %%x%d|", TH_STRIP);
str += sprintf(str, "Strips selected %%x%d|", TH_STRIP_SELECT);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_ACTION:
//str += sprintf(str, "Panel %%x%d|", TH_PANEL);
@@ -639,6 +645,7 @@ char *BIF_ThemeColorsPup(int spacetype)
str += sprintf(str, "Channels Selected %%x%d|", TH_HILITE);
str += sprintf(str, "Long Key %%x%d|", TH_STRIP);
str += sprintf(str, "Long Key selected %%x%d|", TH_STRIP_SELECT);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_IMAGE:
str += sprintf(str, "%%l|");
@@ -660,10 +667,12 @@ char *BIF_ThemeColorsPup(int spacetype)
str += sprintf(str, "Plugin Strip %%x%d|", TH_SEQ_PLUGIN);
str += sprintf(str, "Transition Strip %%x%d|", TH_SEQ_TRANSITION);
str += sprintf(str, "Meta Strip %%x%d|", TH_SEQ_META);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_SOUND:
str += sprintf(str, "Grid %%x%d|", TH_GRID);
str += sprintf(str, "Window Slider %%x%d|", TH_SHADE1);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_BUTS:
str += sprintf(str, "Panel %%x%d|", TH_PANEL);
@@ -689,6 +698,7 @@ char *BIF_ThemeColorsPup(int spacetype)
break;
case SPACE_TIME:
str += sprintf(str, "Grid %%x%d|", TH_GRID);
+ str += sprintf(str, "Current Frame %%x%d", TH_CFRAME);
break;
case SPACE_NODE:
str += sprintf(str, "Wires %%x%d|", TH_WIRE);
diff --git a/source/blender/src/usiblender.c b/source/blender/src/usiblender.c
index 16d55202a39..2bf2d5d9ae9 100644
--- a/source/blender/src/usiblender.c
+++ b/source/blender/src/usiblender.c
@@ -373,6 +373,19 @@ static void init_userdef_file(void)
if(U.coba_weight.tot==0)
init_colorband(&U.coba_weight, 1);
}
+ 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 colour */
+ 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);
+ }
+ }
/* GL Texture Garbage Collection (variable abused above!) */
if (U.textimeout == 0) {