[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33583] trunk/blender/source/blender: bugfix [#25154] . MXF files should be included as a known video file type in the sequencer

Campbell Barton ideasman42 at gmail.com
Fri Dec 10 05:10:23 CET 2010


Revision: 33583
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33583
Author:   campbellbarton
Date:     2010-12-10 05:10:21 +0100 (Fri, 10 Dec 2010)

Log Message:
-----------
bugfix [#25154] .MXF files should be included as a known video file type in the sequencer
       [#25159] Vertex locations dont read correctly and are not labeled correctly in the properties bar.

- non rna buttons can now have units set.
- calls with invalid units system now raises an assert().
- include .mxf in filter.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_unit.h
    trunk/blender/source/blender/blenkernel/intern/unit.c
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_regions.c
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
    trunk/blender/source/blender/imbuf/intern/util.c

Modified: trunk/blender/source/blender/blenkernel/BKE_unit.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_unit.h	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/blenkernel/BKE_unit.h	2010-12-10 04:10:21 UTC (rev 33583)
@@ -67,7 +67,7 @@
 #define 	B_UNIT_TIME 6
 #define 	B_UNIT_VELOCITY 7
 #define 	B_UNIT_ACCELERATION 8
-#define 	B_UNIT_MAXDEF 9
+#define 	B_UNIT_TYPE_TOT 9
 
 #ifdef __cplusplus
 }

Modified: trunk/blender/source/blender/blenkernel/intern/unit.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/unit.c	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/blenkernel/intern/unit.c	2010-12-10 04:10:21 UTC (rev 33583)
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#include <assert.h>
 #include "BKE_unit.h"
 
 #include "BLI_math.h"
@@ -274,6 +275,7 @@
 /* internal, has some option not exposed */
 static bUnitCollection *unit_get_system(int system, int type)
 {
+	assert((system > -1) && (system < UNIT_SYSTEM_TOT) && (type > -1) && (type < B_UNIT_TYPE_TOT));
 	return bUnitSystems[system][type]; /* select system to use, metric/imperial/other? */
 }
 
@@ -738,7 +740,7 @@
 /* external access */
 int bUnit_IsValid(int system, int type)
 {
-	return !(type < 0 || type >= B_UNIT_MAXDEF || system < 0 || system > UNIT_SYSTEM_TOT);
+	return !(system < 0 || system > UNIT_SYSTEM_TOT || type < 0 || type > B_UNIT_TYPE_TOT);
 }
 
 

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-12-10 04:10:21 UTC (rev 33583)
@@ -441,6 +441,9 @@
 /* for passing inputs to ButO buttons */
 struct PointerRNA *uiButGetOperatorPtrRNA(uiBut *but);
 
+void uiButSetUnitType(uiBut *but, const int unit_type);
+int uiButGetUnitType(uiBut *but);
+
 /* Special Buttons
  *
  * Butons with a more specific purpose:

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/interface/interface.c	2010-12-10 04:10:21 UTC (rev 33583)
@@ -1246,13 +1246,11 @@
 int ui_is_but_unit(uiBut *but)
 {
 	Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
-	int unit_type;
-	
-	if(but->rnaprop==NULL)
+	int unit_type= uiButGetUnitType(but);
+
+	if(unit_type == PROP_UNIT_NONE)
 		return 0;
 
-	unit_type = RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop));
-
 #if 1 // removed so angle buttons get correct snapping
 	if (scene->unit.system_rotation == USER_UNIT_ROT_RADIANS && unit_type == PROP_UNIT_ROTATION)
 		return 0;
@@ -1267,9 +1265,6 @@
 			return 0;
 	}
 
-	if(unit_type == PROP_UNIT_NONE)
-		return 0;
-
 	return 1;
 }
 
@@ -1449,18 +1444,18 @@
 static double ui_get_but_scale_unit(uiBut *but, double value)
 {
 	Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
-	int subtype= RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop));
+	int unit_type= uiButGetUnitType(but);
 
-	if(subtype == PROP_UNIT_LENGTH) {
+	if(unit_type == PROP_UNIT_LENGTH) {
 		return value * scene->unit.scale_length;
 	}
-	else if(subtype == PROP_UNIT_AREA) {
+	else if(unit_type == PROP_UNIT_AREA) {
 		return value * pow(scene->unit.scale_length, 2);
 	}
-	else if(subtype == PROP_UNIT_VOLUME) {
+	else if(unit_type == PROP_UNIT_VOLUME) {
 		return value * pow(scene->unit.scale_length, 3);
 	}
-	else if(subtype == PROP_UNIT_TIME) { /* WARNING - using evil_C :| */
+	else if(unit_type == PROP_UNIT_TIME) { /* WARNING - using evil_C :| */
 		return FRA2TIME(value);
 	}
 	else {
@@ -1472,14 +1467,14 @@
 void ui_convert_to_unit_alt_name(uiBut *but, char *str, int maxlen)
 {
 	if(ui_is_but_unit(but)) {
-		int unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
+		int unit_type= uiButGetUnitType(but);
 		char *orig_str;
 		Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
 		
 		orig_str= MEM_callocN(sizeof(char)*maxlen + 1, "textedit sub str");
 		memcpy(orig_str, str, maxlen);
 		
-		bUnit_ToUnitAltName(str, maxlen, orig_str, scene->unit.system, unit_type);
+		bUnit_ToUnitAltName(str, maxlen, orig_str, scene->unit.system, unit_type>>16);
 		
 		MEM_freeN(orig_str);
 	}
@@ -1489,7 +1484,7 @@
 {
 	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 unit_type= uiButGetUnitType(but);
 	int precision= but->a2;
 
 	if(scene->unit.scale_length<0.0001) scene->unit.scale_length= 1.0; // XXX do_versions
@@ -1498,13 +1493,13 @@
 	if(precision>4)		precision= 4;
 	else if(precision==0)	precision= 2;
 
-	bUnit_AsString(str, len_max, ui_get_but_scale_unit(but, value), precision, scene->unit.system, unit_type, do_split, pad);
+	bUnit_AsString(str, len_max, ui_get_but_scale_unit(but, value), precision, scene->unit.system, unit_type>>16, do_split, pad);
 }
 
 static float ui_get_but_step_unit(uiBut *but, 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));
+	int unit_type= uiButGetUnitType(but)>>16;
 	float step;
 
 	step = bUnit_ClosestScalar(ui_get_but_scale_unit(but, step_default), scene->unit.system, unit_type);
@@ -1655,19 +1650,14 @@
 #ifdef WITH_PYTHON
 		{
 			char str_unit_convert[256];
-			int unit_type;
+			int unit_type= uiButGetUnitType(but);
 			Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
 
-			if(but->rnaprop)
-				unit_type= RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
-			else
-				unit_type= 0;
-
 			BLI_strncpy(str_unit_convert, str, sizeof(str_unit_convert));
 
 			if(ui_is_but_unit(but)) {
 				/* 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, sizeof(str_unit_convert), but->drawstr, ui_get_but_scale_unit(but, 1.0), scene->unit.system, unit_type);
+				bUnit_ReplaceString(str_unit_convert, sizeof(str_unit_convert), but->drawstr, ui_get_but_scale_unit(but, 1.0), scene->unit.system, unit_type>>16);
 			}
 
 			if(BPY_eval_button(C, str_unit_convert, &value)) {
@@ -3183,6 +3173,21 @@
 	return but->opptr;
 }
 
+void uiButSetUnitType(uiBut *but, const int unit_type)
+{
+	but->unit_type= (unsigned char)(unit_type>>16);
+}
+
+int uiButGetUnitType(uiBut *but)
+{
+	if(but->rnaprop) {
+		return RNA_property_subtype(but->rnaprop);
+	}
+	else {
+		return ((int)but->unit_type)<<16;
+	}
+}
+
 void uiBlockSetHandleFunc(uiBlock *block, uiBlockHandleFunc func, void *arg)
 {
 	block->handle_func= func;

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-12-10 04:10:21 UTC (rev 33583)
@@ -2210,7 +2210,7 @@
 		
 		if(ui_is_but_unit(but)) {
 			Scene *scene= CTX_data_scene((bContext *)but->block->evil_C);
-			int unit_type = RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop));
+			int unit_type= uiButGetUnitType(but)>>16;
 
 			if(bUnit_IsValid(scene->unit.system, unit_type)) {
 				fac= (float)bUnit_BaseScalar(scene->unit.system, unit_type);

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h	2010-12-10 04:10:21 UTC (rev 33583)
@@ -209,7 +209,8 @@
 	BIFIconID icon;
 	char lock;
 	char dt;
-	short changed; /* could be made into a single flag */
+	char changed; /* could be made into a single flag */
+	unsigned char unit_type; /* so buttons can support unit systems which are not RNA */
 	short modifier_key;
 	short iconadd;
 

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2010-12-10 04:10:21 UTC (rev 33583)
@@ -384,7 +384,7 @@
 	}
 
 	if(but->rnaprop) {
-		int unit_type = RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop));
+		int unit_type= uiButGetUnitType(but);
 		
 		if (unit_type == PROP_UNIT_ROTATION) {
 			if (RNA_property_type(but->rnaprop) == PROP_FLOAT) {

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2010-12-10 00:20:32 UTC (rev 33582)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c	2010-12-10 04:10:21 UTC (rev 33583)
@@ -291,12 +291,17 @@
 		
 		uiBlockBeginAlign(block);
 		if(tot==1) {
+			uiBut *but;
 			uiDefBut(block, LABEL, 0, "Vertex:",					0, 130, 200, 20, 0, 0, 0, 0, 0, "");
 			uiBlockBeginAlign(block);
-			uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "X:",		0, 110, 200, 20, &(tfp->ve_median[0]), -lim, lim, 10, 3, "");
-			uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Y:",		0, 90, 200, 20, &(tfp->ve_median[1]), -lim, lim, 10, 3, "");
-			uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Z:",		0, 70, 200, 20, &(tfp->ve_median[2]), -lim, lim, 10, 3, "");
-			
+
+			but= uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "X:",		0, 110, 200, 20, &(tfp->ve_median[0]), -lim, lim, 10, 3, "");
+			uiButSetUnitType(but, PROP_UNIT_LENGTH);
+			but= uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Y:",		0, 90, 200, 20, &(tfp->ve_median[1]), -lim, lim, 10, 3, "");
+			uiButSetUnitType(but, PROP_UNIT_LENGTH);
+			but= uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Z:",		0, 70, 200, 20, &(tfp->ve_median[2]), -lim, lim, 10, 3, "");
+			uiButSetUnitType(but, PROP_UNIT_LENGTH);
+
 			if(totw==1) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list