Patch Detail
Show a patch.
GET /api/1.1/patches/24334/?format=api
{ "id": 24334, "url": "https://patchwork.libcamera.org/api/1.1/patches/24334/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24334/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20250911230115.25335-6-laurent.pinchart@ideasonboard.com>", "date": "2025-09-11T23:01:06", "name": "[v2,05/10] Documentation: Use the sphinx book theme", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "0e8b7d434b286ab19d399f89ff506b4a8562843d", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24334/mbox/", "series": [ { "id": 5435, "url": "https://patchwork.libcamera.org/api/1.1/series/5435/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5435", "date": "2025-09-11T23:01:01", "name": "Documentation theming update", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5435/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24334/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24334/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 14010C324E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 11 Sep 2025 23:01:57 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BD6AA69384;\n\tFri, 12 Sep 2025 01:01:56 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1C43269371\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Sep 2025 01:01:51 +0200 (CEST)", "from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 7D7AA4579; \n\tFri, 12 Sep 2025 01:00:35 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"UhTYJPAZ\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1757631636;\n\tbh=NvwcDXLEkIiG0esIkAXfK7zlF1JqpwyOSVEL3Sio+Fw=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=UhTYJPAZ9COFCYohOBf+Z/GvkLHhujOlAU1qB6yR76nvxyvbFNa/BlSaQSPHtiEbN\n\tUMyQEFPRZxU00ZFsqNujazmiz2o4bqsOTNoKuSVrdEuYq2fyj45nZCJT8FkETkFRRJ\n\tDC3nShLQ/JfCM57DoeuvZfug2tOCd8nmor5Y9CQo=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>", "Subject": "[PATCH v2 05/10] Documentation: Use the sphinx book theme", "Date": "Fri, 12 Sep 2025 02:01:06 +0300", "Message-ID": "<20250911230115.25335-6-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.49.1", "In-Reply-To": "<20250911230115.25335-1-laurent.pinchart@ideasonboard.com>", "References": "<20250911230115.25335-1-laurent.pinchart@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "From: Stefan Klug <stefan.klug@ideasonboard.com>\n\nOur current theme doesn't handle many of the rst features (namely notes,\nproper code highlighting, font formatting). The sphinx book theme\nprovides a unobtrusive design which makes the documentation way more fun\nto read. The branding is minimal. The libcamera logo is included and\ntheme colors are set to the libcamera blue.\n\nTo get meson/sphinx to successfully compile the docs the package\n\"python3-sphinx-book-theme\" needs to be installed (at least on debian\nbased systems).\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\nChanges since v1:\n\n- Add SPDX license header to custom.css\n- Update .reuse/dep5\n- Fix typo in commit message\n- Replace double with single quotes in conf.py.in\n- Rename logo-and-text.svg to libcamera-logo-text.svg\n---\n .reuse/dep5 | 5 +-\n Documentation/conf.py.in | 19 +-\n Documentation/meson.build | 2 +-\n Documentation/theme/footer.html | 14 -\n Documentation/theme/layout.html | 109 -------\n Documentation/theme/search.html | 63 ----\n Documentation/theme/static/css/theme.css | 295 ------------------\n Documentation/theme/static/custom.css | 5 +\n .../theme/static/libcamera-logo-text.svg | 223 +++++++++++++\n Documentation/theme/static/search.png | Bin 482 -> 0 bytes\n Documentation/theme/theme.conf | 7 -\n README.rst | 4 +-\n 12 files changed, 248 insertions(+), 498 deletions(-)\n delete mode 100644 Documentation/theme/footer.html\n delete mode 100644 Documentation/theme/layout.html\n delete mode 100644 Documentation/theme/search.html\n delete mode 100644 Documentation/theme/static/css/theme.css\n create mode 100644 Documentation/theme/static/custom.css\n create mode 100644 Documentation/theme/static/libcamera-logo-text.svg\n delete mode 100644 Documentation/theme/static/search.png\n delete mode 100644 Documentation/theme/theme.conf", "diff": "diff --git a/.reuse/dep5 b/.reuse/dep5\nindex c5ef5e01b0f9..9cdb56e81ae3 100644\n--- a/.reuse/dep5\n+++ b/.reuse/dep5\n@@ -6,13 +6,10 @@ Source: https://git.libcamera.org/libcamera/libcamera.git/\n Files: Documentation/binning.svg\n Documentation/camera-sensor-model.rst\n Documentation/sensor_model.svg\n+ Documentation/theme/static/libcamera-logo-text.svg\n Copyright: Copyright 2023 Ideas On Board Oy\n License: CC-BY-SA-4.0\n \n-Files: Documentation/theme/static/search.png\n-Copyright: 2022 Fonticons, Inc.\n-License: CC-BY-4.0\n-\n Files: src/ipa/rpi/vc4/data/*.json\n utils/raspberrypi/ctt/ctt_config_example.json\n utils/raspberrypi/ctt/ctt_ref.pgm\ndiff --git a/Documentation/conf.py.in b/Documentation/conf.py.in\nindex 097e579b575b..34fa3956f49e 100644\n--- a/Documentation/conf.py.in\n+++ b/Documentation/conf.py.in\n@@ -88,8 +88,16 @@ doxylink = {\n # The theme to use for HTML and HTML Help pages. See the documentation for\n # a list of builtin themes.\n #\n-html_theme = 'theme'\n-html_theme_path = ['@THEME_DIR@']\n+html_theme = 'sphinx_book_theme'\n+html_theme_path = []\n+\n+html_logo = '@CURRENT_SRCDIR@/theme/static/libcamera-logo-text.svg'\n+\n+html_context = {\n+ # Set the default mode, so that syntax highlighting works without\n+ # javascript.\n+ 'default_mode': 'light'\n+}\n \n # Theme options are theme-specific and customize the look and feel of a theme\n # further. For a list of options available for each theme, see the\n@@ -100,7 +108,7 @@ html_theme_path = ['@THEME_DIR@']\n # Add any paths that contain custom static files (such as style sheets) here,\n # relative to this directory. They are copied after the builtin static files,\n # so a file named \"default.css\" will overwrite the builtin \"default.css\".\n-html_static_path = []\n+html_static_path = ['@CURRENT_SRCDIR@/theme/static']\n \n # Custom sidebar templates, must be a dictionary that maps document names\n # to template names.\n@@ -111,3 +119,8 @@ html_static_path = []\n # 'searchbox.html']``.\n #\n # html_sidebars = {}\n+\n+html_css_files = [\n+ 'custom.css',\n+]\n+\ndiff --git a/Documentation/meson.build b/Documentation/meson.build\nindex a8d4afc01dd1..f73407432fff 100644\n--- a/Documentation/meson.build\n+++ b/Documentation/meson.build\n@@ -142,7 +142,7 @@ if sphinx.found()\n sphinx_conf = configure_file(input : 'conf.py.in',\n output : 'conf.py',\n configuration : {\n- 'THEME_DIR': meson.current_source_dir(),\n+ 'CURRENT_SRCDIR': meson.current_source_dir(),\n 'TOP_BUILDDIR': meson.project_build_root(),\n })\n \ndiff --git a/Documentation/theme/footer.html b/Documentation/theme/footer.html\ndeleted file mode 100644\nindex 12939e8b7c12..000000000000\n--- a/Documentation/theme/footer.html\n+++ /dev/null\n@@ -1,14 +0,0 @@\n-{#\n-SPDX-License-Identifier: CC-BY-SA-4.0\n-#}\n-<footer>\n- <div id=\"signature\">\n- {%- if show_copyright %}\n- {%- if hasdoc('copyright') %}\n- {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href=\"{{ path }}\">Copyright</a> {{ copyright }}.{% endtrans %}\n- {%- else %}\n- {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %}\n- {%- endif %}\n- {%- endif %}\n- </div>\n-</footer>\ndiff --git a/Documentation/theme/layout.html b/Documentation/theme/layout.html\ndeleted file mode 100644\nindex 4fffefab62eb..000000000000\n--- a/Documentation/theme/layout.html\n+++ /dev/null\n@@ -1,109 +0,0 @@\n-{#\n-SPDX-License-Identifier: CC-BY-SA-4.0\n-#}\n-{# TEMPLATE VAR SETTINGS #}\n-{%- set url_root = pathto('', 1) %}\n-{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}\n-{%- if not embedded and docstitle %}\n- {%- set titlesuffix = \" — \"|safe + docstitle|e %}\n-{%- else %}\n- {%- set titlesuffix = \"\" %}\n-{%- endif %}\n-<!DOCTYPE html>\n-<head>\n- <meta charset=\"utf-8\">\n- {{ metatags }}\n- <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n- {% block htmltitle %}\n- <title>{{ title|striptags|e }}{{ titlesuffix }}</title>\n- {% endblock %}\n-\n- {# FAVICON #}\n- {% if favicon %}\n- <link rel=\"shortcut icon\" href=\"{{ pathto('_static/' + favicon, 1) }}\"/>\n- {% endif %}\n-\n- {# CSS #}\n-\n- {# OPENSEARCH #}\n- {% if not embedded %}\n- {% if use_opensearch %}\n- <link rel=\"search\" type=\"application/opensearchdescription+xml\" title=\"{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}\" href=\"{{ pathto('_static/opensearch.xml', 1) }}\"/>\n- {% endif %}\n-\n- {% endif %}\n-\n- {% for cssfile in css_files %}\n- <link rel=\"stylesheet\" href=\"{{ pathto(cssfile, 1) }}\" type=\"text/css\" />\n- {% endfor %}\n-\n- {% for cssfile in extra_css_files %}\n- <link rel=\"stylesheet\" href=\"{{ pathto(cssfile, 1) }}\" type=\"text/css\" />\n- {% endfor %}\n-\n- {%- block linktags %}\n- {%- if hasdoc('about') %}\n- <link rel=\"author\" title=\"{{ _('About these documents') }}\"\n- href=\"{{ pathto('about') }}\"/>\n- {%- endif %}\n- {%- if hasdoc('genindex') %}\n- <link rel=\"index\" title=\"{{ _('Index') }}\"\n- href=\"{{ pathto('genindex') }}\"/>\n- {%- endif %}\n- {%- if hasdoc('search') %}\n- <link rel=\"search\" title=\"{{ _('Search') }}\" href=\"{{ pathto('search') }}\"/>\n- {%- endif %}\n- {%- if hasdoc('copyright') %}\n- <link rel=\"copyright\" title=\"{{ _('Copyright') }}\" href=\"{{ pathto('copyright') }}\"/>\n- {%- endif %}\n- <link rel=\"top\" title=\"{{ docstitle|e }}\" href=\"{{ pathto('index') }}\"/>\n- {%- if parents %}\n- <link rel=\"up\" title=\"{{ parents[-1].title|striptags|e }}\" href=\"{{ parents[-1].link|e }}\"/>\n- {%- endif %}\n- {%- if next %}\n- <link rel=\"next\" title=\"{{ next.title|striptags|e }}\" href=\"{{ next.link|e }}\"/>\n- {%- endif %}\n- {%- if prev %}\n- <link rel=\"prev\" title=\"{{ prev.title|striptags|e }}\" href=\"{{ prev.link|e }}\"/>\n- {%- endif %}\n- {%- endblock %}\n- {%- block extrahead %} {% endblock %}\n-\n-</head>\n-\n-<body role=\"document\">\n- <header>\n- <div id=\"navbar\">\n- <div class=\"navbar-brand\">\n- <div class=\"navbar-logo\"> _\n-+-/ \\-+\n-| (o) |\n-+-----+</div>\n- <div class=\"navbar-name\"><span class=\"text-light\">lib</span>camera</div>\n- </div>\n-\n- <div class=\"navbar\">\n- {{ toctree(maxdepth=1) }}\n- <div class=\"searchbox\" role=\"search\">\n- <form class=\"search\" action=\"{{ pathto('search') }}\" method=\"get\">\n- <input type=\"text\" name=\"q\" />\n-\t <input type=\"submit\" value=\"Go\" />\n- <input type=\"hidden\" name=\"check_keywords\" value=\"yes\" />\n- <input type=\"hidden\" name=\"area\" value=\"default\" />\n- </form>\n- </div>\n- </div>\n-\n- </div>\n- </header>\n-\n- <div id=\"content\">\n- {# PAGE CONTENT #}\n- <div class=\"block\">\n- {% block body %}{% endblock %}\n- </div>\n- </div>\n-\n- {% include \"footer.html\" %}\n-</body>\n-</html>\ndiff --git a/Documentation/theme/search.html b/Documentation/theme/search.html\ndeleted file mode 100644\nindex 00c2af93a1b3..000000000000\n--- a/Documentation/theme/search.html\n+++ /dev/null\n@@ -1,63 +0,0 @@\n-{#\n-SPDX-License-Identifier: CC-BY-SA-4.0\n-#}\n-{#\n- basic/search.html\n- ~~~~~~~~~~~~~~~~~\n-\n- Template for the search page.\n-\n- :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.\n- :license: BSD, see LICENSE for details.\n-#}\n-{%- extends \"layout.html\" %}\n-{% block extrahead %}\n- <script type=\"text/javascript\" id=\"documentation_options\" data-url_root=\"{{ pathto('', 1) }}\" src=\"{{ pathto('_static/documentation_options.js', 1) }}\"></script>\n- {%- for scriptfile in script_files %}\n- <script type=\"text/javascript\" src=\"{{ pathto(scriptfile, 1) }}\"></script>\n- {%- endfor %}\n- <script type=\"text/javascript\" src=\"_static/searchtools.js\"></script>\n- <script type=\"text/javascript\">\n- jQuery(function() { Search.loadIndex(\"{{ pathto('searchindex.js', 1) }}\"); });\n- </script>\n- {# this is used when loading the search index using $.ajax fails,\n- such as on Chrome for documents on localhost #}\n- <script type=\"text/javascript\" id=\"searchindexloader\"></script>\n-{% endblock %}\n-{% block body %}\n- <h1 id=\"search-documentation\">{{ _('Search') }}</h1>\n- <div id=\"fallback\" class=\"admonition warning\">\n- <script type=\"text/javascript\">$('#fallback').hide();</script>\n- <p>\n- Please activate JavaScript to enable the search functionality.\n- </p>\n- </div>\n- <p>\n- From here you can search these documents. Enter your search\n- words into the box below and click \"search\". Note that the search\n- function will automatically search for all of the words. Pages\n- containing fewer words won't appear in the result list.\n- </p>\n- <form action=\"\" method=\"get\">\n- <input type=\"text\" name=\"q\" value=\"\" />\n- <input type=\"submit\" value=\"{{ _('search') }}\" />\n- <span id=\"search-progress\" style=\"padding-left: 10px\"></span>\n- </form>\n- {% if search_performed %}\n- <h2>{{ _('Search Results') }}</h2>\n- {% if not search_results %}\n- <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>\n- {% endif %}\n- {% endif %}\n- <div id=\"search-results\">\n- {% if search_results %}\n- <ul>\n- {% for href, caption, context in search_results %}\n- <li><a href=\"{{ pathto(item.href) }}\">{{ caption }}</a>\n- <div class=\"context\">{{ context|e }}</div>\n- </li>\n- {% endfor %}\n- </ul>\n- {% endif %}\n- </div>\n-{% endblock %}\ndiff --git a/Documentation/theme/static/css/theme.css b/Documentation/theme/static/css/theme.css\ndeleted file mode 100644\nindex a6d43195c018..000000000000\n--- a/Documentation/theme/static/css/theme.css\n+++ /dev/null\n@@ -1,295 +0,0 @@\n-/* SPDX-License-Identifier: CC-BY-SA-4.0 */\n-\n-html {\n-\tbackground-image: linear-gradient(to bottom right, #4895e1, #56c3ae);\n-\tbackground-size: cover;\n-\tbackground-repeat: no-repeat;\n-\tmin-height: 100vh;\n-}\n-\n-body {\n-\tcolor: rgb(0, 0, 0, 0.65);\n-\tfont-family: Arial, sans-serif;\n-\tmargin: 0px;\n-}\n-\n-a {\n-\tcolor: unset;\n-\tfont-weight: bold;\n-\ttext-decoration: underline dotted;\n-}\n-\n-a.headerlink {\n-\tcolor: rgba(0, 0, 0, 0.2);\n-\tfont-size: 70%;\n-\tpadding-left: 5px;\n-\tvisibility: hidden;\n-}\n-\n-a.toc-backref {\n-\ttext-decoration: none;\n-}\n-\n-h1:hover a.headerlink,\n-h2:hover a.headerlink,\n-h3:hover a.headerlink,\n-h4:hover a.headerlink,\n-h5:hover a.headerlink,\n-h6:hover a.headerlink {\n-\tvisibility: visible;\n-}\n-\n-dt {\n-\tfont-weight: bold;\n-}\n-\n-.text-light {\n-\tcolor: rgba(255, 255, 255, 0.3);\n-}\n-\n-div#navbar {\n-\tmargin-top: 0px;\n-}\n-\n-div.navbar-brand {\n-\tcolor: rgb(255, 255, 255, 1.0);\n-\tfloat: left;\n-\tfont-size: 36px;\n-\tmargin: 0px 24px 24px 24px;\n-}\n-\n-div.navbar-logo {\n-\tfloat: left;\n-\tfont-family: monospace;\n-\tfont-size: 18px;\n-\tfont-weight: bold;\n-\twhite-space: pre;\n-}\n-\n-div.navbar-name {\n-\tfloat: left;\n-\tcolor: rgb(255, 255, 255, 1.0);\n-\tfont-size: 34px;\n-\tmargin-top: 31px;\n-\tmargin-left: 10px;\n-\tpadding-top: 1px;\n-}\n-\n-div.navbar {\n-\tfloat: right;\n-}\n-\n-div.navbar p.caption {\n-\theight: 0px;\n-\tmargin: 0px;\n-\tvisibility: hidden;\n-}\n-\n-div.navbar ul {\n-\tfloat: left;\n-\tfont-size: 24px;\n-\tlist-style: none;\n-\tmargin-top: 42px;\n-\tmargin-right: 20px;\n-\tpadding-left: 0px;\n-}\n-\n-div.navbar a {\n-\tfont-weight: normal;\n-\ttext-decoration: none;\n-}\n-\n-div.navbar li {\n-\tfloat: left;\n-\tmargin-left: 20px;\n-\tmargin-right: 20px;\n-\tposition: relative;\n-}\n-\n-div.navbar li a {\n-\tcolor: rgb(255, 255, 255, 0.5);\n-\tposition: relative;\n-}\n-\n-div.navbar li a:before {\n-\tcontent: \"\";\n-\tposition: absolute;\n-\twidth: 100%;\n-\theight: 2px;\n-\tbottom: 0;\n-\tleft: 0;\n-\tbackground-color: rgb(255, 255, 255, 0.5);\n-\tvisibility: hidden;\n-\ttransform: scaleX(0);\n-\ttransition: all 0.3s ease-in-out 0s;\n-}\n-\n-div.navbar li a:hover {\n-\tcolor: rgb(255, 255, 255, 1.0);\n-}\n-\n-div.navbar li a:hover:before {\n-\tvisibility: visible;\n-\ttransform: scaleX(1);\n-}\n-\n-div.navbar li.current a {\n-\tcolor: rgb(255, 255, 255, 1.0);\n-}\n-\n-div.navbar li.current a:before {\n-\tvisibility: visible;\n-\ttransform: unset;\n-\ttransition: unset;\n-}\n-\n-div.navbar div.searchbox {\n-\tbackground-color: white;\n-\tfloat: right;\n-\tmargin-right: 50px;\n-\tmargin-top: 42px;\n-}\n-\n-div.navbar input[type=text] {\n-\tborder-width: 0;\n-\theight: 2em;\n-\tmargin-left: 10px;\n-\tmargin-right: 5px;\n-}\n-\n-div.navbar input[type=submit] {\n-\tbackground-color: white;\n-\tbackground-image: url(../search.png);\n-\tbackground-repeat: no-repeat;\n-\tborder-width: 0;\n-\tcolor: rgba(0, 0, 0, 0);\n-\tmargin-right: 2px;\n-\twidth: 20px;\n-}\n-\n-div#frontpage {\n-\tclear: both;\n-\tpadding-top: 50px;\n-\tmargin-left: auto;\n-\tmargin-right: auto;\n-\twidth: 75%;\n-\tdisplay: flex;\n-\tjustify-content: space-between;\n-}\n-\n-div#frontpage > div.block {\n-\tbackground-color: white;\n-\tborder-radius: 5px;\n-\tbox-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 40px 0 rgba(0, 0, 0, 0.19);\n-\tcolor: rgb(0, 0, 0, 0.5);\n-\tfont-size: 20px;\n-\tmargin-bottom: 40px;\n-\tmargin-right: 20px;\n-\tmargin-left: 20px;\n-\tpadding: 20px 60px 20px 60px;\n-\ttext-align: center;\n-\twidth: 50%;\n-}\n-\n-div#frontpage > div.block h1 {\n-\tfont-size: 64px;\n-\tpadding-left: 20%;\n-\tpadding-right: 20%;\n-\ttext-align: center;\n-\ttext-shadow: 4px 4px 5px;\n-}\n-\n-div#content {\n-\tbackground-color: white;\n-\tclear: both;\n-\tpadding-top: 50px;\n-\tpadding-bottom: 50px;\n-\tmargin-left: 0px;\n-\tmargin-right: 0px;\n-}\n-\n-div#content > div.block {\n-\tfont-size: 16px;\n-\tmargin-right: 0px;\n-\tmargin-left: 0px;\n-\tmax-width: 1280px;\n-\tpadding: 0px 60px 0px 60px;\n-\ttext-align: justify;\n-}\n-\n-div#content > div.block h1 {\n-\tfont-size: 40px;\n-\tmargin-top: 0px;\n-\ttext-align: left;\n-}\n-\n-div#content > div.block > div.section {\n-\tmax-width: 800px;\n-}\n-\n-div.local.topic {\n-\tfloat: right;\n-\tbackground-color: #fcfcff;\n-\tborder: 1px dotted #4896e0;\n-\tmargin-left: 20px;\n-\tmargin-right: 0px;\n-\tmax-width: 15em;\n-\tpadding: 10px 20px 10px 10px;\n-\ttext-align: left;\n-}\n-\n-div.local.topic ul {\n-\tpadding-left: 20px;\n-\tmargin-bottom: 5px;\n-}\n-\n-div.local.topic > ul:before {\n-\tcontent: \"Contents\";\n-\tdisplay: block;\n-\tfont-weight: bold;\n-\tmargin-bottom: 10px;\n-}\n-\n-div.local.topic a {\n-\tfont-weight: normal;\n-\tpadding-left: 10px;\n-\ttext-decoration: none;\n-}\n-\n-div.highlight-shell > div.highlight > pre,\n-pre.console {\n-\tbackground-color: #fcfcff;\n-\tborder: 1px dotted #4896e0;\n-\tmargin-left: 0em;\n-\tpadding: 10px;\n-\ttext-align: left;\n-}\n-\n-div.highlight-default > div.highlight > pre,\n-pre.diagram {\n-\tbackground-color: #fcfcff;\n-\tborder: 1px dotted #4896e0;\n-\tfont-size: 12px;\n-\tmargin-left: 0em;\n-\tpadding: 10px;\n-\ttext-align: left;\n-\twidth: 47em;\n-}\n-\n-div#signature {\n-\tcolor: rgb(255, 255, 255, 0.5);\n-\tmargin: 20px;\n-\tfloat: right;\n-\tfont-size: 12px;\n-}\n-\n-#licensing div.toctree-wrapper {\n-\theight: 0px;\n-\tmargin: 0px;\n-\tpadding: 0px;\n-\tvisibility: hidden;\n-}\n-\n-.documentation-nav {\n-\tdisplay: none;\n-}\ndiff --git a/Documentation/theme/static/custom.css b/Documentation/theme/static/custom.css\nnew file mode 100644\nindex 000000000000..0be62294490a\n--- /dev/null\n+++ b/Documentation/theme/static/custom.css\n@@ -0,0 +1,5 @@\n+/* SPDX-License-Identifier: CC-BY-SA-4.0 */\n+/* Hide the documentation nav. It is only used on the website. */\n+.documentation-nav {\n+\tdisplay: none;\n+}\ndiff --git a/Documentation/theme/static/libcamera-logo-text.svg b/Documentation/theme/static/libcamera-logo-text.svg\nnew file mode 100644\nindex 000000000000..e623e3219a90\n--- /dev/null\n+++ b/Documentation/theme/static/libcamera-logo-text.svg\n@@ -0,0 +1,223 @@\n+<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<!-- Created with Inkscape (http://www.inkscape.org/) -->\n+\n+<svg\n+ width=\"76.987656mm\"\n+ height=\"27.246868mm\"\n+ viewBox=\"0 0 76.987653 27.246868\"\n+ version=\"1.1\"\n+ id=\"svg885\"\n+ inkscape:version=\"1.2.2 (b0a8486541, 2022-12-01)\"\n+ sodipodi:docname=\"libcamera-logo-text.svg\"\n+ xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n+ xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n+ xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n+ xmlns=\"http://www.w3.org/2000/svg\"\n+ xmlns:svg=\"http://www.w3.org/2000/svg\"\n+ xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n+ xmlns:cc=\"http://creativecommons.org/ns#\"\n+ xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n+ <defs\n+ id=\"defs879\">\n+ <linearGradient\n+ inkscape:collect=\"always\"\n+ id=\"libcamera-gradient\">\n+ <stop\n+ style=\"stop-color:#4a9cd8;stop-opacity:1;\"\n+ offset=\"0\"\n+ id=\"stop837\" />\n+ <stop\n+ style=\"stop-color:#4da5ce;stop-opacity:1;\"\n+ offset=\"1\"\n+ id=\"stop839\" />\n+ </linearGradient>\n+ <linearGradient\n+ inkscape:collect=\"always\"\n+ xlink:href=\"#libcamera-gradient\"\n+ id=\"linearGradient843\"\n+ x1=\"36.235832\"\n+ y1=\"124.7846\"\n+ x2=\"169.38322\"\n+ y2=\"124.7846\"\n+ gradientUnits=\"userSpaceOnUse\"\n+ gradientTransform=\"matrix(0.5782953,0,0,0.34895428,44.509503,81.842882)\" />\n+ </defs>\n+ <sodipodi:namedview\n+ id=\"base\"\n+ pagecolor=\"#ffffff\"\n+ bordercolor=\"#666666\"\n+ borderopacity=\"1.0\"\n+ inkscape:pageopacity=\"0.0\"\n+ inkscape:pageshadow=\"2\"\n+ inkscape:zoom=\"2.8\"\n+ inkscape:cx=\"101.07143\"\n+ inkscape:cy=\"113.03571\"\n+ inkscape:document-units=\"mm\"\n+ inkscape:current-layer=\"layer2\"\n+ showgrid=\"false\"\n+ inkscape:window-width=\"2560\"\n+ inkscape:window-height=\"1531\"\n+ inkscape:window-x=\"0\"\n+ inkscape:window-y=\"0\"\n+ inkscape:window-maximized=\"1\"\n+ fit-margin-top=\"0\"\n+ fit-margin-left=\"0\"\n+ fit-margin-right=\"0\"\n+ fit-margin-bottom=\"0\"\n+ inkscape:showpageshadow=\"2\"\n+ inkscape:pagecheckerboard=\"0\"\n+ inkscape:deskcolor=\"#d1d1d1\" />\n+ <metadata\n+ id=\"metadata882\">\n+ <rdf:RDF>\n+ <cc:Work\n+ rdf:about=\"\">\n+ <dc:format>image/svg+xml</dc:format>\n+ <dc:type\n+ rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n+ <dc:title />\n+ </cc:Work>\n+ </rdf:RDF>\n+ </metadata>\n+ <g\n+ inkscape:groupmode=\"layer\"\n+ id=\"layer2\"\n+ inkscape:label=\"background\"\n+ transform=\"translate(-65.469925,-111.76357)\">\n+ <rect\n+ 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\"\n+ id=\"rect824\"\n+ width=\"76.949921\"\n+ height=\"27.209133\"\n+ x=\"65.488792\"\n+ y=\"111.78244\" />\n+ </g>\n+ <g\n+ inkscape:label=\"LogoLayer\"\n+ inkscape:groupmode=\"layer\"\n+ id=\"layer1\"\n+ transform=\"translate(-65.469925,-111.76357)\">\n+ <g\n+ aria-label=\" _ +-/ \\-+ | (o) | +-----+\"\n+ 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\"\n+ id=\"text1432\">\n+ <path\n+ d=\"m 85.263307,117.54782 v 0.39275 h -2.548682 v -0.39275 z\"\n+ 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\"\n+ id=\"path928\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path930\" />\n+ <path\n+ d=\"m 78.239446,120.71456 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path932\" />\n+ <path\n+ d=\"m 82.024228,119.14773 h 0.45682 l -1.624707,3.47885 h -0.45682 z\"\n+ 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\"\n+ id=\"path934\" />\n+ <path\n+ d=\"m 85.953704,119.14773 1.624707,3.47885 h -0.460954 l -1.624707,-3.47885 z\"\n+ 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\"\n+ id=\"path936\" />\n+ <path\n+ d=\"m 88.434172,120.71456 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path938\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path940\" />\n+ <path\n+ d=\"m 76.575465,124.29057 v 4.23333 h -0.469222 v -4.23333 z\"\n+ 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\"\n+ id=\"path942\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path944\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path946\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path948\" />\n+ <path\n+ d=\"m 91.867555,124.29057 v 4.23333 h -0.469222 v -4.23333 z\"\n+ 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\"\n+ id=\"path950\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path952\" />\n+ <path\n+ d=\"m 78.239446,131.29789 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path954\" />\n+ <path\n+ d=\"m 80.788128,131.29789 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path956\" />\n+ <path\n+ d=\"m 83.33681,131.29789 h 1.304313 v 0.60151 H 83.33681 Z\"\n+ 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\"\n+ id=\"path958\" />\n+ <path\n+ d=\"m 85.885491,131.29789 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path960\" />\n+ <path\n+ d=\"m 88.434172,131.29789 h 1.304313 v 0.60151 h -1.304313 z\"\n+ 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\"\n+ id=\"path962\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path964\" />\n+ </g>\n+ <g\n+ aria-label=\"libcamera\"\n+ 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\"\n+ id=\"text1442\">\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path909\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path911\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path913\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path915\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path917\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path919\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path921\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path923\" />\n+ <path\n+ 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\"\n+ 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\"\n+ id=\"path925\" />\n+ </g>\n+ </g>\n+</svg>\ndiff --git a/Documentation/theme/static/search.png b/Documentation/theme/static/search.png\ndeleted file mode 100644\nindex a93c40eb08106554488deaed910aba0f5aef5ec5..0000000000000000000000000000000000000000\nGIT binary patch\nliteral 0\nHcmV?d00001\n\nliteral 482\nzcmV<80UiE{P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000ie\nz000ie0hKEb8vp<Slu1NER49>S{Qv(y11W$BjsN}6-{)Vx|M`d06c#vZ@BJ4Ihb|v`\nz{Q4gQ11Af!uc~y5qrR#TFPa8Mh?6FtzL~%Ctf7Qpw2q<#567){pJ$)D^X1p?EfEg3\nza$+bt{{R1f{K;#k=A~KNPW}D&?>`KD`0>kj!7kC>HSfRw{Eq|}{{R0UwEB?Fj4jBj\nzA>iq!ZyasQJC9yP7Gz>zU^w*fRiw586C)#<bESAW9Tmh6KYooKN}qoImf+#Q8YU7v\nzoF9JtLf4=mz<u-WC#)K-zxk-Z&yB7jNJDnvrTZU${zg-M;^~_cPv3@W$)Rf~w$Nl|\nzWb|2a;MLb3aEbFT-iNL^%+1QID8PfP0U8e%UcUEQzW>wD-<~Q`l02L@-hA47{{;&Z\nz)31O31UcCD$2#ka3!-RXU|{(0<Ja`FxA)wC@!`iWMFE}wbr~Z`A=?GJ-~IR{%Ef*#\nz&Q(){4@Co3aOU|t=f!(I{rV%x!*M9iRYiywJ@KId6G@@%QBFLpEYH9E$l89Iunm|1\nY03N>L+`-G70ssI207*qoM6N<$g81y{PXGV_\n\ndiff --git a/Documentation/theme/theme.conf b/Documentation/theme/theme.conf\ndeleted file mode 100644\nindex f2ab39c33c5b..000000000000\n--- a/Documentation/theme/theme.conf\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# SPDX-License-Identifier: CC-BY-SA-4.0\n-\n-[theme]\n-inherit = basic\n-stylesheet = css/theme.css\n-\n-[options]\ndiff --git a/README.rst b/README.rst\nindex 7c8bc6db6712..56b2e0956e36 100644\n--- a/README.rst\n+++ b/README.rst\n@@ -67,8 +67,8 @@ for device hotplug enumeration: [optional]\n libudev-dev\n \n for documentation: [optional]\n- doxygen graphviz python3-sphinx python3-sphinxcontrib.doxylink (>= 1.6.1)\n- texlive-latex-extra\n+ doxygen graphviz python3-sphinx python3-sphinx-book-theme\n+ python3-sphinxcontrib.doxylink (>= 1.6.1) texlive-latex-extra\n \n for gstreamer: [optional]\n libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev\n", "prefixes": [ "v2", "05/10" ] }