[libcamera-devel] [PATCH v6 03/12] Documentation: Add figures to document Orientation
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Oct 23 13:25:59 CEST 2023
Hi Jacopo,
Thank you for the patch.
On Thu, Oct 19, 2023 at 04:01:24PM +0200, Jacopo Mondi via libcamera-devel wrote:
> Add figures in Documentation/rotation/ to document the plane
> transformations defined by the Orientation enumeration.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> ---
> Documentation/Doxyfile.in | 2 +
> Documentation/rotation/rotate0.svg | 132 ++++++++++++++++++++
> Documentation/rotation/rotate0Mirror.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate180.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate180Mirror.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate270.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate270Mirror.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate90.svg | 135 +++++++++++++++++++++
> Documentation/rotation/rotate90Mirror.svg | 135 +++++++++++++++++++++
> src/libcamera/orientation.cpp | 17 +++
> 10 files changed, 1096 insertions(+)
> create mode 100644 Documentation/rotation/rotate0.svg
> create mode 100644 Documentation/rotation/rotate0Mirror.svg
> create mode 100644 Documentation/rotation/rotate180.svg
> create mode 100644 Documentation/rotation/rotate180Mirror.svg
> create mode 100644 Documentation/rotation/rotate270.svg
> create mode 100644 Documentation/rotation/rotate270Mirror.svg
> create mode 100644 Documentation/rotation/rotate90.svg
> create mode 100644 Documentation/rotation/rotate90Mirror.svg
>
> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
> index 697a14d1dfe2..67ee51afb6e3 100644
> --- a/Documentation/Doxyfile.in
> +++ b/Documentation/Doxyfile.in
> @@ -78,6 +78,8 @@ EXPAND_ONLY_PREDEF = YES
> INCLUDE_PATH = "@TOP_SRCDIR@/include/libcamera"
> INCLUDE_FILE_PATTERNS = *.h
>
> +IMAGE_PATH = "@TOP_SRCDIR@/Documentation"
I'll move images to an images/ directory, in order to avoid clashes
between Doxygen and Sphinx documentation.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> +
> PREDEFINED = __DOXYGEN__ \
> __cplusplus \
> __attribute__(x)= \
> diff --git a/Documentation/rotation/rotate0.svg b/Documentation/rotation/rotate0.svg
> new file mode 100644
> index 000000000000..13cde16ada51
> --- /dev/null
> +++ b/Documentation/rotation/rotate0.svg
> @@ -0,0 +1,132 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate0.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="1.4854147"
> + inkscape:cx="666.48052"
> + inkscape:cy="448.35962"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;paint-order:markers stroke fill;stroke-dasharray:none"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="77.237244"
> + y="81.982094" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;paint-order:markers stroke fill;stroke-dasharray:none"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="92.612343"
> + y="98.912964" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="167.25099"
> + y="98.912964" />
> + <g
> + id="g4"
> + transform="translate(-0.98582077)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 244.95942,81.765726 62.444825,81.97209 154.25639,28.65633 Z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:none"
> + d="m 199.76751,33.368887 0.0285,21.581353"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:none"
> + d="m 215.59016,33.189206 0.0959,31.330304"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 194.42835,33.189356 25.2821,-0.220612"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:none"
> + d="m 195.19248,33.096339 -0.0701,-5.375793 23.77787,-0.05613 0.0553,5.315811"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 194.20874,25.616264 25.25485,-0.02536"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 195.03436,26.298566 -0.0455,-5.426692 23.77787,-0.05613 0.0553,5.315811"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate0Mirror.svg b/Documentation/rotation/rotate0Mirror.svg
> new file mode 100644
> index 000000000000..a7edda873bf5
> --- /dev/null
> +++ b/Documentation/rotation/rotate0Mirror.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate0Mirror.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.82900578"
> + inkscape:cx="599.51331"
> + inkscape:cy="579.00682"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="-230.13463"
> + y="81.982094"
> + transform="scale(-1,1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="-214.75954"
> + y="98.912964"
> + transform="scale(-1,1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="-140.12088"
> + y="98.912964"
> + transform="scale(-1,1)" />
> + <g
> + id="g4"
> + transform="matrix(-1,0,0,1,308.35769,0)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 62.412454,81.765726 244.92705,81.97209 153.11548,28.65633 Z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 107.60436,33.368887 -0.0285,21.581353"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 91.781714,33.189206 -0.0959,31.330304"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 112.94352,33.189356 87.661424,32.968744"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 112.17939,33.096339 0.0701,-5.375793 -23.777866,-0.05613 -0.0553,5.315811"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 113.16313,25.616264 87.908284,25.590904"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 112.33751,26.298566 0.0455,-5.426692 -23.777866,-0.05613 -0.0553,5.315811"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate180.svg b/Documentation/rotation/rotate180.svg
> new file mode 100644
> index 000000000000..d092a5322fb1
> --- /dev/null
> +++ b/Documentation/rotation/rotate180.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate180.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.79489"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="-230.13461"
> + y="-140.22527"
> + transform="scale(-1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="-214.75951"
> + y="-123.2944"
> + transform="scale(-1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="-140.12086"
> + y="-123.2944"
> + transform="scale(-1)" />
> + <g
> + id="g4"
> + transform="rotate(180,154.17884,111.10368)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 62.412437,140.44163 182.514593,-0.20636 -91.81156,53.31576 z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 107.60435,188.83847 -0.0285,-21.58135"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 91.781697,189.01815 -0.0959,-31.3303"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 112.94351,189.018 -25.282103,0.22061"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 112.17938,189.11102 0.0701,5.37579 -23.777873,0.0561 -0.0553,-5.31581"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 113.16312,196.59109 -25.254853,0.0254"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 112.3375,195.90879 0.0455,5.42669 -23.777873,0.0561 -0.0553,-5.31581"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate180Mirror.svg b/Documentation/rotation/rotate180Mirror.svg
> new file mode 100644
> index 000000000000..d4a77d500d94
> --- /dev/null
> +++ b/Documentation/rotation/rotate180Mirror.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate180Mirror.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.79489"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="77.237228"
> + y="-140.22527"
> + transform="scale(1,-1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="92.612335"
> + y="-123.2944"
> + transform="scale(1,-1)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="167.25098"
> + y="-123.2944"
> + transform="scale(1,-1)" />
> + <g
> + id="g4"
> + transform="matrix(1,0,0,-1,-0.98584226,222.20736)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 244.9594,140.44163 62.444808,140.23527 154.25637,193.55103 Z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 199.76749,188.83847 0.0285,-21.58135"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 215.59014,189.01815 0.0959,-31.3303"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 194.42833,189.018 25.2821,0.22061"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 195.19246,189.11102 -0.0701,5.37579 23.77787,0.0561 0.0553,-5.31581"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 194.20872,196.59109 25.25485,0.0254"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 195.03434,195.90879 -0.0455,5.42669 23.77787,0.0561 0.0553,-5.31581"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate270.svg b/Documentation/rotation/rotate270.svg
> new file mode 100644
> index 000000000000..13ea1e5df918
> --- /dev/null
> +++ b/Documentation/rotation/rotate270.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate270.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.26451"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="-187.55237"
> + y="124.56432"
> + transform="rotate(-90)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="-172.17726"
> + y="141.49518"
> + transform="rotate(-90)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="-97.538612"
> + y="141.49518"
> + transform="rotate(-90)" />
> + <g
> + id="g4"
> + transform="rotate(-90,154.17883,111.5966)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 124.34796,19.830188 124.55432,202.34478 71.238559,110.53322 Z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.951119,65.022101 21.58135,-0.0285"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.771439,49.199448 31.330301,-0.0959"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 75.771589,70.361261 75.550979,45.079158"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.678569,69.597131 -5.37579,0.0701 -0.0561,-23.777873 5.31581,-0.0553"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 68.198499,70.580871 -0.0254,-25.254853"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 68.880799,69.755251 -5.42669,0.0455 -0.0561,-23.777873 5.31581,-0.0553"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate270Mirror.svg b/Documentation/rotation/rotate270Mirror.svg
> new file mode 100644
> index 000000000000..6116f50aa96e
> --- /dev/null
> +++ b/Documentation/rotation/rotate270Mirror.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate270Mirror.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.79489"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="-187.55237"
> + y="-182.80751"
> + transform="matrix(0,-1,-1,0,0,0)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="-172.17726"
> + y="-165.87666"
> + transform="matrix(0,-1,-1,0,0,0)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="-97.538612"
> + y="-165.87666"
> + transform="matrix(0,-1,-1,0,0,0)" />
> + <g
> + id="g4"
> + transform="matrix(0,-1,-1,0,264.78961,265.77543)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 183.02388,19.830188 -0.20636,182.514592 53.31576,-91.81156 z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.42072,65.022101 -21.58135,-0.0285"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.6004,49.199448 -31.3303,-0.0959"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.60025,70.361261 0.22061,-25.282103"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.69327,69.597131 5.37579,0.0701 0.0561,-23.777873 -5.31581,-0.0553"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 239.17334,70.580871 0.0254,-25.254853"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 238.49104,69.755251 5.42669,0.0455 0.0561,-23.777873 -5.31581,-0.0553"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate90.svg b/Documentation/rotation/rotate90.svg
> new file mode 100644
> index 000000000000..af6276383c79
> --- /dev/null
> +++ b/Documentation/rotation/rotate90.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate90.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.26451"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="34.65498"
> + y="-182.80751"
> + transform="rotate(90)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="50.030079"
> + y="-165.87665"
> + transform="rotate(90)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="124.66872"
> + y="-165.87665"
> + transform="rotate(90)" />
> + <g
> + id="g4"
> + transform="rotate(90,154.17885,110.61076)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 183.02388,202.37715 -0.20636,-182.51459 53.31576,91.81156 z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.42072,157.18524 -21.58135,0.0285"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.6004,173.00789 -31.3303,0.0959"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.60025,151.84608 0.22061,25.2821"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 231.69327,152.61021 5.37579,-0.0701 0.0561,23.77787 -5.31581,0.0553"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 239.17334,151.62647 0.0254,25.25485"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 238.49104,152.45209 5.42669,-0.0455 0.0561,23.77787 -5.31581,0.0553"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/Documentation/rotation/rotate90Mirror.svg b/Documentation/rotation/rotate90Mirror.svg
> new file mode 100644
> index 000000000000..1760c46226ab
> --- /dev/null
> +++ b/Documentation/rotation/rotate90Mirror.svg
> @@ -0,0 +1,135 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!-- Created with Inkscape (http://www.inkscape.org/) -->
> +
> +<svg
> + width="297mm"
> + height="210mm"
> + viewBox="0 0 297 210"
> + version="1.1"
> + id="svg1"
> + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
> + sodipodi:docname="rotate90Mirror.svg"
> + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> + xmlns="http://www.w3.org/2000/svg"
> + xmlns:svg="http://www.w3.org/2000/svg">
> + <sodipodi:namedview
> + id="namedview1"
> + pagecolor="#ffffff"
> + bordercolor="#666666"
> + borderopacity="1.0"
> + inkscape:showpageshadow="2"
> + inkscape:pageopacity="0.0"
> + inkscape:pagecheckerboard="0"
> + inkscape:deskcolor="#d1d1d1"
> + inkscape:document-units="mm"
> + showgrid="true"
> + showguides="false"
> + inkscape:zoom="0.94272086"
> + inkscape:cx="467.79489"
> + inkscape:cy="423.24299"
> + inkscape:window-width="1916"
> + inkscape:window-height="1040"
> + inkscape:window-x="0"
> + inkscape:window-y="38"
> + inkscape:window-maximized="1"
> + inkscape:current-layer="layer1">
> + <inkscape:grid
> + id="grid1"
> + units="px"
> + originx="0"
> + originy="0"
> + spacingx="0.26458334"
> + spacingy="0.26458333"
> + empcolor="#0000ff"
> + empopacity="0.25098039"
> + color="#0000ff"
> + opacity="0.1254902"
> + empspacing="5"
> + dotted="false"
> + gridanglex="30"
> + gridanglez="30"
> + visible="true" />
> + </sodipodi:namedview>
> + <defs
> + id="defs1" />
> + <g
> + inkscape:label="Layer 1"
> + inkscape:groupmode="layer"
> + id="layer1">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect1"
> + width="152.88184"
> + height="119.41136"
> + x="34.65498"
> + y="124.56432"
> + transform="matrix(0,1,1,0,0,0)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2"
> + width="49.755535"
> + height="36.468258"
> + x="50.030079"
> + y="141.49519"
> + transform="matrix(0,1,1,0,0,0)" />
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect2-5"
> + width="49.755535"
> + height="36.468258"
> + x="124.66872"
> + y="141.49519"
> + transform="matrix(0,1,1,0,0,0)" />
> + <g
> + id="g4"
> + transform="matrix(0,1,1,0,42.582224,-43.56809)"
> + style="stroke-width:1.5875;stroke-dasharray:none">
> + <rect
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="rect3"
> + width="40.994682"
> + height="43.605846"
> + x="134.16664"
> + y="157.24184" />
> + <ellipse
> + style="fill:none;stroke:#000000;stroke-width:1.5875;stroke-dasharray:none;paint-order:markers stroke fill"
> + id="path3"
> + cx="140.15703"
> + cy="176.44627"
> + rx="1.889045"
> + ry="1.925626" />
> + </g>
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="M 124.34795,202.37715 124.55431,19.86256 71.238554,111.67412 Z"
> + id="path4"
> + sodipodi:nodetypes="cccc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.951114,157.18524 21.58135,0.0285"
> + id="path5" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.771434,173.00789 31.330296,0.0959"
> + id="path6" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.771584,151.84608 -0.22061,25.2821"
> + id="path7" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 75.678564,152.61021 -5.37579,-0.0701 -0.0561,23.77787 5.31581,0.0553"
> + id="path8" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 68.198494,151.62647 -0.0254,25.25485"
> + id="path7-5"
> + sodipodi:nodetypes="cc" />
> + <path
> + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
> + d="m 68.880794,152.45209 -5.42669,-0.0455 -0.0561,23.77787 5.31581,0.0553"
> + id="path8-9"
> + sodipodi:nodetypes="cccc" />
> + </g>
> +</svg>
> diff --git a/src/libcamera/orientation.cpp b/src/libcamera/orientation.cpp
> index 61f26cfda31b..5caf76f73865 100644
> --- a/src/libcamera/orientation.cpp
> +++ b/src/libcamera/orientation.cpp
> @@ -37,6 +37,23 @@ namespace libcamera {
> * In example Orientation::Rotate90Mirror describes the image transformation
> * obtained by rotating 90 degrees clockwise first and then applying an
> * horizontal mirroring.
> + *
> + * \var CameraConfiguration::Rotate0
> + * \image html rotation/rotate0.svg
> + * \var CameraConfiguration::Rotate0Mirror
> + * \image html rotation/rotate0Mirror.svg
> + * \var CameraConfiguration::Rotate180
> + * \image html rotation/rotate180.svg
> + * \var CameraConfiguration::Rotate180Mirror
> + * \image html rotation/rotate180Mirror.svg
> + * \var CameraConfiguration::Rotate90Mirror
> + * \image html rotation/rotate90Mirror.svg
> + * \var CameraConfiguration::Rotate270
> + * \image html rotation/rotate270.svg
> + * \var CameraConfiguration::Rotate270Mirror
> + * \image html rotation/rotate270Mirror.svg
> + * \var CameraConfiguration::Rotate90
> + * \image html rotation/rotate90.svg
> */
>
> /**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list