[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49275] trunk/blender/source/blender/ blenkernel: copy support for mask datablocks

Campbell Barton ideasman42 at gmail.com
Fri Jul 27 10:18:11 CEST 2012


Revision: 49275
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49275
Author:   campbellbarton
Date:     2012-07-27 08:18:11 +0000 (Fri, 27 Jul 2012)
Log Message:
-----------
copy support for mask datablocks

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_mask.h
    trunk/blender/source/blender/blenkernel/intern/library.c
    trunk/blender/source/blender/blenkernel/intern/mask.c

Modified: trunk/blender/source/blender/blenkernel/BKE_mask.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mask.h	2012-07-27 03:10:45 UTC (rev 49274)
+++ trunk/blender/source/blender/blenkernel/BKE_mask.h	2012-07-27 08:18:11 UTC (rev 49275)
@@ -122,6 +122,8 @@
 
 /* general */
 struct Mask *BKE_mask_new(const char *name);
+struct Mask *BKE_mask_copy_nolib(struct Mask *mask);
+struct Mask *BKE_mask_copy(struct Mask *mask);
 
 void BKE_mask_free(struct Mask *mask);
 void BKE_mask_unlink(struct Main *bmain, struct Mask *mask);

Modified: trunk/blender/source/blender/blenkernel/intern/library.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/library.c	2012-07-27 03:10:45 UTC (rev 49274)
+++ trunk/blender/source/blender/blenkernel/intern/library.c	2012-07-27 08:18:11 UTC (rev 49275)
@@ -360,6 +360,8 @@
 			return 0; /* can't be copied from here */
 		case ID_GD:
 			return 0; /* not implemented */
+		case ID_MSK:
+			if (!test) *newid = (ID *)BKE_mask_copy((Mask *)id);
 	}
 	
 	return 0;

Modified: trunk/blender/source/blender/blenkernel/intern/mask.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask.c	2012-07-27 03:10:45 UTC (rev 49274)
+++ trunk/blender/source/blender/blenkernel/intern/mask.c	2012-07-27 08:18:11 UTC (rev 49275)
@@ -1330,6 +1330,49 @@
 	return mask;
 }
 
+Mask *BKE_mask_copy_nolib(Mask *mask)
+{
+	Mask *mask_new;
+
+	mask_new = MEM_dupallocN(mask);
+
+	/*take care here! - we may want to copy anim data  */
+	mask_new->adt = NULL;
+
+	mask_new->masklayers.first = NULL;
+	mask_new->masklayers.last = NULL;
+
+	BKE_mask_layer_copy_list(&mask_new->masklayers, &mask->masklayers);
+
+	/* enable fake user by default */
+	if (!(mask_new->id.flag & LIB_FAKEUSER)) {
+		mask_new->id.flag |= LIB_FAKEUSER;
+		mask_new->id.us++;
+	}
+
+	return mask_new;
+}
+
+Mask *BKE_mask_copy(Mask *mask)
+{
+	Mask *mask_new;
+
+	mask_new = BKE_libblock_copy(&mask->id);
+
+	mask_new->masklayers.first = NULL;
+	mask_new->masklayers.last = NULL;
+
+	BKE_mask_layer_copy_list(&mask_new->masklayers, &mask->masklayers);
+
+	/* enable fake user by default */
+	if (!(mask_new->id.flag & LIB_FAKEUSER)) {
+		mask_new->id.flag |= LIB_FAKEUSER;
+		mask_new->id.us++;
+	}
+
+	return mask_new;
+}
+
 void BKE_mask_point_free(MaskSplinePoint *point)
 {
 	if (point->uw)




More information about the Bf-blender-cvs mailing list