copy support for mask datablocks
This commit is contained in:
parent
61469d2e3e
commit
c42b23030b
|
@ -122,6 +122,8 @@ void BKE_mask_point_select_set_handle(struct MaskSplinePoint *point, const short
|
|||
|
||||
/* 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);
|
||||
|
|
|
@ -360,6 +360,8 @@ int id_copy(ID *id, ID **newid, int test)
|
|||
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;
|
||||
|
|
|
@ -1330,6 +1330,49 @@ Mask *BKE_mask_new(const char *name)
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue