[Bf-blender-cvs] [5f951f96b6f] soc-2020-io-performance: Review: Added documentation & comments.

Ankit Meel noreply at git.blender.org
Sat Jun 6 14:54:19 CEST 2020


Commit: 5f951f96b6fef1b0cfdebc90ece3c80145188f94
Author: Ankit Meel
Date:   Thu Jun 4 21:11:48 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB5f951f96b6fef1b0cfdebc90ece3c80145188f94

Review: Added documentation & comments.

Review update. Changes here:

Rearrangement of struct members in OBJdata_to_export.

Better comments & documentation.

Linkage: internal `wavefront_obj.hh` & external `IO_wavefront_obj.h`.

Move functions to `namespace IO::OBJ`.

===================================================================

M	source/blender/io/wavefront_obj/IO_wavefront_obj.h
M	source/blender/io/wavefront_obj/intern/wavefront_obj.hh
M	source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.hh
M	source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.hh
M	source/blender/io/wavefront_obj/intern/wavefront_obj_importer.cc
M	source/blender/io/wavefront_obj/intern/wavefront_obj_importer.hh

===================================================================

diff --git a/source/blender/io/wavefront_obj/IO_wavefront_obj.h b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
index 53cce98b244..b2f03c6714a 100644
--- a/source/blender/io/wavefront_obj/IO_wavefront_obj.h
+++ b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
@@ -22,44 +22,27 @@
 #define __IO_WAVEFRONT_OBJ_H__
 
 #include "BKE_context.h"
+#include <stdio.h>
 
 #ifdef __cplusplus
