From 685a8ebc49763f0025d15dca191aefa68d234ce6 Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Thu, 10 Nov 2022 15:49:37 -0800 Subject: [PATCH] Updates to API documentation generation - Add CSS settings from Doxygen Awesome. - Add a scaled MaterialX logo to API documentation. - Explicitly set the Main Page in the Doxyfile. --- documents/CMakeLists.txt | 9 +- documents/DeveloperGuide/MainPage.md | 2 +- documents/Doxyfile.in | 8 + documents/DoxygenAwesome/LICENSE | 21 + documents/DoxygenAwesome/doxygen-awesome.css | 2405 ++++++++++++++++++ documents/Images/MaterialXLogo_200x155.png | Bin 0 -> 24694 bytes 6 files changed, 2441 insertions(+), 4 deletions(-) create mode 100644 documents/DoxygenAwesome/LICENSE create mode 100644 documents/DoxygenAwesome/doxygen-awesome.css create mode 100644 documents/Images/MaterialXLogo_200x155.png diff --git a/documents/CMakeLists.txt b/documents/CMakeLists.txt index ba4cfd4e89..56d2289b99 100644 --- a/documents/CMakeLists.txt +++ b/documents/CMakeLists.txt @@ -1,6 +1,6 @@ set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) -set(DOXYGEN_HTML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/MaterialXDocs) -set(DOXYGEN_INPUT_LIST ${CMAKE_SOURCE_DIR}/documents/DeveloperGuide +set(DOXYGEN_HTML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/html) +set(DOXYGEN_INPUT_LIST ${CMAKE_SOURCE_DIR}/documents/DeveloperGuide/MainPage.md ${CMAKE_SOURCE_DIR}/source/MaterialXCore ${CMAKE_SOURCE_DIR}/source/MaterialXFormat ${CMAKE_SOURCE_DIR}/source/MaterialXGenShader @@ -25,7 +25,10 @@ if(DOXYGEN_FOUND) COMMENT "Generating HTML documentation: ${DOXYGEN_HTML_OUTPUT_DIR}/index.html") add_custom_command(TARGET MaterialXDocs PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_SOURCE_DIR}/resources/Images ${CMAKE_CURRENT_BINARY_DIR}) + ${CMAKE_SOURCE_DIR}/documents/DoxygenAwesome ${CMAKE_CURRENT_BINARY_DIR}) + add_custom_command(TARGET MaterialXDocs PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_SOURCE_DIR}/documents/Images ${CMAKE_CURRENT_BINARY_DIR}) install(DIRECTORY ${DOXYGEN_HTML_OUTPUT_DIR} DESTINATION "documents" MESSAGE_NEVER) endif(DOXYGEN_FOUND) diff --git a/documents/DeveloperGuide/MainPage.md b/documents/DeveloperGuide/MainPage.md index 75748ccb32..6d91b16965 100644 --- a/documents/DeveloperGuide/MainPage.md +++ b/documents/DeveloperGuide/MainPage.md @@ -1,4 +1,4 @@ -# MaterialX Overview {#mainpage} +# MaterialX Overview MaterialX is an open standard for transfer of rich material and look-development content between applications and renderers. Originated at Lucasfilm in 2012, MaterialX has been used by Industrial Light & Magic (ILM) in feature films such as _Star Wars: The Force Awakens_ and real-time experiences such as _Trials on Tatooine_, and it remains the central material format for new ILM productions. diff --git a/documents/Doxyfile.in b/documents/Doxyfile.in index 6803c0fcab..873037ef99 100644 --- a/documents/Doxyfile.in +++ b/documents/Doxyfile.in @@ -1,5 +1,9 @@ PROJECT_NAME = MaterialX PROJECT_NUMBER = ${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION} +PROJECT_LOGO = MaterialXLogo_200x155.png + +USE_MDFILE_AS_MAINPAGE = MainPage.md +HTML_EXTRA_STYLESHEET = doxygen-awesome.css INPUT = ${DOXYGEN_INPUT_STR} OUTPUT_DIRECTORY = ${DOXYGEN_OUTPUT_DIR} @@ -13,5 +17,9 @@ EXTRACT_LOCAL_CLASSES = NO GENERATE_TODOLIST = NO GENERATE_LATEX = NO +GENERATE_TREEVIEW = YES +DISABLE_INDEX = NO +FULL_SIDEBAR = NO + QUIET = YES WARN_IF_UNDOCUMENTED = NO diff --git a/documents/DoxygenAwesome/LICENSE b/documents/DoxygenAwesome/LICENSE new file mode 100644 index 0000000000..1d8b99a958 --- /dev/null +++ b/documents/DoxygenAwesome/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 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. diff --git a/documents/DoxygenAwesome/doxygen-awesome.css b/documents/DoxygenAwesome/doxygen-awesome.css new file mode 100644 index 0000000000..abd2893ccc --- /dev/null +++ b/documents/DoxygenAwesome/doxygen-awesome.css @@ -0,0 +1,2405 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 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: #f8d1cc; + --warning-color-dark: #b61825; + --warning-color-darker: #75070f; + --note-color: #faf3d8; + --note-color-dark: #f3a600; + --note-color-darker: #5f4204; + --todo-color: #e4f3ff; + --todo-color-dark: #1879C4; + --todo-color-darker: #274a5c; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #e4dafd; + --bug-color-dark: #5b2bdd; + --bug-color-darker: #2a0d72; + --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 / collapsable 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); +} + +@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: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --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: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --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 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: .9em; + 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; +} + +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); +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#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; +} + +#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); +} + +.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 { + background: var(--separator-color); + width: 1px; +} + +/* + 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 { + filter: 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 { + filter: 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 { + 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); +} + +/* + 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: transparent; + 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 0.25s 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, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .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); +} + +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.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 { + color: var(--todo-color-dark); +} + +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 { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre 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.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; +} + +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 0.25s 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 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); +} + +.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 { + 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 { + 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 { + 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 { + 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 { + 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 .1s 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 .1s ease-in-out, color .1s 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; +} diff --git a/documents/Images/MaterialXLogo_200x155.png b/documents/Images/MaterialXLogo_200x155.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb746406a867f628680c904c8a77b341c76166c GIT binary patch literal 24694 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 r@b@twA)3m$;(N^hx2!!