From 3f89c3ad79a10f7424ac51bdea6b7b96aad6d59d Mon Sep 17 00:00:00 2001
From: Mathieu Westphal <mathieu.westphal@kitware.com>
Date: Mon, 23 Dec 2024 10:27:56 +0100
Subject: [PATCH 1/4] Add PARSING documentation

Add correct types to libf3d options doc

Adding types to OPTIONS.md

Adding doc

clfi
---
 _config.yml             |  17 +++-
 doc/libf3d/OPTIONS.md   |  14 +--
 doc/user/COMMANDS.md    |   1 +
 doc/user/OPTIONS.md     | 202 ++++++++++++++++++++--------------------
 doc/user/PARSING.md     |  58 ++++++++++++
 doc/user/QUICKSTART.md  |   1 +
 doc/user/README_USER.md |   1 +
 7 files changed, 182 insertions(+), 112 deletions(-)
 create mode 100644 doc/user/PARSING.md

diff --git a/_config.yml b/_config.yml
index dfa4cde6e8..0e27ad0d93 100644
--- a/_config.yml
+++ b/_config.yml
@@ -134,39 +134,46 @@ defaults:
 
   -
     scope:
-      path: "doc/user/COLOR_MAPS.md"
+      path: "doc/user/PARSING.md"
     values:
       parent: User Documentation
       nav_order: 8
 
   -
     scope:
-      path: "doc/user/FINAL_SHADER.md"
+      path: "doc/user/COLOR_MAPS.md"
     values:
       parent: User Documentation
       nav_order: 9
 
   -
     scope:
-      path: "doc/user/DESKTOP_INTEGRATION.md"
+      path: "doc/user/FINAL_SHADER.md"
     values:
       parent: User Documentation
       nav_order: 10
 
   -
     scope:
-      path: "doc/user/PLUGINS.md"
+      path: "doc/user/DESKTOP_INTEGRATION.md"
     values:
       parent: User Documentation
       nav_order: 11
 
+  -
+    scope:
+      path: "doc/user/PLUGINS.md"
+    values:
+      parent: User Documentation
+      nav_order: 12
+
   -
     scope:
       path: "doc/user/LIMITATIONS_AND_TROUBLESHOOTING.md"
     values:
       title: Limitations and Troubleshooting
       parent: User Documentation
-      nav_order: 12
+      nav_order: 13
 
 # libf3d doc
   -
diff --git a/doc/libf3d/OPTIONS.md b/doc/libf3d/OPTIONS.md
index 3e04f64476..e9ad682331 100644
--- a/doc/libf3d/OPTIONS.md
+++ b/doc/libf3d/OPTIONS.md
@@ -24,7 +24,7 @@ Option|Type<br>Default<br>Trigger|Description|F3D option
 :---:|:---:|:---|:---:
 scene.animation.autoplay|bool<br>false<br>load|Automatically start animation.|\-\-animation-autoplay
 scene.animation.index|int<br>0<br>load|Select the animation to load.<br>Any negative value means all animations (glTF only).<br>The default scene always has at most one animation.|\-\-animation-index
-scene.animation.speed_factor|double<br>1<br>render|Set the animation speed factor to slow, speed up or even invert animation.|\-\-animation-speed-factor
+scene.animation.speed_factor|ratio<br>1<br>render|Set the animation speed factor to slow, speed up or even invert animation.|\-\-animation-speed-factor
 scene.animation.time|double<br>optional<br>load|Set the animation time to load.|\-\-animation-time
 scene.camera.index|int<br>optional<br>load|Select the scene camera to use when available in the file.<br>The default scene always uses automatic camera.|\-\-camera-index
 scene.up_direction|string<br>+Y<br>load|Define the Up direction. It impacts the grid, the axis, the HDRI and the camera.|\-\-up
@@ -43,9 +43,9 @@ Option|Type<br>Default<br>Trigger|Description|F3D option
 :---:|:---:|:---|:---:
 model.matcap.texture|string<br>optional<br>render|Path to a texture file containing a material capture. All other model options for surfaces are ignored if this is set. Model specified by default.|\-\-texture-matcap
 model.color.opacity|double<br>optional<br>render|Set *opacity* on the geometry. Usually used with Depth Peeling option. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-opacity
-model.color.rgb|vector\<double\><br>optional<br>render|Set a *color* on the geometry. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-color
+model.color.rgb|double_vector<br>optional<br>render|Set a *color* on the geometry. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-color
 model.color.texture|string<br>optional<br>render|Path to a texture file that sets the color of the object. Will be multiplied with rgb and opacity. Model specified by default.|\-\-texture-base-color
-model.emissive.factor|vector\<double\><br>optional<br>render| Multiply the emissive color when an emissive texture is present. Model specified by default.|\-\-emissive-factor
+model.emissive.factor|double_vector<br>optional<br>render| Multiply the emissive color when an emissive texture is present. Model specified by default.|\-\-emissive-factor
 model.emissive.texture|string<br><br>render|Path to a texture file that sets the emitted light of the object. Multiplied with the `model.emissive.factor`. Model specified by default.|\-\-texture-emissive
 model.material.metallic|double<br>optional<br>render|Set the *metallic coefficient* on the geometry (0.0-1.0). Multiplied with the `model.material.texture` when present. Model specified by default.|\-\-metallic
 model.material.roughness|double<br>optional<br>render|Set the *roughness coefficient* on the geometry (0.0-1.0). Multiplied with the `model.material.texture` when present. Model specified by default.|\-\-roughness
@@ -54,10 +54,10 @@ model.normal.scale|double<br>optional<br>render|Normal scale affects the strengt
 model.normal.texture|string<br>optional<br>render|Path to a texture file that sets the normal map of the object. Model specified by default.|\-\-texture-normal
 model.scivis.enable|bool<br>false<br>render|*Color by an array* present in on the data. If `model.scivis.array_name` is not set, the first available array will be used.|\-\-scalar-coloring
 model.scivis.cells|bool<br>false<br>render|Color the data with value found *on the cells* instead of points|\-\-cells
-model.scivis.colormap|vector\<double\><br>\<inferno\><br>render|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).|\-\-colormap
+model.scivis.colormap|double_vector<br>\<inferno\><br>render|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).|\-\-colormap
 model.scivis.component|int<br>-1<br>render|Specify the component to color with. -1 means *magnitude*. -2 means *direct values*.|\-\-comp
 model.scivis.array_name|string<br><br>render|Select the name of the array to color with.|\-\-coloring-array
-model.scivis.range|vector\<double\><br>optional<br>render|Set the *coloring range*. Automatically computed by default.|\-\-range
+model.scivis.range|double_vector<br>optional<br>render|Set the *coloring range*. Automatically computed by default.|\-\-range
 model.point_sprites.enable|bool<br>false<br>render|Show sphere *points sprites* instead of the geometry.|\-\-point-sprites
 model.point_sprites.type|string<br>sphere<br>render|Set the sprites type when showing point sprites (can be `sphere` or `gaussian`).|\-\-point-stripes-type
 model.point_sprites.size|double<br>10.0<br>render|Set the *size* of point sprites.|\-\-point-stripes-size
