[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30286] trunk/blender: - make duplis real wasnt redrawing
Campbell Barton
ideasman42 at gmail.com
Wed Jul 14 00:21:59 CEST 2010
Revision: 30286
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30286
Author: campbellbarton
Date: 2010-07-14 00:21:59 +0200 (Wed, 14 Jul 2010)
Log Message:
-----------
- make duplis real wasnt redrawing
- small caps option for titles (doing manually is quite painful to watch).
Modified Paths:
--------------
trunk/blender/release/scripts/ui/properties_data_curve.py
trunk/blender/release/scripts/ui/space_sequencer.py
trunk/blender/source/blender/blenkernel/intern/curve.c
trunk/blender/source/blender/blenkernel/intern/font.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/editors/object/object_add.c
trunk/blender/source/blender/makesdna/DNA_curve_types.h
trunk/blender/source/blender/makesrna/intern/rna_curve.c
Modified: trunk/blender/release/scripts/ui/properties_data_curve.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_curve.py 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/release/scripts/ui/properties_data_curve.py 2010-07-13 22:21:59 UTC (rev 30286)
@@ -308,10 +308,13 @@
split = layout.split()
- col = split.column(align=True)
- col.label(text="Underline:")
- col.prop(text, "ul_position", text="Position")
- col.prop(text, "ul_height", text="Thickness")
+ col = split.column()
+ colsub = col.column(align=True)
+ colsub.label(text="Underline:")
+ colsub.prop(text, "ul_position", text="Position")
+ colsub.prop(text, "ul_height", text="Thickness")
+ col.label(text="")
+ col.prop(text, "small_caps_scale", text="Small Caps")
if wide_ui:
col = split.column()
@@ -319,6 +322,7 @@
col.prop(char, "bold")
col.prop(char, "italic")
col.prop(char, "underline")
+ col.prop(char, "use_small_caps")
# col.prop(char, "style")
# col.prop(char, "wrap")
Modified: trunk/blender/release/scripts/ui/space_sequencer.py
===================================================================
--- trunk/blender/release/scripts/ui/space_sequencer.py 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/release/scripts/ui/space_sequencer.py 2010-07-13 22:21:59 UTC (rev 30286)
@@ -373,7 +373,7 @@
row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_length))
row = col.row()
row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_length)
- row.label(text="Strip Position: %d" % (frame_current - strip.frame_start))
+ row.label(text="Playhead: %d" % (frame_current - strip.frame_start))
col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end))
Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c 2010-07-13 22:21:59 UTC (rev 30286)
@@ -138,6 +138,7 @@
cu->fsize= 1.0;
cu->ulheight = 0.05;
cu->texflag= CU_AUTOSPACE;
+ cu->smallcaps_scale= 0.75f;
cu->twist_mode= CU_TWIST_MINIMUM; // XXX: this one seems to be the best one in most cases, at least for curve deform...
cu->bb= unit_boundbox();
Modified: trunk/blender/source/blender/blenkernel/intern/font.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/font.c 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/blenkernel/intern/font.c 2010-07-13 22:21:59 UTC (rev 30286)
@@ -1,4 +1,4 @@
-/* font.c
+/* font.c
*
*
* $Id$
@@ -34,6 +34,7 @@
#include <math.h>
#include <stdlib.h>
#include <wchar.h>
+#include <wctype.h>
#include "MEM_guardedalloc.h"
@@ -597,9 +598,23 @@
}
bezt2 = nu2->bezt;
+ if(info->flag & CU_SMALLCAPS) {
+ const float sca= cu->smallcaps_scale;
+ for (i= nu2->pntsu; i > 0; i--) {
+ fp= bezt2->vec[0];
+ fp[0] *= sca;
+ fp[1] *= sca;
+ fp[3] *= sca;
+ fp[4] *= sca;
+ fp[6] *= sca;
+ fp[7] *= sca;
+ bezt2++;
+ }
+ }
+ bezt2 = nu2->bezt;
+
for (i= nu2->pntsu; i > 0; i--) {
fp= bezt2->vec[0];
-
fp[0]= (fp[0]+ofsx)*fsize;
fp[1]= (fp[1]+ofsy)*fsize;
fp[3]= (fp[3]+ofsx)*fsize;
@@ -635,6 +650,20 @@
}
}
+static float char_width(Curve *cu, VChar *che, CharInfo *info)
+{
+ // The character wasn't found, propably ascii = 0, then the width shall be 0 as well
+ if(che == NULL) {
+ return 0.0f;
+ }
+ else if(info->flag & CU_SMALLCAPS) {
+ return che->width * cu->smallcaps_scale;
+ }
+ else {
+ return che->width;
+ }
+}
+
struct chartrans *BKE_text_to_curve(Scene *scene, Object *ob, int mode)
{
VFont *vfont, *oldvfont;
@@ -729,8 +758,18 @@
makebreak:
// Characters in the list
che = vfd->characters.first;
+ info = &(custrinfo[i]);
ascii = mem[i];
- info = &(custrinfo[i]);
+ if(info->flag & CU_SMALLCAPS) {
+ ascii = towupper(ascii);
+ if(mem[i] != ascii) {
+ mem[i]= ascii;
+ }
+ else {
+ info->flag &= ~CU_SMALLCAPS; /* could have a different way to not scale caps */
+ }
+ }
+
vfont = which_vfont(cu, info);
if(vfont==NULL) break;
@@ -780,11 +819,7 @@
return 0;
}
- // The character wasn't found, propably ascii = 0, then the width shall be 0 as well
- if(!che)
- twidth = 0;
- else
- twidth = che->width;
+ twidth = char_width(cu, che, info);
// Calculate positions
if((tb->w != 0.0) && (ct->dobreak==0) && ((xof-(tb->x/cu->fsize)+twidth)*cu->fsize) > tb->w) {
@@ -881,10 +916,7 @@
else wsfac = 1.0;
// Set the width of the character
- if(!che)
- twidth = 0;
- else
- twidth = che->width;
+ twidth = char_width(cu, che, info);
xof += (twidth*wsfac*(1.0+(info->kern/40.0)) ) + xtrax;
@@ -1024,10 +1056,7 @@
che = che->next;
}
- if(che)
- twidth = che->width;
- else
- twidth = 0;
+ twidth = char_width(cu, che, info);
dtime= distfac*0.35f*twidth; /* why not 0.5? */
dtime= distfac*0.5f*twidth; /* why not 0.5? */
@@ -1167,8 +1196,8 @@
break;
che = che->next;
}
-
- if(!che) twidth =0; else twidth=che->width;
+
+ twidth = char_width(cu, che, info);
ulwidth = cu->fsize * ((twidth* (1.0+(info->kern/40.0)))+uloverlap);
build_underline(cu, ct->xof*cu->fsize, ct->yof*cu->fsize + (cu->ulpos-0.05)*cu->fsize,
ct->xof*cu->fsize + ulwidth,
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-07-13 22:21:59 UTC (rev 30286)
@@ -10953,6 +10953,13 @@
tex->saturation= 1.0f;
}
+ {
+ Curve *cu;
+ for(cu= main->curve.first; cu; cu= cu->id.next) {
+ cu->smallcaps_scale= 0.75f;
+ }
+ }
+
for (scene= main->scene.first; scene; scene=scene->id.next) {
if(scene) {
Sequence *seq;
Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/editors/object/object_add.c 2010-07-13 22:21:59 UTC (rev 30286)
@@ -1008,6 +1008,7 @@
DAG_scene_sort(scene);
DAG_ids_flush_update(0);
WM_event_add_notifier(C, NC_SCENE, scene);
+ WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL);
return OPERATOR_FINISHED;
}
Modified: trunk/blender/source/blender/makesdna/DNA_curve_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_curve_types.h 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/makesdna/DNA_curve_types.h 2010-07-13 22:21:59 UTC (rev 30286)
@@ -177,7 +177,7 @@
short texflag, pad1; /* keep a short because of give_obdata_texspace() */
short drawflag, twist_mode, pad[2];
- float twist_smooth, pad2;
+ float twist_smooth, smallcaps_scale;
short pathlen, totcol;
short flag, bevresol;
@@ -329,6 +329,7 @@
#define CU_ITALIC 2
#define CU_UNDERLINE 4
#define CU_WRAP 8 /* wordwrap occured here */
+#define CU_SMALLCAPS 16
#endif
Modified: trunk/blender/source/blender/makesrna/intern/rna_curve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_curve.c 2010-07-13 21:48:02 UTC (rev 30285)
+++ trunk/blender/source/blender/makesrna/intern/rna_curve.c 2010-07-13 22:21:59 UTC (rev 30286)
@@ -730,6 +730,12 @@
RNA_def_property_ui_text(prop, "Font size", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+ prop= RNA_def_property(srna, "small_caps_scale", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "smallcaps_scale");
+ RNA_def_property_ui_range(prop, 0, 1.0, 0.1, 0);
+ RNA_def_property_ui_text(prop, "Small Caps", "Scale of small capitals");
+ RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
prop= RNA_def_property(srna, "line_dist", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "linedist");
RNA_def_property_range(prop, 0.0f, 10.0f);
@@ -896,6 +902,11 @@
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_WRAP);
RNA_def_property_ui_text(prop, "Wrap", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
+ prop= RNA_def_property(srna, "use_small_caps", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_SMALLCAPS);
+ RNA_def_property_ui_text(prop, "Small Caps", "");
+ RNA_def_property_update(prop, 0, "rna_Curve_update_data");
}
static void rna_def_surface(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list