[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13013] trunk/blender/source/blender: == Sculpt ==

Nicholas Bishop nicholasbishop at gmail.com
Wed Dec 26 23:40:56 CET 2007


Revision: 13013
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13013
Author:   nicholasbishop
Date:     2007-12-26 23:40:56 +0100 (Wed, 26 Dec 2007)

Log Message:
-----------
== Sculpt ==

Fixed bad level calls in sculptmode.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h
    trunk/blender/source/blender/blenkernel/BKE_mesh.h
    trunk/blender/source/blender/blenkernel/BKE_multires.h
    trunk/blender/source/blender/blenkernel/BKE_scene.h
    trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/include/BDR_sculptmode.h
    trunk/blender/source/blender/src/buttons_editing.c
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editobject.c
    trunk/blender/source/blender/src/multires.c
    trunk/blender/source/blender/src/sculptmode-stroke.c
    trunk/blender/source/blender/src/sculptmode.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/view.c

Added Paths:
-----------
    trunk/blender/source/blender/blenkernel/BKE_sculpt.h

Modified: trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_bad_level_calls.h	2007-12-26 22:40:56 UTC (rev 13013)
@@ -207,12 +207,6 @@
 void post_layer_destroy(struct VLayer *vlayer);
 void post_server_add(void);
 
-/* sculptmode.c */
-struct SculptData;
-void sculpt_reset_curve(struct SculptData *sd);
-void sculptmode_free_all(struct Scene *sce);
-void sculptmode_init(struct Scene *sce);
-
 /* zbuf.c */
 void antialias_tagbuf(int xsize, int ysize, char *rectmove);
 

Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h	2007-12-26 22:40:56 UTC (rev 13013)
@@ -111,6 +111,11 @@
 UvMapVert *get_uv_map_vert(UvVertMap *vmap, unsigned int v);
 void free_uv_vert_map(UvVertMap *vmap);
 
+/* Partial Mesh Visibility */
+struct PartialVisibility *mesh_pmv_copy(struct PartialVisibility *);
+void mesh_pmv_free(struct PartialVisibility *);
+void mesh_pmv_revert(struct Object *ob, struct Mesh *me);
+void mesh_pmv_off(struct Object *ob, struct Mesh *me);
 
 /* functions for making menu's from customdata layers */
 int mesh_layers_menu_charlen(struct CustomData *data, int type); /* use this to work out how many chars to allocate */

Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h	2007-12-26 22:40:56 UTC (rev 13013)
@@ -47,7 +47,7 @@
 
 void multires_free(struct Multires *mr);
 struct Multires *multires_copy(struct Multires *orig);
-void multires_create(struct Mesh *me);
+void multires_create(struct Object *ob, struct Mesh *me);
 
 /* CustomData */
 void multires_delete_layer(struct Mesh *me, struct CustomData *cd, const int type, int n);

Modified: trunk/blender/source/blender/blenkernel/BKE_scene.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_scene.h	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/BKE_scene.h	2007-12-26 22:40:56 UTC (rev 13013)
@@ -34,11 +34,13 @@
 #ifndef BKE_SCENE_H
 #define BKE_SCENE_H
 
+struct bglMats;
 struct Scene;
 struct Object;
 struct Base;
 struct AviCodecData;
 struct QuicktimeCodecData;
+struct SculptData;
 
 /* sequence related defines */
 #define WHILE_SEQ(base)	{											\

Added: trunk/blender/source/blender/blenkernel/BKE_sculpt.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sculpt.h	                        (rev 0)
+++ trunk/blender/source/blender/blenkernel/BKE_sculpt.h	2007-12-26 22:40:56 UTC (rev 13013)
@@ -0,0 +1,64 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software  Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2007 by Nicholas Bishop
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+typedef struct SculptSession {
+	struct ProjVert *projverts;
+
+	struct bglMats *mats;
+	
+	/* An array of lists; array is sized as
+	   large as the number of verts in the mesh,
+	   the list for each vert contains the index
+	   for all the faces that use that vertex */
+	struct ListBase *vertex_users;
+	struct IndexNode *vertex_users_mem;
+	int vertex_users_size;
+
+	/* Used temporarily per-stroke */
+	float *vertexcosnos;
+	ListBase damaged_rects;
+	ListBase damaged_verts;
+	
+	/* Used to cache the render of the active texture */
+	unsigned int texcache_w, texcache_h, *texcache;
+	
+	struct PropsetData *propset;
+	
+	/* For rotating around a pivot point */
+	vec3f pivot;
+
+	struct SculptStroke *stroke;
+} SculptSession;
+
+void sculptdata_init(struct Scene *sce);
+void sculptdata_free(struct Scene *sce);
+void sculptsession_free(struct Scene *sce);
+void sculpt_vertexusers_free(struct SculptSession *ss);
+void sculpt_reset_curve(struct SculptData *sd);
+

Modified: trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
===================================================================
--- trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2007-12-26 22:40:56 UTC (rev 13013)
@@ -310,10 +310,6 @@
 void post_layer_create(struct VLayer *vlayer) {}
 void post_layer_destroy(struct VLayer *vlayer) {}
 void post_server_add(void) {}
- /* sculpt stubs */
-void sculpt_reset_curve(struct SculptData *sd) {}
-void sculptmode_init(struct Scene *sce) {}
-void sculptmode_free_all(struct Scene *sce) {}
 
 /* zbuf.c stub */
 void antialias_tagbuf(int xsize, int ysize, char *rectmove) {}

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2007-12-26 22:40:56 UTC (rev 13013)
@@ -55,8 +55,6 @@
 #include "DNA_meshdata_types.h"
 #include "DNA_ipo_types.h"
 
