From 5e43d6811b65af614d12e2ee1a630fe7d3ec5956 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Fri, 28 Feb 2025 09:01:46 +0100 Subject: [PATCH 01/11] doc: Improve PLUGINS.md --- doc/libf3d/PLUGINS.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/libf3d/PLUGINS.md b/doc/libf3d/PLUGINS.md index d6e945e9f3..94888f32af 100644 --- a/doc/libf3d/PLUGINS.md +++ b/doc/libf3d/PLUGINS.md @@ -10,7 +10,7 @@ You will then be able to call `find_package(f3d REQUIRED COMPONENTS pluginsdk)` You can take a look at the example in the [examples/plugin](https://github.com/f3d-app/f3d/tree/master/examples/plugins) directory or at the official [plugins](https://github.com/f3d-app/f3d/tree/master/plugins). -The first thing (and most difficult part) you have to do is creating a VTK reader (or a VTK importer if you want to support a full scene with materials, lights and cameras), and wrap it into a VTK module. You can create several readers in the same VTK module if you need to support several file formats in a single plugin. +The first thing (and most difficult part) you have to do is creating a VTK reader (or a VTK importer if you want to support a full scene with materials, lights and cameras), and wrap it into a VTK module. You can create several readers/importers in the same VTK module if you need to support several file formats in a single plugin. Then, declare the reader(s) and the plugin using the CMake macros: @@ -21,11 +21,20 @@ f3d_plugin_declare_reader( NAME "ReaderName" EXTENSIONS "myext" # set the extensions the reader can support MIMETYPES "application/vnd.myext" # set the mimetypes the reader can support - VTK_READER ${vtk_classname} # set the name of the VTK class you have created - DESCRIPTION "Reader description" # set the description of the reader + VTK_READER ${vtk_classname} # set the name of the VTK reader class you have created + FORMAT_DESCRIPTION "description" # set the proper name of the file format EXCLUDE_FROM_THUMBNAILER # add this flag if you don't want thumbnail generation for this reader ) +f3d_plugin_declare_reader( + NAME "ReaderNameWithScene" + EXTENSIONS "myext2" # set the extensions the reader can support + MIMETYPES "application/vnd.myext2" # set the mimetypes the reader can support + VTK_IMPORTER ${vtk_classname} # set the name of the VTK importer class you have created + FORMAT_DESCRIPTION "description" # set the proper name of the file format + CUSTOM_CODE "file.inl" # set this to add a custom code when instancing your class +) + # More f3d_plugin_declare_reader calls are possible f3d_plugin_build( From e4da68edbc9163751b16f6310e7d76d00db3c9ef Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Fri, 28 Feb 2025 09:01:58 +0100 Subject: [PATCH 02/11] doc: Incomplete architecture doc --- doc/dev/ARCHITECTURE.md | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 doc/dev/ARCHITECTURE.md diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md new file mode 100644 index 0000000000..ea504f4d1e --- /dev/null +++ b/doc/dev/ARCHITECTURE.md @@ -0,0 +1,51 @@ +# F3D Architecture + +F3D is structured in different parts, interacting with each others and with its dependencies. +This architecture is reflected by the directories organisation. + + - **application**: the code of the F3D application itself, see below + - cmake: cmake macros and functions, used by the CMake build system + - doc: this very documentation + - examples: examples usage of the libf3d and plugin framework in python and C++ + - external: dependencies that are included directly in the code + - java: [java bindings](../libf3d/LANGUAGE_BINDINGS.md#java-experimental) and associated tests. + - **library**: the [libf3d](../libf3d/README.md) itself, see below + - **plugins**: all the [plugins](../libf3d/PLUGINS.md) providing different readers, see below + - python: [python bindings](../libf3d/LANGUAGE_BINDINGS.md#python) and tests + - resources: all non code, non doc, like icon, configs and such + - testing: all testing related resources, does not contain the test themselves + - **vtkext**: extensions to VTK and related tests, see below + - webassembly: [webassembly/javascript bindings](../libf3d/LANGUAGE_BINDINGS.md#javascript-experimental) and [F3DWeb](https://f3d.app/web/) application code + - winshellext: shell extension for Windows, provide [thumbnails for Windows](../user/DESKTOP_INTEGRATION.md#windows) + +Here is diagram explaining how some of these parts interact together: + + + +## vtkext + +`vtkext` contains two [VTK modules](https://docs.vtk.org/en/latest/api/cmake/ModuleSystem.html) that are used extensively in the libf3d and the plugins. + +`public` is a VTK module that contains classes and utilities that can be installed and used by plugins, including externals plugins. `vtkF3DImporter` is a class +that is specifically made for plugin developers to inherit their importers from. The documentation of this module can be found [here](https://f3d.app/doc/libf3d/vtkext_doxygen/). + +`private` is a VTK module that contains many classes and utilities used by the libf3d to provide all features of F3D, especially the rendering, interactions and UI. +A notable class is `vtkF3DRenderer` that is responsible to actually add the different actors in the 3D scene. + +Each of these modules also contains [tests](TESTING.md#vtkextensions-layer) in the `Testing` directory. + +## plugins + +`plugins` contains [libf3d plugins](../libf3d/PLUGINS.md) that are provided by default in the F3D packages. Each of these plugins correspond to a specific dependency and are named accordingly.Each of these plugin will provide access to specific readers for specific formats. Without plugins, F3D and the libf3d would not be able to open any file. These plugins can be loaded statically or dynamically, which makes the dependencies truly optional if needed. + +## library + +`library` contains the code of the libf3d. It is a C++ library with a very limited API surface and larger, private, implementation. +Most classes in the libf3d are split in two. A public part that contains mostly the public API, and a private part, suffixed "_impl", that implements that public API +and also contains hidden methods used to communicate between classes, especially in regards to VTK symbols. + +Logically, it is structured in 3 parts, `public` which contains the public API header files and are all installed, `private` which contains the implementation classes headers files and `src` that contains the source files of all the classes, public and private. + +There is also a dedicated `testing` directory which contains the [unit and functionnal testing](TESTING.md#library-layer) of the libf3d. + +It also contains the `options.json` file, which is the file used to generate all [options](../libf3d/OPTIONS.md) code. From 80f15a7c5c333063328638058f0ec75bb1013266 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sat, 1 Mar 2025 16:44:59 +0100 Subject: [PATCH 03/11] finish up --- doc/dev/ARCHITECTURE.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index ea504f4d1e..60dcbe4379 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -1,6 +1,6 @@ # F3D Architecture -F3D is structured in different parts, interacting with each others and with its dependencies. +F3D is structured in different parts, interacting with each others and with F3D dependencies. This architecture is reflected by the directories organisation. - **application**: the code of the F3D application itself, see below @@ -36,7 +36,7 @@ Each of these modules also contains [tests](TESTING.md#vtkextensions-layer) in t ## plugins -`plugins` contains [libf3d plugins](../libf3d/PLUGINS.md) that are provided by default in the F3D packages. Each of these plugins correspond to a specific dependency and are named accordingly.Each of these plugin will provide access to specific readers for specific formats. Without plugins, F3D and the libf3d would not be able to open any file. These plugins can be loaded statically or dynamically, which makes the dependencies truly optional if needed. +`plugins` contains [libf3d plugins](../libf3d/PLUGINS.md) that are provided by default in the F3D packages. Each of these plugins correspond to a specific dependency and are named accordingly. Each of these plugins provide access to specific readers for specific formats. Without plugins, F3D and the libf3d would not be able to open any file. These plugins can be loaded statically or dynamically, which makes the dependencies truly optional if needed. ## library @@ -49,3 +49,20 @@ Logically, it is structured in 3 parts, `public` which contains the public API h There is also a dedicated `testing` directory which contains the [unit and functionnal testing](TESTING.md#library-layer) of the libf3d. It also contains the `options.json` file, which is the file used to generate all [options](../libf3d/OPTIONS.md) code. + +## application + +`application` contains the code of the F3D application itself. It relies of course on the libf3d to implement all the applicative logic. +The most important class in the `F3DStarter` which contains most of the top logic on the application. `F3DOptionsTools` is also notable as it handles most of +the command line options logic. + +There is also a dedicated `testing` directory which contains all of the [applicative testing](TESTING.md#application-layer) of the F3D application as well as many functionnal testing of the libf3d. + +## Other f3d-app repositories + +Although almost everything is contained in the [f3d-app/f3d](https://github.com/f3d-app/f3d) repository, other repositories in the [f3d-app](https://github.com/f3d-app) organisation are handling certains specific tasks in the F3D ecosystem. + + - The [f3d-superbuild](https://github.com/f3d-app/f3d-superbuild) handles the packaging and the creation of the binaries provided in the [releases page](https://github.com/f3d-app/f3d/releases). + - [f3d-media](https://github.com/f3d-app/f3d-media) backups all images and video used in this documentation + - A collection of actions: [sccache-setup](https://github.com/f3d-app/sccache-setup-action), [lfs-data-cache](https://github.com/f3d-app/sccache-setup-action) and [install-mesa-windows](https://github.com/f3d-app/install-mesa-windows-action) used by the CI of F3D + - A collection of [docker files](https://github.com/f3d-app/install-mesa-windows-action) used for generating docker images used by the CI of F3D From 648495744976982c369baf0e631439e16b3bd839 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sat, 1 Mar 2025 16:53:44 +0100 Subject: [PATCH 04/11] integrate into doc --- CONTRIBUTING.md | 2 ++ _config.yml | 20 ++++++++++++++------ doc/dev/README_DEV.md | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04ee463652..653c7f9375 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,8 @@ To get involved more deeply, please take a look at the [roadmaps](doc/dev/ROADMA It is also recommended to reach out on [Discord](https://discord.f3d.app) to simplify communication, but it is not required. +You may also want to understand the overall [architecture](doc/dev/ARCHITECTURE.md) of the F3D project. + You can then fix the issue or implement the feature on your side and contribute it to the F3D repository by following the workflow described below. Of course, if you are already using F3D and want to improve it for your specific needs, because you want a feature or found a bug, diff --git a/_config.yml b/_config.yml index 0e27ad0d93..720edf36c0 100644 --- a/_config.yml +++ b/_config.yml @@ -267,13 +267,21 @@ defaults: parent: Developer Documentation nav_order: 4 + - + scope: + path: "doc/dev/ARCHITECTURE.md" + values: + title: Architecture + parent: Developer Documentation + nav_order: 5 + - scope: path: "doc/dev/CODING_STYLE.md" values: title: Coding style parent: Developer Documentation - nav_order: 5 + nav_order: 6 - scope: @@ -281,7 +289,7 @@ defaults: values: title: Roadmaps and release cycle parent: Developer Documentation - nav_order: 6 + nav_order: 7 - scope: @@ -289,7 +297,7 @@ defaults: values: title: Governance parent: Developer Documentation - nav_order: 7 + nav_order: 8 - scope: @@ -297,7 +305,7 @@ defaults: values: title: Maintainers parent: Developer Documentation - nav_order: 8 + nav_order: 9 - scope: @@ -305,7 +313,7 @@ defaults: values: title: Code of conduct parent: Developer Documentation - nav_order: 9 + nav_order: 10 - scope: @@ -313,7 +321,7 @@ defaults: values: title: Build (WebAssembly) parent: Developer Documentation - nav_order: 10 + nav_order: 11 # Licenses doc # _licenses.md uses front matter diff --git a/doc/dev/README_DEV.md b/doc/dev/README_DEV.md index 99ca0eb2e3..21108d6a86 100644 --- a/doc/dev/README_DEV.md +++ b/doc/dev/README_DEV.md @@ -5,6 +5,7 @@ - [How to test F3D.](TESTING.md) - [How to contribute to F3D.](../../CONTRIBUTING.md) - [How to Generate coverage and sanitizer report.](GENERATE.md) +- [Overview of the architecture of F3D.](ARCHITECTURE.md) - [Coding Style.](CODING_STYLE.md) - [Roadmaps and release cycle.](ROADMAPS_AND_RELEASES.md) - [Governance.](GOVERNANCE.md) From 122c46834c380ca723607003d35753a90ab644ab Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sat, 1 Mar 2025 16:57:24 +0100 Subject: [PATCH 05/11] codespell fix --- doc/dev/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index 60dcbe4379..8a735ce860 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -46,7 +46,7 @@ and also contains hidden methods used to communicate between classes, especially Logically, it is structured in 3 parts, `public` which contains the public API header files and are all installed, `private` which contains the implementation classes headers files and `src` that contains the source files of all the classes, public and private. -There is also a dedicated `testing` directory which contains the [unit and functionnal testing](TESTING.md#library-layer) of the libf3d. +There is also a dedicated `testing` directory which contains the [unit and functional testing](TESTING.md#library-layer) of the libf3d. It also contains the `options.json` file, which is the file used to generate all [options](../libf3d/OPTIONS.md) code. From 58694c3b6530ff99fb8278b2a1abdbe9224090a0 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sat, 1 Mar 2025 17:05:31 +0100 Subject: [PATCH 06/11] fixup codespell again --- doc/dev/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index 8a735ce860..88d470eb9e 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -56,7 +56,7 @@ It also contains the `options.json` file, which is the file used to generate all The most important class in the `F3DStarter` which contains most of the top logic on the application. `F3DOptionsTools` is also notable as it handles most of the command line options logic. -There is also a dedicated `testing` directory which contains all of the [applicative testing](TESTING.md#application-layer) of the F3D application as well as many functionnal testing of the libf3d. +There is also a dedicated `testing` directory which contains all of the [applicative testing](TESTING.md#application-layer) of the F3D application as well as many functional testing of the libf3d. ## Other f3d-app repositories From c5bcee0ea9607aa5e09e7e8ec155bb876e5505f6 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sun, 2 Mar 2025 08:47:35 +0100 Subject: [PATCH 07/11] fixup --- doc/dev/ARCHITECTURE.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index 88d470eb9e..0370289679 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -3,20 +3,20 @@ F3D is structured in different parts, interacting with each others and with F3D dependencies. This architecture is reflected by the directories organisation. - - **application**: the code of the F3D application itself, see below - - cmake: cmake macros and functions, used by the CMake build system - - doc: this very documentation - - examples: examples usage of the libf3d and plugin framework in python and C++ - - external: dependencies that are included directly in the code - - java: [java bindings](../libf3d/LANGUAGE_BINDINGS.md#java-experimental) and associated tests. - - **library**: the [libf3d](../libf3d/README.md) itself, see below - - **plugins**: all the [plugins](../libf3d/PLUGINS.md) providing different readers, see below - - python: [python bindings](../libf3d/LANGUAGE_BINDINGS.md#python) and tests - - resources: all non code, non doc, like icon, configs and such - - testing: all testing related resources, does not contain the test themselves - - **vtkext**: extensions to VTK and related tests, see below - - webassembly: [webassembly/javascript bindings](../libf3d/LANGUAGE_BINDINGS.md#javascript-experimental) and [F3DWeb](https://f3d.app/web/) application code - - winshellext: shell extension for Windows, provide [thumbnails for Windows](../user/DESKTOP_INTEGRATION.md#windows) +- **application**: the code of the F3D application itself, see below +- cmake: cmake macros and functions, used by the CMake build system +- doc: this very documentation +- examples: examples usage of the libf3d and plugin framework in python and C++ +- external: dependencies that are included directly in the code +- java: [java bindings](../libf3d/LANGUAGE_BINDINGS.md#java-experimental) and associated tests. +- **library**: the [libf3d](../libf3d/README.md) itself, see below +- **plugins**: all the [plugins](../libf3d/PLUGINS.md) providing different readers, see below +- python: [python bindings](../libf3d/LANGUAGE_BINDINGS.md#python) and tests +- resources: all non code, non doc, like icon, configs and such +- testing: all testing related resources, does not contain the test themselves +- **vtkext**: extensions to VTK and related tests, see below +- webassembly: [webassembly/javascript bindings](../libf3d/LANGUAGE_BINDINGS.md#javascript-experimental) and [F3DWeb](https://f3d.app/web/) application code +- winshellext: shell extension for Windows, provide [thumbnails for Windows](../user/DESKTOP_INTEGRATION.md#windows) Here is diagram explaining how some of these parts interact together: @@ -41,7 +41,7 @@ Each of these modules also contains [tests](TESTING.md#vtkextensions-layer) in t ## library `library` contains the code of the libf3d. It is a C++ library with a very limited API surface and larger, private, implementation. -Most classes in the libf3d are split in two. A public part that contains mostly the public API, and a private part, suffixed "_impl", that implements that public API +Most classes in the libf3d are split in two. A public part that contains mostly the public API, and a private part, suffixed "\_impl", that implements that public API and also contains hidden methods used to communicate between classes, especially in regards to VTK symbols. Logically, it is structured in 3 parts, `public` which contains the public API header files and are all installed, `private` which contains the implementation classes headers files and `src` that contains the source files of all the classes, public and private. @@ -62,7 +62,7 @@ There is also a dedicated `testing` directory which contains all of the [applica Although almost everything is contained in the [f3d-app/f3d](https://github.com/f3d-app/f3d) repository, other repositories in the [f3d-app](https://github.com/f3d-app) organisation are handling certains specific tasks in the F3D ecosystem. - - The [f3d-superbuild](https://github.com/f3d-app/f3d-superbuild) handles the packaging and the creation of the binaries provided in the [releases page](https://github.com/f3d-app/f3d/releases). - - [f3d-media](https://github.com/f3d-app/f3d-media) backups all images and video used in this documentation - - A collection of actions: [sccache-setup](https://github.com/f3d-app/sccache-setup-action), [lfs-data-cache](https://github.com/f3d-app/sccache-setup-action) and [install-mesa-windows](https://github.com/f3d-app/install-mesa-windows-action) used by the CI of F3D - - A collection of [docker files](https://github.com/f3d-app/install-mesa-windows-action) used for generating docker images used by the CI of F3D +- The [f3d-superbuild](https://github.com/f3d-app/f3d-superbuild) handles the packaging and the creation of the binaries provided in the [releases page](https://github.com/f3d-app/f3d/releases). +- [f3d-media](https://github.com/f3d-app/f3d-media) backups all images and video used in this documentation +- A collection of actions: [sccache-setup](https://github.com/f3d-app/sccache-setup-action), [lfs-data-cache](https://github.com/f3d-app/sccache-setup-action) and [install-mesa-windows](https://github.com/f3d-app/install-mesa-windows-action) used by the CI of F3D +- A collection of [docker files](https://github.com/f3d-app/install-mesa-windows-action) used for generating docker images used by the CI of F3D From 8d729a1cbc8c428621abb89293100b8b6cb2a93b Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sun, 2 Mar 2025 08:52:28 +0100 Subject: [PATCH 08/11] fixup image --- doc/dev/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index 0370289679..359f978a57 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -20,7 +20,7 @@ This architecture is reflected by the directories organisation. Here is diagram explaining how some of these parts interact together: - + ## vtkext From a0955ffdf402c132d9820206cf6d817a045064cb Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sun, 2 Mar 2025 09:00:39 +0100 Subject: [PATCH 09/11] fixup archi --- doc/dev/ARCHITECTURE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index 359f978a57..c6d6239c26 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -9,7 +9,7 @@ This architecture is reflected by the directories organisation. - examples: examples usage of the libf3d and plugin framework in python and C++ - external: dependencies that are included directly in the code - java: [java bindings](../libf3d/LANGUAGE_BINDINGS.md#java-experimental) and associated tests. -- **library**: the [libf3d](../libf3d/README.md) itself, see below +- **library**: the [libf3d](../libf3d/README_LIBF3D.md) itself, see below - **plugins**: all the [plugins](../libf3d/PLUGINS.md) providing different readers, see below - python: [python bindings](../libf3d/LANGUAGE_BINDINGS.md#python) and tests - resources: all non code, non doc, like icon, configs and such @@ -64,5 +64,5 @@ Although almost everything is contained in the [f3d-app/f3d](https://github.com/ - The [f3d-superbuild](https://github.com/f3d-app/f3d-superbuild) handles the packaging and the creation of the binaries provided in the [releases page](https://github.com/f3d-app/f3d/releases). - [f3d-media](https://github.com/f3d-app/f3d-media) backups all images and video used in this documentation -- A collection of actions: [sccache-setup](https://github.com/f3d-app/sccache-setup-action), [lfs-data-cache](https://github.com/f3d-app/sccache-setup-action) and [install-mesa-windows](https://github.com/f3d-app/install-mesa-windows-action) used by the CI of F3D -- A collection of [docker files](https://github.com/f3d-app/install-mesa-windows-action) used for generating docker images used by the CI of F3D +- A collection of actions: [sccache-setup](https://github.com/f3d-app/sccache-setup-action), [lfs-data-cache](https://github.com/f3d-app/lfs-data-cache-action) and [install-mesa-windows](https://github.com/f3d-app/install-mesa-windows-action) used by the CI of F3D +- A collection of [docker files](https://github.com/f3d-app/f3d-docker-images) used for generating docker images used by the CI of F3D From 1d5bb3af318334ab60bad8c60558e8febbda815f Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sun, 2 Mar 2025 10:34:47 +0100 Subject: [PATCH 10/11] Update doc/dev/ARCHITECTURE.md Co-authored-by: Michael MIGLIORE --- doc/dev/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index c6d6239c26..c1847f970e 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -24,7 +24,7 @@ Here is diagram explaining how some of these parts interact together: ## vtkext -`vtkext` contains two [VTK modules](https://docs.vtk.org/en/latest/api/cmake/ModuleSystem.html) that are used extensively in the libf3d and the plugins. +`vtkext` contains two [VTK modules](https://docs.vtk.org/en/latest/api/cmake/ModuleSystem.html) that are used extensively in the libf3d. The public one is used in the plugins. `public` is a VTK module that contains classes and utilities that can be installed and used by plugins, including externals plugins. `vtkF3DImporter` is a class that is specifically made for plugin developers to inherit their importers from. The documentation of this module can be found [here](https://f3d.app/doc/libf3d/vtkext_doxygen/). From a5b350134169bbb417087e4e4761f0b45409df47 Mon Sep 17 00:00:00 2001 From: Mathieu Westphal Date: Sun, 2 Mar 2025 10:40:27 +0100 Subject: [PATCH 11/11] adding a mention --- doc/dev/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dev/ARCHITECTURE.md b/doc/dev/ARCHITECTURE.md index c1847f970e..61f31bff39 100644 --- a/doc/dev/ARCHITECTURE.md +++ b/doc/dev/ARCHITECTURE.md @@ -26,7 +26,7 @@ Here is diagram explaining how some of these parts interact together: `vtkext` contains two [VTK modules](https://docs.vtk.org/en/latest/api/cmake/ModuleSystem.html) that are used extensively in the libf3d. The public one is used in the plugins. -`public` is a VTK module that contains classes and utilities that can be installed and used by plugins, including externals plugins. `vtkF3DImporter` is a class +`public` is a VTK module that contains classes and utilities that can be installed as part of the `plugin_sdk` and used by plugins, including externals plugins. `vtkF3DImporter` is a class that is specifically made for plugin developers to inherit their importers from. The documentation of this module can be found [here](https://f3d.app/doc/libf3d/vtkext_doxygen/). `private` is a VTK module that contains many classes and utilities used by the libf3d to provide all features of F3D, especially the rendering, interactions and UI.