@@ -87,7 +87,7 @@ render.raytracing.samples|int<br>5<br>render|The number of *samples per pixel*.|
 render.raytracing.denoise|bool<br>false<br>render|*Denoise* the raytracing rendering.|\-\-denoise
 render.hdri.file|string<br>optional<br>render|Set the *HDRI* image that can be used for ambient lighting and skybox.<br>Valid file format are hdr, exr, png, jpg, pnm, tiff, bmp.<br>If not set, a default is provided.|\-\-hdri-file
 render.hdri.ambient|bool<br>false<br>render|Light the scene using the *HDRI* image as ambient lighting<br>The environment act as a light source and is reflected on the material.|\-\-hdri-ambient
-render.background.color|vector\<double\><br>0.2,0.2,0.2<br>render|Set the window *background color*.<br>Ignored if a *hdri* skybox is used.|\-\-background-color
+render.background.color|double_vector<br>0.2,0.2,0.2<br>render|Set the window *background color*.<br>Ignored if a *hdri* skybox is used.|\-\-background-color
 render.background.skybox|bool<br>false<br>render|Show the *HDRI* image as a skybox<br>Overrides the the background color if any|\-\-hdri-skybox
 render.background.blur.enable|bool<br>false<br>render|Blur background, useful with a skybox.|\-\-blur-background
 render.background.blur.coc|double<br>20.0<br>render|Blur background circle of confusion radius.|\-\-blur-coc
@@ -148,7 +148,7 @@ It's even more true with the few optional boolean options as std::optional has a
 ## String API
 
 The most generic and flexible API, as it rely on parsing and string generation.