-#  include <vector>
-struct faces {
-  int total_vertices_per_face;
-  std::vector<int> vertex_references;
-  std::vector<int> vertex_normal_references;
+extern "C" {
+#endif
+
+struct OBJExportParams {
+  /** Full path to the destination OBJ file to export. */
+  char filepath[FILENAME_MAX];
+  /* Preferences will be added here when there is an actual setting to use. */
 };
 
-struct OBJ_data_to_export {
-  int tot_vertices;
-  std::vector<struct MVert> vertices;
-  std::vector<std::array<float, 3>> normals;
-  int tot_faces;
-  std::vector<struct faces> faces_list;
+struct OBJImportParams {
+  /** Full path to the source OBJ file to import. */
+  char filepath[FILENAME_MAX];
 };
-extern "C" {
-#endif
-  
-  struct OBJExportParams {
-    const char *filepath;
-    
-    bContext *C;
-    Depsgraph *depsgraph;
-    Scene *scene;
-    
-    bool print_name;
-    float number;
-  };
-  struct OBJImportParams {
-    bool print_name;
-    float number;
-  };
-  
-  bool OBJ_import(struct bContext *C, const char *filepath, struct OBJImportParams *import_params);
-  
-  bool OBJ_export(struct bContext *C, struct OBJExportParams *export_params);
-  
+
+void OBJ_import(bContext *C, const struct OBJImportParams *import_params);
+
+void OBJ_export(bContext *C, const struct OBJExportParams *export_params);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
index 83d26beba70..6e1151383f3 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj.hh
@@ -23,45 +23,51 @@
 
 #include "BKE_context.h"
 
-#ifdef __cplusplus
-#  include <vector>
-struct faces {
-  int total_vertices_per_face;
-  std::vector<int> vertex_references;
-  std::vector<int> vertex_normal_references;
-};
+#include "BLI_array.hh"
+#include "BLI_vector.hh"
+#include "DNA_meshdata_types.h"
 
-struct OBJ_data_to_export {
-  int tot_vertices;
-  std::vector<struct MVert> vertices;
-  std::vector<std::array<float, 3>> normals;
-  int tot_faces;
-  std::vector<struct faces> faces_list;
-};
-extern "C" {
-#endif
+namespace IO {
+namespace OBJ {
 
-struct OBJExportParams {
-  const char *filepath;
+/**
+ * Polygon stores the data of one face of the mesh.
+ * f v1/vt1/vn1 v2/vt2/vn2 .. (n)
+ */
+struct Polygon {
+  /** Total vertices in one polgon face. n above. */
+  uint total_vertices_per_poly;
+  /**
+   * Vertex indices of this polygon. v1, v2 .. above.
+   * The index corresponds to the pre-defined vertex list.
+   */
+  BLI::Vector<uint> vertex_index;
+  /**
+   * Face normal indices of this polygon. vn1, vn2 .. above.
+   * The index corresponds to the pre-defined face normal list.
+   */
+  BLI::Vector<uint> face_normal_index;
+};
 
+/**
+ * Stores geometry of one object to be exported.
+ * TODO (ankitm): Extend it to contain multiple objects' geometry.
+ */
+struct OBJ_data_to_export {
   bContext *C;
   Depsgraph *depsgraph;
-  Scene *scene;
-
-  bool print_name;
-  float number;
-};
-struct OBJImportParams {
-  bool print_name;
-  float number;
-};
-
-bool OBJ_import(struct bContext *C, const char *filepath, struct OBJImportParams *import_params);
 
-bool OBJ_export(struct bContext *C, struct OBJExportParams *export_params);
+  /** Vertices in a mesh to export. */
+  MVert *mvert;
+  /** Number of vertices in a mesh to export. */
+  uint tot_vertices;
 
-#ifdef __cplusplus
-}
-#endif
+  /** Polygons in a mesh to export. */
+  BLI::Vector<IO::OBJ::Polygon> polygon_list;
+  /** Number of polygons in a mesh to export. */
+  uint tot_faces;
+};
+}  // namespace OBJ
+}  // namespace IO
 
 #endif /* __WAVEFRONT_OBJ_HH__ */
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.hh
index 05ac8e89886..9e717905424 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.hh
@@ -26,8 +26,14 @@
 
 #include "wavefront_obj.hh"
 
-void prepare_vertices(Object *ob_eval, OBJ_data_to_export *data_to_export);
-
-bool exporter_main(bContext *C, OBJExportParams *export_params);
+namespace IO {
+namespace OBJ {
+/**
+ * Central internal function to call data preparation & writer functions.
+ * Recieves export_settings from obj.cc.
+ */
+void exporter_main(bContext *C, const OBJExportParams *export_params);
 
+}  // namespace OBJ
+}  // namespace IO
 #endif
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.hh
index bf3ee31124b..41ac2e9b7df 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.hh
@@ -23,11 +23,16 @@
 #ifndef __WAVEFRONT_OBJ_FILE_HANDLER_HH__
 #define __WAVEFRONT_OBJ_FILE_HANDLER_HH__
 
-#include <fstream>
-#include <stdio.h>
-
 #include "wavefront_obj.hh"
 
-void write_prepared_data(const char *filepath, OBJ_data_to_export *data_to_export);
+namespace IO {
+namespace OBJ {
+/**
+ * Low level writer to the OBJ file at filepath.
+ * data_to_export is filled in obj_exporter.cc.
+ */
+void write_obj_data(const char *filepath, IO::OBJ::OBJ_data_to_export *data_to_export);
 
+}  // namespace OBJ
+}  // namespace IO
 #endif
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.cc
index fcfd402704f..c6ef55c4752 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.cc
@@ -22,3 +22,8 @@
  */
 
 #include "wavefront_obj_file_handler.hh"
+
+namespace IO {
+namespace OBJ {
+}
+}  // namespace IO
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.hh b/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.hh
index 6a47c738a90..5e99a3faed4 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.hh
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_importer.hh
@@ -24,4 +24,10 @@
 #ifndef __WAVEFRONT_OBJ_IMPORTER_HH__
 #define __WAVEFRONT_OBJ_IMPORTER_HH__
 
+namespace IO {
+namespace OBJ {
+  /* Currently not implemented. */
+}
+}  // namespace IO
+
 #endif



More information about the Bf-blender-cvs mailing list