[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22425] branches/blender2.5/blender: - moved unit settings from user prefs into the scene.
Campbell Barton
ideasman42 at gmail.com
Thu Aug 13 09:37:42 CEST 2009
Revision: 22425
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22425
Author: campbellbarton
Date: 2009-08-13 09:37:41 +0200 (Thu, 13 Aug 2009)
Log Message:
-----------
- moved unit settings from user prefs into the scene.
- use the scene context for the unit settings since there isn't a better place for it currently.
- added 'chain' to imperial units
- set more rna props to be distances and angles.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/buttons_scene.py
branches/blender2.5/blender/release/ui/space_info.py
branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
branches/blender2.5/blender/source/blender/blenkernel/intern/unit.c
branches/blender2.5/blender/source/blender/editors/interface/interface.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
branches/blender2.5/blender/source/blender/editors/transform/transform.c
branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h
branches/blender2.5/blender/source/blender/makesdna/DNA_userdef_types.h
branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_userdef.c
Modified: branches/blender2.5/blender/release/ui/buttons_scene.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_scene.py 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/release/ui/buttons_scene.py 2009-08-13 07:37:41 UTC (rev 22425)
@@ -428,6 +428,25 @@
sub.active = rd.stamp_note
sub.itemR(rd, "stamp_note_text", text="")
+class SCENE_PT_unit(RenderButtonsPanel):
+ __label__ = "Units"
+ __default_closed__ = True
+ COMPAT_ENGINES = set(['BLENDER_RENDER'])
+
+ def draw(self, context):
+ layout = self.layout
+
+ unit = context.scene.unit_settings
+
+ col = layout.column()
+ col.itemR(unit, "system")
+
+ col = layout.column()
+ col.active = (unit.system != 'NONE')
+ col.itemR(unit, "scale_length")
+ col.itemR(unit, "use_separate")
+
+
bpy.types.register(SCENE_PT_render)
bpy.types.register(SCENE_PT_layers)
bpy.types.register(SCENE_PT_dimensions)
@@ -438,3 +457,4 @@
bpy.types.register(SCENE_PT_performance)
bpy.types.register(SCENE_PT_post_processing)
bpy.types.register(SCENE_PT_stamp)
+bpy.types.register(SCENE_PT_unit)
Modified: branches/blender2.5/blender/release/ui/space_info.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_info.py 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/release/ui/space_info.py 2009-08-13 07:37:41 UTC (rev 22425)
@@ -320,17 +320,6 @@
sub1.itemS()
sub1.itemL(text="Transform:")
sub1.itemR(edit, "drag_immediately")
- sub1.itemS()
- sub1.itemS()
- sub1.itemS()
-
- sub1.itemL(text="Units:")
- sub1.itemR(edit, "unit_system")
-
- sub2 = sub1.column()
- sub2.active = (edit.unit_system != 'NONE')
- sub2.itemR(edit, "unit_scale_length")
- sub2.itemR(edit, "use_unit_split")
col = split.column()
sub = col.split(percentage=0.85)
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/scene.c 2009-08-13 07:37:41 UTC (rev 22425)
@@ -280,6 +280,9 @@
sce->toolsettings->proportional_size = 1.0f;
+
+ sce->unit.scale_length = 1.0f;
+
pset= &sce->toolsettings->particle;
pset->flag= PE_KEEP_LENGTHS|PE_LOCK_FIRST|PE_DEFLECT_EMITTER;
pset->emitterdist= 0.25f;
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/unit.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/unit.c 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/unit.c 2009-08-13 07:37:41 UTC (rev 22425)
@@ -82,6 +82,7 @@
static struct bUnitDef buImperialLenDef[] = {
{"mile", "Miles", "mi", "m", 1609.344, 0.0, B_UNIT_DEF_NONE},
{"furlong", "Furlongs", "fur", NULL,201.168, 0.0, B_UNIT_DEF_SUPPRESS},
+ {"chain", "Chains", "ch", NULL, 0.9144*22.0, 0.0, B_UNIT_DEF_SUPPRESS},
{"yard", "Yards", "yd", NULL, 0.9144, 0.0, B_UNIT_DEF_NONE},
{"foot", "Feet", "'", "ft", 0.3048, 0.0, B_UNIT_DEF_NONE},
{"inch", "Inches", "\"", "in", 0.0254, 0.0, B_UNIT_DEF_NONE}, /* base unit */
Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c 2009-08-13 07:37:41 UTC (rev 22425)
@@ -1144,7 +1144,8 @@
int ui_is_but_unit(uiBut *but)
{
- if(U.unit_system == USER_UNIT_NONE)
+ Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
+ if(scene->unit.system == USER_UNIT_NONE)
return 0;
if(but->rnaprop==NULL)
@@ -1324,13 +1325,13 @@
static double ui_get_but_scale_unit(uiBut *but, double value)
{
+ Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
int subtype= RNA_property_subtype(but->rnaprop);
if(subtype & PROP_UNIT_LENGTH) {
- return value * U.unit_scale_length;
+ return value * scene->unit.scale_length;
}
else if(subtype & PROP_UNIT_TIME) { /* WARNING - using evil_C :| */
- Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
return FRA2TIME(value);
}
else {
@@ -1340,23 +1341,27 @@
static void ui_get_but_string_unit(uiBut *but, char *str, double value, int pad)
{
- int do_split= U.unit_flag & USER_UNIT_OPT_SPLIT ? 1:0;
+ Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
+ int do_split= scene->unit.flag & USER_UNIT_OPT_SPLIT;
int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
int precission= but->a2;
+ if(scene->unit.scale_length<0.0001) scene->unit.scale_length= 1.0; // XXX do_versions
+
/* Sanity checks */
if(precission>4) precission= 4;
else if(precission==0) precission= 2;
- bUnit_AsString(str, ui_get_but_scale_unit(but, value), precission, U.unit_system, unit_type, do_split, pad);
+ bUnit_AsString(str, ui_get_but_scale_unit(but, value), precission, scene->unit.system, unit_type, do_split, pad);
}
static float ui_get_but_step_unit(uiBut *but, double value, float step_default)
{
+ Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
float step;
- step = bUnit_ClosestScalar(ui_get_but_scale_unit(but, value), U.unit_system, unit_type);
+ step = bUnit_ClosestScalar(ui_get_but_scale_unit(but, value), scene->unit.system, unit_type);
if(step > 0.0) { /* -1 is an error value */
return (step/ui_get_but_scale_unit(but, 1.0))*100;
@@ -1502,10 +1507,12 @@
{
char str_unit_convert[256];
int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
+ Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
- if(U.unit_system != USER_UNIT_NONE && unit_type) {
+
+ if(scene->unit.system != USER_UNIT_NONE && unit_type) {
/* ugly, use the draw string to get the value, this could cause problems if it includes some text which resolves to a unit */
- bUnit_ReplaceString(str_unit_convert, str, but->drawstr, ui_get_but_scale_unit(but, 1.0), U.unit_system, unit_type);
+ bUnit_ReplaceString(str_unit_convert, str, but->drawstr, ui_get_but_scale_unit(but, 1.0), scene->unit.system, unit_type);
}
else {
strcpy(str_unit_convert, str);
@@ -1865,9 +1872,6 @@
/* support length type buttons */
else if(ui_is_but_unit(but)) {
char new_str[256];
-
- if(U.unit_scale_length<0.0001) U.unit_scale_length= 1.0; // XXX do_versions
-
ui_get_but_string_unit(but, new_str, value, TRUE);
sprintf(but->drawstr, "%s%s", but->str, new_str);
}
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c 2009-08-13 07:37:41 UTC (rev 22425)
@@ -237,7 +237,7 @@
#define GRID_MIN_PX 6.0f
-static void drawgrid(ARegion *ar, View3D *v3d, char **grid_unit)
+static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_unit)
{
/* extern short bgpicmode; */
RegionView3D *rv3d= ar->regiondata;
@@ -260,7 +260,7 @@
x= (wx)*fx/fw;
y= (wy)*fy/fw;
- vec4[0]=vec4[1]= (U.unit_system) ? 1.0 : v3d->grid;
+ vec4[0]=vec4[1]= (unit->system) ? 1.0 : v3d->grid;
vec4[2]= 0.0;
vec4[3]= 1.0;
@@ -277,7 +277,7 @@
/* check zoom out */
UI_ThemeColor(TH_GRID);
- if(U.unit_system) {
+ if(unit->system) {
/* Use GRID_MIN_PX*2 for units because very very small grid
* items are less useful when dealing with units */
void *usys;
@@ -286,21 +286,21 @@
float dx_scalar;
float blend_fac;
- bUnit_GetSystem(&usys, &len, U.unit_system, B_UNIT_LENGTH);
+ bUnit_GetSystem(&usys, &len, unit->system, B_UNIT_LENGTH);
if(usys) {
i= len;
while(i--) {
scalar= bUnit_GetScaler(usys, i);
- dx_scalar = dx * scalar * U.unit_scale_length;
+ dx_scalar = dx * scalar * unit->scale_length;
if (dx_scalar < (GRID_MIN_PX*2))
continue;
/* Store the smallest drawn grid size units name so users know how big each grid cell is */
if(*grid_unit==NULL) {
*grid_unit= bUnit_GetNamePlural(usys, i);
- v3d->gridview= (scalar * U.unit_scale_length);
+ v3d->gridview= (scalar * unit->scale_length);
}
blend_fac= 1-((GRID_MIN_PX*2)/dx_scalar);
@@ -1978,7 +1978,7 @@
}
else {
ED_region_pixelspace(ar);
- drawgrid(ar, v3d, &grid_unit);
+ drawgrid(&scene->unit, ar, v3d, &grid_unit);
/* XXX make function? replaces persp(1) */
glMatrixMode(GL_PROJECTION);
wmLoadMatrix(rv3d->winmat);
Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-08-13 07:28:51 UTC (rev 22424)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c 2009-08-13 07:37:41 UTC (rev 22425)
@@ -3040,11 +3040,11 @@
applyAspectRatio(t, dvec);
dist = VecLength(vec);
- if(U.unit_system) {
- int i, do_split= U.unit_flag & USER_UNIT_OPT_SPLIT ? 1:0;
+ if(t->scene->unit.system) {
+ int i, do_split= t->scene->unit.flag & USER_UNIT_OPT_SPLIT ? 1:0;
for(i=0; i<3; i++)
- bUnit_AsString(&tvec[i*20], dvec[i]*U.unit_scale_length, 4, U.unit_system, B_UNIT_LENGTH, do_split, 1);
+ bUnit_AsString(&tvec[i*20], dvec[i]*t->scene->unit.scale_length, 4, t->scene->unit.system, B_UNIT_LENGTH, do_split, 1);
}
else {
sprintf(&tvec[0], "%.4f", dvec[0]);
@@ -3053,8 +3053,8 @@
}
}
- if(U.unit_system)
- bUnit_AsString(distvec, dist*U.unit_scale_length, 4, U.unit_system, B_UNIT_LENGTH, U.unit_flag & USER_UNIT_OPT_SPLIT, 0);
+ if(t->scene->unit.system)
+ bUnit_AsString(distvec, dist*t->scene->unit.scale_length, 4, t->scene->unit.system, B_UNIT_LENGTH, t->scene->unit.flag & USER_UNIT_OPT_SPLIT, 0);
else if( dist > 1e10 || dist < -1e10 ) /* prevent string buffer overflow */
sprintf(distvec, "%.4e", dist);
else
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list