Documentation: Use the sphinx book theme

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>
This commit is contained in:
Stefan Klug
2025-09-08 16:07:46 +02:00
committed by Laurent Pinchart
parent 42d914f20c
commit 8b8b01381d
12 changed files with 248 additions and 498 deletions

View File

@@ -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

View File

@@ -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',
]

View File

@@ -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(),
})

View File

@@ -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 %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
{%- else %}
{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
{%- endif %}
{%- endif %}
</div>
</footer>

View File

@@ -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 = " &mdash; "|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>

View File

@@ -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 %}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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>

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

View File

@@ -1,7 +0,0 @@
# SPDX-License-Identifier: CC-BY-SA-4.0
[theme]
inherit = basic
stylesheet = css/theme.css
[options]

View File

@@ -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