-#include "BDR_sculptmode.h"
-
 #include "BKE_customdata.h"
 #include "BKE_depsgraph.h"
 #include "BKE_main.h"
@@ -1230,3 +1228,70 @@
 	}
 }
 
+/* Partial Mesh Visibility */
+PartialVisibility *mesh_pmv_copy(PartialVisibility *pmv)
+{
+	PartialVisibility *n= MEM_dupallocN(pmv);
+	n->vert_map= MEM_dupallocN(pmv->vert_map);
+	n->edge_map= MEM_dupallocN(pmv->edge_map);
+	n->old_edges= MEM_dupallocN(pmv->old_edges);
+	n->old_faces= MEM_dupallocN(pmv->old_faces);
+	return n;
+}
+
+void mesh_pmv_free(PartialVisibility *pv)
+{
+	MEM_freeN(pv->vert_map);
+	MEM_freeN(pv->edge_map);
+	MEM_freeN(pv->old_faces);
+	MEM_freeN(pv->old_edges);
+	MEM_freeN(pv);
+}
+
+void mesh_pmv_revert(Object *ob, Mesh *me)
+{
+	if(me->pv) {
+		unsigned i;
+		MVert *nve, *old_verts;
+		
+		/* Reorder vertices */
+		nve= me->mvert;
+		old_verts = MEM_mallocN(sizeof(MVert)*me->pv->totvert,"PMV revert verts");
+		for(i=0; i<me->pv->totvert; ++i)
+			old_verts[i]= nve[me->pv->vert_map[i]];
+
+		/* Restore verts, edges and faces */
+		CustomData_free_layer_active(&me->vdata, CD_MVERT, me->totvert);
+		CustomData_free_layer_active(&me->edata, CD_MEDGE, me->totedge);
+		CustomData_free_layer_active(&me->fdata, CD_MFACE, me->totface);
+
+		CustomData_add_layer(&me->vdata, CD_MVERT, CD_ASSIGN, old_verts, me->pv->totvert);
+		CustomData_add_layer(&me->edata, CD_MEDGE, CD_ASSIGN, me->pv->old_edges, me->pv->totedge);
+		CustomData_add_layer(&me->fdata, CD_MFACE, CD_ASSIGN, me->pv->old_faces, me->pv->totface);
+		mesh_update_customdata_pointers(me);
+
+		me->totvert= me->pv->totvert;
+		me->totedge= me->pv->totedge;
+		me->totface= me->pv->totface;
+
+		me->pv->old_edges= NULL;
+		me->pv->old_faces= NULL;
+
+		/* Free maps */
+		MEM_freeN(me->pv->edge_map);
+		me->pv->edge_map= NULL;
+		MEM_freeN(me->pv->vert_map);
+		me->pv->vert_map= NULL;
+
+		DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+	}
+}
+
+void mesh_pmv_off(Object *ob, Mesh *me)
+{
+	if(ob && me->pv) {
+		mesh_pmv_revert(ob, me);
+		MEM_freeN(me->pv);
+		me->pv= NULL;
+	}
+}

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2007-12-26 22:40:56 UTC (rev 13013)
@@ -35,8 +35,6 @@
 #include "DNA_object_types.h"
 #include "DNA_vec_types.h"
 
-#include "BDR_sculptmode.h"
-
 #include "BIF_editmesh.h"
 
 #include "BLI_arithb.h"
@@ -348,7 +346,7 @@
 	}
 }
 
-void multires_create(Mesh *me)
+void multires_create(Object *ob, Mesh *me)
 {
 	MultiresLevel *lvl;
 	EditMesh *em= G.obedit ? G.editMesh : NULL;
@@ -359,7 +357,7 @@
 	
 	lvl= MEM_callocN(sizeof(MultiresLevel), "multires level");
 
-	if(me->pv) sculptmode_pmv_off(me);
+	if(me->pv) mesh_pmv_off(ob, me);
 
 	me->mr= MEM_callocN(sizeof(Multires), "multires data");
 	
@@ -1105,7 +1103,7 @@
 	MVert *oldverts= NULL;
 	
 	lvl= MEM_callocN(sizeof(MultiresLevel), "multireslevel");
-	if(me->pv) sculptmode_pmv_off(me);
+	if(me->pv) mesh_pmv_off(ob, me);
 
 	check_colors(me);
 	multires_update_levels(me, 0);
@@ -1271,7 +1269,7 @@
 
 void multires_set_level(Object *ob, Mesh *me, const int render)
 {
-	if(me->pv) sculptmode_pmv_off(me);
+	if(me->pv) mesh_pmv_off(ob, me);
 
 	check_colors(me);
 	multires_update_levels(me, render);

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2007-12-26 21:46:30 UTC (rev 13012)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2007-12-26 22:40:56 UTC (rev 13013)
@@ -47,6 +47,7 @@
 #include "MEM_guardedalloc.h"
 
 #include "DNA_armature_types.h"	
+#include "DNA_color_types.h"
 #include "DNA_constraint_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_group_types.h"
@@ -63,6 +64,7 @@
 #include "BKE_anim.h"
 #include "BKE_armature.h"		
 #include "BKE_bad_level_calls.h"
+#include "BKE_colortools.h"
 #include "BKE_constraint.h"
 #include "BKE_depsgraph.h"
 #include "BKE_global.h"
@@ -75,11 +77,11 @@
 #include "BKE_node.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list