From 449f8ce4feeef8cfa57a8cbe299e0e718b9473b4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 30 Jul 2010 06:09:23 +0000 Subject: bugfix [#22859] Multi-user images cant be made into single user in texure panel. turns out this isnt exactly a bug since support was never written for this but may as well support it. now rna/py can do image.copy() too. --- source/blender/blenkernel/BKE_image.h | 2 +- source/blender/blenkernel/intern/deform.c | 1 + source/blender/blenkernel/intern/image.c | 24 ++++++++++++++++-------- source/blender/blenkernel/intern/library.c | 3 ++- source/blender/blenkernel/intern/node.c | 2 +- source/blender/makesdna/DNA_image_types.h | 4 ++-- 6 files changed, 23 insertions(+), 13 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index d7eb5fe8246..c842efaa3b2 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -159,7 +159,7 @@ void BKE_image_memorypack(struct Image *ima); void BKE_image_print_memlist(void); /* empty image block, of similar type and filename */ -struct Image *BKE_image_copy(struct Image *ima); +struct Image *copy_image(struct Image *ima); /* merge source into dest, and free source */ void BKE_image_merge(struct Image *dest, struct Image *source); diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index ccb6ebe1f1e..5f262c526c3 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -471,6 +471,7 @@ void flip_side_name (char *name, const char *from_name, int strip_number) #undef IS_SEPARATOR sprintf (name, "%s%s%s%s", prefix, replace, suffix, number); + printf("'%s' --> '%s'\n", from_name, name); } float defvert_find_weight(const struct MDeformVert *dvert, int group_num) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index ffd0b378f07..77607ae25b6 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -287,17 +287,25 @@ static void image_assign_ibuf(Image *ima, ImBuf *ibuf, int index, int frame) } /* empty image block, of similar type and filename */ -Image *BKE_image_copy(Image *ima) +Image *copy_image(Image *ima) { - Image *new= image_alloc(ima->id.name+2, ima->source, ima->type); + Image *nima= image_alloc(ima->id.name+2, ima->source, ima->type); - BLI_strncpy(new->name, ima->name, sizeof(ima->name)); - - new->gen_x= ima->gen_x; - new->gen_y= ima->gen_y; - new->gen_type= ima->gen_type; + BLI_strncpy(nima->name, ima->name, sizeof(ima->name)); + + nima->flag= ima->flag; + nima->tpageflag= ima->tpageflag; - return new; + nima->gen_x= ima->gen_x; + nima->gen_y= ima->gen_y; + nima->gen_type= ima->gen_type; + + nima->animspeed= ima->animspeed; + + nima->aspx= ima->aspx; + nima->aspy= ima->aspy; + + return nima; } void BKE_image_merge(Image *dest, Image *source) diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index acfaef9eb88..716a0b7d41b 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -262,7 +262,8 @@ int id_copy(ID *id, ID **newid, int test) if(!test) *newid= (ID*)copy_texture((Tex*)id); return 1; case ID_IM: - return 0; /* not implemented */ + if(!test) *newid= (ID*)copy_image((Image*)id); + return 1; case ID_WV: return 0; /* deprecated */ case ID_LT: diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index add011d0950..ff1887b0883 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -2565,7 +2565,7 @@ bNodeTree *ntreeLocalize(bNodeTree *ntree) if(ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { if(node->id) { if(node->flag & NODE_DO_OUTPUT) - node->new_node->id= (ID *)BKE_image_copy((Image *)node->id); + node->new_node->id= (ID *)copy_image((Image *)node->id); else node->new_node->id= NULL; } diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h index 1695ceb73a5..d1aa3c00ac4 100644 --- a/source/blender/makesdna/DNA_image_types.h +++ b/source/blender/makesdna/DNA_image_types.h @@ -105,7 +105,7 @@ typedef struct Image { /* **************** IMAGE ********************* */ -/* flag */ +/* Image.flag */ #define IMA_FIELDS 1 #define IMA_STD_FIELD 2 #define IMA_DO_PREMUL 4 @@ -115,7 +115,7 @@ typedef struct Image { #define IMA_DEPRECATED 64 #define IMA_OLD_PREMUL 128 -/* tpageflag */ +/* Image.tpageflag */ #define IMA_TILES 1 #define IMA_TWINANIM 2 #define IMA_COLCYCLE 4 /* Depreciated */ -- cgit v1.2.3