[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36590] trunk/blender: camera composition guides: center, thirds, golden rule

Campbell Barton ideasman42 at gmail.com
Tue May 10 05:03:57 CEST 2011


Revision: 36590
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36590
Author:   campbellbarton
Date:     2011-05-10 03:03:53 +0000 (Tue, 10 May 2011)
Log Message:
-----------
camera composition guides: center, thirds, golden rule 

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/properties_data_camera.py
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_camera_types.h
    trunk/blender/source/blender/makesrna/intern/rna_camera.c

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_camera.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_camera.py	2011-05-10 00:45:06 UTC (rev 36589)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_camera.py	2011-05-10 03:03:53 UTC (rev 36590)
@@ -127,6 +127,7 @@
         col.prop(cam, "show_mist", text="Mist")
         col.prop(cam, "show_title_safe", text="Title Safe")
         col.prop(cam, "show_name", text="Name")
+        col.prop_menu_enum(cam, "show_guide")
 
         col = split.column()
         col.prop(cam, "draw_size", text="Size")

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-05-10 00:45:06 UTC (rev 36589)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-05-10 03:03:53 UTC (rev 36590)
@@ -921,6 +921,60 @@
 	}
 }
 
+static void drawviewborder_grid3(float x1, float x2, float y1, float y2, float fac, char diagonal)
+{
+	float x3, y3, x4, y4;
+
+	x3= x1 + fac * (x2-x1);
+	y3= y1 + fac * (y2-y1);
+	x4= x1 + (1.0f - fac) * (x2-x1);
+	y4= y1 + (1.0f - fac) * (y2-y1);
+
+	glBegin(GL_LINES);
+	switch(diagonal) {
+	case '\0':
+		glVertex2f(x1, y3);
+		glVertex2f(x2, y3);
+
+		glVertex2f(x1, y4);
+		glVertex2f(x2, y4);
+
+		glVertex2f(x3, y1);
+		glVertex2f(x3, y2);
+
+		glVertex2f(x4, y1);
+		glVertex2f(x4, y2);
+		break;
+	case 'H': /* hoz */
+		glVertex2f(x1, y1);
+		glVertex2f(x2, y4);
+
+		glVertex2f(x1, y3);
+		glVertex2f(x2, y2);
+
+		glVertex2f(x2, y1);
+		glVertex2f(x1, y4);
+
+		glVertex2f(x2, y3);
+		glVertex2f(x1, y2);
+		break;
+	case 'V': /* vert */
+		glVertex2f(x1, y1);
+		glVertex2f(x4, y2);
+
+		glVertex2f(x3, y1);
+		glVertex2f(x2, y2);
+
+		glVertex2f(x1, y2);
+		glVertex2f(x4, y1);
+
+		glVertex2f(x3, y2);
+		glVertex2f(x2, y1);
+		break;
+	}
+	glEnd();
+}
+
 static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
 {
 	float fac, a;
@@ -995,21 +1049,70 @@
 	}
 
 	/* safety border */
-	if (ca && (ca->flag & CAM_SHOWTITLESAFE)) {
-		fac= 0.1;
-		
-		a= fac*(x2-x1);
-		x1+= a; 
-		x2-= a;
-		
-		a= fac*(y2-y1);
-		y1+= a;
-		y2-= a;
-		
-		UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
-		
-		uiSetRoundBox(15);
-		uiDrawBox(GL_LINE_LOOP, x1, y1, x2, y2, 12.0);
+	if(ca) {
+		if (ca->dtx & CAM_DTX_CENTER) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+
+			x3= x1+ 0.5f*(x2-x1);
+			y3= y1+ 0.5f*(y2-y1);
+
+			glBegin(GL_LINES);
+			glVertex2f(x1, y3);
+			glVertex2f(x2, y3);
+
+			glVertex2f(x3, y1);
+			glVertex2f(x3, y2);
+			glEnd();
+		}
+
+		if (ca->dtx & CAM_DTX_CENTER_DIAG) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+
+			glBegin(GL_LINES);
+			glVertex2f(x1, y1);
+			glVertex2f(x2, y2);
+
+			glVertex2f(x1, y2);
+			glVertex2f(x2, y1);
+			glEnd();
+		}
+
+		if (ca->dtx & CAM_DTX_THIRDS) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+			drawviewborder_grid3(x1, x2, y1, y2, 1.0f/3.0f, '\0');
+		}
+
+		if (ca->dtx & CAM_DTX_GOLDEN) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+			drawviewborder_grid3(x1, x2, y1, y2, 1.0f-(1.0f/1.61803399), '\0');
+		}
+
+		if (ca->dtx & CAM_DTX_GOLDEN_DIAG_H) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+			drawviewborder_grid3(x1, x2, y1, y2, 1.0f-(1.0f/1.61803399), 'H');
+		}
+
+		if (ca->dtx & CAM_DTX_GOLDEN_DIAG_V) {
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+			drawviewborder_grid3(x1, x2, y1, y2, 1.0f-(1.0f/1.61803399), 'V');
+		}
+
+		if (ca->flag & CAM_SHOWTITLESAFE) {
+			fac= 0.1;
+
+			a= fac*(x2-x1);
+			x1+= a;
+			x2-= a;
+
+			a= fac*(y2-y1);
+			y1+= a;
+			y2-= a;
+
+			UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 0.25, 0);
+
+			uiSetRoundBox(15);
+			uiDrawBox(GL_LINE_LOOP, x1, y1, x2, y2, 12.0);
+		}
 	}
 
 	setlinestyle(0);