-The documentation about option parsing is upcoming.
+See the [parsing documentation](../user/PARSING.md) for more details.
 
 ```cpp
   f3d::engine eng = f3d::engine::create();
diff --git a/doc/user/COMMANDS.md b/doc/user/COMMANDS.md
index 2f237f0c63..d3942a6324 100644
--- a/doc/user/COMMANDS.md
+++ b/doc/user/COMMANDS.md
@@ -111,3 +111,4 @@ Command syntax is similar to bash, as in they will be split by "token" to be pro
  - Other escaped character will be processed as if the escape was not present, eg: `set scene.up.direction +\Z`
  - Unfinished quoted section is invalid, eg: `set scene.up.direction "+Z`
  - A escape at the end is also invalid, eg: `set scene.up.direction +Z\`
+ - Options values are [parsed](PARSING.md) according to their types.
diff --git a/doc/user/OPTIONS.md b/doc/user/OPTIONS.md
index 15cc4be8ee..65fbe4e8e6 100644
--- a/doc/user/OPTIONS.md
+++ b/doc/user/OPTIONS.md
@@ -6,141 +6,141 @@ F3D behavior can be fully controlled from the command line using the following o
 
 ## Application Options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
-\-\-input=\<input file\>||The input file or files to read, can also be provided as a positional argument.
-\-\-output=\<png file\>||Instead of showing a render view and render into it, *render directly into a png file*. When used with \-\-ref option, only outputs on failure. If `-` is specified instead of a filename, the PNG file is streamed to the stdout. Can use [template variables](#filename-templating).
-\-\-no-background||Use with \-\-output to output a png file with a transparent background.
+\-\-input=\<input file\>|string<br>-|The input file or files to read, can also be provided as a positional argument.
+\-\-output=\<png file\>|string<br>-|Instead of showing a render view and render into it, *render directly into a png file*. When used with \-\-ref option, only outputs on failure. If `-` is specified instead of a filename, the PNG file is streamed to the stdout. Can use [template variables](#filename-templating).
+\-\-no-background|bool<br>false|Use with \-\-output to output a png file with a transparent background.
 -h, \-\-help||Print *help* and exit. Ignore `--verbose`.
 \-\-version||Show *version* information and exit. Ignore `--verbose`.
 \-\-readers-list||List available *readers* and exit. Ignore `--verbose`.
-\-\-config=\<config file path/name/stem\>|config|Specify the [configuration file](CONFIGURATION_FILE.md) to use. Supports absolute/relative path but also filename/filestem to search for in standard configuration file locations.
-\-\-dry-run||Do not read any configuration file and consider only the command line options.
-\-\-no-render||Do not render anything and quit just after loading the first file, use with \-\-verbose to recover information about a file.
-\-\-max-size=\<size in MiB\>||Prevent F3D to load a file bigger than the provided size in Mib, leave empty for unlimited, useful for thumbnails.
-\-\-watch||Watch current file and automatically reload it whenever it is modified on disk.
-\-\-frame-rate=\<fps\>|30.0|Frame rate used to refresh animation and other repeated tasks (watch, UI). Does not impact rendering frame rate.
-\-\-load-plugins=\<paths or names\>||List of plugins to load separated with a comma. Official plugins are `alembic`, `assimp`, `draco`, `exodus`, `occt`, `usd`, `vdb`. See [plugins](PLUGINS.md) for more info.
+\-\-config=\<config file path/name/stem\>|string<br>config|Specify the [configuration file](CONFIGURATION_FILE.md) to use. Supports absolute/relative path but also filename/filestem to search for in standard configuration file locations.
+\-\-dry-run|bool<br>false|Do not read any configuration file and consider only the command line options.
+\-\-no-render|bool<br>false|Do not render anything and quit just after loading the first file, use with \-\-verbose to recover information about a file.
+\-\-max-size=\<size in MiB\>|int<br>-1|Prevent F3D to load a file bigger than the provided size in Mib, leave empty for unlimited, useful for thumbnails.
+\-\-watch|bool<br>false|Watch current file and automatically reload it whenever it is modified on disk.
+\-\-frame-rate=\<fps\>|double<br>30.0|Frame rate used to refresh animation and other repeated tasks (watch, UI). Does not impact rendering frame rate.
+\-\-load-plugins=\<paths or names\>|string<br>-|List of plugins to load separated with a comma. Official plugins are `alembic`, `assimp`, `draco`, `exodus`, `occt`, `usd`, `vdb`. See [plugins](PLUGINS.md) for more info.
 \-\-scan-plugins||Scan standard directories for plugins and display their names, results may be incomplete. See [plugins](PLUGINS.md) for more info.
-\-\-screenshot-filename=\<png file\>|`{app}/{model}_{n}.png`|Filename to save [screenshots](INTERACTIONS.md#taking-screenshots) to. Can use [template variables](#filename-templating).
-\-\-rendering-backend=\<auto\|egl\|osmesa\|glx\|wgl\>|auto|Rendering backend to load, `auto` means to let F3D pick the correct one for you depending on your system capabilities. Use `egl` or `osmesa` on linux to force headless rendering.
+\-\-screenshot-filename=\<png file\>|string<br>`{app}/{model}_{n}.png`|Filename to save [screenshots](INTERACTIONS.md#taking-screenshots) to. Can use [template variables](#filename-templating).
+\-\-rendering-backend=\<auto\|egl\|osmesa\|glx\|wgl\>|string<br>auto|Rendering backend to load, `auto` means to let F3D pick the correct one for you depending on your system capabilities. Use `egl` or `osmesa` on linux to force headless rendering.
 
 ## General Options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
-\-\-verbose=\<[debug\|info\|warning\|error\|quiet]\>|info| Set *verbose* level, in order to provide more information about the loaded data in the console output. If no level is provided, assume `debug`. Option parsing may ignore this flag.
-\-\-progress||Show a *progress bar* when loading the file.
-\-\-animation-progress||Show a *progress bar* when playing the animation.
-\-\-multi-file-mode=\<single|all\>||When opening multiple files, select if they should be grouped (`all`) or alone (`single`). Configuration files for all loaded files will be used in the order they are provided.
-\-\-up=\<[+\|-][X\|Y\|Z]\>|+Y|Define the Up direction.
--x, \-\-axis||Show *axes* as a trihedron in the scene.
--g, \-\-grid||Show *a grid* aligned with the horizontal (orthogonal to the Up direction) plane.
-\-\-grid\-unit=\<length\>||Set the size of the *unit square* for the grid. If set to non-positive (the default) a suitable value will be automatically computed.
-\-\-grid\-subdivisions=\<count\>||Set the number of subdivisions for the grid.
-\-\-grid\-color=\<color\>|(0,0,0)|Set the color grid lines.
--e, \-\-edges||Show the *cell edges*.
-\-\-camera-index=\<idx\>||Select the scene camera to use when available in the file. Automatically computed by default.
--k, \-\-trackball||Enable trackball interaction.
-\-\-animation-autoplay||Automatically start animation.
-\-\-animation-index=\<idx\>|0|Select the animation to show.<br>Any negative value means all animations (glTF only).<br>The default scene always has at most one animation.
-\-\-animation-speed-factor=\<factor\>|1|Set the animation speed factor to slow, speed up or even invert animation time.
-\-\-animation-time=\<factor\>||Set the animation time to load.
-\-\-font-file=\<font file\>||Use the provided FreeType compatible font file to display text.<br>Can be useful to display non-ASCII filenames.
-\-\-command-script=\<command script\>||Provide a script file containing a list of commands to be executed sequentially.<br>Allows automation of multiple commands or pre-defined tasks.
+\-\-verbose=\<[debug\|info\|warning\|error\|quiet]\>|string<br>info| Set *verbose* level, in order to provide more information about the loaded data in the console output. If no level is provided, assume `debug`. Option parsing may ignore this flag.
+\-\-progress|bool<br>false|Show a *progress bar* when loading the file.
+\-\-animation-progress|bool<br>false|Show a *progress bar* when playing the animation.
+\-\-multi-file-mode=\<single|all\>|string<br>single|When opening multiple files, select if they should be grouped (`all`) or alone (`single`). Configuration files for all loaded files will be used in the order they are provided.
+\-\-up=\<[+\|-][X\|Y\|Z]\>|string<br>+Y|Define the Up direction.
+-x, \-\-axis|bool<br>false|Show *axes* as a trihedron in the scene.
+-g, \-\-grid|bool<br>false|Show *a grid* aligned with the horizontal (orthogonal to the Up direction) plane.
+\-\-grid\-unit=\<length\>|double<br>-|Set the size of the *unit square* for the grid. If not set (the default) a suitable value will be automatically computed.
+\-\-grid\-subdivisions=\<count\>|int<br>10|Set the number of subdivisions for the grid.
+\-\-grid\-color=\<color\>|double_vector<br>(0,0,0)|Set the color grid lines.
+-e, \-\-edges|bool<br>false|Show the *cell edges*.
+\-\-camera-index=\<idx\>|int<br>-|Select the scene camera to use when available in the file. Automatically computed by default.
+-k, \-\-trackball|bool<br>false|Enable trackball interaction.
+\-\-animation-autoplay|bool<br>false|Automatically start animation.
+\-\-animation-index=\<idx\>|int<br>0|Select the animation to show.<br>Any negative value means all animations (glTF only).<br>The default scene always has at most one animation.
+\-\-animation-speed-factor=\<factor\>|ratio<br>1|Set the animation speed factor to slow, speed up or even invert animation time.
+\-\-animation-time=\<time\>|double<br>-|Set the animation time to load.
+\-\-font-file=\<font file\>|string<br>-|Use the provided FreeType compatible font file to display text.<br>Can be useful to display non-ASCII filenames.
+\-\-command-script=\<command script\>|script<br>-|Provide a script file containing a list of commands to be executed sequentially.<br>Allows automation of multiple commands or pre-defined tasks.
 
 ## Material options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
--o, \-\-point-sprites||Show sphere *points sprites* instead of the geometry.
-\-\-point-sprites-type=\<sphere\|gaussian\>|sphere|Set the splat type when showing point sprites.
-\-\-point-sprites-size=\<size\>|10.0|Set the *size* of point sprites.
-\-\-point-size=\<size\>||Set the *size* of points when showing vertices. Model specified by default.
-\-\-line-width=\<size\>||Set the *width* of lines when showing edges. Model specified by default.
-\-\-backface-type=\<visible\|hidden\>||Set the Backface type. Model specified by default.
-\-\-color=\<R,G,B\>|1.0, 1.0, 1.0| Set a *color* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default.
-\-\-opacity=\<opacity\>|1.0|Set *opacity* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default. Usually used with Depth Peeling option.
-\-\-roughness=\<roughness\>|0.3|Set the *roughness coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
-\-\-metallic=\<metallic\>|0.0|Set the *metallic coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
-\-\-hdri-file=\<HDRI file\>||Set the *HDRI* image that can be used as ambient lighting and skybox.<br>Valid file format are hdr, exr, png, jpg, pnm, tiff, bmp. <br> If not set, a default is provided.
-\-\-hdri-ambient||Light the scene using the *HDRI* image as ambient lighting.<br>The environment act as a light source and is reflected on the material.
-\-\-texture-matcap=\<texture file\>||Set the texture file to control the material capture of the object. All other model options for surfaces are ignored if this is set. Must be in linear color space. <br>Model specified by default.
-\-\-texture-base-color=\<texture file\>||Set the texture file to control the color of the object. Please note this will be multiplied with the color and opacity options. Must be in sRGB color space. <br>Model specified by default.
-\-\-texture-material=\<texture file\>||Set the texture file to control the occlusion, roughness and metallic values of the object. Please note this will be multiplied with the roughness and metallic options, which have impactful default values. To obtain true results, use \-\-roughness=1 \-\-metallic=1. Must be in linear color space. <br>Model specified by default.
-\-\-texture-emissive=\<texture file\>||Set the texture file to control the emitted light of the object. Please note this will be multiplied with the emissive factor.  Must be in sRGB color space. <br>Model specified by default.
-\-\-emissive-factor=\<R,G,B\>|1.0, 1.0, 1.0|Set the emissive factor. This value is multiplied with the emissive color when an emissive texture is present. <br>Model specified by default.
+-o, \-\-point-sprites|bool<br>false|Show sphere *points sprites* instead of the geometry.
+\-\-point-sprites-type=\<sphere\|gaussian\>|string<br>sphere|Set the splat type when showing point sprites.
+\-\-point-sprites-size=\<size\>|double<br>10.0|Set the *size* of point sprites.
+\-\-point-size=\<size\>|double<br>-|Set the *size* of points when showing vertices. Model specified by default.
+\-\-line-width=\<size\>|double<br>-|Set the *width* of lines when showing edges. Model specified by default.
+\-\-backface-type=\<visible\|hidden\>|string<br>-|Set the Backface type. Model specified by default.
+\-\-color=\<R,G,B\>|double_vector<br>-| Set a *color* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default.
+\-\-opacity=\<opacity\>|double<br>-|Set *opacity* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default. Usually used with Depth Peeling option.
+\-\-roughness=\<roughness\>|double<br>-|Set the *roughness coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
+\-\-metallic=\<metallic\>|double<br>-|Set the *metallic coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
+\-\-hdri-file=\<HDRI file\>|string<br>-|Set the *HDRI* image that can be used as ambient lighting and skybox.<br>Valid file format are hdr, exr, png, jpg, pnm, tiff, bmp. <br> If not set, a default is provided.
+\-\-hdri-ambient|string<br>-|Light the scene using the *HDRI* image as ambient lighting.<br>The environment act as a light source and is reflected on the material.
+\-\-texture-matcap=\<texture file\>|string<br>-|Set the texture file to control the material capture of the object. All other model options for surfaces are ignored if this is set. Must be in linear color space. <br>Model specified by default.
+\-\-texture-base-color=\<texture file\>|string<br>-|Set the texture file to control the color of the object. Please note this will be multiplied with the color and opacity options. Must be in sRGB color space. <br>Model specified by default.
+\-\-texture-material=\<texture file\>|string<br>-|Set the texture file to control the occlusion, roughness and metallic values of the object. Please note this will be multiplied with the roughness and metallic options, which have impactful default values. To obtain true results, use \-\-roughness=1 \-\-metallic=1. Must be in linear color space. <br>Model specified by default.
+\-\-texture-emissive=\<texture file\>|string<br>-|Set the texture file to control the emitted light of the object. Please note this will be multiplied with the emissive factor.  Must be in sRGB color space. <br>Model specified by default.
+\-\-emissive-factor=\<R,G,B\>|double_vector<br>-|Set the emissive factor. This value is multiplied with the emissive color when an emissive texture is present. <br>Model specified by default.
 
 ## Window options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
-\-\-background-color=\<R,G,B\>|0.2, 0.2, 0.2|Set the window *background color*.<br>Ignored if *hdri* is set.
-\-\-resolution=\<width,height\>|1000, 600|Set the *window resolution*.
-\-\-position=\<x,y\>||Set the *window position* (top left corner) , in pixels, starting from the top left of your screens.
--z, \-\-fps||Display a rendering *frame per second counter*.
--n, \-\-filename||Display the *name of the file* on top of the window.
--m, \-\-metadata||Display the *metadata*.
-\-\-hdri-skybox||Show the HDRI as a skybox. Overrides \-\-background-color and \-\-no-background.
--u, \-\-blur-background||Blur background.<br>Useful with a HDRI skybox.
-\-\-blur-coc|20|Blur circle of confusion radius.
-\-\-light-intensity|1.0|*Adjust the intensity* of every light in the scene.
+\-\-background-color=\<R,G,B\>|double_vector<br>0.2, 0.2, 0.2|Set the window *background color*.<br>Ignored if *hdri* is set.
+\-\-resolution=\<width,height\>|double_vector<br>1000, 600|Set the *window resolution*.
+\-\-position=\<x,y\>|double_vector<br>-|Set the *window position* (top left corner) , in pixels, starting from the top left of your screens.
+-z, \-\-fps|bool<br>false|Display a rendering *frame per second counter*.
+-n, \-\-filename|bool<br>false|Display the *name of the file* on top of the window.
+-m, \-\-metadata|bool<br>false|Display the *metadata*.
+\-\-hdri-skybox|bool<br>false|Show the HDRI as a skybox. Overrides \-\-background-color and \-\-no-background.
+-u, \-\-blur-background|bool<br>false|Blur background.<br>Useful with a HDRI skybox.
+\-\-blur-coc|double<br>20|Blur circle of confusion radius.
+\-\-light-intensity|double<br>1.0|*Adjust the intensity* of every light in the scene.
 
 ## Scientific visualization options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
--s, \-\-scalar-coloring||Enable scalar coloring if present in the file. If `--coloring-array` is not set, the first in alphabetical order will be picked if any are available.
-\-\-coloring-array=\<array_name\>||The coloring array name to use when coloring.<br>Use \-\-verbose to recover the usable array names.
--y, \-\-comp=\<comp_index\>|-1|Specify the *component from the scalar* array to color with.<br>Use with the scalar option. -1 means *magnitude*. -2 or the short option, -y, means *direct values*.<br>When using *direct values*, components are used as L, LA, RGB, RGBA values depending on the number of components.
--c, \-\-cells||Specify that the scalar array is to be found *on the cells* instead of on the points.<br>Use with the scalar option.
-\-\-range=\<min,max\>||Set the *coloring range*. Automatically computed by default.<br>Use with the scalar option.
--b, \-\-bar||Show *scalar bar* of the coloring by array.<br>Use with the scalar option.
-\-\-colormap\-file=\<name\>||Set a *colormap file for the coloring*.<br>See [color maps](COLOR_MAPS.md).<br>Use with the scalar option.
-\-\-colormap=\<color_list\>||Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).<br>Ignored if `--colormap-file` option is specified.<br>Use with the scalar option.
--v, \-\-volume||Enable *volume rendering*. It is only available for 3D image data (vti, dcm, nrrd, mhd files) and will display nothing with other formats. It forces coloring.
--i, \-\-inverse||Inverse the linear opacity function used for volume rendering.
+-s, \-\-scalar-coloring|bool<br>false|Enable scalar coloring if present in the file. If `--coloring-array` is not set, the first in alphabetical order will be picked if any are available.
+\-\-coloring-array=\<array_name\>|string<br>-|The coloring array name to use when coloring.<br>Use \-\-verbose to recover the usable array names.
+-y, \-\-comp=\<comp_index\>|int<br>-1|Specify the *component from the scalar* array to color with.<br>Use with the scalar option. -1 means *magnitude*. -2 or the short option, -y, means *direct values*.<br>When using *direct values*, components are used as L, LA, RGB, RGBA values depending on the number of components.
+-c, \-\-cells|bool<br>false|Specify that the scalar array is to be found *on the cells* instead of on the points.<br>Use with the scalar option.
+\-\-range=\<min,max\>|double_vector<br>-|Set the *coloring range*. Automatically computed by default.<br>Use with the scalar option.
+-b, \-\-bar|bool<br>false|Show *scalar bar* of the coloring by array.<br>Use with the scalar option.
+\-\-colormap\-file=\<name\>|string<br>-|Set a *colormap file for the coloring*.<br>See [color maps](COLOR_MAPS.md).<br>Use with the scalar option.
+\-\-colormap=\<color_list\>|string<br>-|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).<br>Ignored if `--colormap-file` option is specified.<br>Use with the scalar option.
+-v, \-\-volume|bool<br>false|Enable *volume rendering*. It is only available for 3D image data (vti, dcm, nrrd, mhd files) and will display nothing with other formats. It forces coloring.
+-i, \-\-inverse|bool<br>false|Inverse the linear opacity function used for volume rendering.
 
 ## Camera configuration options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
-\-\-camera-position=\<X,Y,Z\>||Set the camera position, overrides --camera-direction and camera-zoom-factor.
-\-\-camera-focal-point=\<X,Y,Z\>||Set the camera focal point.
-\-\-camera-view-up=\<X,Y,Z\>||Set the camera view up vector. Will be orthogonalized.
-\-\-camera-view-angle=\<angle\>||Set the camera view angle, a strictly positive value in degrees.
-\-\-camera-direction=\<X,Y,Z\>||Set the camera direction, looking at the focal point.
-\-\-camera-zoom-factor=\<factor\>||Set the camera zoom factor relative to the autozoom on data, a strictly positive value.
-\-\-camera-azimuth-angle=\<angle\>|0.0|Apply an azimuth transformation to the camera, in degrees, added after other camera options.
-\-\-camera-elevation-angle=\<angle\>|0.0|Apply an elevation transformation to the camera, in degrees, added after other camera options.
-\-\-camera-orthographic||Set the camera to use the orthographic projection.
+\-\-camera-position=\<X,Y,Z\>|double_vector<br>-|Set the camera position, overrides --camera-direction and camera-zoom-factor.
+\-\-camera-focal-point=\<X,Y,Z\>|double_vector<br>-|Set the camera focal point.
+\-\-camera-view-up=\<X,Y,Z\>|double_vector<br>-|Set the camera view up vector. Will be orthogonalized.
+\-\-camera-view-angle=\<angle\>|double<br>-|Set the camera view angle, a strictly positive value in degrees.
+\-\-camera-direction=\<X,Y,Z\>|double_vector<br>-|Set the camera direction, looking at the focal point.
+\-\-camera-zoom-factor=\<factor\>|double<br>-|Set the camera zoom factor relative to the autozoom on data, a strictly positive value.
+\-\-camera-azimuth-angle=\<angle\>|double<br>0.0|Apply an azimuth transformation to the camera, in degrees, added after other camera options.
+\-\-camera-elevation-angle=\<angle\>|double<br>0.0|Apply an elevation transformation to the camera, in degrees, added after other camera options.
+\-\-camera-orthographic|bool<br>-|Set the camera to use the orthographic projection. Model specified by default.
 
 ## Raytracing options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
--r, \-\-raytracing||Enable *OSPRay raytracing*. Requires OSPRay raytracing to be enabled in the linked VTK dependency.
-\-\-samples=\<samples\>|5|Set the number of *samples per pixel* when using raytracing.
--d, \-\-denoise||*Denoise* the image when using raytracing.
+-r, \-\-raytracing|bool<br>false|Enable *OSPRay raytracing*. Requires OSPRay raytracing to be enabled in the linked VTK dependency.
+\-\-samples=\<samples\>|int<br>5|Set the number of *samples per pixel* when using raytracing.
+-d, \-\-denoise|bool<br>false|*Denoise* the image when using raytracing.
 
 ## PostFX (OpenGL) options
 
-Options|Description
-------|------
--p, \-\-translucency-support|Enable *translucency support*. This is a technique used to correctly render translucent objects.
--q, \-\-ambient-occlusion|Enable *ambient occlusion*. This is a technique used to improve the depth perception of the object.
--a, \-\-anti-aliasing|Enable *anti-aliasing*. This technique is used to reduce aliasing.
--t, \-\-tone-mapping|Enable generic filmic *Tone Mapping Pass*. This technique is used to map colors properly to the monitor colors.
-\-\-final-shader|Add a final shader to the output image. See [dedicated documentation](FINAL_SHADER.md) for more details.
+Options|Type<br>Default|Description
+------|------|------
+-p, \-\-translucency-support|bool<br>false|Enable *translucency support*. This is a technique used to correctly render translucent objects.
+-q, \-\-ambient-occlusion|bool<br>false|Enable *ambient occlusion*. This is a technique used to improve the depth perception of the object.
+-a, \-\-anti-aliasing|bool<br>false|Enable *anti-aliasing*. This technique is used to reduce aliasing.
+-t, \-\-tone-mapping|bool<br>false|Enable generic filmic *Tone Mapping Pass*. This technique is used to map colors properly to the monitor colors.
+\-\-final-shader|string<br>-|Add a final shader to the output image. See the [dedicated documentation](FINAL_SHADER.md) for more details.
 
 ## Testing options
 
-Options|Default|Description
+Options|Type<br>Default|Description
 ------|------|------
-\-\-ref=\<png file\>||Render and compare with the provided *reference image*, for testing purposes. Use with output option to generate new baselines and diff images.
-\-\-ref-threshold=\<threshold\>|0.04|Set the *comparison threshold* to trigger a test failure or success. The default (0.04) correspond to almost visually identical images.
-\-\-interaction-test-record=\<log file\>||Path to an interaction log file to *record interaction events* to.
-\-\-interaction-test-play=\<log file\>||Path to an interaction log file to *play interactions events* from when loading a file.
+\-\-ref=\<png file\>|string<br>-|Render and compare with the provided *reference image*, for testing purposes. Use with output option to generate new baselines and diff images.
+\-\-ref-threshold=\<threshold\>|double<br>0.04|Set the *comparison threshold* to trigger a test failure or success. The default (0.04) correspond to almost visually identical images.
+\-\-interaction-test-record=\<log file\>|string<br>-|Path to an interaction log file to *record interaction events* to.
+\-\-interaction-test-play=\<log file\>|string<br>-|Path to an interaction log file to *play interactions events* from when loading a file.
 
 ## Rendering options precedence
 
@@ -152,10 +152,12 @@ Some rendering options are not compatible between them, here is the precedence o
 
 ## Options syntax
 
-To turn on/off options, it is possible to write `--option=true` and `--option=false`, eg `--points-sprites=false`.
+To turn on/off boolean options, it is possible to write `--option=true` and `--option=false`, eg `--points-sprites=false`.
 
 As documented, only the `--option=value` syntax is supported. The syntax `--option value` is not supported.
 
+All options are parsed according to their type, see the [parsing documentation](PARSING.md) for more details.
+
 ## Filename templating
 
 The destination filename used by `--output` or to save screenshots using `--screenshot-filename` can use the following template variables:
diff --git a/doc/user/PARSING.md b/doc/user/PARSING.md
new file mode 100644
index 0000000000..e5b8dc5dcb
--- /dev/null
+++ b/doc/user/PARSING.md
@@ -0,0 +1,58 @@
+# Parsing options
+
+When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS.md) or using the [libf3d options string API](../libf3d/OPTIONS.md#string-api), the values are parsed according to their type.
+
+The following types are supported:
+ - bool
+ - int
+ - double
+ - ratio
+ - string
+
+As well as vectors for each of these types.
+
+## Bool
+
+The following formats are supported when parsing a bool, case insensitive:
+ - true/false
+ - yes/no
+ - on/off
+ - 1/0
+
+When formatting a bool into a string, true/false is used.
+
+## Int
+
+Int parsing is supported using [std::stoi](https://en.cppreference.com/w/cpp/string/basic_string/stol) and check
+that the whole string is parsed.
+
+When formatting an int into a string, [std::to_string](https://en.cppreference.com/w/cpp/string/basic_string/to_string) is used.
+
+## Double
+
+Double parsing is supported using [std::stod](https://en.cppreference.com/w/cpp/string/basic_string/stol) and check
+that the whole string is parsed.
+
+When formatting a double into a string, [std::ostringstream](https://en.cppreference.com/w/cpp/io/basic_ostringstream) is used
+with removing the point and precision when the value is exactly an integer.
+
+## Ratio
+
+The following formats are supported when parsing a string into a ratio:
+ - percent%
+ - dividend/divisor
+ - double
+
+Percent, dividend, divisor are then parsed as double.
+
+When formatting a ratio into a string, it is formatted as a double.
+
+## String
+
+String are parsed and formatted as is.
+
+## Vectors
+
+Vector tokens are separated by `,`, tokens are then parsed using their respective types.
+
+When formatting a vector into a string, individual token are formatted according to their type and separated using `,`.
diff --git a/doc/user/QUICKSTART.md b/doc/user/QUICKSTART.md
index 05f1fd3246..68bac5a587 100644
--- a/doc/user/QUICKSTART.md
+++ b/doc/user/QUICKSTART.md
@@ -56,6 +56,7 @@ For **default scene** formats, certain default values are set automatically:
  - normal-scale: 1.0
  - metallic: 0.0
  - roughness: 0.3
+ - camera-orthographic: false
 
 They will be overridden when using corresponding [options](OPTIONS.md).
 
diff --git a/doc/user/README_USER.md b/doc/user/README_USER.md
index 7d5e5874c7..360c6695ae 100644
--- a/doc/user/README_USER.md
+++ b/doc/user/README_USER.md
@@ -8,6 +8,7 @@
 - [How to use animations in F3D.](ANIMATIONS.md)
 - [How to configure F3D using a configuration file.](CONFIGURATION_FILE.md)
 - [The different commands available in F3D.](COMMANDS.md)
+- [How are options values are parsed in F3D.](PARSING.md)
 - [How to use colormaps in F3D.](COLOR_MAPS.md)
 - [How to a use custom final shader in F3D.](FINAL_SHADER.md)
 - [How to integrate F3D in your desktop.](DESKTOP_INTEGRATION.md)

From d67fe39a5fc0ae7f296f3c3765860ce400f916ab Mon Sep 17 00:00:00 2001
From: Mathieu Westphal <mathieu.westphal@kitware.com>
Date: Sat, 21 Dec 2024 22:17:10 +0100
Subject: [PATCH 2/4] what about failure

---
 doc/user/PARSING.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/user/PARSING.md b/doc/user/PARSING.md
index e5b8dc5dcb..5da9012216 100644
--- a/doc/user/PARSING.md
+++ b/doc/user/PARSING.md
@@ -1,6 +1,6 @@
 # Parsing options
 
-When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS.md) or using the [libf3d options string API](../libf3d/OPTIONS.md#string-api), the values are parsed according to their type.
+When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS.md) or using the [libf3d options string API](../libf3d/OPTIONS.md#string-api), the values are parsed according to their type. If parsing fails, the values is not changed.
 
 The following types are supported:
  - bool

From 71d7de4c12f9279692297d3fda58ec5fdf51ae96 Mon Sep 17 00:00:00 2001
From: Mathieu Westphal <mathieu.westphal@kitware.com>
Date: Mon, 23 Dec 2024 10:48:49 +0100
Subject: [PATCH 3/4] Update doc again

---
 doc/libf3d/OPTIONS.md | 10 +++++-----
 doc/user/OPTIONS.md   | 22 +++++++++++-----------
 doc/user/PARSING.md   | 19 ++++++++++---------
 3 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/doc/libf3d/OPTIONS.md b/doc/libf3d/OPTIONS.md
index e9ad682331..3da4b753ec 100644
--- a/doc/libf3d/OPTIONS.md
+++ b/doc/libf3d/OPTIONS.md
@@ -43,9 +43,9 @@ Option|Type<br>Default<br>Trigger|Description|F3D option
 :---:|:---:|:---|:---:
 model.matcap.texture|string<br>optional<br>render|Path to a texture file containing a material capture. All other model options for surfaces are ignored if this is set. Model specified by default.|\-\-texture-matcap
 model.color.opacity|double<br>optional<br>render|Set *opacity* on the geometry. Usually used with Depth Peeling option. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-opacity
-model.color.rgb|double_vector<br>optional<br>render|Set a *color* on the geometry. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-color
+model.color.rgb|vector\<double\><br>optional<br>render|Set a *color* on the geometry. Multiplied with the `model.color.texture` when present. Model specified by default.|\-\-color
 model.color.texture|string<br>optional<br>render|Path to a texture file that sets the color of the object. Will be multiplied with rgb and opacity. Model specified by default.|\-\-texture-base-color
-model.emissive.factor|double_vector<br>optional<br>render| Multiply the emissive color when an emissive texture is present. Model specified by default.|\-\-emissive-factor
+model.emissive.factor|vector\<double\><br>optional<br>render| Multiply the emissive color when an emissive texture is present. Model specified by default.|\-\-emissive-factor
 model.emissive.texture|string<br><br>render|Path to a texture file that sets the emitted light of the object. Multiplied with the `model.emissive.factor`. Model specified by default.|\-\-texture-emissive
 model.material.metallic|double<br>optional<br>render|Set the *metallic coefficient* on the geometry (0.0-1.0). Multiplied with the `model.material.texture` when present. Model specified by default.|\-\-metallic
 model.material.roughness|double<br>optional<br>render|Set the *roughness coefficient* on the geometry (0.0-1.0). Multiplied with the `model.material.texture` when present. Model specified by default.|\-\-roughness
@@ -54,10 +54,10 @@ model.normal.scale|double<br>optional<br>render|Normal scale affects the strengt
 model.normal.texture|string<br>optional<br>render|Path to a texture file that sets the normal map of the object. Model specified by default.|\-\-texture-normal
 model.scivis.enable|bool<br>false<br>render|*Color by an array* present in on the data. If `model.scivis.array_name` is not set, the first available array will be used.|\-\-scalar-coloring
 model.scivis.cells|bool<br>false<br>render|Color the data with value found *on the cells* instead of points|\-\-cells
-model.scivis.colormap|double_vector<br>\<inferno\><br>render|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).|\-\-colormap
+model.scivis.colormap|vector\<double\><br>\<inferno\><br>render|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).|\-\-colormap
 model.scivis.component|int<br>-1<br>render|Specify the component to color with. -1 means *magnitude*. -2 means *direct values*.|\-\-comp
 model.scivis.array_name|string<br><br>render|Select the name of the array to color with.|\-\-coloring-array
-model.scivis.range|double_vector<br>optional<br>render|Set the *coloring range*. Automatically computed by default.|\-\-range
+model.scivis.range|vector\<double\><br>optional<br>render|Set the *coloring range*. Automatically computed by default.|\-\-range
 model.point_sprites.enable|bool<br>false<br>render|Show sphere *points sprites* instead of the geometry.|\-\-point-sprites
 model.point_sprites.type|string<br>sphere<br>render|Set the sprites type when showing point sprites (can be `sphere` or `gaussian`).|\-\-point-stripes-type
 model.point_sprites.size|double<br>10.0<br>render|Set the *size* of point sprites.|\-\-point-stripes-size
@@ -87,7 +87,7 @@ render.raytracing.samples|int<br>5<br>render|The number of *samples per pixel*.|
 render.raytracing.denoise|bool<br>false<br>render|*Denoise* the raytracing rendering.|\-\-denoise
 render.hdri.file|string<br>optional<br>render|Set the *HDRI* image that can be used for ambient lighting and skybox.<br>Valid file format are hdr, exr, png, jpg, pnm, tiff, bmp.<br>If not set, a default is provided.|\-\-hdri-file
 render.hdri.ambient|bool<br>false<br>render|Light the scene using the *HDRI* image as ambient lighting<br>The environment act as a light source and is reflected on the material.|\-\-hdri-ambient
-render.background.color|double_vector<br>0.2,0.2,0.2<br>render|Set the window *background color*.<br>Ignored if a *hdri* skybox is used.|\-\-background-color
+render.background.color|vector\<double\><br>0.2,0.2,0.2<br>render|Set the window *background color*.<br>Ignored if a *hdri* skybox is used.|\-\-background-color
 render.background.skybox|bool<br>false<br>render|Show the *HDRI* image as a skybox<br>Overrides the the background color if any|\-\-hdri-skybox
 render.background.blur.enable|bool<br>false<br>render|Blur background, useful with a skybox.|\-\-blur-background
 render.background.blur.coc|double<br>20.0<br>render|Blur background circle of confusion radius.|\-\-blur-coc
diff --git a/doc/user/OPTIONS.md b/doc/user/OPTIONS.md
index 65fbe4e8e6..3d34fd8b47 100644
--- a/doc/user/OPTIONS.md
+++ b/doc/user/OPTIONS.md
@@ -38,7 +38,7 @@ Options|Type<br>Default|Description
 -g, \-\-grid|bool<br>false|Show *a grid* aligned with the horizontal (orthogonal to the Up direction) plane.
 \-\-grid\-unit=\<length\>|double<br>-|Set the size of the *unit square* for the grid. If not set (the default) a suitable value will be automatically computed.
 \-\-grid\-subdivisions=\<count\>|int<br>10|Set the number of subdivisions for the grid.
-\-\-grid\-color=\<color\>|double_vector<br>(0,0,0)|Set the color grid lines.
+\-\-grid\-color=\<color\>|vector\<double\><br>(0,0,0)|Set the color grid lines.
 -e, \-\-edges|bool<br>false|Show the *cell edges*.
 \-\-camera-index=\<idx\>|int<br>-|Select the scene camera to use when available in the file. Automatically computed by default.
 -k, \-\-trackball|bool<br>false|Enable trackball interaction.
@@ -59,7 +59,7 @@ Options|Type<br>Default|Description
 \-\-point-size=\<size\>|double<br>-|Set the *size* of points when showing vertices. Model specified by default.
 \-\-line-width=\<size\>|double<br>-|Set the *width* of lines when showing edges. Model specified by default.
 \-\-backface-type=\<visible\|hidden\>|string<br>-|Set the Backface type. Model specified by default.
-\-\-color=\<R,G,B\>|double_vector<br>-| Set a *color* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default.
+\-\-color=\<R,G,B\>|vector\<double\><br>-| Set a *color* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default.
 \-\-opacity=\<opacity\>|double<br>-|Set *opacity* on the geometry. Multiplied with the base color texture when present. <br>Model specified by default. Usually used with Depth Peeling option.
 \-\-roughness=\<roughness\>|double<br>-|Set the *roughness coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
 \-\-metallic=\<metallic\>|double<br>-|Set the *metallic coefficient* on the geometry (0.0-1.0). Multiplied with the material texture when present. <br>Model specified by default.
@@ -69,15 +69,15 @@ Options|Type<br>Default|Description
 \-\-texture-base-color=\<texture file\>|string<br>-|Set the texture file to control the color of the object. Please note this will be multiplied with the color and opacity options. Must be in sRGB color space. <br>Model specified by default.
 \-\-texture-material=\<texture file\>|string<br>-|Set the texture file to control the occlusion, roughness and metallic values of the object. Please note this will be multiplied with the roughness and metallic options, which have impactful default values. To obtain true results, use \-\-roughness=1 \-\-metallic=1. Must be in linear color space. <br>Model specified by default.
 \-\-texture-emissive=\<texture file\>|string<br>-|Set the texture file to control the emitted light of the object. Please note this will be multiplied with the emissive factor.  Must be in sRGB color space. <br>Model specified by default.
-\-\-emissive-factor=\<R,G,B\>|double_vector<br>-|Set the emissive factor. This value is multiplied with the emissive color when an emissive texture is present. <br>Model specified by default.
+\-\-emissive-factor=\<R,G,B\>|vector\<double\><br>-|Set the emissive factor. This value is multiplied with the emissive color when an emissive texture is present. <br>Model specified by default.
 
 ## Window options
 
 Options|Type<br>Default|Description
 ------|------|------
-\-\-background-color=\<R,G,B\>|double_vector<br>0.2, 0.2, 0.2|Set the window *background color*.<br>Ignored if *hdri* is set.
-\-\-resolution=\<width,height\>|double_vector<br>1000, 600|Set the *window resolution*.
-\-\-position=\<x,y\>|double_vector<br>-|Set the *window position* (top left corner) , in pixels, starting from the top left of your screens.
+\-\-background-color=\<R,G,B\>|vector\<double\><br>0.2, 0.2, 0.2|Set the window *background color*.<br>Ignored if *hdri* is set.
+\-\-resolution=\<width,height\>|vector\<double\><br>1000, 600|Set the *window resolution*.
+\-\-position=\<x,y\>|vector\<double\><br>-|Set the *window position* (top left corner) , in pixels, starting from the top left of your screens.
 -z, \-\-fps|bool<br>false|Display a rendering *frame per second counter*.
 -n, \-\-filename|bool<br>false|Display the *name of the file* on top of the window.
 -m, \-\-metadata|bool<br>false|Display the *metadata*.
@@ -94,7 +94,7 @@ Options|Type<br>Default|Description
 \-\-coloring-array=\<array_name\>|string<br>-|The coloring array name to use when coloring.<br>Use \-\-verbose to recover the usable array names.
 -y, \-\-comp=\<comp_index\>|int<br>-1|Specify the *component from the scalar* array to color with.<br>Use with the scalar option. -1 means *magnitude*. -2 or the short option, -y, means *direct values*.<br>When using *direct values*, components are used as L, LA, RGB, RGBA values depending on the number of components.
 -c, \-\-cells|bool<br>false|Specify that the scalar array is to be found *on the cells* instead of on the points.<br>Use with the scalar option.
-\-\-range=\<min,max\>|double_vector<br>-|Set the *coloring range*. Automatically computed by default.<br>Use with the scalar option.
+\-\-range=\<min,max\>|vector\<double\><br>-|Set the *coloring range*. Automatically computed by default.<br>Use with the scalar option.
 -b, \-\-bar|bool<br>false|Show *scalar bar* of the coloring by array.<br>Use with the scalar option.
 \-\-colormap\-file=\<name\>|string<br>-|Set a *colormap file for the coloring*.<br>See [color maps](COLOR_MAPS.md).<br>Use with the scalar option.
 \-\-colormap=\<color_list\>|string<br>-|Set a *custom colormap for the coloring*.<br>This is a list of colors in the format `val1,red1,green1,blue1,...,valN,redN,greenN,blueN`<br>where all values are in the range (0,1).<br>Ignored if `--colormap-file` option is specified.<br>Use with the scalar option.
@@ -105,11 +105,11 @@ Options|Type<br>Default|Description
 
 Options|Type<br>Default|Description
 ------|------|------
-\-\-camera-position=\<X,Y,Z\>|double_vector<br>-|Set the camera position, overrides --camera-direction and camera-zoom-factor.
-\-\-camera-focal-point=\<X,Y,Z\>|double_vector<br>-|Set the camera focal point.
-\-\-camera-view-up=\<X,Y,Z\>|double_vector<br>-|Set the camera view up vector. Will be orthogonalized.
+\-\-camera-position=\<X,Y,Z\>|vector\<double\><br>-|Set the camera position, overrides --camera-direction and camera-zoom-factor.
+\-\-camera-focal-point=\<X,Y,Z\>|vector\<double\><br>-|Set the camera focal point.
+\-\-camera-view-up=\<X,Y,Z\>|vector\<double\><br>-|Set the camera view up vector. Will be orthogonalized.
 \-\-camera-view-angle=\<angle\>|double<br>-|Set the camera view angle, a strictly positive value in degrees.
-\-\-camera-direction=\<X,Y,Z\>|double_vector<br>-|Set the camera direction, looking at the focal point.
+\-\-camera-direction=\<X,Y,Z\>|vector\<double\><br>-|Set the camera direction, looking at the focal point.
 \-\-camera-zoom-factor=\<factor\>|double<br>-|Set the camera zoom factor relative to the autozoom on data, a strictly positive value.
 \-\-camera-azimuth-angle=\<angle\>|double<br>0.0|Apply an azimuth transformation to the camera, in degrees, added after other camera options.
 \-\-camera-elevation-angle=\<angle\>|double<br>0.0|Apply an elevation transformation to the camera, in degrees, added after other camera options.
diff --git a/doc/user/PARSING.md b/doc/user/PARSING.md
index 5da9012216..270b91577d 100644
--- a/doc/user/PARSING.md
+++ b/doc/user/PARSING.md
@@ -1,15 +1,16 @@
 # Parsing options
 
-When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS.md) or using the [libf3d options string API](../libf3d/OPTIONS.md#string-api), the values are parsed according to their type. If parsing fails, the values is not changed.
+When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS.md) or using the [libf3d options string API](../libf3d/OPTIONS.md#string-api), the values are parsed according to their type. If parsing fails, the value is not changed.
 
 The following types are supported:
- - bool
- - int
- - double
- - ratio
- - string
+ - bool: A boolean, true or false.
+ - int: An signed integer.
+ - double: A floating point number.
+ - ratio: A double dividend over a double divisor, stored in a double.
+ - string: A string of characters.
 
-As well as vectors for each of these types.
+As well as a list for each of these types, noted as
+ - vector\<type\>
 
 ## Bool
 
@@ -39,8 +40,8 @@ with removing the point and precision when the value is exactly an integer.
 ## Ratio
 
 The following formats are supported when parsing a string into a ratio:
- - percent%
- - dividend/divisor
+ - percent% where percent is a double
+ - dividend/divisor where both are doubles
  - double
 
 Percent, dividend, divisor are then parsed as double.

From 7163db0ce1c194c39eb43a8486f9bef1713ebfce Mon Sep 17 00:00:00 2001
From: Mathieu Westphal <mathieu.westphal@gmail.com>
Date: Mon, 23 Dec 2024 14:37:21 +0100
Subject: [PATCH 4/4] Update doc/user/PARSING.md

Co-authored-by: Michael MIGLIORE <mcmigliore@gmail.com>
---
 doc/user/PARSING.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/user/PARSING.md b/doc/user/PARSING.md
index 270b91577d..66649df57f 100644
--- a/doc/user/PARSING.md
+++ b/doc/user/PARSING.md
@@ -4,7 +4,7 @@ When setting options from the [CLI Options](OPTIONS.md), the [commands](COMMANDS
 
 The following types are supported:
  - bool: A boolean, true or false.
- - int: An signed integer.
+ - int: A signed integer.
  - double: A floating point number.
  - ratio: A double dividend over a double divisor, stored in a double.
  - string: A string of characters.