From fb7c003e9927c44cb8f05376555fd65cae86d379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20T=C3=B6nne?= Date: Mon, 28 Aug 2017 08:21:57 +0100 Subject: Simple CSV mesh loading for tests. File paths are crude and preliminary. --- tests/gtests/blenkernel/BKE_mesh_test_util.cc | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'tests/gtests/blenkernel/BKE_mesh_test_util.cc') diff --git a/tests/gtests/blenkernel/BKE_mesh_test_util.cc b/tests/gtests/blenkernel/BKE_mesh_test_util.cc index f72ee7c74d0..6dbed2c4533 100644 --- a/tests/gtests/blenkernel/BKE_mesh_test_util.cc +++ b/tests/gtests/blenkernel/BKE_mesh_test_util.cc @@ -1,5 +1,6 @@ /* Apache License, Version 2.0 */ +#include #include #include @@ -212,6 +213,48 @@ Mesh* BKE_mesh_test_from_data( return me; } +Mesh* BKE_mesh_test_from_csv(const char *filename) +{ + std::ifstream ifs (filename, std::ifstream::in); + + char delim; + + int numverts, numloops, numfaces; + float (*verts)[3] = NULL; + int *loops = NULL; + int *face_lengths = NULL; + + ifs >> numverts; + ifs >> delim; + verts = (float (*)[3])MEM_mallocN(sizeof(float[3]) * numverts, "verts"); + for (int i = 0; i < numverts; ++i) { + ifs >> verts[i][0]; + ifs >> delim; + ifs >> verts[i][1]; + ifs >> delim; + ifs >> verts[i][2]; + ifs >> delim; + } + + ifs >> numloops; + ifs >> delim; + loops = (int *)MEM_mallocN(sizeof(int) * numloops, "loops"); + for (int i = 0; i < numloops; ++i) { + ifs >> loops[i]; + ifs >> delim; + } + + ifs >> numfaces; + ifs >> delim; + face_lengths = (int *)MEM_mallocN(sizeof(int) * numfaces, "face_lengths"); + for (int i = 0; i < numfaces; ++i) { + ifs >> face_lengths[i]; + ifs >> delim; + } + + return BKE_mesh_test_from_data(verts, numverts, NULL, 0, loops, face_lengths, numfaces); +} + void BKE_mesh_test_dump_verts(Mesh *me, std::ostream &str) { int numverts = me->totvert; -- cgit v1.2.3