diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-01-18 01:08:25 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-01-18 01:08:25 +0400 |
commit | 0f28c1c27aec41dd22e31aac2c02cdfae785dd1b (patch) | |
tree | 1c41b37d29a56390d810846cd7fe8f1218e40576 /source/blender/blenkernel | |
parent | 9be40c026df54fee796c4073ebd4734c55ed5807 (diff) | |
parent | 408f7963c5cfd65792d826390b01896282de8e97 (diff) |
svn merge ^/trunk/blender -r43461:43472
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 37 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_text.h | 12 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/text.c | 2 |
5 files changed, 52 insertions, 8 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 22cd822bf93..06e4787c741 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -53,7 +53,10 @@ struct CustomData; struct DerivedMesh; struct Scene; struct MLoopUV; - +struct UvVertMap; +struct UvMapVert; +struct UvElementMap; +struct UvElement; #ifdef __cplusplus extern "C" { #endif @@ -180,6 +183,38 @@ typedef struct UvMapVert { unsigned char tfindex, separate, flag; } UvMapVert; +typedef struct UvElementMap { + /* address UvElements by their vertex */ + struct UvElement **vert; + /* UvElement Store */ + struct UvElement *buf; + /* Total number of UVs in the layer. Useful to know */ + int totalUVs; + /* Number of Islands in the mesh */ + int totalIslands; + /* Stores the starting index in buf where each island begins */ + int *islandIndices; +} UvElementMap; + +typedef struct UvElement { + /* Next UvElement corresponding to same vertex */ + struct UvElement *next; + /* Face the element belongs to */ + struct BMFace *face; + /* Index in the editFace of the uv */ + unsigned char tfindex; + /* Whether this element is the first of coincident elements */ + unsigned char separate; + /* general use flag */ + unsigned char flag; + /* If generating element map with island sorting, this stores the island index */ + unsigned short island; +} UvElement; + +/* invalid island index is max short. If any one has the patience + * to make that many islands, he can bite me :p */ +#define INVALID_ISLAND 0xFFFF + UvVertMap *make_uv_vert_map(struct MPoly *mpoly, struct MLoop *mloop, struct MLoopUV *mloopuv, unsigned int totpoly, unsigned int totvert, int selected, float *limit); UvMapVert *get_uv_map_vert(UvVertMap *vmap, unsigned int v); void free_uv_vert_map(UvVertMap *vmap); diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h index ffea8e0c8e2..f0c054560c4 100644 --- a/source/blender/blenkernel/BKE_text.h +++ b/source/blender/blenkernel/BKE_text.h @@ -46,8 +46,8 @@ void free_text (struct Text *text); void txt_set_undostate (int u); int txt_get_undostate (void); struct Text* add_empty_text (const char *name); -int txt_extended_ascii_as_utf8(char **str); -int reopen_text (struct Text *text); +int txt_extended_ascii_as_utf8(char **str); +int reopen_text (struct Text *text); struct Text* add_text (const char *file, const char *relpath); struct Text* copy_text (struct Text *ta); void unlink_text (struct Main *bmain, struct Text *text); @@ -60,8 +60,8 @@ void txt_order_cursors (struct Text *text); int txt_find_string (struct Text *text, const char *findstr, int wrap, int match_case); int txt_has_sel (struct Text *text); int txt_get_span (struct TextLine *from, struct TextLine *to); -int txt_utf8_offset_to_index(char *str, int offset); -int txt_utf8_index_to_offset(char *str, int index); +int txt_utf8_offset_to_index(char *str, int offset); +int txt_utf8_index_to_offset(char *str, int index); void txt_move_up (struct Text *text, short sel); void txt_move_down (struct Text *text, short sel); void txt_move_left (struct Text *text, short sel); @@ -162,8 +162,8 @@ int text_check_whitespace(char ch); * by 4 character length ID + the text * block itself + the 4 character length * ID (repeat) and opcode (repeat)) */ -#define UNDO_DBLOCK 027 /* Delete block */ -#define UNDO_IBLOCK 030 /* Insert block */ +#define UNDO_DBLOCK 027 /* Delete block */ +#define UNDO_IBLOCK 030 /* Insert block */ /* Misc */ #define UNDO_SWAP 031 /* Swap cursors */ diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index fe848f3d76c..2b3f792f777 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -66,6 +66,11 @@ Paint *paint_get_active(Scene *sce) return &ts->wpaint->paint; case OB_MODE_TEXTURE_PAINT: return &ts->imapaint.paint; + case OB_MODE_EDIT: + if(ts->use_uv_sculpt) + return &ts->uvsculpt->paint; + else + return &ts->imapaint.paint; } } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 6d37c9ca04c..281631168cd 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -297,6 +297,10 @@ void free_scene(Scene *sce) free_paint(&sce->toolsettings->sculpt->paint); MEM_freeN(sce->toolsettings->sculpt); } + if(sce->toolsettings->uvsculpt) { + free_paint(&sce->toolsettings->uvsculpt->paint); + MEM_freeN(sce->toolsettings->uvsculpt); + } free_paint(&sce->toolsettings->imapaint.paint); MEM_freeN(sce->toolsettings); diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index bc86a53c35e..40d439169a3 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -226,7 +226,7 @@ int txt_extended_ascii_as_utf8(char **str) while ((*str)[i]) { if((bad_char= BLI_utf8_invalid_byte(*str+i, length)) == -1) - break; + break; added++; i+= bad_char + 1; |