From 3d39d991e4cd2d515d6d2cde2cc82a4680b633d4 Mon Sep 17 00:00:00 2001 From: bennibbelink <79653949+bennibbelink@users.noreply.github.com> Date: Wed, 18 Sep 2024 22:00:01 -0400 Subject: [PATCH] add doxygen-awesome.css to doxygen build --- doc/CMakeLists.txt | 2 + doc/doxy.conf.in | 8 +- doc/doxygen-awesome.css | 2681 +++++++++++++++++++++++++++++++++++++++ doc/logo2_bike.gif | Bin 0 -> 41942 bytes docker/Dockerfile | 10 +- src/cycamore.h | 11 + 6 files changed, 2705 insertions(+), 7 deletions(-) create mode 100644 doc/doxygen-awesome.css create mode 100644 doc/logo2_bike.gif diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 9c21d90b80..c360ffbf53 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -8,6 +8,8 @@ IF(DOXYGEN_FOUND) SET(DOXYGEN_SOURCE_DIR ${CYCAMORE_SOURCE_DIR}) SET(DOXYGEN_INPUT ${DOC_INPUT_DIR}/doxygen.conf) SET(DOXYGEN_OUTPUT ${DOC_OUTPUT_DIR}/html/index.html) + SET(PROJECT_LOGO "${DOC_INPUT_DIR}/logo2_bike.gif") + SET(DOXYGEN_STYLESHEET_FILE "${DOC_INPUT_DIR}/doxygen-awesome.css") FIND_PACKAGE(HTMLHelp) diff --git a/doc/doxy.conf.in b/doc/doxy.conf.in index 4aa226f3de..3810d045d0 100644 --- a/doc/doxy.conf.in +++ b/doc/doxy.conf.in @@ -6,6 +6,12 @@ OUTPUT_LANGUAGE = @DOXYGEN_LANGUAGE@ INPUT_ENCODING = BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES +HTML_EXTRA_STYLESHEET = @DOXYGEN_STYLESHEET_FILE@ +PROJECT_LOGO = @PROJECT_LOGO@ +GENERATE_TREEVIEW = YES +DISABLE_INDEX = NO +FULL_SIDEBAR = NO +HTML_COLORSTYLE = LIGHT ABBREVIATE_BRIEF = ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO @@ -93,9 +99,7 @@ HHC_LOCATION = @HTML_HELP_COMPILER@ GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO -DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 GENERATE_LATEX = @DOXYGEN_LATEX@ LATEX_OUTPUT = refman-latex diff --git a/doc/doxygen-awesome.css b/doc/doxygen-awesome.css new file mode 100644 index 0000000000..99ead768b3 --- /dev/null +++ b/doc/doxygen-awesome.css @@ -0,0 +1,2681 @@ +/** + +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. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --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; + + /* 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; + + /* 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); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .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 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); + overflow: hidden; + text-overflow: ellipsis; +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#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 { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname, .paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: var(--page-background-color); + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +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); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + 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 { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + 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); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + 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; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} \ No newline at end of file diff --git a/doc/logo2_bike.gif b/doc/logo2_bike.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d6d0fc63e2e942b506999df94ad5aa545e474fa GIT binary patch literal 41942 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

i&9_w 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 qgWKd!LfBq|*;4aN1YK4D literal 0 HcmV?d00001 diff --git a/docker/Dockerfile b/docker/Dockerfile index 95774f4ef3..dace436979 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,7 +2,7 @@ ARG pkg_mgr=apt ARG ubuntu_version=22.04 ARG cyclus_tag=latest -FROM ghcr.io/cyclus/cyclus_${ubuntu_version}_${pkg_mgr}/cyclus:${cyclus_tag} as cycamore +FROM ghcr.io/cyclus/cyclus_${ubuntu_version}_${pkg_mgr}/cyclus:${cyclus_tag} AS cycamore ARG make_cores=2 COPY . /cycamore @@ -10,15 +10,15 @@ WORKDIR /cycamore RUN python3 install.py -j ${make_cores} --allow-milps -FROM cycamore as deb-generation +FROM cycamore AS deb-generation WORKDIR /cycamore/build RUN make package -FROM scratch as deb-package +FROM scratch AS deb-package COPY --from=deb-generation /cycamore/build/cycamore*.deb / -FROM cycamore as cycamore-test +FROM cycamore AS cycamore-test RUN cycamore_unit_tests -FROM cycamore-test as cycamore-pytest +FROM cycamore-test AS cycamore-pytest RUN cd tests && python3 -m pytest diff --git a/src/cycamore.h b/src/cycamore.h index a17995e402..c3ff0e8306 100644 --- a/src/cycamore.h +++ b/src/cycamore.h @@ -1,6 +1,17 @@ #ifndef CYCAMORE_SRC_CYCAMORE_H_ #define CYCAMORE_SRC_CYCAMORE_H_ +// For Doxygen mainpage +/*! + * \mainpage Cycamore API Reference + * + * Welcome to the Cycamore API reference! Below are some helpful links for learning more: + * - GitHub repository: https://github.com/cyclus/cycamore + * - Kernel developer guide: https://fuelcycle.org/kernel + * - Archetype developer guide: https://fuelcycle.org/arche + * + */ + // These includes must come before others. #include "cyclus.h" #include "cycamore_version.h"