Message ID | 20250917201742.16406-5-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Quoting Laurent Pinchart (2025-09-17 22:17:35) > From: Stefan Klug <stefan.klug@ideasonboard.com> > > Our current theme doesn't handle many of the rst features (namely notes, > proper code highlighting, font formatting). The sphinx book theme > provides a unobtrusive design which makes the documentation way more fun > to read. The branding is minimal. The libcamera logo is included and > theme colors are set to the libcamera blue. > > To get meson/sphinx to successfully compile the docs the package > "python3-sphinx-book-theme" needs to be installed (at least on debian > based systems). > > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com> Best regards, Stefan > --- > Changes since v1: > > - Add SPDX license header to custom.css > - Update .reuse/dep5 > - Fix typo in commit message > - Replace double with single quotes in conf.py.in > - Rename logo-and-text.svg to libcamera-logo-text.svg > --- > .reuse/dep5 | 5 +- > Documentation/conf.py.in | 19 +- > Documentation/meson.build | 2 +- > Documentation/theme/footer.html | 14 - > Documentation/theme/layout.html | 109 ------- > Documentation/theme/search.html | 63 ---- > Documentation/theme/static/css/theme.css | 295 ------------------ > Documentation/theme/static/custom.css | 5 + > .../theme/static/libcamera-logo-text.svg | 223 +++++++++++++ > Documentation/theme/static/search.png | Bin 482 -> 0 bytes > Documentation/theme/theme.conf | 7 - > README.rst | 4 +- > 12 files changed, 248 insertions(+), 498 deletions(-) > delete mode 100644 Documentation/theme/footer.html > delete mode 100644 Documentation/theme/layout.html > delete mode 100644 Documentation/theme/search.html > delete mode 100644 Documentation/theme/static/css/theme.css > create mode 100644 Documentation/theme/static/custom.css > create mode 100644 Documentation/theme/static/libcamera-logo-text.svg > delete mode 100644 Documentation/theme/static/search.png > delete mode 100644 Documentation/theme/theme.conf > > diff --git a/.reuse/dep5 b/.reuse/dep5 > index c5ef5e01b0f9..9cdb56e81ae3 100644 > --- a/.reuse/dep5 > +++ b/.reuse/dep5 > @@ -6,13 +6,10 @@ Source: https://git.libcamera.org/libcamera/libcamera.git/ > Files: Documentation/binning.svg > Documentation/camera-sensor-model.rst > Documentation/sensor_model.svg > + Documentation/theme/static/libcamera-logo-text.svg > Copyright: Copyright 2023 Ideas On Board Oy > License: CC-BY-SA-4.0 > > -Files: Documentation/theme/static/search.png > -Copyright: 2022 Fonticons, Inc. > -License: CC-BY-4.0 > - > Files: src/ipa/rpi/vc4/data/*.json > utils/raspberrypi/ctt/ctt_config_example.json > utils/raspberrypi/ctt/ctt_ref.pgm > diff --git a/Documentation/conf.py.in b/Documentation/conf.py.in > index 097e579b575b..34fa3956f49e 100644 > --- a/Documentation/conf.py.in > +++ b/Documentation/conf.py.in > @@ -88,8 +88,16 @@ doxylink = { > # The theme to use for HTML and HTML Help pages. See the documentation for > # a list of builtin themes. > # > -html_theme = 'theme' > -html_theme_path = ['@THEME_DIR@'] > +html_theme = 'sphinx_book_theme' > +html_theme_path = [] > + > +html_logo = '@CURRENT_SRCDIR@/theme/static/libcamera-logo-text.svg' > + > +html_context = { > + # Set the default mode, so that syntax highlighting works without > + # javascript. > + 'default_mode': 'light' > +} > > # Theme options are theme-specific and customize the look and feel of a theme > # further. For a list of options available for each theme, see the > @@ -100,7 +108,7 @@ html_theme_path = ['@THEME_DIR@'] > # Add any paths that contain custom static files (such as style sheets) here, > # relative to this directory. They are copied after the builtin static files, > # so a file named "default.css" will overwrite the builtin "default.css". > -html_static_path = [] > +html_static_path = ['@CURRENT_SRCDIR@/theme/static'] > > # Custom sidebar templates, must be a dictionary that maps document names > # to template names. > @@ -111,3 +119,8 @@ html_static_path = [] > # 'searchbox.html']``. > # > # html_sidebars = {} > + > +html_css_files = [ > + 'custom.css', > +] > + > diff --git a/Documentation/meson.build b/Documentation/meson.build > index a8d4afc01dd1..f73407432fff 100644 > --- a/Documentation/meson.build > +++ b/Documentation/meson.build > @@ -142,7 +142,7 @@ if sphinx.found() > sphinx_conf = configure_file(input : 'conf.py.in', > output : 'conf.py', > configuration : { > - 'THEME_DIR': meson.current_source_dir(), > + 'CURRENT_SRCDIR': meson.current_source_dir(), > 'TOP_BUILDDIR': meson.project_build_root(), > }) > > diff --git a/Documentation/theme/footer.html b/Documentation/theme/footer.html > deleted file mode 100644 > index 12939e8b7c12..000000000000 > --- a/Documentation/theme/footer.html > +++ /dev/null > @@ -1,14 +0,0 @@ > -{# > -SPDX-License-Identifier: CC-BY-SA-4.0 > -#} > -<footer> > - <div id="signature"> > - {%- if show_copyright %} > - {%- if hasdoc('copyright') %} > - {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} > - {%- else %} > - {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} > - {%- endif %} > - {%- endif %} > - </div> > -</footer> > diff --git a/Documentation/theme/layout.html b/Documentation/theme/layout.html > deleted file mode 100644 > index 4fffefab62eb..000000000000 > --- a/Documentation/theme/layout.html > +++ /dev/null > @@ -1,109 +0,0 @@ > -{# > -SPDX-License-Identifier: CC-BY-SA-4.0 > -#} > -{# TEMPLATE VAR SETTINGS #} > -{%- set url_root = pathto('', 1) %} > -{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} > -{%- if not embedded and docstitle %} > - {%- set titlesuffix = " — "|safe + docstitle|e %} > -{%- else %} > - {%- set titlesuffix = "" %} > -{%- endif %} > -<!DOCTYPE html> > -<head> > - <meta charset="utf-8"> > - {{ metatags }} > - <meta name="viewport" content="width=device-width, initial-scale=1.0"> > - {% block htmltitle %} > - <title>{{ title|striptags|e }}{{ titlesuffix }}</title> > - {% endblock %} > - > - {# FAVICON #} > - {% if favicon %} > - <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> > - {% endif %} > - > - {# CSS #} > - > - {# OPENSEARCH #} > - {% if not embedded %} > - {% if use_opensearch %} > - <link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/> > - {% endif %} > - > - {% endif %} > - > - {% for cssfile in css_files %} > - <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> > - {% endfor %} > - > - {% for cssfile in extra_css_files %} > - <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> > - {% endfor %} > - > - {%- block linktags %} > - {%- if hasdoc('about') %} > - <link rel="author" title="{{ _('About these documents') }}" > - href="{{ pathto('about') }}"/> > - {%- endif %} > - {%- if hasdoc('genindex') %} > - <link rel="index" title="{{ _('Index') }}" > - href="{{ pathto('genindex') }}"/> > - {%- endif %} > - {%- if hasdoc('search') %} > - <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/> > - {%- endif %} > - {%- if hasdoc('copyright') %} > - <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/> > - {%- endif %} > - <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/> > - {%- if parents %} > - <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/> > - {%- endif %} > - {%- if next %} > - <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/> > - {%- endif %} > - {%- if prev %} > - <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/> > - {%- endif %} > - {%- endblock %} > - {%- block extrahead %} {% endblock %} > - > -</head> > - > -<body role="document"> > - <header> > - <div id="navbar"> > - <div class="navbar-brand"> > - <div class="navbar-logo"> _ > -+-/ \-+ > -| (o) | > -+-----+</div> > - <div class="navbar-name"><span class="text-light">lib</span>camera</div> > - </div> > - > - <div class="navbar"> > - {{ toctree(maxdepth=1) }} > - <div class="searchbox" role="search"> > - <form class="search" action="{{ pathto('search') }}" method="get"> > - <input type="text" name="q" /> > - <input type="submit" value="Go" /> > - <input type="hidden" name="check_keywords" value="yes" /> > - <input type="hidden" name="area" value="default" /> > - </form> > - </div> > - </div> > - > - </div> > - </header> > - > - <div id="content"> > - {# PAGE CONTENT #} > - <div class="block"> > - {% block body %}{% endblock %} > - </div> > - </div> > - > - {% include "footer.html" %} > -</body> > -</html> > diff --git a/Documentation/theme/search.html b/Documentation/theme/search.html > deleted file mode 100644 > index 00c2af93a1b3..000000000000 > --- a/Documentation/theme/search.html > +++ /dev/null > @@ -1,63 +0,0 @@ > -{# > -SPDX-License-Identifier: CC-BY-SA-4.0 > -#} > -{# > - basic/search.html > - ~~~~~~~~~~~~~~~~~ > - > - Template for the search page. > - > - :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. > - :license: BSD, see LICENSE for details. > -#} > -{%- extends "layout.html" %} > -{% block extrahead %} > - <script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script> > - {%- for scriptfile in script_files %} > - <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> > - {%- endfor %} > - <script type="text/javascript" src="_static/searchtools.js"></script> > - <script type="text/javascript"> > - jQuery(function() { Search.loadIndex("{{ pathto('searchindex.js', 1) }}"); }); > - </script> > - {# this is used when loading the search index using $.ajax fails, > - such as on Chrome for documents on localhost #} > - <script type="text/javascript" id="searchindexloader"></script> > -{% endblock %} > -{% block body %} > - <h1 id="search-documentation">{{ _('Search') }}</h1> > - <div id="fallback" class="admonition warning"> > - <script type="text/javascript">$('#fallback').hide();</script> > - <p> > - Please activate JavaScript to enable the search functionality. > - </p> > - </div> > - <p> > - From here you can search these documents. Enter your search > - words into the box below and click "search". Note that the search > - function will automatically search for all of the words. Pages > - containing fewer words won't appear in the result list. > - </p> > - <form action="" method="get"> > - <input type="text" name="q" value="" /> > - <input type="submit" value="{{ _('search') }}" /> > - <span id="search-progress" style="padding-left: 10px"></span> > - </form> > - {% if search_performed %} > - <h2>{{ _('Search Results') }}</h2> > - {% if not search_results %} > - <p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p> > - {% endif %} > - {% endif %} > - <div id="search-results"> > - {% if search_results %} > - <ul> > - {% for href, caption, context in search_results %} > - <li><a href="{{ pathto(item.href) }}">{{ caption }}</a> > - <div class="context">{{ context|e }}</div> > - </li> > - {% endfor %} > - </ul> > - {% endif %} > - </div> > -{% endblock %} > diff --git a/Documentation/theme/static/css/theme.css b/Documentation/theme/static/css/theme.css > deleted file mode 100644 > index a6d43195c018..000000000000 > --- a/Documentation/theme/static/css/theme.css > +++ /dev/null > @@ -1,295 +0,0 @@ > -/* SPDX-License-Identifier: CC-BY-SA-4.0 */ > - > -html { > - background-image: linear-gradient(to bottom right, #4895e1, #56c3ae); > - background-size: cover; > - background-repeat: no-repeat; > - min-height: 100vh; > -} > - > -body { > - color: rgb(0, 0, 0, 0.65); > - font-family: Arial, sans-serif; > - margin: 0px; > -} > - > -a { > - color: unset; > - font-weight: bold; > - text-decoration: underline dotted; > -} > - > -a.headerlink { > - color: rgba(0, 0, 0, 0.2); > - font-size: 70%; > - padding-left: 5px; > - visibility: hidden; > -} > - > -a.toc-backref { > - text-decoration: none; > -} > - > -h1:hover a.headerlink, > -h2:hover a.headerlink, > -h3:hover a.headerlink, > -h4:hover a.headerlink, > -h5:hover a.headerlink, > -h6:hover a.headerlink { > - visibility: visible; > -} > - > -dt { > - font-weight: bold; > -} > - > -.text-light { > - color: rgba(255, 255, 255, 0.3); > -} > - > -div#navbar { > - margin-top: 0px; > -} > - > -div.navbar-brand { > - color: rgb(255, 255, 255, 1.0); > - float: left; > - font-size: 36px; > - margin: 0px 24px 24px 24px; > -} > - > -div.navbar-logo { > - float: left; > - font-family: monospace; > - font-size: 18px; > - font-weight: bold; > - white-space: pre; > -} > - > -div.navbar-name { > - float: left; > - color: rgb(255, 255, 255, 1.0); > - font-size: 34px; > - margin-top: 31px; > - margin-left: 10px; > - padding-top: 1px; > -} > - > -div.navbar { > - float: right; > -} > - > -div.navbar p.caption { > - height: 0px; > - margin: 0px; > - visibility: hidden; > -} > - > -div.navbar ul { > - float: left; > - font-size: 24px; > - list-style: none; > - margin-top: 42px; > - margin-right: 20px; > - padding-left: 0px; > -} > - > -div.navbar a { > - font-weight: normal; > - text-decoration: none; > -} > - > -div.navbar li { > - float: left; > - margin-left: 20px; > - margin-right: 20px; > - position: relative; > -} > - > -div.navbar li a { > - color: rgb(255, 255, 255, 0.5); > - position: relative; > -} > - > -div.navbar li a:before { > - content: ""; > - position: absolute; > - width: 100%; > - height: 2px; > - bottom: 0; > - left: 0; > - background-color: rgb(255, 255, 255, 0.5); > - visibility: hidden; > - transform: scaleX(0); > - transition: all 0.3s ease-in-out 0s; > -} > - > -div.navbar li a:hover { > - color: rgb(255, 255, 255, 1.0); > -} > - > -div.navbar li a:hover:before { > - visibility: visible; > - transform: scaleX(1); > -} > - > -div.navbar li.current a { > - color: rgb(255, 255, 255, 1.0); > -} > - > -div.navbar li.current a:before { > - visibility: visible; > - transform: unset; > - transition: unset; > -} > - > -div.navbar div.searchbox { > - background-color: white; > - float: right; > - margin-right: 50px; > - margin-top: 42px; > -} > - > -div.navbar input[type=text] { > - border-width: 0; > - height: 2em; > - margin-left: 10px; > - margin-right: 5px; > -} > - > -div.navbar input[type=submit] { > - background-color: white; > - background-image: url(../search.png); > - background-repeat: no-repeat; > - border-width: 0; > - color: rgba(0, 0, 0, 0); > - margin-right: 2px; > - width: 20px; > -} > - > -div#frontpage { > - clear: both; > - padding-top: 50px; > - margin-left: auto; > - margin-right: auto; > - width: 75%; > - display: flex; > - justify-content: space-between; > -} > - > -div#frontpage > div.block { > - background-color: white; > - border-radius: 5px; > - box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 40px 0 rgba(0, 0, 0, 0.19); > - color: rgb(0, 0, 0, 0.5); > - font-size: 20px; > - margin-bottom: 40px; > - margin-right: 20px; > - margin-left: 20px; > - padding: 20px 60px 20px 60px; > - text-align: center; > - width: 50%; > -} > - > -div#frontpage > div.block h1 { > - font-size: 64px; > - padding-left: 20%; > - padding-right: 20%; > - text-align: center; > - text-shadow: 4px 4px 5px; > -} > - > -div#content { > - background-color: white; > - clear: both; > - padding-top: 50px; > - padding-bottom: 50px; > - margin-left: 0px; > - margin-right: 0px; > -} > - > -div#content > div.block { > - font-size: 16px; > - margin-right: 0px; > - margin-left: 0px; > - max-width: 1280px; > - padding: 0px 60px 0px 60px; > - text-align: justify; > -} > - > -div#content > div.block h1 { > - font-size: 40px; > - margin-top: 0px; > - text-align: left; > -} > - > -div#content > div.block > div.section { > - max-width: 800px; > -} > - > -div.local.topic { > - float: right; > - background-color: #fcfcff; > - border: 1px dotted #4896e0; > - margin-left: 20px; > - margin-right: 0px; > - max-width: 15em; > - padding: 10px 20px 10px 10px; > - text-align: left; > -} > - > -div.local.topic ul { > - padding-left: 20px; > - margin-bottom: 5px; > -} > - > -div.local.topic > ul:before { > - content: "Contents"; > - display: block; > - font-weight: bold; > - margin-bottom: 10px; > -} > - > -div.local.topic a { > - font-weight: normal; > - padding-left: 10px; > - text-decoration: none; > -} > - > -div.highlight-shell > div.highlight > pre, > -pre.console { > - background-color: #fcfcff; > - border: 1px dotted #4896e0; > - margin-left: 0em; > - padding: 10px; > - text-align: left; > -} > - > -div.highlight-default > div.highlight > pre, > -pre.diagram { > - background-color: #fcfcff; > - border: 1px dotted #4896e0; > - font-size: 12px; > - margin-left: 0em; > - padding: 10px; > - text-align: left; > - width: 47em; > -} > - > -div#signature { > - color: rgb(255, 255, 255, 0.5); > - margin: 20px; > - float: right; > - font-size: 12px; > -} > - > -#licensing div.toctree-wrapper { > - height: 0px; > - margin: 0px; > - padding: 0px; > - visibility: hidden; > -} > - > -.documentation-nav { > - display: none; > -} > diff --git a/Documentation/theme/static/custom.css b/Documentation/theme/static/custom.css > new file mode 100644 > index 000000000000..0be62294490a > --- /dev/null > +++ b/Documentation/theme/static/custom.css > @@ -0,0 +1,5 @@ > +/* SPDX-License-Identifier: CC-BY-SA-4.0 */ > +/* Hide the documentation nav. It is only used on the website. */ > +.documentation-nav { > + display: none; > +} > diff --git a/Documentation/theme/static/libcamera-logo-text.svg b/Documentation/theme/static/libcamera-logo-text.svg > new file mode 100644 > index 000000000000..e623e3219a90 > --- /dev/null > +++ b/Documentation/theme/static/libcamera-logo-text.svg > @@ -0,0 +1,223 @@ > +<?xml version="1.0" encoding="UTF-8" standalone="no"?> > +<!-- Created with Inkscape (http://www.inkscape.org/) --> > + > +<svg > + width="76.987656mm" > + height="27.246868mm" > + viewBox="0 0 76.987653 27.246868" > + version="1.1" > + id="svg885" > + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" > + sodipodi:docname="libcamera-logo-text.svg" > + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" > + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" > + xmlns:xlink="http://www.w3.org/1999/xlink" > + xmlns="http://www.w3.org/2000/svg" > + xmlns:svg="http://www.w3.org/2000/svg" > + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > + xmlns:cc="http://creativecommons.org/ns#" > + xmlns:dc="http://purl.org/dc/elements/1.1/"> > + <defs > + id="defs879"> > + <linearGradient > + inkscape:collect="always" > + id="libcamera-gradient"> > + <stop > + style="stop-color:#4a9cd8;stop-opacity:1;" > + offset="0" > + id="stop837" /> > + <stop > + style="stop-color:#4da5ce;stop-opacity:1;" > + offset="1" > + id="stop839" /> > + </linearGradient> > + <linearGradient > + inkscape:collect="always" > + xlink:href="#libcamera-gradient" > + id="linearGradient843" > + x1="36.235832" > + y1="124.7846" > + x2="169.38322" > + y2="124.7846" > + gradientUnits="userSpaceOnUse" > + gradientTransform="matrix(0.5782953,0,0,0.34895428,44.509503,81.842882)" /> > + </defs> > + <sodipodi:namedview > + id="base" > + pagecolor="#ffffff" > + bordercolor="#666666" > + borderopacity="1.0" > + inkscape:pageopacity="0.0" > + inkscape:pageshadow="2" > + inkscape:zoom="2.8" > + inkscape:cx="101.07143" > + inkscape:cy="113.03571" > + inkscape:document-units="mm" > + inkscape:current-layer="layer2" > + showgrid="false" > + inkscape:window-width="2560" > + inkscape:window-height="1531" > + inkscape:window-x="0" > + inkscape:window-y="0" > + inkscape:window-maximized="1" > + fit-margin-top="0" > + fit-margin-left="0" > + fit-margin-right="0" > + fit-margin-bottom="0" > + inkscape:showpageshadow="2" > + inkscape:pagecheckerboard="0" > + inkscape:deskcolor="#d1d1d1" /> > + <metadata > + id="metadata882"> > + <rdf:RDF> > + <cc:Work > + rdf:about=""> > + <dc:format>image/svg+xml</dc:format> > + <dc:type > + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> > + <dc:title /> > + </cc:Work> > + </rdf:RDF> > + </metadata> > + <g > + inkscape:groupmode="layer" > + id="layer2" > + inkscape:label="background" > + transform="translate(-65.469925,-111.76357)"> > + <rect > + style="opacity:1;fill:url(#linearGradient843);fill-opacity:1;stroke:#1a1a1a;stroke-width:0.0377345;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" > + id="rect824" > + width="76.949921" > + height="27.209133" > + x="65.488792" > + y="111.78244" /> > + </g> > + <g > + inkscape:label="LogoLayer" > + inkscape:groupmode="layer" > + id="layer1" > + transform="translate(-65.469925,-111.76357)"> > + <g > + aria-label=" _ +-/ \-+ | (o) | +-----+" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583" > + id="text1432"> > + <path > + d="m 85.263307,117.54782 v 0.39275 h -2.548682 v -0.39275 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path928" /> > + <path > + d="m 76.587868,119.76991 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89296 h -0.489893 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path930" /> > + <path > + d="m 78.239446,120.71456 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path932" /> > + <path > + d="m 82.024228,119.14773 h 0.45682 l -1.624707,3.47885 h -0.45682 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path934" /> > + <path > + d="m 85.953704,119.14773 1.624707,3.47885 h -0.460954 l -1.624707,-3.47885 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path936" /> > + <path > + d="m 88.434172,120.71456 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path938" /> > + <path > + d="m 91.879957,119.76991 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89296 h -0.489892 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path940" /> > + <path > + d="m 76.575465,124.29057 v 4.23333 h -0.469222 v -4.23333 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path942" /> > + <path > + d="m 82.075904,124.3133 q -0.272851,0.49403 -0.405143,0.95705 -0.132291,0.46302 -0.132291,0.92604 0,0.45889 0.132291,0.92604 0.132292,0.46509 0.405143,0.96119 h -0.471289 q -0.328662,-0.4775 -0.487825,-0.94052 -0.159163,-0.46508 -0.159163,-0.94671 0,-0.47956 0.159163,-0.94464 0.16123,-0.46716 0.487825,-0.93845 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path944" /> > + <path > + d="m 83.987933,125.64655 q -0.217041,0 -0.341065,0.19224 -0.124023,0.19017 -0.124023,0.53123 0,0.34107 0.124023,0.53331 0.124024,0.19016 0.341065,0.19016 0.219108,0 0.343131,-0.19016 0.124024,-0.19224 0.124024,-0.53331 0,-0.34106 -0.124024,-0.53123 -0.124023,-0.19224 -0.343131,-0.19224 z m -1.070736,0.72347 q 0,-0.56017 0.289388,-0.88676 0.291455,-0.32866 0.781348,-0.32866 0.491959,0 0.781347,0.32866 0.291455,0.32659 0.291455,0.88676 0,0.56018 -0.291455,0.88884 -0.289388,0.32659 -0.781347,0.32659 -0.489893,0 -0.781348,-0.32659 -0.289388,-0.32866 -0.289388,-0.88884 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path946" /> > + <path > + d="m 85.902027,124.3133 h 0.471289 q 0.326595,0.47129 0.485759,0.93845 0.16123,0.46508 0.16123,0.94464 0,0.48163 -0.159163,0.94671 -0.159164,0.46302 -0.487826,0.94052 h -0.471289 q 0.272852,-0.4961 0.405143,-0.96119 0.132292,-0.46715 0.132292,-0.92604 0,-0.46302 -0.132292,-0.92604 -0.132291,-0.46302 -0.405143,-0.95705 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path948" /> > + <path > + d="m 91.867555,124.29057 v 4.23333 h -0.469222 v -4.23333 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path950" /> > + <path > + d="m 76.587868,130.35324 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89297 h -0.489893 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path952" /> > + <path > + d="m 78.239446,131.29789 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path954" /> > + <path > + d="m 80.788128,131.29789 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path956" /> > + <path > + d="m 83.33681,131.29789 h 1.304313 v 0.60151 H 83.33681 Z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path958" /> > + <path > + d="m 85.885491,131.29789 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path960" /> > + <path > + d="m 88.434172,131.29789 h 1.304313 v 0.60151 h -1.304313 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path962" /> > + <path > + d="m 91.879957,130.35324 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89297 h -0.489892 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" > + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" > + id="path964" /> > + </g> > + <g > + aria-label="libcamera" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:1.25;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" > + id="text1442"> > + <path > + d="m 97.705568,129.92384 q -0.626534,0 -0.948267,-0.36407 -0.313267,-0.37253 -0.313267,-1.07526 v -4.60587 h 0.6858 v 4.55507 q 0,0.90593 0.719667,0.90593 0.211667,0 0.381,-0.0508 l -0.01693,0.57573 q -0.262467,0.0593 -0.508,0.0593 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" > + id="path909" /> > + <path > + d="m 98.865497,124.70837 v -0.77046 h 0.846666 v 0.77046 z m 0.08467,5.13927 v -4.1148 h 0.685799 v 4.1148 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" > + id="path911" /> > + <path > + d="m 102.99722,129.92384 q -0.49107,0 -0.8636,-0.22013 -0.36407,-0.22014 -0.55034,-0.60114 v 0.74507 h -0.66886 v -5.969 h 0.6858 v 2.5654 q 0.1778,-0.36407 0.55033,-0.57573 0.37253,-0.21167 0.84667,-0.21167 0.55033,0 0.95673,0.26247 0.41487,0.254 0.635,0.7366 0.2286,0.47413 0.2286,1.13453 0,0.65193 -0.2286,1.13453 -0.22013,0.47414 -0.635,0.7366 -0.4064,0.26247 -0.95673,0.26247 z m -0.14394,-0.55033 q 0.57574,0 0.92287,-0.4064 0.34713,-0.41487 0.34713,-1.17687 0,-0.77047 -0.34713,-1.17687 -0.34713,-0.4064 -0.92287,-0.4064 -0.57573,0 -0.92286,0.4064 -0.34714,0.4064 -0.34714,1.17687 0,0.762 0.34714,1.17687 0.34713,0.4064 0.92286,0.4064 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" > + id="path913" /> > + <path > + d="m 107.5946,129.92384 q -0.61806,0 -1.0668,-0.26247 -0.44873,-0.27093 -0.69426,-0.75353 -0.23707,-0.49107 -0.23707,-1.143 0,-0.98213 0.5334,-1.54093 0.5334,-0.56727 1.46473,-0.56727 0.381,0 0.75354,0.13547 0.37253,0.13546 0.61806,0.381 l -0.23706,0.49953 q -0.24554,-0.23707 -0.54187,-0.34713 -0.28787,-0.11007 -0.55033,-0.11007 -0.64347,0 -0.9906,0.4064 -0.34714,0.39793 -0.34714,1.15147 0,0.7366 0.34714,1.1684 0.34713,0.42333 0.9906,0.42333 0.26246,0 0.55033,-0.11007 0.29633,-0.11006 0.54187,-0.3556 l 0.23706,0.49954 q -0.24553,0.24553 -0.62653,0.38946 -0.37253,0.13547 -0.74507,0.13547 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path915" /> > + <path > + d="m 111.03205,129.92384 q -0.42333,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52493,-0.4572 -0.19474,-0.28786 -0.19474,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54187,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37253,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23706,-0.49954 q 0.32173,-0.2286 0.77893,-0.36406 0.46567,-0.13547 0.889,-0.13547 0.79587,0 1.17687,0.38947 0.38946,0.38946 0.38946,1.21073 v 2.5908 h -0.64346 v -0.7112 q -0.16087,0.36407 -0.49954,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11007,-0.51647 q 0.508,0 0.82973,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26246 q -0.6858,0 -1.08374,0.0677 -0.38946,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23707,0.56727 0.24553,0.22013 0.6604,0.22013 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path917" /> > + <path > + d="m 114.24091,129.84764 v -4.1148 h 0.66886 v 0.69427 q 0.18627,-0.37254 0.51647,-0.56727 0.3302,-0.2032 0.77047,-0.2032 0.9652,0 1.23613,0.8382 0.18627,-0.38947 0.55033,-0.6096 0.36407,-0.2286 0.8382,-0.2286 1.3716,0 1.3716,1.6256 v 2.5654 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.49953,0 -0.79587,0.3556 -0.29633,0.3556 -0.29633,0.94827 v 2.32833 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.508,0 -0.80434,0.3556 -0.28786,0.3556 -0.28786,0.94827 v 2.32833 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path919" /> > + <path > + d="m 123.32563,129.92384 q -0.97367,0 -1.54093,-0.56727 -0.56727,-0.57573 -0.56727,-1.55786 0,-0.635 0.254,-1.1176 0.254,-0.49107 0.69427,-0.75354 0.44873,-0.27093 1.03293,-0.27093 0.8382,0 1.31233,0.54187 0.47414,0.5334 0.47414,1.4732 v 0.26246 h -3.0988 q 0.0339,0.70274 0.4064,1.07527 0.37253,0.36407 1.03293,0.36407 0.37253,0 0.7112,-0.11007 0.33867,-0.11853 0.64347,-0.381 l 0.23706,0.4826 q -0.2794,0.26247 -0.7112,0.41487 -0.4318,0.14393 -0.88053,0.14393 z m -0.11007,-3.7592 q -0.5842,0 -0.92286,0.36407 -0.33867,0.36406 -0.39794,0.95673 h 2.49767 q -0.0254,-0.62653 -0.3302,-0.97367 -0.29633,-0.34713 -0.84667,-0.34713 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path921" /> > + <path > + d="m 125.97569,129.84764 v -4.1148 h 0.66887 v 0.7366 q 0.3302,-0.74507 1.35467,-0.82127 l 0.24553,-0.0254 0.0508,0.59267 -0.4318,0.0508 q -0.5842,0.0508 -0.889,0.37253 -0.3048,0.31327 -0.3048,0.8636 v 2.34527 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path923" /> > + <path > + d="m 130.25982,129.92384 q -0.42334,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52494,-0.4572 -0.19473,-0.28786 -0.19473,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54186,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37254,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23707,-0.49954 q 0.32174,-0.2286 0.77894,-0.36406 0.46566,-0.13547 0.889,-0.13547 0.79586,0 1.17686,0.38947 0.38947,0.38946 0.38947,1.21073 v 2.5908 h -0.64347 v -0.7112 q -0.16086,0.36407 -0.49953,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11006,-0.51647 q 0.508,0 0.82974,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26247 q -0.6858,0 -1.08373,0.0677 -0.38947,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23706,0.56727 0.24554,0.22013 0.6604,0.22013 z" > + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" > + id="path925" /> > + </g> > + </g> > +</svg> > diff --git a/Documentation/theme/static/search.png b/Documentation/theme/static/search.png > deleted file mode 100644 > index a93c40eb08106554488deaed910aba0f5aef5ec5..0000000000000000000000000000000000000000 > GIT binary patch > literal 0 > HcmV?d00001 > > literal 482 > zcmV<80UiE{P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000ie > z000ie0hKEb8vp<Slu1NER49>S{Qv(y11W$BjsN}6-{)Vx|M`d06c#vZ@BJ4Ihb|v` > z{Q4gQ11Af!uc~y5qrR#TFPa8Mh?6FtzL~%Ctf7Qpw2q<#567){pJ$)D^X1p?EfEg3 > za$+bt{{R1f{K;#k=A~KNPW}D&?>`KD`0>kj!7kC>HSfRw{Eq|}{{R0UwEB?Fj4jBj > zA>iq!ZyasQJC9yP7Gz>zU^w*fRiw586C)#<bESAW9Tmh6KYooKN}qoImf+#Q8YU7v > zoF9JtLf4=mz<u-WC#)K-zxk-Z&yB7jNJDnvrTZU${zg-M;^~_cPv3@W$)Rf~w$Nl| > zWb|2a;MLb3aEbFT-iNL^%+1QID8PfP0U8e%UcUEQzW>wD-<~Q`l02L@-hA47{{;&Z > z)31O31UcCD$2#ka3!-RXU|{(0<Ja`FxA)wC@!`iWMFE}wbr~Z`A=?GJ-~IR{%Ef*# > z&Q(){4@Co3aOU|t=f!(I{rV%x!*M9iRYiywJ@KId6G@@%QBFLpEYH9E$l89Iunm|1 > Y03N>L+`-G70ssI207*qoM6N<$g81y{PXGV_ > > diff --git a/Documentation/theme/theme.conf b/Documentation/theme/theme.conf > deleted file mode 100644 > index f2ab39c33c5b..000000000000 > --- a/Documentation/theme/theme.conf > +++ /dev/null > @@ -1,7 +0,0 @@ > -# SPDX-License-Identifier: CC-BY-SA-4.0 > - > -[theme] > -inherit = basic > -stylesheet = css/theme.css > - > -[options] > diff --git a/README.rst b/README.rst > index 7c8bc6db6712..56b2e0956e36 100644 > --- a/README.rst > +++ b/README.rst > @@ -67,8 +67,8 @@ for device hotplug enumeration: [optional] > libudev-dev > > for documentation: [optional] > - doxygen graphviz python3-sphinx python3-sphinxcontrib.doxylink (>= 1.6.1) > - texlive-latex-extra > + doxygen graphviz python3-sphinx python3-sphinx-book-theme > + python3-sphinxcontrib.doxylink (>= 1.6.1) texlive-latex-extra > > for gstreamer: [optional] > libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev > -- > Regards, > > Laurent Pinchart >
diff --git a/.reuse/dep5 b/.reuse/dep5 index c5ef5e01b0f9..9cdb56e81ae3 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -6,13 +6,10 @@ Source: https://git.libcamera.org/libcamera/libcamera.git/ Files: Documentation/binning.svg Documentation/camera-sensor-model.rst Documentation/sensor_model.svg + Documentation/theme/static/libcamera-logo-text.svg Copyright: Copyright 2023 Ideas On Board Oy License: CC-BY-SA-4.0 -Files: Documentation/theme/static/search.png -Copyright: 2022 Fonticons, Inc. -License: CC-BY-4.0 - Files: src/ipa/rpi/vc4/data/*.json utils/raspberrypi/ctt/ctt_config_example.json utils/raspberrypi/ctt/ctt_ref.pgm diff --git a/Documentation/conf.py.in b/Documentation/conf.py.in index 097e579b575b..34fa3956f49e 100644 --- a/Documentation/conf.py.in +++ b/Documentation/conf.py.in @@ -88,8 +88,16 @@ doxylink = { # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'theme' -html_theme_path = ['@THEME_DIR@'] +html_theme = 'sphinx_book_theme' +html_theme_path = [] + +html_logo = '@CURRENT_SRCDIR@/theme/static/libcamera-logo-text.svg' + +html_context = { + # Set the default mode, so that syntax highlighting works without + # javascript. + 'default_mode': 'light' +} # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -100,7 +108,7 @@ html_theme_path = ['@THEME_DIR@'] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = [] +html_static_path = ['@CURRENT_SRCDIR@/theme/static'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -111,3 +119,8 @@ html_static_path = [] # 'searchbox.html']``. # # html_sidebars = {} + +html_css_files = [ + 'custom.css', +] + diff --git a/Documentation/meson.build b/Documentation/meson.build index a8d4afc01dd1..f73407432fff 100644 --- a/Documentation/meson.build +++ b/Documentation/meson.build @@ -142,7 +142,7 @@ if sphinx.found() sphinx_conf = configure_file(input : 'conf.py.in', output : 'conf.py', configuration : { - 'THEME_DIR': meson.current_source_dir(), + 'CURRENT_SRCDIR': meson.current_source_dir(), 'TOP_BUILDDIR': meson.project_build_root(), }) diff --git a/Documentation/theme/footer.html b/Documentation/theme/footer.html deleted file mode 100644 index 12939e8b7c12..000000000000 --- a/Documentation/theme/footer.html +++ /dev/null @@ -1,14 +0,0 @@ -{# -SPDX-License-Identifier: CC-BY-SA-4.0 -#} -<footer> - <div id="signature"> - {%- if show_copyright %} - {%- if hasdoc('copyright') %} - {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} - {%- else %} - {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} - {%- endif %} - {%- endif %} - </div> -</footer> diff --git a/Documentation/theme/layout.html b/Documentation/theme/layout.html deleted file mode 100644 index 4fffefab62eb..000000000000 --- a/Documentation/theme/layout.html +++ /dev/null @@ -1,109 +0,0 @@ -{# -SPDX-License-Identifier: CC-BY-SA-4.0 -#} -{# TEMPLATE VAR SETTINGS #} -{%- set url_root = pathto('', 1) %} -{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} -{%- if not embedded and docstitle %} - {%- set titlesuffix = " — "|safe + docstitle|e %} -{%- else %} - {%- set titlesuffix = "" %} -{%- endif %} -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - {{ metatags }} - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - {% block htmltitle %} - <title>{{ title|striptags|e }}{{ titlesuffix }}</title> - {% endblock %} - - {# FAVICON #} - {% if favicon %} - <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> - {% endif %} - - {# CSS #} - - {# OPENSEARCH #} - {% if not embedded %} - {% if use_opensearch %} - <link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/> - {% endif %} - - {% endif %} - - {% for cssfile in css_files %} - <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> - {% endfor %} - - {% for cssfile in extra_css_files %} - <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> - {% endfor %} - - {%- block linktags %} - {%- if hasdoc('about') %} - <link rel="author" title="{{ _('About these documents') }}" - href="{{ pathto('about') }}"/> - {%- endif %} - {%- if hasdoc('genindex') %} - <link rel="index" title="{{ _('Index') }}" - href="{{ pathto('genindex') }}"/> - {%- endif %} - {%- if hasdoc('search') %} - <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/> - {%- endif %} - {%- if hasdoc('copyright') %} - <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/> - {%- endif %} - <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/> - {%- if parents %} - <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/> - {%- endif %} - {%- if next %} - <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/> - {%- endif %} - {%- if prev %} - <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/> - {%- endif %} - {%- endblock %} - {%- block extrahead %} {% endblock %} - -</head> - -<body role="document"> - <header> - <div id="navbar"> - <div class="navbar-brand"> - <div class="navbar-logo"> _ -+-/ \-+ -| (o) | -+-----+</div> - <div class="navbar-name"><span class="text-light">lib</span>camera</div> - </div> - - <div class="navbar"> - {{ toctree(maxdepth=1) }} - <div class="searchbox" role="search"> - <form class="search" action="{{ pathto('search') }}" method="get"> - <input type="text" name="q" /> - <input type="submit" value="Go" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> - </div> - </div> - - </div> - </header> - - <div id="content"> - {# PAGE CONTENT #} - <div class="block"> - {% block body %}{% endblock %} - </div> - </div> - - {% include "footer.html" %} -</body> -</html> diff --git a/Documentation/theme/search.html b/Documentation/theme/search.html deleted file mode 100644 index 00c2af93a1b3..000000000000 --- a/Documentation/theme/search.html +++ /dev/null @@ -1,63 +0,0 @@ -{# -SPDX-License-Identifier: CC-BY-SA-4.0 -#} -{# - basic/search.html - ~~~~~~~~~~~~~~~~~ - - Template for the search page. - - :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -#} -{%- extends "layout.html" %} -{% block extrahead %} - <script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script> - {%- for scriptfile in script_files %} - <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> - {%- endfor %} - <script type="text/javascript" src="_static/searchtools.js"></script> - <script type="text/javascript"> - jQuery(function() { Search.loadIndex("{{ pathto('searchindex.js', 1) }}"); }); - </script> - {# this is used when loading the search index using $.ajax fails, - such as on Chrome for documents on localhost #} - <script type="text/javascript" id="searchindexloader"></script> -{% endblock %} -{% block body %} - <h1 id="search-documentation">{{ _('Search') }}</h1> - <div id="fallback" class="admonition warning"> - <script type="text/javascript">$('#fallback').hide();</script> - <p> - Please activate JavaScript to enable the search functionality. - </p> - </div> - <p> - From here you can search these documents. Enter your search - words into the box below and click "search". Note that the search - function will automatically search for all of the words. Pages - containing fewer words won't appear in the result list. - </p> - <form action="" method="get"> - <input type="text" name="q" value="" /> - <input type="submit" value="{{ _('search') }}" /> - <span id="search-progress" style="padding-left: 10px"></span> - </form> - {% if search_performed %} - <h2>{{ _('Search Results') }}</h2> - {% if not search_results %} - <p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p> - {% endif %} - {% endif %} - <div id="search-results"> - {% if search_results %} - <ul> - {% for href, caption, context in search_results %} - <li><a href="{{ pathto(item.href) }}">{{ caption }}</a> - <div class="context">{{ context|e }}</div> - </li> - {% endfor %} - </ul> - {% endif %} - </div> -{% endblock %} diff --git a/Documentation/theme/static/css/theme.css b/Documentation/theme/static/css/theme.css deleted file mode 100644 index a6d43195c018..000000000000 --- a/Documentation/theme/static/css/theme.css +++ /dev/null @@ -1,295 +0,0 @@ -/* SPDX-License-Identifier: CC-BY-SA-4.0 */ - -html { - background-image: linear-gradient(to bottom right, #4895e1, #56c3ae); - background-size: cover; - background-repeat: no-repeat; - min-height: 100vh; -} - -body { - color: rgb(0, 0, 0, 0.65); - font-family: Arial, sans-serif; - margin: 0px; -} - -a { - color: unset; - font-weight: bold; - text-decoration: underline dotted; -} - -a.headerlink { - color: rgba(0, 0, 0, 0.2); - font-size: 70%; - padding-left: 5px; - visibility: hidden; -} - -a.toc-backref { - text-decoration: none; -} - -h1:hover a.headerlink, -h2:hover a.headerlink, -h3:hover a.headerlink, -h4:hover a.headerlink, -h5:hover a.headerlink, -h6:hover a.headerlink { - visibility: visible; -} - -dt { - font-weight: bold; -} - -.text-light { - color: rgba(255, 255, 255, 0.3); -} - -div#navbar { - margin-top: 0px; -} - -div.navbar-brand { - color: rgb(255, 255, 255, 1.0); - float: left; - font-size: 36px; - margin: 0px 24px 24px 24px; -} - -div.navbar-logo { - float: left; - font-family: monospace; - font-size: 18px; - font-weight: bold; - white-space: pre; -} - -div.navbar-name { - float: left; - color: rgb(255, 255, 255, 1.0); - font-size: 34px; - margin-top: 31px; - margin-left: 10px; - padding-top: 1px; -} - -div.navbar { - float: right; -} - -div.navbar p.caption { - height: 0px; - margin: 0px; - visibility: hidden; -} - -div.navbar ul { - float: left; - font-size: 24px; - list-style: none; - margin-top: 42px; - margin-right: 20px; - padding-left: 0px; -} - -div.navbar a { - font-weight: normal; - text-decoration: none; -} - -div.navbar li { - float: left; - margin-left: 20px; - margin-right: 20px; - position: relative; -} - -div.navbar li a { - color: rgb(255, 255, 255, 0.5); - position: relative; -} - -div.navbar li a:before { - content: ""; - position: absolute; - width: 100%; - height: 2px; - bottom: 0; - left: 0; - background-color: rgb(255, 255, 255, 0.5); - visibility: hidden; - transform: scaleX(0); - transition: all 0.3s ease-in-out 0s; -} - -div.navbar li a:hover { - color: rgb(255, 255, 255, 1.0); -} - -div.navbar li a:hover:before { - visibility: visible; - transform: scaleX(1); -} - -div.navbar li.current a { - color: rgb(255, 255, 255, 1.0); -} - -div.navbar li.current a:before { - visibility: visible; - transform: unset; - transition: unset; -} - -div.navbar div.searchbox { - background-color: white; - float: right; - margin-right: 50px; - margin-top: 42px; -} - -div.navbar input[type=text] { - border-width: 0; - height: 2em; - margin-left: 10px; - margin-right: 5px; -} - -div.navbar input[type=submit] { - background-color: white; - background-image: url(../search.png); - background-repeat: no-repeat; - border-width: 0; - color: rgba(0, 0, 0, 0); - margin-right: 2px; - width: 20px; -} - -div#frontpage { - clear: both; - padding-top: 50px; - margin-left: auto; - margin-right: auto; - width: 75%; - display: flex; - justify-content: space-between; -} - -div#frontpage > div.block { - background-color: white; - border-radius: 5px; - box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 40px 0 rgba(0, 0, 0, 0.19); - color: rgb(0, 0, 0, 0.5); - font-size: 20px; - margin-bottom: 40px; - margin-right: 20px; - margin-left: 20px; - padding: 20px 60px 20px 60px; - text-align: center; - width: 50%; -} - -div#frontpage > div.block h1 { - font-size: 64px; - padding-left: 20%; - padding-right: 20%; - text-align: center; - text-shadow: 4px 4px 5px; -} - -div#content { - background-color: white; - clear: both; - padding-top: 50px; - padding-bottom: 50px; - margin-left: 0px; - margin-right: 0px; -} - -div#content > div.block { - font-size: 16px; - margin-right: 0px; - margin-left: 0px; - max-width: 1280px; - padding: 0px 60px 0px 60px; - text-align: justify; -} - -div#content > div.block h1 { - font-size: 40px; - margin-top: 0px; - text-align: left; -} - -div#content > div.block > div.section { - max-width: 800px; -} - -div.local.topic { - float: right; - background-color: #fcfcff; - border: 1px dotted #4896e0; - margin-left: 20px; - margin-right: 0px; - max-width: 15em; - padding: 10px 20px 10px 10px; - text-align: left; -} - -div.local.topic ul { - padding-left: 20px; - margin-bottom: 5px; -} - -div.local.topic > ul:before { - content: "Contents"; - display: block; - font-weight: bold; - margin-bottom: 10px; -} - -div.local.topic a { - font-weight: normal; - padding-left: 10px; - text-decoration: none; -} - -div.highlight-shell > div.highlight > pre, -pre.console { - background-color: #fcfcff; - border: 1px dotted #4896e0; - margin-left: 0em; - padding: 10px; - text-align: left; -} - -div.highlight-default > div.highlight > pre, -pre.diagram { - background-color: #fcfcff; - border: 1px dotted #4896e0; - font-size: 12px; - margin-left: 0em; - padding: 10px; - text-align: left; - width: 47em; -} - -div#signature { - color: rgb(255, 255, 255, 0.5); - margin: 20px; - float: right; - font-size: 12px; -} - -#licensing div.toctree-wrapper { - height: 0px; - margin: 0px; - padding: 0px; - visibility: hidden; -} - -.documentation-nav { - display: none; -} diff --git a/Documentation/theme/static/custom.css b/Documentation/theme/static/custom.css new file mode 100644 index 000000000000..0be62294490a --- /dev/null +++ b/Documentation/theme/static/custom.css @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: CC-BY-SA-4.0 */ +/* Hide the documentation nav. It is only used on the website. */ +.documentation-nav { + display: none; +} diff --git a/Documentation/theme/static/libcamera-logo-text.svg b/Documentation/theme/static/libcamera-logo-text.svg new file mode 100644 index 000000000000..e623e3219a90 --- /dev/null +++ b/Documentation/theme/static/libcamera-logo-text.svg @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="76.987656mm" + height="27.246868mm" + viewBox="0 0 76.987653 27.246868" + version="1.1" + id="svg885" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + sodipodi:docname="libcamera-logo-text.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs879"> + <linearGradient + inkscape:collect="always" + id="libcamera-gradient"> + <stop + style="stop-color:#4a9cd8;stop-opacity:1;" + offset="0" + id="stop837" /> + <stop + style="stop-color:#4da5ce;stop-opacity:1;" + offset="1" + id="stop839" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#libcamera-gradient" + id="linearGradient843" + x1="36.235832" + y1="124.7846" + x2="169.38322" + y2="124.7846" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.5782953,0,0,0.34895428,44.509503,81.842882)" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8" + inkscape:cx="101.07143" + inkscape:cy="113.03571" + inkscape:document-units="mm" + inkscape:current-layer="layer2" + showgrid="false" + inkscape:window-width="2560" + inkscape:window-height="1531" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" /> + <metadata + id="metadata882"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="background" + transform="translate(-65.469925,-111.76357)"> + <rect + style="opacity:1;fill:url(#linearGradient843);fill-opacity:1;stroke:#1a1a1a;stroke-width:0.0377345;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" + id="rect824" + width="76.949921" + height="27.209133" + x="65.488792" + y="111.78244" /> + </g> + <g + inkscape:label="LogoLayer" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-65.469925,-111.76357)"> + <g + aria-label=" _ +-/ \-+ | (o) | +-----+" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583" + id="text1432"> + <path + d="m 85.263307,117.54782 v 0.39275 h -2.548682 v -0.39275 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path928" /> + <path + d="m 76.587868,119.76991 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89296 h -0.489893 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path930" /> + <path + d="m 78.239446,120.71456 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path932" /> + <path + d="m 82.024228,119.14773 h 0.45682 l -1.624707,3.47885 h -0.45682 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path934" /> + <path + d="m 85.953704,119.14773 1.624707,3.47885 h -0.460954 l -1.624707,-3.47885 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path936" /> + <path + d="m 88.434172,120.71456 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path938" /> + <path + d="m 91.879957,119.76991 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89296 h -0.489892 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path940" /> + <path + d="m 76.575465,124.29057 v 4.23333 h -0.469222 v -4.23333 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path942" /> + <path + d="m 82.075904,124.3133 q -0.272851,0.49403 -0.405143,0.95705 -0.132291,0.46302 -0.132291,0.92604 0,0.45889 0.132291,0.92604 0.132292,0.46509 0.405143,0.96119 h -0.471289 q -0.328662,-0.4775 -0.487825,-0.94052 -0.159163,-0.46508 -0.159163,-0.94671 0,-0.47956 0.159163,-0.94464 0.16123,-0.46716 0.487825,-0.93845 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path944" /> + <path + d="m 83.987933,125.64655 q -0.217041,0 -0.341065,0.19224 -0.124023,0.19017 -0.124023,0.53123 0,0.34107 0.124023,0.53331 0.124024,0.19016 0.341065,0.19016 0.219108,0 0.343131,-0.19016 0.124024,-0.19224 0.124024,-0.53331 0,-0.34106 -0.124024,-0.53123 -0.124023,-0.19224 -0.343131,-0.19224 z m -1.070736,0.72347 q 0,-0.56017 0.289388,-0.88676 0.291455,-0.32866 0.781348,-0.32866 0.491959,0 0.781347,0.32866 0.291455,0.32659 0.291455,0.88676 0,0.56018 -0.291455,0.88884 -0.289388,0.32659 -0.781347,0.32659 -0.489893,0 -0.781348,-0.32659 -0.289388,-0.32866 -0.289388,-0.88884 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path946" /> + <path + d="m 85.902027,124.3133 h 0.471289 q 0.326595,0.47129 0.485759,0.93845 0.16123,0.46508 0.16123,0.94464 0,0.48163 -0.159163,0.94671 -0.159164,0.46302 -0.487826,0.94052 h -0.471289 q 0.272852,-0.4961 0.405143,-0.96119 0.132292,-0.46715 0.132292,-0.92604 0,-0.46302 -0.132292,-0.92604 -0.132291,-0.46302 -0.405143,-0.95705 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path948" /> + <path + d="m 91.867555,124.29057 v 4.23333 h -0.469222 v -4.23333 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path950" /> + <path + d="m 76.587868,130.35324 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89297 h -0.489893 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path952" /> + <path + d="m 78.239446,131.29789 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path954" /> + <path + d="m 80.788128,131.29789 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path956" /> + <path + d="m 83.33681,131.29789 h 1.304313 v 0.60151 H 83.33681 Z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path958" /> + <path + d="m 85.885491,131.29789 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path960" /> + <path + d="m 88.434172,131.29789 h 1.304313 v 0.60151 h -1.304313 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path962" /> + <path + d="m 91.879957,130.35324 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89297 h -0.489892 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583" + id="path964" /> + </g> + <g + aria-label="libcamera" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:1.25;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + id="text1442"> + <path + d="m 97.705568,129.92384 q -0.626534,0 -0.948267,-0.36407 -0.313267,-0.37253 -0.313267,-1.07526 v -4.60587 h 0.6858 v 4.55507 q 0,0.90593 0.719667,0.90593 0.211667,0 0.381,-0.0508 l -0.01693,0.57573 q -0.262467,0.0593 -0.508,0.0593 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" + id="path909" /> + <path + d="m 98.865497,124.70837 v -0.77046 h 0.846666 v 0.77046 z m 0.08467,5.13927 v -4.1148 h 0.685799 v 4.1148 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" + id="path911" /> + <path + d="m 102.99722,129.92384 q -0.49107,0 -0.8636,-0.22013 -0.36407,-0.22014 -0.55034,-0.60114 v 0.74507 h -0.66886 v -5.969 h 0.6858 v 2.5654 q 0.1778,-0.36407 0.55033,-0.57573 0.37253,-0.21167 0.84667,-0.21167 0.55033,0 0.95673,0.26247 0.41487,0.254 0.635,0.7366 0.2286,0.47413 0.2286,1.13453 0,0.65193 -0.2286,1.13453 -0.22013,0.47414 -0.635,0.7366 -0.4064,0.26247 -0.95673,0.26247 z m -0.14394,-0.55033 q 0.57574,0 0.92287,-0.4064 0.34713,-0.41487 0.34713,-1.17687 0,-0.77047 -0.34713,-1.17687 -0.34713,-0.4064 -0.92287,-0.4064 -0.57573,0 -0.92286,0.4064 -0.34714,0.4064 -0.34714,1.17687 0,0.762 0.34714,1.17687 0.34713,0.4064 0.92286,0.4064 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941" + id="path913" /> + <path + d="m 107.5946,129.92384 q -0.61806,0 -1.0668,-0.26247 -0.44873,-0.27093 -0.69426,-0.75353 -0.23707,-0.49107 -0.23707,-1.143 0,-0.98213 0.5334,-1.54093 0.5334,-0.56727 1.46473,-0.56727 0.381,0 0.75354,0.13547 0.37253,0.13546 0.61806,0.381 l -0.23706,0.49953 q -0.24554,-0.23707 -0.54187,-0.34713 -0.28787,-0.11007 -0.55033,-0.11007 -0.64347,0 -0.9906,0.4064 -0.34714,0.39793 -0.34714,1.15147 0,0.7366 0.34714,1.1684 0.34713,0.42333 0.9906,0.42333 0.26246,0 0.55033,-0.11007 0.29633,-0.11006 0.54187,-0.3556 l 0.23706,0.49954 q -0.24553,0.24553 -0.62653,0.38946 -0.37253,0.13547 -0.74507,0.13547 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path915" /> + <path + d="m 111.03205,129.92384 q -0.42333,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52493,-0.4572 -0.19474,-0.28786 -0.19474,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54187,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37253,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23706,-0.49954 q 0.32173,-0.2286 0.77893,-0.36406 0.46567,-0.13547 0.889,-0.13547 0.79587,0 1.17687,0.38947 0.38946,0.38946 0.38946,1.21073 v 2.5908 h -0.64346 v -0.7112 q -0.16087,0.36407 -0.49954,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11007,-0.51647 q 0.508,0 0.82973,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26246 q -0.6858,0 -1.08374,0.0677 -0.38946,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23707,0.56727 0.24553,0.22013 0.6604,0.22013 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path917" /> + <path + d="m 114.24091,129.84764 v -4.1148 h 0.66886 v 0.69427 q 0.18627,-0.37254 0.51647,-0.56727 0.3302,-0.2032 0.77047,-0.2032 0.9652,0 1.23613,0.8382 0.18627,-0.38947 0.55033,-0.6096 0.36407,-0.2286 0.8382,-0.2286 1.3716,0 1.3716,1.6256 v 2.5654 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.49953,0 -0.79587,0.3556 -0.29633,0.3556 -0.29633,0.94827 v 2.32833 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.508,0 -0.80434,0.3556 -0.28786,0.3556 -0.28786,0.94827 v 2.32833 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path919" /> + <path + d="m 123.32563,129.92384 q -0.97367,0 -1.54093,-0.56727 -0.56727,-0.57573 -0.56727,-1.55786 0,-0.635 0.254,-1.1176 0.254,-0.49107 0.69427,-0.75354 0.44873,-0.27093 1.03293,-0.27093 0.8382,0 1.31233,0.54187 0.47414,0.5334 0.47414,1.4732 v 0.26246 h -3.0988 q 0.0339,0.70274 0.4064,1.07527 0.37253,0.36407 1.03293,0.36407 0.37253,0 0.7112,-0.11007 0.33867,-0.11853 0.64347,-0.381 l 0.23706,0.4826 q -0.2794,0.26247 -0.7112,0.41487 -0.4318,0.14393 -0.88053,0.14393 z m -0.11007,-3.7592 q -0.5842,0 -0.92286,0.36407 -0.33867,0.36406 -0.39794,0.95673 h 2.49767 q -0.0254,-0.62653 -0.3302,-0.97367 -0.29633,-0.34713 -0.84667,-0.34713 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path921" /> + <path + d="m 125.97569,129.84764 v -4.1148 h 0.66887 v 0.7366 q 0.3302,-0.74507 1.35467,-0.82127 l 0.24553,-0.0254 0.0508,0.59267 -0.4318,0.0508 q -0.5842,0.0508 -0.889,0.37253 -0.3048,0.31327 -0.3048,0.8636 v 2.34527 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path923" /> + <path + d="m 130.25982,129.92384 q -0.42334,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52494,-0.4572 -0.19473,-0.28786 -0.19473,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54186,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37254,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23707,-0.49954 q 0.32174,-0.2286 0.77894,-0.36406 0.46566,-0.13547 0.889,-0.13547 0.79586,0 1.17686,0.38947 0.38947,0.38946 0.38947,1.21073 v 2.5908 h -0.64347 v -0.7112 q -0.16086,0.36407 -0.49953,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11006,-0.51647 q 0.508,0 0.82974,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26247 q -0.6858,0 -1.08373,0.0677 -0.38947,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23706,0.56727 0.24554,0.22013 0.6604,0.22013 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff" + id="path925" /> + </g> + </g> +</svg> diff --git a/Documentation/theme/static/search.png b/Documentation/theme/static/search.png deleted file mode 100644 index a93c40eb08106554488deaed910aba0f5aef5ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmV<80UiE{P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000ie z000ie0hKEb8vp<Slu1NER49>S{Qv(y11W$BjsN}6-{)Vx|M`d06c#vZ@BJ4Ihb|v` z{Q4gQ11Af!uc~y5qrR#TFPa8Mh?6FtzL~%Ctf7Qpw2q<#567){pJ$)D^X1p?EfEg3 za$+bt{{R1f{K;#k=A~KNPW}D&?>`KD`0>kj!7kC>HSfRw{Eq|}{{R0UwEB?Fj4jBj zA>iq!ZyasQJC9yP7Gz>zU^w*fRiw586C)#<bESAW9Tmh6KYooKN}qoImf+#Q8YU7v zoF9JtLf4=mz<u-WC#)K-zxk-Z&yB7jNJDnvrTZU${zg-M;^~_cPv3@W$)Rf~w$Nl| zWb|2a;MLb3aEbFT-iNL^%+1QID8PfP0U8e%UcUEQzW>wD-<~Q`l02L@-hA47{{;&Z z)31O31UcCD$2#ka3!-RXU|{(0<Ja`FxA)wC@!`iWMFE}wbr~Z`A=?GJ-~IR{%Ef*# z&Q(){4@Co3aOU|t=f!(I{rV%x!*M9iRYiywJ@KId6G@@%QBFLpEYH9E$l89Iunm|1 Y03N>L+`-G70ssI207*qoM6N<$g81y{PXGV_ diff --git a/Documentation/theme/theme.conf b/Documentation/theme/theme.conf deleted file mode 100644 index f2ab39c33c5b..000000000000 --- a/Documentation/theme/theme.conf +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-License-Identifier: CC-BY-SA-4.0 - -[theme] -inherit = basic -stylesheet = css/theme.css - -[options] diff --git a/README.rst b/README.rst index 7c8bc6db6712..56b2e0956e36 100644 --- a/README.rst +++ b/README.rst @@ -67,8 +67,8 @@ for device hotplug enumeration: [optional] libudev-dev for documentation: [optional] - doxygen graphviz python3-sphinx python3-sphinxcontrib.doxylink (>= 1.6.1) - texlive-latex-extra + doxygen graphviz python3-sphinx python3-sphinx-book-theme + python3-sphinxcontrib.doxylink (>= 1.6.1) texlive-latex-extra for gstreamer: [optional] libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev