Cleanup: remove redundant doxygen \file argument
[blender.git] / source / blender / blenkernel / BKE_mesh_mapping.h
index c8a1700..f9ee8ef 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * ***** 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
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): (mar-2001 nzc)
- *
- * ***** END GPL LICENSE BLOCK *****
  */
 #ifndef __BKE_MESH_MAPPING_H__
 #define __BKE_MESH_MAPPING_H__
 
-/** \file BKE_mesh_mapping.h
- *  \ingroup bke
+/** \file \ingroup bke
  */
 
-struct MVert;
 struct MEdge;
-struct MPoly;
 struct MLoop;
-struct MLoopUV;
 struct MLoopTri;
+struct MLoopUV;
+struct MPoly;
+struct MVert;
 
 /* map from uv vertex to face (for select linked, stitch, uv suburf) */
 
@@ -50,8 +41,12 @@ typedef struct UvVertMap {
 
 typedef struct UvMapVert {
        struct UvMapVert *next;
-       unsigned int f;
-       unsigned char tfindex, separate, flag;
+       unsigned int poly_index;
+       unsigned short loop_of_poly_index;
+       bool separate;
+       /* Zero-ed by map creation, left for use by specific areas. Is not
+        * initialized to anything. */
+       unsigned char flag;
 } UvMapVert;
 
 /* UvElement stores per uv information so that we can quickly access information for a uv.
@@ -63,13 +58,13 @@ typedef struct UvElement {
        /* Face the element belongs to */
        struct BMLoop *l;
        /* index in loop. */
-       unsigned short tfindex;
+       unsigned short loop_of_poly_index;
        /* Whether this element is the first of coincident elements */
-       unsigned char separate;
+       bool separate;
        /* general use flag */
        unsigned char flag;
        /* If generating element map with island sorting, this stores the island index */
-       unsigned short island;
+       unsigned int island;
 } UvElement;
 
 
@@ -90,9 +85,7 @@ typedef struct UvElementMap {
        int *islandIndices;
 } UvElementMap;
 
-/* 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
+#define INVALID_ISLAND ((unsigned int)-1)
 
 /* Connectivity data */
 typedef struct MeshElemMap {
@@ -102,9 +95,9 @@ typedef struct MeshElemMap {
 
 /* mapping */
 UvVertMap *BKE_mesh_uv_vert_map_create(
-        struct MPoly *mpoly, struct MLoop *mloop, struct MLoopUV *mloopuv,
-        unsigned int totpoly, unsigned int totvert,
-        const float limit[2], const bool selected, const bool use_winding);
+        const struct MPoly *mpoly, const struct MLoop *mloop, const struct MLoopUV *mloopuv,
+        unsigned int totpoly, unsigned int totvert, const float limit[2],
+        const bool selected, const bool use_winding);
 UvMapVert *BKE_mesh_uv_vert_map_get_vert(UvVertMap *vmap, unsigned int v);
 void       BKE_mesh_uv_vert_map_free(UvVertMap *vmap);
 
@@ -116,9 +109,22 @@ void BKE_mesh_vert_loop_map_create(
         MeshElemMap **r_map, int **r_mem,
         const struct MPoly *mface, const struct MLoop *mloop,
         int totvert, int totface, int totloop);
+void BKE_mesh_vert_looptri_map_create(
+        MeshElemMap **r_map, int **r_mem,
+        const struct MVert *mvert, const int totvert,
+        const struct MLoopTri *mlooptri, const int totlooptri,
+        const struct MLoop *mloop, const int totloop);
 void BKE_mesh_vert_edge_map_create(
         MeshElemMap **r_map, int **r_mem,
         const struct MEdge *medge, int totvert, int totedge);
+void BKE_mesh_vert_edge_vert_map_create(
+        MeshElemMap **r_map, int **r_mem,
+        const struct MEdge *medge, int totvert, int totedge);
+void BKE_mesh_edge_loop_map_create(
+        MeshElemMap **r_map, int **r_mem,
+        const struct MEdge *medge, const int totedge,
+        const struct MPoly *mpoly, const int totpoly,
+        const struct MLoop *mloop, const int totloop);
 void BKE_mesh_edge_poly_map_create(
         MeshElemMap **r_map, int **r_mem,
         const struct MEdge *medge, const int totedge,
@@ -180,11 +186,19 @@ typedef bool (*MeshRemapIslandsCalc)(
 /* Above vert/UV mapping stuff does not do what we need here, but does things we do not need here.
  * So better keep them separated for now, I think.
  */
-bool BKE_mesh_calc_islands_loop_poly_uv(
+bool BKE_mesh_calc_islands_loop_poly_edgeseam(
+        struct MVert *verts, const int totvert,
+        struct MEdge *edges, const int totedge,
+        struct MPoly *polys, const int totpoly,
+        struct MLoop *loops, const int totloop,
+        MeshIslandStore *r_island_store);
+
+bool BKE_mesh_calc_islands_loop_poly_uvmap(
         struct MVert *verts, const int totvert,
         struct MEdge *edges, const int totedge,
         struct MPoly *polys, const int totpoly,
         struct MLoop *loops, const int totloop,
+        const struct MLoopUV *luvs,
         MeshIslandStore *r_island_store);
 
 int *BKE_mesh_calc_smoothgroups(