Modified: trunk/blender/source/blender/makesdna/DNA_camera_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_camera_types.h	2011-05-10 00:45:06 UTC (rev 36589)
+++ trunk/blender/source/blender/makesdna/DNA_camera_types.h	2011-05-10 03:03:53 UTC (rev 36590)
@@ -47,7 +47,9 @@
 	ID id;
 	struct AnimData *adt;	/* animation data (must be immediately after id for utilities to use it) */ 
 	
-	short type, flag;
+	char type; /* CAM_PERSP or CAM_ORTHO */
+	char dtx; /* draw type extra */
+	short flag;
 	float passepartalpha;
 	float clipsta, clipend;
 	float lens, ortho_scale, drawsize;
@@ -69,6 +71,14 @@
 #define CAM_PERSP		0
 #define CAM_ORTHO		1
 
+/* dtx */
+#define CAM_DTX_CENTER			1
+#define CAM_DTX_CENTER_DIAG		2
+#define CAM_DTX_THIRDS			4
+#define CAM_DTX_GOLDEN			8
+#define CAM_DTX_GOLDEN_DIAG_H	16
+#define CAM_DTX_GOLDEN_DIAG_V	32
+
 /* flag */
 #define CAM_SHOWLIMITS	1
 #define CAM_SHOWMIST	2

Modified: trunk/blender/source/blender/makesrna/intern/rna_camera.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_camera.c	2011-05-10 00:45:06 UTC (rev 36589)
+++ trunk/blender/source/blender/makesrna/intern/rna_camera.c	2011-05-10 03:03:53 UTC (rev 36590)
@@ -67,6 +67,14 @@
 		{CAM_PERSP, "PERSP", 0, "Perspective", ""},
 		{CAM_ORTHO, "ORTHO", 0, "Orthographic", ""},
 		{0, NULL, 0, NULL, NULL}};
+	static EnumPropertyItem prop_draw_type_extra_items[] = {
+		{CAM_DTX_CENTER, "CENTER", 0, "Center", ""},
+		{CAM_DTX_CENTER_DIAG, "CENTER_DIAGONAL", 0, "Center Diagonal", ""},
+		{CAM_DTX_THIRDS, "THIRDS", 0, "Thirds", ""},
+		{CAM_DTX_GOLDEN, "GOLDEN", 0, "Golden", ""},
+		{CAM_DTX_GOLDEN_DIAG_H, "GOLDEN_DIAGONAL_H", 0, "Golden Diagonal Hoz", ""},
+		{CAM_DTX_GOLDEN_DIAG_V, "GOLDEN_DIAGONAL_V", 0, "Golden Diagonal Vert", ""},
+		{0, NULL, 0, NULL, NULL}};
 	static EnumPropertyItem prop_lens_unit_items[] = {
 		{0, "MILLIMETERS", 0, "Millimeters", ""},
 		{CAM_ANGLETOGGLE, "DEGREES", 0, "Degrees", ""},
@@ -81,6 +89,13 @@
 	RNA_def_property_enum_items(prop, prop_type_items);
 	RNA_def_property_ui_text(prop, "Type", "Camera types");
 	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
+
+	prop= RNA_def_property(srna, "show_guide", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "dtx");
+	RNA_def_property_enum_items(prop, prop_draw_type_extra_items);
+	RNA_def_property_flag(prop, PROP_ENUM_FLAG);
+	RNA_def_property_ui_text(prop, "Comosition Guide",  "Draw overlay");
+	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
 	
 	/* Number values */
 




More information about the Bf-blender-cvs mailing list