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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to