[Bf-blender-cvs] [686bb8a] soc-2014-nurbs: Sergey's patch, manually pruned so as to work with HEAD.

Jonathan deWerd noreply at git.blender.org
Fri Aug 22 10:59:42 CEST 2014


Commit: 686bb8aaf4353d04d31f123ebbdc5890e8cde3c2
Author: Jonathan deWerd
Date:   Wed Aug 20 20:34:04 2014 -0600
Branches: soc-2014-nurbs
https://developer.blender.org/rB686bb8aaf4353d04d31f123ebbdc5890e8cde3c2

Sergey's patch, manually pruned so as to work with HEAD.

===================================================================

M	source/blender/blenkernel/intern/curve.cpp
M	source/blender/blenkernel/intern/curve_eval.cpp
M	source/blender/blenkernel/intern/mesh.c
M	source/blender/blenkernel/intern/surf_gridmesh.cpp
M	source/blender/blenkernel/intern/surf_gridmesh.h
M	source/blender/editors/curve/editcurve.c
M	source/blender/editors/io/CMakeLists.txt
M	source/blender/editors/object/object_add.c
M	source/blender/editors/space_view3d/view3d_select.c
M	source/blender/editors/uvedit/uvedit_draw.c
M	source/blender/editors/uvedit/uvedit_ops.c

===================================================================

diff --git a/source/blender/blenkernel/intern/curve.cpp b/source/blender/blenkernel/intern/curve.cpp
index 1858e3d..65a0f7a 100644
--- a/source/blender/blenkernel/intern/curve.cpp
+++ b/source/blender/blenkernel/intern/curve.cpp
@@ -4444,7 +4444,7 @@ struct NurbsMeshInfo {
 };
 
 /* Helper for BKE_surf_to_mesh */
