diff --git a/docs/Doxyfile b/docs/Doxyfile index cf0f1c71..0e987938 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -3,6 +3,8 @@ PROJECT_LOGO = ${SOURCE}/docs/img/xrpl-logo.svg PROJECT_NUMBER = ${DOC_CLIO_VERSION} PROJECT_BRIEF = The XRP Ledger API server. +DOT_GRAPH_MAX_NODES = 100 + EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_PACKAGE = YES @@ -32,12 +34,18 @@ SORT_MEMBERS_CTORS_1ST = YES GENERATE_TREEVIEW = YES DISABLE_INDEX = NO FULL_SIDEBAR = NO -HTML_HEADER = ${SOURCE}/docs/doxygen-awesome-theme/header.html +HTML_HEADER = ${SOURCE}/docs/doxygen-awesome-theme/doxygen-custom/header.html HTML_EXTRA_STYLESHEET = ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome.css \ ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only.css \ - ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css \ + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-custom/custom.css \ + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-custom/theme-robot.css \ + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-custom/theme-round.css \ + ${SOURCE}/docs/github-corner-disable.css HTML_EXTRA_FILES = ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-darkmode-toggle.js \ - ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-fragment-copy-button.js \ + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js \ + ${SOURCE}/docs/doxygen-awesome-theme/doxygen-custom/toggle-alternative-theme.js HTML_COLORSTYLE = LIGHT HTML_COLORSTYLE_HUE = 209 diff --git a/docs/doxygen-awesome-theme/doxygen-awesome-darkmode-toggle.js b/docs/doxygen-awesome-theme/doxygen-awesome-darkmode-toggle.js index 40fe2d38..440e4e08 100644 --- a/docs/doxygen-awesome-theme/doxygen-awesome-darkmode-toggle.js +++ b/docs/doxygen-awesome-theme/doxygen-awesome-darkmode-toggle.js @@ -1,29 +1,10 @@ +// SPDX-License-Identifier: MIT /** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css -MIT License - -Copyright (c) 2021 - 2023 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Copyright (c) 2021 - 2025 jothepro */ diff --git a/docs/doxygen-awesome-theme/doxygen-awesome-fragment-copy-button.js b/docs/doxygen-awesome-theme/doxygen-awesome-fragment-copy-button.js new file mode 100644 index 00000000..e0994dca --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-awesome-fragment-copy-button.js @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +Copyright (c) 2022 - 2025 jothepro + +*/ + +class DoxygenAwesomeFragmentCopyButton extends HTMLElement { + constructor() { + super(); + this.onclick=this.copyContent + } + static title = "Copy to clipboard" + static copyIcon = `` + static successIcon = `` + static successDuration = 980 + static init() { + $(function() { + $(document).ready(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const fragmentWrapper = document.createElement("div") + fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" + const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") + fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title + + fragment.parentNode.replaceChild(fragmentWrapper, fragment) + fragmentWrapper.appendChild(fragment) + fragmentWrapper.appendChild(fragmentCopyButton) + + } + } + }) + }) + } + + + copyContent() { + const content = this.previousSibling.cloneNode(true) + // filter out line number from file listings + content.querySelectorAll(".lineno, .ttc").forEach((node) => { + node.remove() + }) + let textContent = content.textContent + // remove trailing newlines that appear in file listings + let numberOfTrailingNewlines = 0 + while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { + numberOfTrailingNewlines++; + } + textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) + navigator.clipboard.writeText(textContent); + this.classList.add("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon + window.setTimeout(() => { + this.classList.remove("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + }, DoxygenAwesomeFragmentCopyButton.successDuration); + } +} + +customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) diff --git a/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js b/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js index 20a9669d..70d23b70 100644 --- a/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js +++ b/docs/doxygen-awesome-theme/doxygen-awesome-interactive-toc.js @@ -1,29 +1,10 @@ +// SPDX-License-Identifier: MIT /** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css -MIT License - -Copyright (c) 2022 - 2023 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Copyright (c) 2022 - 2025 jothepro */ @@ -55,9 +36,7 @@ class DoxygenAwesomeInteractiveToc { headerNode: document.getElementById(id) }) - document.getElementById("doc-content")?.addEventListener("scroll", () => { - DoxygenAwesomeInteractiveToc.update() - }) + document.getElementById("doc-content")?.addEventListener("scroll",this.throttle(DoxygenAwesomeInteractiveToc.update, 100)) }) DoxygenAwesomeInteractiveToc.update() } @@ -78,4 +57,16 @@ class DoxygenAwesomeInteractiveToc { active?.classList.add("active") active?.classList.remove("aboveActive") } -} \ No newline at end of file + + static throttle(func, delay) { + let lastCall = 0; + return function (...args) { + const now = new Date().getTime(); + if (now - lastCall < delay) { + return; + } + lastCall = now; + return setTimeout(() => {func(...args)}, delay); + }; + } +} diff --git a/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css b/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css index d207446e..2ab5c768 100644 --- a/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css +++ b/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -1,30 +1,10 @@ - +/* SPDX-License-Identifier: MIT */ /** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css -MIT License - -Copyright (c) 2021 - 2023 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Copyright (c) 2021 - 2025 jothepro */ diff --git a/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only.css b/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only.css index 853f6d69..f7c644d6 100644 --- a/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only.css +++ b/docs/doxygen-awesome-theme/doxygen-awesome-sidebar-only.css @@ -1,29 +1,10 @@ +/* SPDX-License-Identifier: MIT */ /** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css -MIT License - -Copyright (c) 2021 - 2023 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Copyright (c) 2021 - 2025 jothepro */ @@ -60,10 +41,6 @@ html { height: calc(100vh - var(--top-height)) !important; } - #nav-tree { - padding: 0; - } - #top { display: block; border-bottom: none; @@ -73,22 +50,24 @@ html { overflow: hidden; background: var(--side-nav-background); } + #main-nav { float: left; padding-right: 0; } .ui-resizable-handle { - cursor: default; - width: 1px !important; - background: var(--separator-color); - box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + display: none; + } + + .ui-resizable-e { + width: 0; } #nav-path { position: fixed; right: 0; - left: var(--side-nav-fixed-width); + left: calc(var(--side-nav-fixed-width) + 1px); bottom: 0; width: auto; } @@ -113,4 +92,14 @@ html { left: var(--spacing-medium) !important; right: auto; } + + #nav-sync { + bottom: 4px; + right: auto; + left: 300px; + width: 35px; + top: auto !important; + user-select: none; + position: fixed + } } diff --git a/docs/doxygen-awesome-theme/doxygen-awesome.css b/docs/doxygen-awesome-theme/doxygen-awesome.css index a11ceab3..8300dc47 100644 --- a/docs/doxygen-awesome-theme/doxygen-awesome.css +++ b/docs/doxygen-awesome-theme/doxygen-awesome.css @@ -1,29 +1,10 @@ +/* SPDX-License-Identifier: MIT */ /** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css -MIT License - -Copyright (c) 2021 - 2023 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Copyright (c) 2021 - 2025 jothepro */ @@ -32,6 +13,9 @@ html { --primary-color: #1779c4; --primary-dark-color: #335c80; --primary-light-color: #70b1e9; + --on-primary-color: #ffffff; + + --link-color: var(--primary-color); /* page base colors */ --page-background-color: #ffffff; @@ -42,14 +26,15 @@ html { --separator-color: #dedede; /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ - --border-radius-large: 8px; - --border-radius-small: 4px; - --border-radius-medium: 6px; + --border-radius-large: 10px; + --border-radius-small: 5px; + --border-radius-medium: 8px; /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ --spacing-small: 5px; --spacing-medium: 10px; --spacing-large: 16px; + --spacing-xlarge: 20px; /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); @@ -113,7 +98,7 @@ html { */ --menu-display: block; - --menu-focus-foreground: var(--page-background-color); + --menu-focus-foreground: var(--on-primary-color); --menu-focus-background: var(--primary-color); --menu-selected-background: rgba(0,0,0,.05); @@ -310,10 +295,11 @@ body { font-size: var(--page-font-size); } -body, table, div, p, dl, #nav-tree .label, .title, +body, table, div, p, dl, #nav-tree .label, #nav-tree a, .title, .sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, .SelectItem, #MSearchField, .navpath li.navelem a, -.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3, +#page-nav ul.page-outline li a { font-family: var(--font-family); } @@ -332,8 +318,13 @@ p.reference, p.definition { } a:link, a:visited, a:hover, a:focus, a:active { - color: var(--primary-color) !important; + color: var(--link-color) !important; font-weight: 500; + background: none; +} + +a:hover { + text-decoration: underline; } a.anchor { @@ -348,6 +339,8 @@ a.anchor { #top { background: var(--header-background); border-bottom: 1px solid var(--separator-color); + position: relative; + z-index: 99; } @media screen and (min-width: 768px) { @@ -362,6 +355,7 @@ a.anchor { #main-nav { flex-grow: 5; padding: var(--spacing-small) var(--spacing-medium); + border-bottom: 0; } #titlearea { @@ -441,19 +435,36 @@ a.anchor { } .sm-dox a span.sub-arrow { - border-color: var(--header-foreground) transparent transparent transparent; + top: 15px; + right: 10px; + box-sizing: content-box; + padding: 0; + margin: 0; + display: inline-block; + width: 5px; + height: 5px; + transform: rotate(45deg); + border-width: 0; + border-right: 2px solid var(--header-foreground); + border-bottom: 2px solid var(--header-foreground); + background: none; } .sm-dox a:hover span.sub-arrow { - border-color: var(--menu-focus-foreground) transparent transparent transparent; + border-color: var(--menu-focus-foreground); + background: none; } .sm-dox ul a span.sub-arrow { - border-color: transparent transparent transparent var(--page-foreground-color); + transform: rotate(-45deg); + border-width: 0; + border-right: 2px solid var(--header-foreground); + border-bottom: 2px solid var(--header-foreground); } .sm-dox ul a:hover span.sub-arrow { - border-color: transparent transparent transparent var(--menu-focus-foreground); + border-color: var(--menu-focus-foreground); + background: none; } } @@ -480,7 +491,7 @@ a.anchor { .sm-dox ul a { color: var(--page-foreground-color) !important; - background: var(--page-background-color); + background: none; font-size: var(--navigation-font-size); } @@ -552,6 +563,13 @@ a.anchor { box-shadow: none; display: block; margin-top: 0; + margin-right: 0; +} + +@media (min-width: 768px) { + .sm-dox li { + padding: 0; + } } /* until Doxygen 1.9.4 */ @@ -573,6 +591,17 @@ a.anchor { padding-left: 0 } +/* Doxygen 1.14.0 */ +.search-icon::before { + background: none; + top: 5px; +} + +.search-icon::after { + background: none; + top: 12px; +} + .SelectionMark { user-select: none; } @@ -776,12 +805,15 @@ html.dark-mode iframe#MSearchResults { */ #side-nav { - padding: 0 !important; - background: var(--side-nav-background); min-width: 8px; max-width: 50vw; } + +#nav-tree, #top { + border-right: 1px solid var(--separator-color); +} + @media screen and (max-width: 767px) { #side-nav { display: none; @@ -790,34 +822,95 @@ html.dark-mode iframe#MSearchResults { #doc-content { margin-left: 0 !important; } + + #top { + border-right: none; + } } #nav-tree { - background: transparent; - margin-right: 1px; + background: var(--side-nav-background); + margin-right: -1px; + padding: 0; } #nav-tree .label { font-size: var(--navigation-font-size); + line-height: var(--tree-item-height); +} + +#nav-tree span.label a:hover { + background: none; } #nav-tree .item { height: var(--tree-item-height); line-height: var(--tree-item-height); + overflow: hidden; + text-overflow: ellipsis; + margin: 0; + padding: 0; +} + +#nav-tree-contents { + margin: 0; +} + +#main-menu > li:last-child { + height: auto; +} + +#nav-tree .item > a:focus { + outline: none; } #nav-sync { - bottom: 12px; - right: 12px; + bottom: var(--spacing-medium); + right: var(--spacing-medium) !important; top: auto !important; user-select: none; } +div.nav-sync-icon { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background: var(--page-background-color); + width: 30px; + height: 20px; +} + +div.nav-sync-icon:hover { + background: var(--page-background-color); +} + +span.sync-icon-left, div.nav-sync-icon:hover span.sync-icon-left { + border-left: 2px solid var(--primary-color); + border-top: 2px solid var(--primary-color); + top: 5px; + left: 6px; +} +span.sync-icon-right, div.nav-sync-icon:hover span.sync-icon-right { + border-right: 2px solid var(--primary-color); + border-bottom: 2px solid var(--primary-color); + top: 5px; + left: initial; + right: 6px; +} + +div.nav-sync-icon.active::after, div.nav-sync-icon.active:hover::after { + border-top: 2px solid var(--primary-color); + top: 9px; + left: 6px; + width: 19px; +} + #nav-tree .selected { text-shadow: none; background-image: none; background-color: transparent; position: relative; + color: var(--primary-color) !important; + font-weight: 500; } #nav-tree .selected::after { @@ -843,9 +936,27 @@ html.dark-mode iframe#MSearchResults { #nav-tree .arrow { opacity: var(--side-nav-arrow-opacity); + background: none; } -.arrow { +#nav-tree span.arrowhead { + margin: 0 0 1px 2px; +} + +span.arrowhead { + border-color: var(--primary-light-color); +} + +.selected span.arrowhead { + border-color: var(--primary-color); +} + +#nav-tree ul li:first-child > div > a { + opacity: 0; + pointer-events: none; +} + +.contents .arrow { color: inherit; cursor: pointer; font-size: 45%; @@ -853,7 +964,7 @@ html.dark-mode iframe#MSearchResults { margin-right: 2px; font-family: serif; height: auto; - text-align: right; + padding-bottom: 4px; } #nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { @@ -867,9 +978,11 @@ html.dark-mode iframe#MSearchResults { } .ui-resizable-e { - width: 4px; - background: transparent; - box-shadow: inset -1px 0 0 0 var(--separator-color); + background: none; +} + +.ui-resizable-e:hover { + background: var(--separator-color); } /* @@ -878,7 +991,7 @@ html.dark-mode iframe#MSearchResults { div.header { border-bottom: 1px solid var(--separator-color); - background-color: var(--page-background-color); + background: none; background-image: none; } @@ -917,7 +1030,7 @@ div.headertitle { div.header .title { font-weight: 600; font-size: 225%; - padding: var(--spacing-medium) var(--spacing-large); + padding: var(--spacing-medium) var(--spacing-xlarge); word-break: break-word; } @@ -934,9 +1047,10 @@ td.memSeparator { span.mlabel { background: var(--primary-color); + color: var(--on-primary-color); border: none; padding: 4px 9px; - border-radius: 12px; + border-radius: var(--border-radius-large); margin-right: var(--spacing-medium); } @@ -945,7 +1059,7 @@ span.mlabel:last-of-type { } div.contents { - padding: 0 var(--spacing-large); + padding: 0 var(--spacing-xlarge); } div.contents p, div.contents li { @@ -956,6 +1070,16 @@ div.contents div.dyncontent { margin: var(--spacing-medium) 0; } +@media screen and (max-width: 767px) { + div.contents { + padding: 0 var(--spacing-large); + } + + div.header .title { + padding: var(--spacing-medium) var(--spacing-large); + } +} + @media (prefers-color-scheme: dark) { html:not(.light-mode) div.contents div.dyncontent img, html:not(.light-mode) div.contents center img, @@ -979,7 +1103,7 @@ html.dark-mode div.contents .dotgraph iframe filter: brightness(89%) hue-rotate(180deg) invert(); } -h2.groupheader { +td h2.groupheader, h2.groupheader { border-bottom: 0px; color: var(--page-foreground-color); box-shadow: @@ -1040,7 +1164,7 @@ blockquote::after { blockquote p { margin: var(--spacing-small) 0 var(--spacing-medium) 0; } -.paramname { +.paramname, .paramname em { font-weight: 600; color: var(--primary-dark-color); } @@ -1090,7 +1214,7 @@ div.contents .toc { border: 0; border-left: 1px solid var(--separator-color); border-radius: 0; - background-color: transparent; + background-color: var(--page-background-color); box-shadow: none; position: sticky; top: var(--toc-sticky-top); @@ -1198,24 +1322,115 @@ div.toc li a.aboveActive { } } +/* + Page Outline (Doxygen >= 1.14.0) +*/ + +#page-nav { + background: var(--page-background-color); + border-left: 1px solid var(--separator-color); +} + +#page-nav #page-nav-resize-handle { + background: var(--separator-color); +} + +#page-nav #page-nav-resize-handle::after { + border-left: 1px solid var(--primary-color); + border-right: 1px solid var(--primary-color); +} + +#page-nav #page-nav-tree #page-nav-contents { + top: var(--spacing-large); +} + +#page-nav ul.page-outline { + margin: 0; + padding: 0; +} + +#page-nav ul.page-outline li a { + font-size: var(--toc-font-size) !important; + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + line-height: calc(2 * var(--toc-font-size)); +} + +#page-nav ul.page-outline li a a.anchorlink { + display: none; +} + +#page-nav ul.page-outline li.vis ~ * a { + color: var(--page-foreground-color) !important; +} + +#page-nav ul.page-outline li.vis:not(.vis ~ .vis) a, #page-nav ul.page-outline li a:hover { + color: var(--primary-color) !important; +} + +#page-nav ul.page-outline .vis { + background: var(--page-background-color); + position: relative; +} + +#page-nav ul.page-outline .vis::after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 4px; + background: var(--page-secondary-foreground-color); +} + +#page-nav ul.page-outline .vis:not(.vis ~ .vis)::after { + top: 1px; + border-top-right-radius: var(--border-radius-small); +} + +#page-nav ul.page-outline .vis:not(:has(~ .vis))::after { + bottom: 1px; + border-bottom-right-radius: var(--border-radius-small); +} + + +#page-nav ul.page-outline .arrow { + display: inline-block; +} + +#page-nav ul.page-outline .arrow span { + display: none; +} + +@media screen and (max-width: 767px) { + #container { + grid-template-columns: initial !important; + } + + #page-nav { + display: none; + } +} + /* Code & Fragments */ -code, div.fragment, pre.fragment { - border-radius: var(--border-radius-small); +code, div.fragment, pre.fragment, span.tt { border: 1px solid var(--separator-color); overflow: hidden; } -code { +code, span.tt { display: inline; background: var(--code-background); color: var(--code-foreground); padding: 2px 6px; + border-radius: var(--border-radius-small); } div.fragment, pre.fragment { + border-radius: var(--border-radius-medium); margin: var(--spacing-medium) 0; padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); background: var(--fragment-background); @@ -1273,7 +1488,7 @@ div.fragment, pre.fragment { } } -code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span, span.tt { font-family: var(--font-family-monospace); font-size: var(--code-font-size) !important; } @@ -1347,6 +1562,10 @@ div.line.glow { dl warning, attention, note, deprecated, bug, ... */ +dl { + line-height: calc(1.65 * var(--page-font-size)); +} + dl.bug dt a, dl.deprecated dt a, dl.todo dt a { font-weight: bold !important; } @@ -1512,6 +1731,7 @@ div.memitem { border-top-right-radius: var(--border-radius-medium); border-bottom-right-radius: var(--border-radius-medium); border-bottom-left-radius: var(--border-radius-medium); + border-top-left-radius: 0; overflow: hidden; display: block !important; } @@ -1743,7 +1963,7 @@ table.fieldtable th { color: var(--tablehead-foreground); } -table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th { border-bottom: 1px solid var(--separator-color); border-right: 1px solid var(--separator-color); } @@ -1778,8 +1998,10 @@ table.memberdecls tr[class^='memitem'] .memTemplParams { white-space: normal; } -table.memberdecls .memItemLeft, -table.memberdecls .memItemRight, +table.memberdecls tr.heading + tr[class^='memitem'] td.memItemLeft, +table.memberdecls tr.heading + tr[class^='memitem'] td.memItemRight, +table.memberdecls td.memItemLeft, +table.memberdecls td.memItemRight, table.memberdecls .memTemplItemLeft, table.memberdecls .memTemplItemRight, table.memberdecls .memTemplParams { @@ -1791,8 +2013,34 @@ table.memberdecls .memTemplParams { background-color: var(--fragment-background); } +@media screen and (min-width: 768px) { + + tr.heading + tr[class^='memitem'] td.memItemRight, tr.groupHeader + tr[class^='memitem'] td.memItemRight, tr.inherit_header + tr[class^='memitem'] td.memItemRight { + border-top-right-radius: var(--border-radius-small); + } + + table.memberdecls tr:last-child td.memItemRight, table.memberdecls tr:last-child td.mdescRight, table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemRight, table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemRight, table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescRight, table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescRight { + border-bottom-right-radius: var(--border-radius-small); + } + + table.memberdecls tr:last-child td.memItemLeft, table.memberdecls tr:last-child td.mdescLeft, table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemLeft, table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemLeft, table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescLeft, table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescLeft { + border-bottom-left-radius: var(--border-radius-small); + } + + tr.heading + tr[class^='memitem'] td.memItemLeft, tr.groupHeader + tr[class^='memitem'] td.memItemLeft, tr.inherit_header + tr[class^='memitem'] td.memItemLeft { + border-top-left-radius: var(--border-radius-small); + } + +} + +table.memname td.memname { + font-size: var(--memname-font-size); +} + table.memberdecls .memTemplItemLeft, -table.memberdecls .memTemplItemRight { +table.memberdecls .template .memItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .template .memItemRight { padding-top: 2px; } @@ -1804,13 +2052,13 @@ table.memberdecls .memTemplParams { padding-bottom: var(--spacing-small); } -table.memberdecls .memTemplItemLeft { +table.memberdecls .memTemplItemLeft, table.memberdecls .template .memItemLeft { border-radius: 0 0 0 var(--border-radius-small); border-left: 1px solid var(--separator-color); border-top: 0; } -table.memberdecls .memTemplItemRight { +table.memberdecls .memTemplItemRight, table.memberdecls .template .memItemRight { border-radius: 0 0 var(--border-radius-small) 0; border-right: 1px solid var(--separator-color); padding-left: 0; @@ -1836,8 +2084,14 @@ table.memberdecls .mdescLeft, table.memberdecls .mdescRight { background: none; color: var(--page-foreground-color); padding: var(--spacing-small) 0; + border: 0; } +table.memberdecls [class^="memdesc"] { + box-shadow: none; +} + + table.memberdecls .memItemLeft, table.memberdecls .memTemplItemLeft { padding-right: var(--spacing-medium); @@ -1860,6 +2114,10 @@ table.memberdecls .inherit_header td { color: var(--page-secondary-foreground-color); } +table.memberdecls span.dynarrow { + left: 10px; +} + table.memberdecls img[src="closed.png"], table.memberdecls img[src="open.png"], div.dynheader img[src="open.png"], @@ -1876,6 +2134,10 @@ div.dynheader img[src="closed.png"] { transition: transform var(--animation-duration) ease-out; } +tr.heading + tr[class^='memitem'] td.memItemLeft, tr.groupHeader + tr[class^='memitem'] td.memItemLeft, tr.inherit_header + tr[class^='memitem'] td.memItemLeft, tr.heading + tr[class^='memitem'] td.memItemRight, tr.groupHeader + tr[class^='memitem'] td.memItemRight, tr.inherit_header + tr[class^='memitem'] td.memItemRight { + border-top: 1px solid var(--separator-color); +} + table.memberdecls img { margin-right: 10px; } @@ -1900,7 +2162,10 @@ div.dynheader img[src="closed.png"] { table.memberdecls .mdescRight, table.memberdecls .memTemplItemLeft, table.memberdecls .memTemplItemRight, - table.memberdecls .memTemplParams { + table.memberdecls .memTemplParams, + table.memberdecls .template .memItemLeft, + table.memberdecls .template .memItemRight, + table.memberdecls .template .memParams { display: block; text-align: left; padding-left: var(--spacing-large); @@ -1913,12 +2178,14 @@ div.dynheader img[src="closed.png"] { table.memberdecls .memItemLeft, table.memberdecls .mdescLeft, - table.memberdecls .memTemplItemLeft { - border-bottom: 0; - padding-bottom: 0; + table.memberdecls .memTemplItemLeft, + table.memberdecls .template .memItemLeft { + border-bottom: 0 !important; + padding-bottom: 0 !important; } - table.memberdecls .memTemplItemLeft { + table.memberdecls .memTemplItemLeft, + table.memberdecls .template .memItemLeft { padding-top: 0; } @@ -1928,10 +2195,12 @@ div.dynheader img[src="closed.png"] { table.memberdecls .memItemRight, table.memberdecls .mdescRight, - table.memberdecls .memTemplItemRight { - border-top: 0; - padding-top: 0; + table.memberdecls .memTemplItemRight, + table.memberdecls .template .memItemRight { + border-top: 0 !important; + padding-top: 0 !important; padding-right: var(--spacing-large); + padding-bottom: var(--spacing-medium); overflow-x: auto; } @@ -1966,6 +2235,22 @@ div.dynheader img[src="closed.png"] { max-height: 200px; } } + + tr.heading + tr[class^='memitem'] td.memItemRight, tr.groupHeader + tr[class^='memitem'] td.memItemRight, tr.inherit_header + tr[class^='memitem'] td.memItemRight { + border-top-right-radius: 0; + } + + table.memberdecls tr:last-child td.memItemRight, table.memberdecls tr:last-child td.mdescRight, table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemRight, table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemRight, table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescRight, table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescRight { + border-bottom-right-radius: 0; + } + + table.memberdecls tr:last-child td.memItemLeft, table.memberdecls tr:last-child td.mdescLeft, table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemLeft, table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemLeft, table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescLeft, table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescLeft { + border-bottom-left-radius: 0; + } + + tr.heading + tr[class^='memitem'] td.memItemLeft, tr.groupHeader + tr[class^='memitem'] td.memItemLeft, tr.inherit_header + tr[class^='memitem'] td.memItemLeft { + border-top-left-radius: 0; + } } @@ -1982,14 +2267,16 @@ hr { } .contents hr { - box-shadow: 100px 0 0 var(--separator-color), - -100px 0 0 var(--separator-color), - 500px 0 0 var(--separator-color), - -500px 0 0 var(--separator-color), - 1500px 0 0 var(--separator-color), - -1500px 0 0 var(--separator-color), - 2000px 0 0 var(--separator-color), - -2000px 0 0 var(--separator-color); + box-shadow: 100px 0 var(--separator-color), + -100px 0 var(--separator-color), + 500px 0 var(--separator-color), + -500px 0 var(--separator-color), + 900px 0 var(--separator-color), + -900px 0 var(--separator-color), + 1400px 0 var(--separator-color), + -1400px 0 var(--separator-color), + 1900px 0 var(--separator-color), + -1900px 0 var(--separator-color); } .contents img, .contents .center, .contents center, .contents div.image object { @@ -2152,9 +2439,7 @@ div.qindex { background: var(--page-background-color); border: none; border-top: 1px solid var(--separator-color); - border-bottom: 1px solid var(--separator-color); border-bottom: 0; - box-shadow: 0 0.75px 0 var(--separator-color); font-size: var(--navigation-font-size); } @@ -2183,6 +2468,10 @@ address.footer { color: var(--primary-color) !important; } +.navpath li.navelem a:hover { + text-shadow: none; +} + .navpath li.navelem b { color: var(--primary-dark-color); font-weight: 500; @@ -2201,7 +2490,11 @@ li.navelem:first-child:before { display: none; } -#nav-path li.navelem:after { +#nav-path ul { + padding-left: 0; +} + +#nav-path li.navelem:has(.el):after { content: ''; border: 5px solid var(--page-background-color); border-bottom-color: transparent; @@ -2212,7 +2505,21 @@ li.navelem:first-child:before { margin-left: 6px; } -#nav-path li.navelem:before { +#nav-path li.navelem:not(:has(.el)):after { + background: var(--page-background-color); + box-shadow: 1px -1px 0 1px var(--separator-color); + border-radius: 0 var(--border-radius-medium) 0 50px; +} + +#nav-path li.navelem:not(:has(.el)) { + margin-left: 0; +} + +#nav-path li.navelem:not(:has(.el)):hover, #nav-path li.navelem:not(:has(.el)):hover:after { + background-color: var(--separator-color); +} + +#nav-path li.navelem:has(.el):before { content: ''; border: 5px solid var(--separator-color); border-bottom-color: transparent; @@ -2338,7 +2645,7 @@ doxygen-awesome-dark-mode-toggle { height: var(--searchbar-height); background: none; border: none; - border-radius: var(--searchbar-height); + border-radius: var(--searchbar-border-radius); vertical-align: middle; text-align: center; line-height: var(--searchbar-height); @@ -2523,6 +2830,7 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a. float: left; white-space: nowrap; font-weight: normal; + font-family: var(--font-family); padding: calc(var(--spacing-large) / 2) var(--spacing-large); border-radius: var(--border-radius-medium); transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; @@ -2667,3 +2975,46 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a. border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; } } + +/* + Bordered image +*/ + +html.dark-mode .darkmode_inverted_image img, /* < doxygen 1.9.3 */ +html.dark-mode .darkmode_inverted_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +.bordered_image { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + display: inline-block; + overflow: hidden; +} + +.bordered_image:empty { + border: none; +} + +html.dark-mode .bordered_image img, /* < doxygen 1.9.3 */ +html.dark-mode .bordered_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ { + border-radius: var(--border-radius-small); +} + +/* + Button +*/ + +.primary-button { + display: inline-block; + cursor: pointer; + background: var(--primary-color); + color: var(--page-background-color) !important; + border-radius: var(--border-radius-medium); + padding: var(--spacing-small) var(--spacing-medium); + text-decoration: none; +} + +.primary-button:hover { + background: var(--primary-dark-color); +} \ No newline at end of file diff --git a/docs/doxygen-awesome-theme/doxygen-custom/custom.css b/docs/doxygen-awesome-theme/doxygen-custom/custom.css new file mode 100644 index 00000000..f8da385e --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-custom/custom.css @@ -0,0 +1,129 @@ +.github-corner svg { + fill: var(--primary-light-color); + color: var(--page-background-color); + width: 72px; + height: 72px; +} + +@media screen and (max-width: 767px) { + .github-corner svg { + width: 50px; + height: 50px; + } + #projectnumber { + margin-right: 22px; + } +} + +.title_screenshot { + filter: drop-shadow(0px 3px 10px rgba(0,0,0,0.22)); + max-width: 500px; + margin: var(--spacing-large) 0; +} + +.title_screenshot .caption { + display: none; +} + +#theme-selection { + position: fixed; + bottom: 0; + left: 0; + background: var(--side-nav-background); + padding: 5px 2px 5px 8px; + box-shadow: 0 -4px 4px -2px var(--side-nav-background); + display: flex; +} + +#theme-selection label { + border: 1px solid var(--separator-color); + border-right: 0; + color: var(--page-foreground-color); + font-size: var(--toc-font-size); + padding: 0 8px; + display: inline-block; + height: 22px; + box-sizing: border-box; + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + line-height: 20px; + background: var(--page-background-color); + opacity: 0.7; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) #theme-select { + background: url("data:image/svg+xml;utf8,") no-repeat; + background-size: 8px; + background-position: calc(100% - 6px) 65%; + background-color: var(--page-background-color); + } +} + +html.dark-mode #theme-select { + background: url("data:image/svg+xml;utf8,") no-repeat; + background-size: 8px; + background-position: calc(100% - 6px) 65%; + background-color: var(--page-background-color); +} + +#theme-select { + border: 1px solid var(--separator-color); + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + padding: 0; + height: 22px; + font-size: var(--toc-font-size); + font-family: var(--font-family); + width: 215px; + color: var(--primary-color); + border-left: 0; + display: inline-block; + opacity: 0.7; + outline: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: url("data:image/svg+xml;utf8,") no-repeat; + background-size: 8px; + background-position: calc(100% - 6px) 65%; + background-repeat: no-repeat; + background-color: var(--page-background-color); +} + +#theme-selection:hover #theme-select, #theme-selection:hover label { + opacity: 1; +} + +#nav-tree-contents { + margin-bottom: 30px; +} + +@media screen and (max-width: 767px) { + #theme-selection { + box-shadow: none; + background: none; + height: 20px; + } + + #theme-select { + width: 80px; + opacity: 1; + } + + #theme-selection label { + opacity: 1; + } + + #nav-path ul li.navelem:first-child { + margin-left: 160px; + } + + ul li.footer:not(:first-child) { + display: none; + } + + #nav-path { + position: fixed; + bottom: 0; + background: var(--page-background-color); + } +} \ No newline at end of file diff --git a/docs/doxygen-awesome-theme/doxygen-custom/header.html b/docs/doxygen-awesome-theme/doxygen-custom/header.html new file mode 100644 index 00000000..1d3e231a --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-custom/header.html @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + +$projectname: $title +$title + + + + + + + + + + + +$treeview +$search +$mathjax + +$extrastylesheet + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + +
+
$projectname +  $projectnumber +
+
$projectbrief
+
+
$projectbrief
+
$searchbox
+
+ + +
+
+ + diff --git a/docs/doxygen-awesome-theme/doxygen-custom/theme-robot.css b/docs/doxygen-awesome-theme/doxygen-custom/theme-robot.css new file mode 100644 index 00000000..8dae9678 --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-custom/theme-robot.css @@ -0,0 +1,62 @@ +html.theme-robot { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1c89a4; + --primary-dark-color: #1a6f84; + --primary-light-color: #5abcd4; + --primary-lighter-color: #cae1f1; + --primary-lightest-color: #e9f1f8; + + --fragment-background: #ececec; + --code-background: #ececec; + + /* page base colors */ + --page-background-color: white; + --page-foreground-color: #2c3e50; + --page-secondary-foreground-color: #67727e; + + + --border-radius-large: 0px; + --border-radius-small: 0px; + --border-radius-medium: 0px; + + --spacing-small: 3px; + --spacing-medium: 6px; + --spacing-large: 12px; + + --top-height: 125px; + + --side-nav-background: var(--page-background-color); + --side-nav-foreground: var(--page-foreground-color); + --header-foreground: var(--side-nav-foreground); + --searchbar-border-radius: var(--border-radius-medium); + --header-background: var(--side-nav-background); + --header-foreground: var(--side-nav-foreground); + + --toc-background: rgb(243, 240, 252); + --toc-foreground: var(--page-foreground-color); + + --font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + --page-font-size: 14px; + --box-shadow: none; + --separator-color: #cdcdcd; +} + +html.theme-robot.dark-mode { + color-scheme: dark; + + --primary-color: #49cad3; + --primary-dark-color: #8ed2d7; + --primary-light-color: #377479; + --primary-lighter-color: #191e21; + --primary-lightest-color: #191a1c; + + --fragment-background: #000000; + --code-background: #000000; + + --page-background-color: #161616; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #555555; + --separator-color: #545454; + --toc-background: #20142C; + +} \ No newline at end of file diff --git a/docs/doxygen-awesome-theme/doxygen-custom/theme-round.css b/docs/doxygen-awesome-theme/doxygen-custom/theme-round.css new file mode 100644 index 00000000..4e03b152 --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-custom/theme-round.css @@ -0,0 +1,55 @@ +html.theme-round { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #AF7FE4; + --primary-dark-color: #9270E4; + --primary-light-color: #d2b7ef; + --primary-lighter-color: #cae1f1; + --primary-lightest-color: #e9f1f8; + + /* page base colors */ + --page-background-color: white; + --page-foreground-color: #2c3e50; + --page-secondary-foreground-color: #67727e; + + + --border-radius-large: 22px; + --border-radius-small: 9px; + --border-radius-medium: 14px; + --spacing-small: 8px; + --spacing-medium: 14px; + --spacing-large: 19px; + --spacing-xlarge: 21px; + + --top-height: 125px; + + --side-nav-background: #324067; + --side-nav-foreground: #F1FDFF; + --header-foreground: var(--side-nav-foreground); + --searchbar-background: var(--side-nav-foreground); + --searchbar-border-radius: var(--border-radius-medium); + --header-background: var(--side-nav-background); + --header-foreground: var(--side-nav-foreground); + + --toc-background: rgb(243, 240, 252); + --toc-foreground: var(--page-foreground-color); +} + +html.theme-round.dark-mode { + color-scheme: dark; + + --primary-color: #AF7FE4; + --primary-dark-color: #715292; + --primary-light-color: #ae97c7; + --primary-lighter-color: #191e21; + --primary-lightest-color: #191a1c; + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #3a3246; + --side-nav-background: #171D32; + --side-nav-foreground: #F1FDFF; + --toc-background: #20142C; + --searchbar-background: var(--page-background-color); + +} \ No newline at end of file diff --git a/docs/doxygen-awesome-theme/doxygen-custom/toggle-alternative-theme.js b/docs/doxygen-awesome-theme/doxygen-custom/toggle-alternative-theme.js new file mode 100644 index 00000000..4e231f14 --- /dev/null +++ b/docs/doxygen-awesome-theme/doxygen-custom/toggle-alternative-theme.js @@ -0,0 +1,52 @@ +// Toggle zwischen drei Theme-Zuständen und speichere im localStorage +const THEME_CLASSES = ['theme-default', 'theme-round', 'theme-robot']; +// Ermögliche das Umschalten per Button/Funktion (z.B. für onclick im HTML) +function toggleThemeVariant() { + let idx = getCurrentThemeIndex(); + idx = (idx + 1) % THEME_CLASSES.length; + applyThemeClass(idx); +} + +// Funktion global verfügbar machen +window.toggleThemeVariant = toggleThemeVariant; + +function getCurrentThemeIndex() { + const stored = localStorage.getItem('theme-variant'); + if (stored === null) return 0; + const idx = THEME_CLASSES.indexOf(stored); + return idx === -1 ? 0 : idx; +} + +function applyThemeClass(idx) { + document.documentElement.classList.remove(...THEME_CLASSES); + if (THEME_CLASSES[idx] && THEME_CLASSES[idx] !== 'theme-default') { + document.documentElement.classList.add(THEME_CLASSES[idx]); + } + localStorage.setItem('theme-variant', THEME_CLASSES[idx] || 'theme-default'); + // Select synchronisieren, falls vorhanden + const select = document.getElementById('theme-select'); + if (select) select.value = THEME_CLASSES[idx]; +} + +function setThemeByName(themeName) { + const idx = THEME_CLASSES.indexOf(themeName); + applyThemeClass(idx === -1 ? 0 : idx); +} + + +document.addEventListener('DOMContentLoaded', () => { + const select = document.getElementById('theme-select'); + if (select) { + // Initialisiere Auswahl aus localStorage + const idx = getCurrentThemeIndex(); + select.value = THEME_CLASSES[idx]; + applyThemeClass(idx); + // Theme bei Auswahl ändern + select.addEventListener('change', e => { + setThemeByName(e.target.value); + }); + } else { + // Fallback: Theme trotzdem setzen + applyThemeClass(getCurrentThemeIndex()); + } +}); diff --git a/docs/doxygen-awesome-theme/header.html b/docs/doxygen-awesome-theme/header.html deleted file mode 100644 index 88135967..00000000 --- a/docs/doxygen-awesome-theme/header.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - -$projectname: $title -$title - - - - - - - - -$treeview -$search -$mathjax -$darkmode - -$extrastylesheet - - - - - - - - -
- - - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
$projectname $projectnumber -
-
$projectbrief
-
-
$projectbrief
-
$searchbox
$searchbox
-
- - diff --git a/docs/github-corner-disable.css b/docs/github-corner-disable.css new file mode 100644 index 00000000..45ec860d --- /dev/null +++ b/docs/github-corner-disable.css @@ -0,0 +1,3 @@ +.github-corner { + display: none !important; +}