Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/BKE_viewer_path.h')
-rw-r--r--source/blender/blenkernel/BKE_viewer_path.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_viewer_path.h b/source/blender/blenkernel/BKE_viewer_path.h
new file mode 100644
index 00000000000..dfba289531f
--- /dev/null
+++ b/source/blender/blenkernel/BKE_viewer_path.h
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+/**
+ * A #ViewerPath is a path to data that is viewed/debugged by the user. It is a list of
+ * #ViewerPathElem.
+ *
+ * This is only used for geometry nodes currently. When the user activates a viewer node the
+ * corresponding path contains the following elements:
+ * - Object the viewer is activated on.
+ * - Modifier that contains the corresponding geometry node group.
+ * - Node tree path in case the viewer node is in a nested node group.
+ * - Viewer node name.
+ *
+ * The entire path is necessary (instead of just the combination of node group and viewer name),
+ * because the same node group may be used in many different places.
+ *
+ * This file contains basic functions for creating/deleting a #ViewerPath. For more use-case
+ * specific functions look in `ED_viewer_path.hh`.
+ */
+
+#include "DNA_viewer_path_types.h"
+
+struct BlendWriter;
+struct BlendDataReader;
+struct BlendLibReader;
+struct LibraryForeachIDData;
+struct Library;
+struct IDRemapper;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void BKE_viewer_path_init(ViewerPath *viewer_path);
+void BKE_viewer_path_clear(ViewerPath *viewer_path);
+void BKE_viewer_path_copy(ViewerPath *dst, const ViewerPath *src);
+bool BKE_viewer_path_equal(const ViewerPath *a, const ViewerPath *b);
+void BKE_viewer_path_blend_write(struct BlendWriter *writer, const ViewerPath *viewer_path);
+void BKE_viewer_path_blend_read_data(struct BlendDataReader *reader, ViewerPath *viewer_path);
+void BKE_viewer_path_blend_read_lib(struct BlendLibReader *reader,
+ struct Library *lib,
+ ViewerPath *viewer_path);
+void BKE_viewer_path_foreach_id(struct LibraryForeachIDData *data, ViewerPath *viewer_path);
+void BKE_viewer_path_id_remap(ViewerPath *viewer_path, const struct IDRemapper *mappings);
+
+ViewerPathElem *BKE_viewer_path_elem_new(ViewerPathElemType type);
+IDViewerPathElem *BKE_viewer_path_elem_new_id(void);
+ModifierViewerPathElem *BKE_viewer_path_elem_new_modifier(void);
+NodeViewerPathElem *BKE_viewer_path_elem_new_node(void);
+ViewerPathElem *BKE_viewer_path_elem_copy(const ViewerPathElem *src);
+bool BKE_viewer_path_elem_equal(const ViewerPathElem *a, const ViewerPathElem *b);
+void BKE_viewer_path_elem_free(ViewerPathElem *elem);
+
+#ifdef __cplusplus
+}
+#endif