-void nurbs_meshinfo_pass_1(Nurb *nu, NurbsMeshInfo &nmi) {
+static void nurbs_meshinfo_pass_1(Nurb *nu, NurbsMeshInfo &nmi) {
 	GridMesh *gm = BKE_nurb_compute_trimmed_GridMesh(nu);
 	nmi.gm = gm;
 	std::map<int,int> &remap_vert = nmi.remap_vert;
@@ -4477,7 +4477,7 @@ void nurbs_meshinfo_pass_1(Nurb *nu, NurbsMeshInfo &nmi) {
 }
 
 /* Helper for BKE_surf_to_mesh */
-void nurbs_meshinfo_pass_2(Nurb *nu, NurbsMeshInfo &nmi) {
+static void nurbs_meshinfo_pass_2(Nurb *nu, NurbsMeshInfo &nmi) {
 	/* Cache some data we'll need for surface eval */
 	int pntsu=nu->pntsu, orderu=nu->orderu, pntsv=nu->pntsv, orderv=nu->orderv;
 	float *U=nu->knotsu, *V=nu->knotsv;
diff --git a/source/blender/blenkernel/intern/curve_eval.cpp b/source/blender/blenkernel/intern/curve_eval.cpp
index 7e6afc5..a00374f 100644
--- a/source/blender/blenkernel/intern/curve_eval.cpp
+++ b/source/blender/blenkernel/intern/curve_eval.cpp
@@ -43,7 +43,7 @@ extern "C" {
 #endif
 
 int BKE_nurb_binom_coeffs[NURBS_MAX_ORDER][NURBS_MAX_ORDER+1];
-int BKE_nurb_binom_coeff(int k, int i) {
+static int BKE_nurb_binom_coeff(int k, int i) {
 	static int inited=0;
 	if (!inited) {
 		inited=1;
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 5aea5e2..25b0d08 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -1290,7 +1290,7 @@ int BKE_mesh_nurbs_displist_to_mdata(Object *ob, ListBase *dispbase,
 				copy_v3_v3(mvert->co, data);
 				data += 3;
 				if (nors) {
-					copy_v3_v3(mvert->no, nors);
+					normal_float_to_short_v3(mvert->no, nors);
 					nors += 3;
 				}
 				vertcount++;
diff --git a/source/blender/blenkernel/intern/surf_gridmesh.cpp b/source/blender/blenkernel/intern/surf_gridmesh.cpp
index fa8fbc9..c3debc4 100644
--- a/source/blender/blenkernel/intern/surf_gridmesh.cpp
+++ b/source/blender/blenkernel/intern/surf_gridmesh.cpp
@@ -12,6 +12,7 @@
 #include <set>
 #include <algorithm>
 #include <limits>
+#include <stdio.h>
 #include "surf_gridmesh.h"
 
 //#define NURBS_TESS_DEBUG
@@ -786,19 +787,19 @@ void GridMesh::punch_hole(int exterior, int hole) {
 		double v2xyz[3]; vert_get_coord(v2, v1xyz);
 		v1v2_intersection_free = true;
 		std::vector<IntersectingEdge> isect_ext = edge_poly_intersections(v1xyz[0],v1xyz[1],v2xyz[0],v2xyz[1], exterior);
-		for (IntersectingEdge& ie : isect_ext) {
-			if (ie.alpha1>tolerance && ie.alpha1<(1-tolerance)) {
+		for (std::vector<IntersectingEdge>::iterator ie=isect_ext.begin(); ie!=isect_ext.end(); ie++) {
+			if (ie->alpha1>tolerance && ie->alpha1<(1-tolerance)) {
 				v1v2_intersection_free = false;
-				v1 = ie.e2;
+				v1 = ie->e2;
 				break;
 			}
 		}
 		if (!v1v2_intersection_free) continue;
 		std::vector<IntersectingEdge> isect_hole = edge_poly_intersections(v1xyz[0],v1xyz[1],v2xyz[0],v2xyz[1], hole);
-		for (IntersectingEdge& ie : isect_hole) {
-			if (ie.alpha1>tolerance && ie.alpha1<(1-tolerance)) {
+		for (std::vector<IntersectingEdge>::iterator ie=isect_hole.begin(); ie!=isect_hole.end(); ie++) {
+			if (ie->alpha1>tolerance && ie->alpha1<(1-tolerance)) {
 				v1v2_intersection_free = false;
-				v2 = ie.e2;
+				v2 = ie->e2;
 				break;
 			}
 		}
@@ -870,9 +871,9 @@ void GridMesh::insert_vert_poly_gridmesh(int mpoly, int *verts_added, int *edges
 			for (int cell_poly=cell_polys; cell_poly; cell_poly=v[cell_poly].next_poly) {
 				if (!cell_poly || !v[cell_poly].next) continue;
 				std::vector<IntersectingEdge> isect_tmp = edge_poly_intersections(v1, cell_poly);
-				for (IntersectingEdge& e : isect_tmp) {
+				for (std::vector<IntersectingEdge>::iterator e=isect_tmp.begin(); e!=isect_tmp.end(); e++) {
 					//NURBS_TESS_PRINTF("(%i,%i)",j.first,j.second);
-					e.cellidx = int(i);
+					e->cellidx = int(i);
 				}
 				//NURBS_TESS_PRINTF("\n");
 				isect.insert(isect.end(),isect_tmp.begin(),isect_tmp.end());
@@ -881,8 +882,8 @@ void GridMesh::insert_vert_poly_gridmesh(int mpoly, int *verts_added, int *edges
 		std::stable_sort(isect.begin(),isect.end(),intersection_edge_order);
 		
 		/**** Step 4: insert verts at the intersections we discovered ****/
-		for (IntersectingEdge ie : isect) {
-			v1 = insert_vert(v1, v2, ie.e2, v[ie.e2].next, ie.x, ie.y);
+		for (std::vector<IntersectingEdge>::iterator ie=isect.begin(); ie!=isect.end(); ie++) {
+			v1 = insert_vert(v1, v2, ie->e2, v[ie->e2].next, ie->x, ie->y);
 		}
 		verts_added_local += isect.size();
 		v1=v2; v1xyz[0]=v2xyz[0]; v1xyz[1]=v2xyz[1];
@@ -1124,7 +1125,10 @@ void GridMesh::trim_to_odd(int poly0) {
 			if (trace_sz) {
 				int first = trace[0];
 				NURBS_TESS_PRINTF("   0poly %i.%i: ",poly,this_trace_poly);
-				for (int i : trace) {NURBS_TESS_PRINTF(",%i",i);}; NURBS_TESS_PRINTF("\n");
+				for (std::vector<int>::iterator i=trace.begin(); i!=trace.end(); i++) {
+					NURBS_TESS_PRINTF(",%i",i);
+				}
+				NURBS_TESS_PRINTF("\n");
 				// Link all but the endpoints, skipping doubles
 				for (int i=1,l=int(trace.size()); i<l; i++) {
 					int left=trace[i-1], right=trace[i];
diff --git a/source/blender/blenkernel/intern/surf_gridmesh.h b/source/blender/blenkernel/intern/surf_gridmesh.h
index ff7c6c0..ca55f09 100644
--- a/source/blender/blenkernel/intern/surf_gridmesh.h
+++ b/source/blender/blenkernel/intern/surf_gridmesh.h
@@ -9,7 +9,7 @@
 #ifndef __PolyTest__GridMesh__
 #define __PolyTest__GridMesh__
 
-#define ENABLE_GLUT_DEMO
+#undef ENABLE_GLUT_DEMO
 
 #include <iostream>
 #include <vector>
@@ -126,7 +126,7 @@ struct GridMesh {
 	~GridMesh();
 	
 	// Coordinate utilities
-	int gridpt_for_cell(int x, int y) {return (0<=x&&x<=nx&&0<=y&y<=ny)? 1+(y*(nx+1)+x) : 0;}
+	int gridpt_for_cell(int x, int y) {return (0<=x&&x<=nx&&0<=y&&y<=ny)? 1+(y*(nx+1)+x) : 0;}
 	std::pair<int,int> cell_for_vert(int vert);
 	std::pair<float,float> cell_ll_corner(int x, int y) {return std::make_pair(llx+x*dx,lly+y*dy);}
 	
@@ -148,7 +148,7 @@ struct GridMesh {
 	
 	// Poly manipulation
 	int poly_new(const float* packed_coords, int len);
-	int poly_for_cell(int x, int y) {return (0<=x&&x<nx&&0<=y&y<ny)? 1+4*(y*nx+x) : 0;}
+	int poly_for_cell(int x, int y) {return (0<=x&&x<nx&&0<=y&&y<ny)? 1+4*(y*nx+x) : 0;}
 	int poly_for_cell(float x, float y);
 	int poly_first_vert(int anyvert);
 	int poly_last_vert(int anyvert);
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 9e19dbc..47f7072 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -172,15 +172,16 @@ static bool nurbs_select_bpoint(Nurb *nu, BPoint *bp, int dir, bool selstatus, s
 	int idx = bp - nu->bp;
 	int uidx = idx%pntsu;
 	int vidx = idx/pntsu;
+	int u,v;
 	BLI_assert(0<=idx && idx<pntsu*pntsv);
 	/* dir is  0:-v  1:+v  2:-u  3:+u  */
 	if (dir==2 || dir==3) {
-		for (int u=0; u<pntsu; u++) {
+		for (u=0; u<pntsu; u++) {
 			select_bpoint(&nu->bp[pntsu*vidx+u], selstatus, flag, hidden);
 		}
 	}
 	if (dir==0 || dir==1) {
-		for (int v=0; v<pntsv; v++) {
+		for (v=0; v<pntsv; v++) {
 			select_bpoint(&nu->bp[pntsu*v+uidx], selstatus, flag, hidden);
 		}
 	}
@@ -3826,7 +3827,10 @@ static void findnearestNurbvert__doClosest(ViewContext *vc, void *userData, Nurb
 {
 	struct { BPoint *bp; BezTriple *bezt; Nurb *nurb; int *dir; float dist; int hpoint, select; float mval_fl[2]; } *data = userData;
 	int pntsu, pntsv, idx, uidx, vidx;
-	float cos, max_cos, compass_pt[2], compass_dir[2], mouse_dir[2];
+	float cos, max_cos;
+	float compass_pt[2]; /* pos of adjacent bp in {+u,-u,+v,-v} direction */
+	float compass_dir[2]; /* bp ---> bp{+u,-u,+v,-v} */
+	float mouse_dir[2]; /* bp ---> clickpt */
 	short flag;
 	float dist_test;
 	BPoint *Upos, *Uneg, *Vpos, *Vneg;
@@ -3863,10 +3867,8 @@ static void findnearestNurbvert__doClosest(ViewContext *vc, void *userData, Nurb
 			BLI_assert(0<=idx && idx<pntsu*pntsv);
 			uidx = idx%pntsu;
 			vidx = idx/pntsu;
-			max_cos = -2.0; *data->dir=-1;
-			compass_pt[2]; /* pos of adjacent bp in {+u,-u,+v,-v} direction */
-			compass_dir[2]; /* bp ---> bp{+u,-u,+v,-v} */
-			mouse_dir[2]; /* bp ---> clickpt */
+			max_cos = -2.0;
+			*data->dir=-1;
 			sub_v2_v2v2(mouse_dir, data->mval_fl, screen_co);
 			normalize_v2(mouse_dir);
 			*data->dir = -1;
diff --git a/source/blender/editors/io/CMakeLists.txt b/source/blender/editors/io/CMakeLists.txt
index ede5bfc..2c6fc10 100644
--- a/source/blender/editors/io/CMakeLists.txt
+++ b/source/blender/editors/io/CMakeLists.txt
@@ -28,12 +28,11 @@ set(INC
 	../../makesrna
 	../../windowmanager
 	../../collada
-	../../../../extern/opennurbs
 	../../../../intern/guardedalloc
 )
 
 set(INC_SYS
-
+	../../../../extern/opennurbs
 )
 
 set(SRC
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index aa01c5b..91b75c0 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1479,7 +1479,7 @@ static void convert_ensure_curve_cache(Main *bmain, Scene *scene, Object *ob)
 	}
 }
 
-static void trimmed_curve_to_mesh(Main *bmain, Scene *scene, Object *ob) {
+static void trimmed_curve_to_mesh(Main *UNUSED(bmain), Scene *UNUSED(scene), Object *ob) {
 	BKE_surf_to_mesh(ob);
 	if (ob->type == OB_MESH) {
 		BKE_object_free_modifiers(ob);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 7fdf0df..fe9989c 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -533,7 +533,7 @@ static void do_lasso_select_mesh(ViewContext *vc, const int mcords[][2], short m
 	EDBM_selectmode_flush(vc->em);
 }
 
-static void do_lasso_select_curve__doSelect(struct ViewContext* vc, void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, const float screen_co[2])
+static void do_lasso_select_curve__doSelect(struct ViewContext* UNUSED(v

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list