skip calculating the normal for each face when triangulating, all callers make sure...
[blender.git] / source / blender / bmesh / tools / bmesh_triangulate.c
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Joseph Eagar
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22
23 /** \file blender/bmesh/tools/bmesh_triangulate.c
24  *  \ingroup bmesh
25  *
26  * Triangulate.
27  *
28  */
29
30 #include "MEM_guardedalloc.h"
31
32 #include "BLI_utildefines.h"
33
34 #include "bmesh.h"
35
36 #include "bmesh_triangulate.h"  /* own include */
37
38 void BM_mesh_triangulate(BMesh *bm, const bool use_beauty, const bool tag_only)
39 {
40         BMIter iter;
41         BMFace *face;
42
43         if (tag_only == false) {
44                 BM_ITER_MESH (face, &iter, bm, BM_FACES_OF_MESH) {
45                         BM_face_triangulate(bm, face, NULL, use_beauty, false);
46                 }
47         }
48         else {
49                 BM_ITER_MESH (face, &iter, bm, BM_FACES_OF_MESH) {
50                         if (BM_elem_flag_test(face, BM_ELEM_TAG)) {
51                                 BM_face_triangulate(bm, face, NULL, use_beauty, true);
52                         }
53                 }
54         }
55 }