[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26119] trunk/blender/source/blender: Preview Range Tweak:

Joshua Leung aligorith at gmail.com
Tue Jan 19 21:30:05 CET 2010


Revision: 26119
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26119
Author:   aligorith
Date:     2010-01-19 21:30:04 +0100 (Tue, 19 Jan 2010)

Log Message:
-----------
Preview Range Tweak:

Made preview range be turned on/off using a proper flag instead of just relying on checking for start-frame = 0. It is no longer satisfactory to do that since we can have negative frame numbers, and also having it as a proper flag means that the range can be toggled on/off non-destructively.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_draw.c
    trunk/blender/source/blender/editors/animation/anim_ops.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_action/action_edit.c
    trunk/blender/source/blender/editors/space_graph/graph_edit.c
    trunk/blender/source/blender/editors/space_graph/space_graph.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_time/time_ops.c
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/makesrna/intern/rna_scene.c

Modified: trunk/blender/source/blender/editors/animation/anim_draw.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_draw.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/animation/anim_draw.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -215,7 +215,7 @@
 	Scene *scene= CTX_data_scene(C);
 	
 	/* only draw this if preview range is set */
-	if (scene->r.psfra) {
+	if (PRVRANGEON) {
 		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		glEnable(GL_BLEND);
 		glColor4f(0.0f, 0.0f, 0.0f, 0.4f);

Modified: trunk/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_ops.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/animation/anim_ops.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -205,6 +205,7 @@
 	if (efra < 1) efra = 1.0f;
 	if (efra < sfra) efra= sfra;
 	
+	scene->r.flag |= SCER_PRV_RANGE;
 	scene->r.psfra= (int)floor(sfra + 0.5f);
 	scene->r.pefra= (int)floor(efra + 0.5f);
 	
@@ -251,6 +252,7 @@
 		return OPERATOR_CANCELLED;
 	
 	/* simply clear values */
+	scene->r.flag &= ~SCER_PRV_RANGE;
 	scene->r.psfra= 0;
 	scene->r.pefra= 0;
 	

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -2429,7 +2429,7 @@
 		
 		if (sad->flag & ANIMPLAY_FLAG_REVERSE) {
 			/* jump back to end? */
-			if (scene->r.psfra) {
+			if (PRVRANGEON) {
 				if (scene->r.cfra < scene->r.psfra) {
 					scene->r.cfra= scene->r.pefra;
 					sad->flag |= ANIMPLAY_FLAG_JUMPED;
@@ -2444,7 +2444,7 @@
 		}
 		else {
 			/* jump back to start? */
-			if (scene->r.psfra) {
+			if (PRVRANGEON) {
 				if (scene->r.cfra > scene->r.pefra) {
 					scene->r.cfra= scene->r.psfra;
 					sad->flag |= ANIMPLAY_FLAG_JUMPED;

Modified: trunk/blender/source/blender/editors/space_action/action_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/action_edit.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/space_action/action_edit.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -214,6 +214,7 @@
 	
 	/* set the range directly */
 	get_keyframe_extents(&ac, &min, &max);
+	scene->r.flag |= SCER_PRV_RANGE;
 	scene->r.psfra= (int)floor(min + 0.5f);
 	scene->r.pefra= (int)floor(max + 0.5f);
 	

Modified: trunk/blender/source/blender/editors/space_graph/graph_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_edit.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/space_graph/graph_edit.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -174,6 +174,7 @@
 	
 	/* set the range directly */
 	get_graph_keyframe_extents(&ac, &min, &max, NULL, NULL);
+	scene->r.flag |= SCER_PRV_RANGE;
 	scene->r.psfra= (int)floor(min + 0.5f);
 	scene->r.pefra= (int)floor(max + 0.5f);
 	

Modified: trunk/blender/source/blender/editors/space_graph/space_graph.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/space_graph.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/space_graph/space_graph.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -151,8 +151,8 @@
 	
 	ar->v2d.cur= ar->v2d.tot;
 	
-	ar->v2d.min[0]= 0.001f;
-	ar->v2d.min[1]= 0.001f;
+	ar->v2d.min[0]= 0.00001f;
+	ar->v2d.min[1]= 0.00001f;
 	
 	ar->v2d.max[0]= MAXFRAMEF;
 	ar->v2d.max[1]= 50000.0f;

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -1118,7 +1118,7 @@
 {
 	bNodeSocket *sock;
 	int socktype, maxtype=0;
-	int a;
+	int a = 0;
 	
 	for (sock=node->inputs.first; sock; sock=sock->next) {
 		maxtype = MAX2(sock->type, maxtype);

Modified: trunk/blender/source/blender/editors/space_time/time_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_time/time_ops.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/editors/space_time/time_ops.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -69,7 +69,7 @@
 	if (PEFRA < frame) frame= PEFRA;
 		
 	/* if Preview Range is defined, set the 'start' frame for that */
-	if (scene->r.psfra)
+	if (PRVRANGEON)
 		scene->r.psfra= frame;
 	else
 		scene->r.sfra= frame;
@@ -109,7 +109,7 @@
 	if (PSFRA > frame) frame= PSFRA;
 		
 	/* if Preview Range is defined, set the 'end' frame for that */
-	if (scene->r.psfra) /* start frame 0 is used to check if the preview is used at all */
+	if (PRVRANGEON)
 		scene->r.pefra= frame;
 	else
 		scene->r.efra= frame;

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h	2010-01-19 20:30:04 UTC (rev 26119)
@@ -789,6 +789,10 @@
 #define R_FRONTBUF		4
 #define R_FRONTBUFANIM	8
 
+/* flag */
+	/* use preview range */
+#define SCER_PRV_RANGE	(1<<0)
+
 /* mode (int now) */
 #define R_OSA			0x0001
 #define R_SHADOW		0x0002
@@ -991,8 +995,9 @@
 #define	F_CFRA			((float)(scene->r.cfra))
 #define	SFRA			(scene->r.sfra)
 #define	EFRA			(scene->r.efra)
-#define PSFRA			((scene->r.psfra != 0)? (scene->r.psfra): (scene->r.sfra))
-#define PEFRA			((scene->r.psfra != 0)? (scene->r.pefra): (scene->r.efra))
+#define PRVRANGEON		(scene->r.flag & SCER_PRV_RANGE)
+#define PSFRA			((PRVRANGEON)? (scene->r.psfra): (scene->r.sfra))
+#define PEFRA			((PRVRANGEON)? (scene->r.pefra): (scene->r.efra))
 #define FRA2TIME(a)           ((((double) scene->r.frs_sec_base) * (a)) / scene->r.frs_sec)
 #define TIME2FRA(a)           ((((double) scene->r.frs_sec) * (a)) / scene->r.frs_sec_base)
 #define FPS                     (((double) scene->r.frs_sec) / scene->r.frs_sec_base)

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c	2010-01-19 19:53:50 UTC (rev 26118)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c	2010-01-19 20:30:04 UTC (rev 26119)
@@ -227,28 +227,21 @@
 	data->r.efra= value;
 }
 
-static int rna_Scene_use_preview_range_get(PointerRNA *ptr)
-{
-	Scene *data= (Scene*)ptr->data;
-	
-	/* this is simply overloaded to assume that preview-range 
-	 * start frame cannot be less than 1 when on,
-	 * so psfra=0 means 'off'
-	 */
-	return (data->r.psfra != 0);
-}
-
 static void rna_Scene_use_preview_range_set(PointerRNA *ptr, int value)
 {
 	Scene *data= (Scene*)ptr->data;
 	
-	/* if enable, copy range from render-range, otherwise just clear */
 	if (value) {
-		data->r.psfra= data->r.sfra;
-		data->r.pefra= data->r.efra;
+		/* copy range from scene if not set before */
+		if ((data->r.psfra == data->r.pefra) && (data->r.psfra == 0)) {
+			data->r.psfra= data->r.sfra;
+			data->r.pefra= data->r.efra;
+		}
+		
+		data->r.flag |= SCER_PRV_RANGE;
 	}
 	else
-		data->r.psfra= 0;
+		data->r.flag &= ~SCER_PRV_RANGE;
 }
 
 
@@ -257,14 +250,14 @@
 	Scene *data= (Scene*)ptr->data;
 	
 	/* check if enabled already */
-	if (data->r.psfra == 0) {
+	if ((data->r.flag & SCER_PRV_RANGE) == 0) {
 		/* set end of preview range to end frame, then clamp as per normal */
 		// TODO: or just refuse to set instead?
 		data->r.pefra= data->r.efra;
 	}
 	
 	/* now set normally */
-	CLAMP(value, 1, data->r.pefra);
+	CLAMP(value, MINAFRAME, data->r.pefra);
 	data->r.psfra= value;
 }
 
@@ -273,7 +266,7 @@
 	Scene *data= (Scene*)ptr->data;
 	
 	/* check if enabled already */
-	if (data->r.psfra == 0) {
+	if ((data->r.flag & SCER_PRV_RANGE) == 0) {
 		/* set start of preview range to start frame, then clamp as per normal */
 		// TODO: or just refuse to set instead?
 		data->r.psfra= data->r.sfra; 
@@ -2522,9 +2515,10 @@
 	RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
 	
 	/* Preview Range (frame-range for UI playback) */
-	prop=RNA_def_property(srna, "use_preview_range", PROP_BOOLEAN, PROP_NONE); /* use_preview_range is not really a separate setting in SDNA */
+	prop=RNA_def_property(srna, "use_preview_range", PROP_BOOLEAN, PROP_NONE); 
 	RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE);
-	RNA_def_property_boolean_funcs(prop, "rna_Scene_use_preview_range_get", "rna_Scene_use_preview_range_set");
+	RNA_def_property_boolean_sdna(prop, NULL, "r.flag", SCER_PRV_RANGE);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_use_preview_range_set");
 	RNA_def_property_ui_text(prop, "Use Preview Range", "");
 	RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
 	





More information about the Bf-blender-cvs mailing list