[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