From 678d66fbd28d92d0904a3ce3dc30ee7550f7afe1 Mon Sep 17 00:00:00 2001 From: dsambit Date: Mon, 6 Jul 2026 16:06:01 +0000 Subject: [PATCH] deploy: 8ec9aa3a1eb79ae3001e3f9faada1dac29e8f312 --- .nojekyll | 0 _r_e_a_d_m_e_8md.html | 112 + clipboard.js | 61 + codefolding.js | 143 + cookie.js | 58 + dir_3e0e28f287a7eabeca6cb1997599e376.html | 121 + dir_a5be7bbed3ff2f129951759fe96bf5d5.html | 121 + doxygen.css | 2560 ++++++++++++++++++ doxygen.svg | 28 + doxygen_crawl.html | 40 + files.html | 119 + index.html | 172 ++ menu.js | 569 ++++ menudata.js | 28 + namespacedftfe.html | 119 + namespacedftfe_1_1pseudo_utils.html | 395 +++ namespacemembers.html | 122 + namespacemembers_func.html | 122 + navtree.css | 327 +++ pseudo_potential_to_dftfe_converter_8cc.html | 151 ++ search/all_0.js | 4 + search/all_1.js | 4 + search/all_2.js | 4 + search/all_3.js | 8 + search/all_4.js | 4 + search/all_5.js | 7 + search/all_6.js | 6 + search/all_7.js | 4 + search/all_8.js | 4 + search/all_9.js | 5 + search/all_a.js | 5 + search/all_b.js | 5 + search/all_c.js | 4 + search/all_d.js | 13 + search/files_0.js | 4 + search/files_1.js | 4 + search/functions_0.js | 4 + search/functions_1.js | 13 + search/namespaces_0.js | 5 + search/pages_0.js | 4 + search/pages_1.js | 4 + search/pages_2.js | 4 + search/pages_3.js | 6 + search/pages_4.js | 4 + search/pages_5.js | 7 + search/pages_6.js | 6 + search/pages_7.js | 4 + search/pages_8.js | 4 + search/pages_9.js | 4 + search/pages_a.js | 5 + search/pages_b.js | 4 + search/search.css | 377 +++ search/search.js | 708 +++++ search/searchdata.js | 27 + tabs.css | 482 ++++ 55 files changed, 7125 insertions(+) create mode 100644 .nojekyll create mode 100644 _r_e_a_d_m_e_8md.html create mode 100644 clipboard.js create mode 100644 codefolding.js create mode 100644 cookie.js create mode 100644 dir_3e0e28f287a7eabeca6cb1997599e376.html create mode 100644 dir_a5be7bbed3ff2f129951759fe96bf5d5.html create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 doxygen_crawl.html create mode 100644 files.html create mode 100644 index.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 namespacedftfe.html create mode 100644 namespacedftfe_1_1pseudo_utils.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_func.html create mode 100644 navtree.css create mode 100644 pseudo_potential_to_dftfe_converter_8cc.html create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/files_0.js create mode 100644 search/files_1.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/namespaces_0.js create mode 100644 search/pages_0.js create mode 100644 search/pages_1.js create mode 100644 search/pages_2.js create mode 100644 search/pages_3.js create mode 100644 search/pages_4.js create mode 100644 search/pages_5.js create mode 100644 search/pages_6.js create mode 100644 search/pages_7.js create mode 100644 search/pages_8.js create mode 100644 search/pages_9.js create mode 100644 search/pages_a.js create mode 100644 search/pages_b.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/_r_e_a_d_m_e_8md.html b/_r_e_a_d_m_e_8md.html new file mode 100644 index 000000000..7d9c0c2b9 --- /dev/null +++ b/_r_e_a_d_m_e_8md.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: workspace/README.md File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+
workspace/README.md File Reference
+
+
+
+ + +
+ + diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 000000000..6a0f42cde --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +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. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +document.addEventListener('DOMContentLoaded', function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + clipboard_div.addEventListener('click', function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/codefolding.js b/codefolding.js new file mode 100644 index 000000000..5b55e8b66 --- /dev/null +++ b/codefolding.js @@ -0,0 +1,143 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2026 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let codefold = { + opened : true, + + show_plus : function(el) { + if (el) { + el.classList.remove('minus'); + el.classList.add('plus'); + } + }, + + show_minus : function(el) { + if (el) { + el.classList.add('minus'); + el.classList.remove('plus'); + } + }, + + // toggle all folding blocks + toggle_all : function() { + if (this.opened) { + const foldAll = document.getElementById('fold_all'); + this.show_plus(foldAll); + document.querySelectorAll('div[id^=foldopen]').forEach(el => el.style.display = 'none'); + document.querySelectorAll('div[id^=foldclosed]').forEach(el => el.style.display = ''); + document.querySelectorAll('div[id^=foldclosed] span.fold').forEach(el => this.show_plus(el)); + } else { + const foldAll = document.getElementById('fold_all'); + this.show_minus(foldAll); + document.querySelectorAll('div[id^=foldopen]').forEach(el => el.style.display = ''); + document.querySelectorAll('div[id^=foldclosed]').forEach(el => el.style.display = 'none'); + } + this.opened=!this.opened; + }, + + // toggle single folding block + toggle : function(id) { + const openEl = document.getElementById('foldopen'+id); + const closedEl = document.getElementById('foldclosed'+id); + if (openEl) { + openEl.style.display = openEl.style.display === 'none' ? '' : 'none'; + const nextEl = openEl.nextElementSibling; + if (nextEl) { + nextEl.querySelectorAll('span.fold').forEach(el => this.show_plus(el)); + } + } + if (closedEl) { + closedEl.style.display = closedEl.style.display === 'none' ? '' : 'none'; + } + }, + + init : function() { + // add code folding line and global control + document.querySelectorAll('span.lineno').forEach((el, index) => { + el.style.paddingRight = '4px'; + el.style.marginRight = '2px'; + el.style.display = 'inline-block'; + el.style.width = '54px'; + el.style.background = 'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'; + const span = document.createElement('span'); + if (index === 0) { // add global toggle to first line + span.className = 'fold minus'; + span.id = 'fold_all'; + span.onclick = () => codefold.toggle_all(); + } else { // add vertical lines to other rows + span.className = 'fold' + } + el.appendChild(span); + }); + // add toggle controls to lines with fold divs + document.querySelectorAll('div.foldopen').forEach(el => { + // extract specific id to use + const id = el.getAttribute('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = el.getAttribute('data-start'); + const end = el.getAttribute('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + const firstFold = el.querySelector('span.fold'); + if (firstFold) { + const span = document.createElement('span'); + span.className = 'fold minus'; + span.onclick = () => codefold.toggle(id); + firstFold.replaceWith(span); + } + // append div for folded (closed) representation + const closedDiv = document.createElement('div'); + closedDiv.id = 'foldclosed'+id; + closedDiv.className = 'foldclosed'; + closedDiv.style.display = 'none'; + el.after(closedDiv); + // extract the first line from the "open" section to represent closed content + const line = el.children[0] ? el.children[0].cloneNode(true) : null; + if (line) { + // remove any glow that might still be active on the original line + line.classList.remove('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + line.innerHTML = line.innerHTML.replace(new RegExp('\\s*'+start+'\\s*$','g'),''); + } + // replace minus with plus symbol + line.querySelectorAll('span.fold').forEach(span => { + codefold.show_plus(span); + // re-apply click handler as it is not copied with cloneNode + span.onclick = () => codefold.toggle(id); + }); + // append ellipsis + const ellipsisLink = document.createElement('a'); + ellipsisLink.href = "javascript:codefold.toggle('"+id+"')"; + ellipsisLink.innerHTML = '…'; + line.appendChild(document.createTextNode(' '+start)); + line.appendChild(ellipsisLink); + line.appendChild(document.createTextNode(end)); + // insert constructed line into closed div + closedDiv.appendChild(line); + } + }); + }, +}; +/* @license-end */ diff --git a/cookie.js b/cookie.js new file mode 100644 index 000000000..53ad21d98 --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/dir_3e0e28f287a7eabeca6cb1997599e376.html b/dir_3e0e28f287a7eabeca6cb1997599e376.html new file mode 100644 index 000000000..9cc2e1099 --- /dev/null +++ b/dir_3e0e28f287a7eabeca6cb1997599e376.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+
pseudoConverters Directory Reference
+
+ + + +
+ + diff --git a/dir_a5be7bbed3ff2f129951759fe96bf5d5.html b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html new file mode 100644 index 000000000..3903dfaf4 --- /dev/null +++ b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: workspace Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+
workspace Directory Reference
+
+
+ + + +

+Directories

 
pseudoConverters
+
+ + +
+ + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..2990034f5 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2560 @@ +/* The standard CSS for doxygen 1.17.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #3D578C; +--page-external-link-color: #334975; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--group-header-separator-color: #D9E0EE; +--group-header-color: #354C7B; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 75px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #C4CFE5; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #C4CFE5; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-folder-open-fill-color: #C4CFE5; +--icon-folder-fill-color: #D8DFEE; +--icon-folder-border-color: #4665A2; +--icon-doc-fill-color: #D8DFEE; +--icon-doc-border-color: #4665A2; + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; +--memdecl-border-color: #D5DDEC; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-proto-background-color: #EEF1F7; +--memdef-proto-text-color: #253555; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-border-color: #C4CFE5; +--nav-breadcrumb-separator-color: #C4CFE5; +--nav-breadcrumb-active-bg: #EEF1F7; +--nav-breadcrumb-color: #354C7B; +--nav-splitbar-bg-color: #DCE2EF; +--nav-splitbar-handle-color: #9CAFD4; +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-active-bg: #DCE2EF; +--nav-menu-active-color: #9CAFD4; +--nav-arrow-color: #B6C4DF; +--nav-arrow-selected-color: #90A5CE; + +/* sync icon */ +--sync-icon-border-color: #C4CFE5; +--sync-icon-background-color: #F9FAFC; +--sync-icon-selected-background-color: #EEF1F7; +--sync-icon-color: #C4CFE5; +--sync-icon-selected-color: #6884BD; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-active-color: black; +--search-filter-background-color: rgba(255,255,255,.7); +--search-filter-backdrop-filter: blur(4px); +--search-filter-foreground-color: black; +--search-filter-border-color: rgba(150,150,150,.4); +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: rgba(255,255,255,.8); +--search-results-backdrop-filter: blur(4px); +--search-results-border-color: rgba(150,150,150,.4); +--search-box-border-color: #B6C4DF; +--search-close-icon-bg-color: #A0A0A0; +--search-close-icon-fg-color: white; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--fragment-highlight-filter: -3; +--tooltip-foreground-color: black; +--tooltip-background-color: rgba(255,255,255,0.8); +--tooltip-arrow-background-color: white; +--tooltip-border-color: rgba(150,150,150,0.7); +--tooltip-backdrop-filter: blur(3px); +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 0 4px 8px 0 rgba(0,0,0,.25); +--fold-line-color: #808080; + +/** font-family */ +--font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +--satisfies-color-hl: #b61825; +--satisfies-color-bg: #f8d1cc; +--verifies-color-hl: #b61825; +--verifies-color-bg: #f8d1cc; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #90A5CE; +--page-external-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--group-header-separator-color: #1D2A43; +--group-header-color: #90A5CE; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #212F4B; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #2C3F65; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-folder-open-fill-color: #4665A2; +--icon-folder-fill-color: #5373B4; +--icon-folder-border-color: #C4CFE5; +--icon-doc-fill-color: #6884BD; +--icon-doc-border-color: #C4CFE5; + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; +--memdecl-border-color: #233250; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-border-color: #212F4B; +--nav-breadcrumb-separator-color: #212F4B; +--nav-breadcrumb-active-bg: #1D2A43; +--nav-breadcrumb-color: #90A5CE; +--nav-splitbar-bg-color: #283A5D; +--nav-splitbar-handle-color: #4665A2; +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-active-bg: #1D2A43; +--nav-menu-active-color: #C9D3E7; +--nav-arrow-color: #4665A2; +--nav-arrow-selected-color: #6884BD; + +/* sync icon */ +--sync-icon-border-color: #212F4B; +--sync-icon-background-color: #101826; +--sync-icon-selected-background-color: #1D2A43; +--sync-icon-color: #4665A2; +--sync-icon-selected-color: #5373B4; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-active-color: #F5F5F5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-backdrop-filter: none; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: black; +--search-results-foreground-color: #90A5CE; +--search-results-backdrop-filter: none; +--search-results-border-color: #334975; +--search-box-border-color: #334975; +--search-close-icon-bg-color: #909090; +--search-close-icon-fg-color: black; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--fragment-highlight-filter: 5; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-arrow-background-color: #202020; +--tooltip-backdrop-filter: none; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; + +/** font-family */ +--font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +--satisfies-color-hl: #ad2617; +--satisfies-color-bg: #2e1917; +--verifies-color-hl: #ad2617; +--verifies-color-bg: #2e1917; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +body.resizing { + user-select: none; + -webkit-user-select: none; +} + +#doc-content { + scrollbar-width: thin; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 160%; + font-weight: 400; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + box-shadow: 12px 0 var(--page-background-color), + -12px 0 var(--page-background-color), + 12px 1px var(--group-header-separator-color), + -12px 1px var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +td h2.groupheader { + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; + margin-bottom: 0px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + margin-right: 6px; + padding-right: 6px; + text-align: right; + line-height: 110%; + background-color: var(--nav-background-color); +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + padding-right: 6px; + padding-left: 6px; + border-radius: 0 6px 6px 0; + background-color: var(--nav-menu-active-bg); +} + +div.alphasepar:before{ + content: " | " ; + width: 14px; + display: inline-block; + text-align: center; + line-height: 140%; + font-size: 130%; +} + +div.alphasepar{ + display: inline-block; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +span.label a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.el, a.el:visited, a.code, a.code:visited, a.line, a.line:visited { + color: var(--page-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--page-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +div.embeddoc { + font-family: var(--font-family-monospace); + padding-left: 10px; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style: none; + padding-left: 40px; + margin: 0; +} + +ul.check li { + position: relative; +} + +li.unchecked::before, li.checked::before { + position: absolute; + left: -18px; + top: 0; +} + +li.unchecked::before { + content: "☐"; +} + +li.checked::before { + content: "☑"; +} + +ul.check li > p { + display: inline; +} + +ul.check li > p:not(:first-child) { + display: block; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +span.tt { + white-space: pre; + font-family: var(--font-family-monospace); + background-color: var(--fragment-background-color); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: hidden; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .4; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: wrap; + word-break: break-all; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -62px; + padding-left: 62px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + display: inline-block; + width: 12px; + height: 12px; + margin-left: 4px; + margin-right: 1px; +} + +span.foldnone { + display: inline-block; + position: relative; + cursor: pointer; + user-select: none; +} + +span.fold.plus, span.fold.minus { + width: 10px; + height: 10px; + background-color: var(--fragment-background-color); + position: relative; + border: 1px solid var(--fold-line-color); + margin-right: 1px; +} + +span.fold.plus::before, span.fold.minus::before { + content: ''; + position: absolute; + background-color: var(--fold-line-color); +} + +span.fold.plus::before { + width: 2px; + height: 6px; + top: 2px; + left: 4px; +} + +span.fold.plus::after { + content: ''; + position: absolute; + width: 6px; + height: 2px; + top: 4px; + left: 2px; + background-color: var(--fold-line-color); +} + +span.fold.minus::before { + width: 6px; + height: 2px; + top: 4px; + left: 2px; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 110%; + font-weight: 500; + margin-left: 0px; + margin-top: 0em; + margin-bottom: 6px; + padding-top: 8px; + padding-bottom: 4px; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 12px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + border: none; + margin-top: 16px; + margin-bottom: 16px; + height: 1px; + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight { + padding-top: 2px; + padding-bottom: 2px; +} + +.memTemplParams { + padding-left: 10px; + padding-top: 5px; +} + +.memItemLeft, .memItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +tr[class^='memdesc'] { + box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,.075); +} + +.mdescLeft { + border-left: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); +} + +.mdescRight { + border-right: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; + border-left: 1px solid var(--memdecl-border-color); + border-right: 1px solid var(--memdecl-border-color); +} + +td.ititle { + border: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; + border-top-right-radius: 4px; + padding-left: 10px; +} + +tr:not(:first-child) > td.ititle { + border-top: 0; + border-radius: 0; +} + +.memItemLeft { + white-space: nowrap; + border-left: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); + padding-left: 10px; + transition: none; + vertical-align: top; + text-align: right; +} + +.memItemRight { + width: 100%; + border-right: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); + padding-right: 10px; + transition: none; + vertical-align: bottom; +} + +tr.heading + tr[class^='memitem'] td.memItemLeft, +tr.groupHeader + tr[class^='memitem'] td.memItemLeft, +tr.inherit_header + tr[class^='memitem'] td.memItemLeft { + border-top: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; +} + +tr.heading + tr[class^='memitem'] td.memItemRight, +tr.groupHeader + tr[class^='memitem'] td.memItemRight, +tr.inherit_header + tr[class^='memitem'] td.memItemRight { + border-top: 1px solid var(--memdecl-border-color); + border-top-right-radius: 4px; +} + +tr.heading + tr[class^='memitem'] td.memTemplParams, +tr.heading + tr td.ititle, +tr.groupHeader + tr[class^='memitem'] td.memTemplParams, +tr.groupHeader + tr td.ititle, +tr.inherit_header + tr[class^='memitem'] td.memTemplParams { + border-top: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +table.memberdecls tr:last-child td.memItemLeft, +table.memberdecls tr:last-child td.mdescLeft, +table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemLeft, +table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemLeft, +table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescLeft, +table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescLeft { + border-bottom-left-radius: 4px; +} + +table.memberdecls tr:last-child td.memItemRight, +table.memberdecls tr:last-child td.mdescRight, +table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemRight, +table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemRight, +table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescRight, +table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescRight { + border-bottom-right-radius: 4px; +} + +tr.template .memItemLeft, tr.template .memItemRight { + border-top: none; + padding-top: 0; +} + + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-color: var(--memdef-proto-background-color); + line-height: 1.25; + font-family: var(--font-family-monospace); + font-weight: 500; + font-size: 16px; + float:left; + box-shadow: 0 10px 0 -1px var(--memdef-proto-background-color), + 0 2px 8px 0 rgba(0,0,0,.075); + position: relative; +} + +.memtitle:after { + content: ''; + display: block; + background: var(--memdef-proto-background-color); + height: 10px; + bottom: -10px; + left: 0px; + right: -14px; + position: absolute; + border-top-right-radius: 6px; +} + +.permalink +{ + font-family: var(--font-family-monospace); + font-weight: 500; + line-height: 1.25; + font-size: 16px; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-family: var(--font-family-monospace); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + display: table !important; + width: 100%; + box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + border-radius: 4px; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-family: var(--font-family-monospace); + font-size: 13px; + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + background-color: var(--memdef-proto-background-color); + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-background-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 14px; + transition: opacity 0.3s ease; +} + +span.arrowhead { + position: relative; + padding: 0; + margin: 0 0 0 2px; + display: inline-block; + width: 5px; + height: 5px; + border-right: 2px solid var(--nav-arrow-color); + border-bottom: 2px solid var(--nav-arrow-color); + transform: rotate(-45deg); + transition: transform 0.3s ease; +} + +span.arrowhead.opened { + transform: rotate(45deg); +} + +.selected span.arrowhead { + border-right: 2px solid var(--nav-arrow-selected-color); + border-bottom: 2px solid var(--nav-arrow-selected-color); +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfolder { + width: 24px; + height: 18px; + margin-top: 6px; + vertical-align:top; + display: inline-block; + position: relative; +} + +.icondoc { + width: 24px; + height: 18px; + margin-top: 3px; + vertical-align:top; + display: inline-block; + position: relative; +} + +.folder-icon { + width: 16px; + height: 11px; + background-color: var(--icon-folder-fill-color); + border: 1px solid var(--icon-folder-border-color); + border-radius: 0 2px 2px 2px; + position: relative; + box-sizing: content-box; +} + +.folder-icon::after { + content: ''; + position: absolute; + top: 2px; + left: -1px; + width: 16px; + height: 7px; + background-color: var(--icon-folder-open-fill-color); + border: 1px solid var(--icon-folder-border-color); + border-radius: 7px 7px 2px 2px; + transform-origin: top left; + opacity: 0; + transition: all 0.3s linear; +} + +.folder-icon::before { + content: ''; + position: absolute; + top: -3px; + left: -1px; + width: 6px; + height: 2px; + background-color: var(--icon-folder-fill-color); + border-top: 1px solid var(--icon-folder-border-color); + border-left: 1px solid var(--icon-folder-border-color); + border-right: 1px solid var(--icon-folder-border-color); + border-radius: 2px 2px 0 0; +} + +.folder-icon.open::after { + top: 3px; + opacity: 1; +} + +.doc-icon { + left: 6px; + width: 12px; + height: 16px; + background-color: var(--icon-doc-border-color); + clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); + position: relative; + display: inline-block; +} +.doc-icon::before { + content: ""; + left: 1px; + top: 1px; + width: 10px; + height: 14px; + background-color: var(--icon-doc-fill-color); + clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); + position: absolute; + box-sizing: border-box; +} +.doc-icon::after { + content: ""; + left: 7px; + top: 0px; + width: 3px; + height: 3px; + background-color: transparent; + position: absolute; + border: 1px solid var(--icon-doc-border-color); +} + + + + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +span.dynarrow { + position: relative; + display: inline-block; + width: 12px; + bottom: 1px; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + +/* style requirements page */ + +div.req_title { + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-color: var(--table-cell-border-color); + text-decoration-thickness: 1px; + font-weight: bold; +} + +table.reqlist tr > td:first-child { + text-align: right; + font-weight: bold; +} + +div.missing_satisfies { + border-left: 8px solid var(--satisfies-color-hl); + border-radius: 4px; + background: var(--satisfies-color-bg); + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; +} + +div.missing_verifies { + border-left: 8px solid var(--verifies-color-hl); + border-radius: 4px; + background: var(--verifies-color-bg); + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; +} + +/* ----------- navigation breadcrumb styling ----------- */ + +#nav-path ul { + height: 30px; + line-height: 30px; + color: var(--nav-text-normal-color); + overflow: hidden; + margin: 0px; + padding-left: 4px; + background-image: none; + background: var(--page-background-color); + border-bottom: 1px solid var(--nav-breadcrumb-separator-color); + font-size: var(--nav-font-size-level1); + font-family: var(--font-family-nav); + position: relative; + z-index: 100; +} + +#main-nav { + border-bottom: 1px solid var(--nav-border-color); +} + +.navpath li { + list-style-type:none; + float:left; + color: var(--nav-foreground-color); +} + +.navpath li.footer { + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + font-size: 8pt; + color: var(--footer-foreground-color); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; + padding-left: 15px; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--nav-breadcrumb-color); + position: relative; + top: 0px; + height: 30px; + margin-right: -20px; +} + +#nav-path li.navelem:after { + content: ''; + display: inline-block; + position: relative; + top: 0; + right: -15px; + width: 30px; + height: 30px; + transform: scaleX(0.5) scale(0.707) rotate(45deg); + z-index: 10; + background: var(--page-background-color); + box-shadow: 2px -2px 0 2px var(--nav-breadcrumb-separator-color); + border-radius: 0 5px 0 50px; +} + +#nav-path li.navelem:first-child { + margin-left: -6px; +} + +#nav-path li.navelem:hover, +#nav-path li.navelem:hover:after { + background-color: var(--nav-breadcrumb-active-bg); +} + +/* ---------------------- */ + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + margin: 0px; + background-color: var(--header-background-color); + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl { + padding: 0 0 0 0; +} + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.warning .tt, dl.attention .tt, dl.important .tt { + background-color: hsl(from var(--warning-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.note .tt, dl.remark .tt { + background-color: hsl(from var(--note-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.todo .tt { + background-color: hsl(from var(--todo-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.test .tt { + background-color: hsl(from var(--test-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug .tt { + background-color: hsl(from var(--bug-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.deprecated .tt { + background-color: hsl(from var(--deprecated-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + +dl.invariant .tt, dl.pre .tt, dl.post .tt { + background-color: hsl(from var(--invariant-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0; + padding: 0; +} + +#side-nav #projectname +{ + font-size: 130%; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0 0 0 5px; + margin: 0px; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: 400; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0 2px 0; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 12px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + backdrop-filter: var(--tooltip-backdrop-filter); + -webkit-backdrop-filter: var(--tooltip-backdrop-filter); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-arrow-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-arrow-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd +{ + display: inline-block; +} +tt, code, kbd +{ + vertical-align: top; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; + display: inline-block; + transform: rotate(-90deg); +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; + display: inline-block; + transform: rotate(0deg); +} +:root { + scrollbar-width: thin; + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +:root.dark-mode { + color-scheme: dark; +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 000000000..7057eb23d --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,40 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files.html b/files.html new file mode 100644 index 000000000..bf52a573c --- /dev/null +++ b/files.html @@ -0,0 +1,119 @@ + + + + + + + +DFT-FE: File List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
+ + +
+ + diff --git a/index.html b/index.html new file mode 100644 index 000000000..86c73cdf3 --- /dev/null +++ b/index.html @@ -0,0 +1,172 @@ + + + + + + + +DFT-FE: DFT-FE : Density Functional Theory With Finite-Elements + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DFT-FE : Density Functional Theory With Finite-Elements
+
+
+

+

+About

+

DFT-FE is a C++ code for materials modeling from first principles using Kohn-Sham density functional theory. The origins of DFT-FE were in the Computational Materials Physics Group at the University of Michigan, Ann Arbor, with Vikram Gavini, Professor of Mechanical Engineering and Materials Science & Engineering, as the principal investigator broadly overseeing the effort. The current development efforts span across the Computational Materials Physics Group (Prof. Vikram Gavini, Dr. Sambit Das) at the University of Michigan and the MATRIX lab (Prof. Phani Motamarri) at the Indian Institute of Science.

+

DFT-FE is based on an adaptive finite-element discretization that handles pseudopotential and all-electron calculations in the same framework, and incorporates scalable and efficient solvers for the solution of the Kohn-Sham equations. Importantly, DFT-FE can handle periodic, semi-periodic and non-periodic boundary conditions and general geometries. DFT-FE can be run on massively parallel many-core CPU and hybrid CPU-GPU architectures (tested up to ~200,000 cores on many-core CPUs and ~40,000 GPUs on hybrid CPU-GPU architectures). DFT-FE is capable of fast and accurate large-scale pseudopotential DFT calculations, reaching 600,000 electrons.

+

+Installation instructions

+

DFT-FE code builds on top of the deal.II library for everything that has to do with finite elements, geometries, meshes, etc., and, through deal.II on p4est for parallel adaptive mesh handling. The steps to install the necessary dependencies and DFT-FE itself are described in the Installation section of the DFT-FE manual (download the development version manual here).

+

We have created several shell based installation scripts for the development version of DFT-FE (publicGithubDevelop branch) on various machines:

+

+Running DFT-FE

+

Instructions on how to run DFT-FE including demo examples can also be found in the Running DFT-FE section of the manual (download the development version manual here). Beyond the demo examples in the manual, we also refer to our benchmarks repository which contains several accuracy benchmarks demonstrating the various capabilites of DFT-FE such as different boundary conditions, XC functionals (GGA, MGGA, DFT+U), calculations on magnetic materials, structural relaxation and Nudged Elastic Band calculations. Further, several post-processing capabilites such as band-structure and density of states are demonstrated. The same repository also includes performance benchmarks on a range of system sizes.

+

+Contributing to DFT-FE

+

Learn more about contributing to DFT-FE's development here.

+

+More information

+
    +
  • See the official website for information on code capabilities, appropriate referencing of the code, acknowledgements, and news related to DFT-FE.
  • +
  • See Doxygen generated documentation.
  • +
  • For questions about DFT-FE, installation, bugs, etc., use the DFT-FE discussion forum.
  • +
  • For latest news, updates, and release announcements about DFT-FE please send an email to dft-f.nosp@m.e.ad.nosp@m.min@u.nosp@m.mich.nosp@m..edu, and we will add you to our announcement mailing list.
  • +
  • DFT-FE is primarily based on the deal.II library. If you have particular questions about deal.II, use the deal.II discussion forum.
  • +
  • If you have specific questions about DFT-FE that are not suitable for the public and archived mailing lists, you can contact the following: +
  • +
  • The following people have significantly contributed either in the past or current and advanced DFT-FE's goals: (All the underlying lists are in alphabetical order based on last name)
      +
    • Mentors/Development leads
        +
      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Vikram Gavini (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Phani Motamarri (Indian Institute of Science, India)
      • +
      +
    • +
    • Principal developers
      +
        +
      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Phani Motamarri (Indian Institute of Science, India)
      • +
      • Nikhil Kodali (Indian Institute of Science, India)
        +
      • +
      • Kartick Ramakrishnan (Indian Institute of Science, India)
      • +
      +
    • +
    +
  • +
  • A complete list of the many authors that have contributed to DFT-FE can be found at [authors](authors).
    +
  • +
+

+License

+

DFT-FE is published under LGPL v2.1 or newer.

+
+ +
+ + +
+ + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..8172efef4 --- /dev/null +++ b/menu.js @@ -0,0 +1,569 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,treeview) { + + const SHOW_DELAY = 250; // 250ms delay before showing + const HIDE_DELAY = 500; // 500ms delay before hiding + const SLIDE_DELAY = 250; // 250ms slide up/down delay + const WHEEL_STEP = 30; // 30 pixel per mouse wheel tick + const ARROW_STEP = 5; // 5 pixel when hovering arrow up/down + const ARROW_POLL_INTERVAL = 20; // 20ms per arrow up/down check + const MOBILE_WIDTH = 768; // switch point for mobile/desktop mode + + // Helper function for slideDown animation + function slideDown(element, duration, callback) { + if (element.dataset.animating) return; + element.dataset.animating = 'true'; + + element.style.removeProperty('display'); + let display = window.getComputedStyle(element).display; + if (display === 'none') display = 'block'; + element.style.display = display; + const height = element.offsetHeight; + element.style.overflow = 'hidden'; + element.style.height = 0; + element.offsetHeight; // force reflow + element.style.transitionProperty = 'height'; + element.style.transitionDuration = duration + 'ms'; + element.style.height = height + 'px'; + window.setTimeout(() => { + element.style.removeProperty('height'); + element.style.removeProperty('overflow'); + element.style.removeProperty('transition-duration'); + element.style.removeProperty('transition-property'); + delete element.dataset.animating; + if (callback) callback(); + }, duration); + } + + // Helper function for slideUp animation + function slideUp(element, duration, callback) { + if (element.dataset.animating) return; + element.dataset.animating = 'true'; + + element.style.transitionProperty = 'height'; + element.style.transitionDuration = duration + 'ms'; + element.style.height = element.offsetHeight + 'px'; + element.offsetHeight; // force reflow + element.style.overflow = 'hidden'; + element.style.height = 0; + window.setTimeout(() => { + element.style.display = 'none'; + element.style.removeProperty('height'); + element.style.removeProperty('overflow'); + element.style.removeProperty('transition-duration'); + element.style.removeProperty('transition-property'); + delete element.dataset.animating; + if (callback) callback(); + }, duration); + } + + // Helper to create the menu tree structure + function makeTree(data,relPath,topLevel=false) { + let result=''; + if ('children' in data) { + if (!topLevel) { + result+=''; + } + } + return result; + } + + const mainNav = document.getElementById('main-nav'); + if (mainNav && mainNav.children.length > 0) { + const firstChild = mainNav.children[0]; + firstChild.insertAdjacentHTML('afterbegin', makeTree(menudata, relPath, true)); + } + + const searchBoxPos2 = document.getElementById('searchBoxPos2'); + let searchBoxContents = searchBoxPos2 ? searchBoxPos2.innerHTML : ''; + const mainMenuState = document.getElementById('main-menu-state'); + let prevWidth = 0; + + const initResizableIfExists = function() { + if (typeof initResizableFunc === 'function') initResizableFunc(treeview); + } + + // Dropdown menu functionality to replace smartmenus + let closeAllDropdowns = null; // Will be set by initDropdownMenu + + const isMobile = () => window.innerWidth < MOBILE_WIDTH; + + if (mainMenuState) { + const mainMenu = document.getElementById('main-menu'); + const searchBoxPos1 = document.getElementById('searchBoxPos1'); + + // animate mobile main menu + mainMenuState.addEventListener('change', function() { + if (this.checked) { + slideDown(mainMenu, SLIDE_DELAY, () => { + mainMenu.style.display = 'block'; + initResizableIfExists(); + }); + } else { + slideUp(mainMenu, SLIDE_DELAY, () => { + mainMenu.style.display = 'none'; + }); + } + }); + + // set default menu visibility + const resetState = function() { + const newWidth = window.innerWidth; + if (newWidth !== prevWidth) { + // Close all open dropdown menus when switching between mobile/desktop modes + if (closeAllDropdowns) { + closeAllDropdowns(); + } + + if (newWidth < MOBILE_WIDTH) { + mainMenuState.checked = false; + mainMenu.style.display = 'none'; + if (searchBoxPos2) { + searchBoxPos2.innerHTML = ''; + searchBoxPos2.style.display = 'none'; + } + if (searchBoxPos1) { + searchBoxPos1.innerHTML = searchBoxContents; + searchBoxPos1.style.display = ''; + } + } else { + mainMenu.style.display = ''; + if (searchBoxPos1) { + searchBoxPos1.innerHTML = ''; + searchBoxPos1.style.display = 'none'; + } + if (searchBoxPos2) { + searchBoxPos2.innerHTML = searchBoxContents; + searchBoxPos2.style.display = ''; + } + } + if (typeof searchBox !== 'undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function() { + resetState(); + initResizableIfExists(); + }); + } else { + resetState(); + initResizableIfExists(); + } + window.addEventListener('resize', resetState); + } else { + initResizableIfExists(); + } + + function initDropdownMenu() { + const mainMenu = document.getElementById('main-menu'); + if (!mainMenu) return; + + const menuItems = mainMenu.querySelectorAll('li'); + + // Helper function to position nested submenu with viewport checking + function positionNestedSubmenu(submenu, link) { + const viewport = { + height: window.innerHeight, + scrollY: window.scrollY + }; + + // Set initial position - top aligned with parent (next to arrow) + submenu.style.top = '0'; + if (isMobile()) { + submenu.style.marginLeft = 0; + } else { + submenu.style.marginLeft = link.offsetWidth + 'px'; + } + + // Get submenu dimensions and position + const submenuRect = submenu.getBoundingClientRect(); + const submenuHeight = submenuRect.height; + const submenuTop = submenuRect.top; + const submenuBottom = submenuRect.bottom+1; // add space for border + + // Check if submenu fits in viewport + const fitsAbove = submenuTop >= 0; + const fitsBelow = submenuBottom <= viewport.height; + + if (!fitsAbove || !fitsBelow) { + // Submenu doesn't fit - try to adjust position + // Overflows bottom, try to shift up + const overflow = submenuBottom - viewport.height; + const newTop = Math.max(0, submenuTop-overflow)-submenuTop; + submenu.style.top = newTop + 'px'; + + // Re-check after adjustment + const adjustedRect = submenu.getBoundingClientRect(); + if (adjustedRect.height > viewport.height) { + // Still doesn't fit - enable scrolling + enableSubmenuScrolling(submenu, link); + } + } + } + + // Helper function to enable scrolling for tall submenus + function enableSubmenuScrolling(submenu, link) { + // Check if scroll arrows already exist + if (submenu.dataset.scrollEnabled) return; + + submenu.dataset.scrollEnabled = 'true'; + + const viewport = { + height: window.innerHeight, + scrollY: window.scrollY + }; + + // Position submenu to fill available viewport space + const parentRect = link.getBoundingClientRect(); + const availableHeight = viewport.height - 2; // Leave some margin + + submenu.style.maxHeight = availableHeight + 'px'; + submenu.style.overflow = 'hidden'; + submenu.style.position = 'absolute'; + + // Create scroll arrows + const scrollUpArrow = document.createElement('div'); + scrollUpArrow.className = 'submenu-scroll-arrow submenu-scroll-up'; + scrollUpArrow.innerHTML = '';//''; + scrollUpArrow.style.cssText = 'position:absolute;top:0;left:0;right:0;height:30px;background:transparent;text-align:center;line-height:30px;color:#fff;cursor:pointer;z-index:1000;display:none;'; + + const scrollDownArrow = document.createElement('div'); + scrollDownArrow.className = 'submenu-scroll-arrow submenu-scroll-down'; + scrollDownArrow.innerHTML = ''; + scrollDownArrow.style.cssText = 'position:absolute;bottom:0;left:0;right:0;height:30px;background:transparent;text-align:center;line-height:30px;color:#fff;cursor:pointer;z-index:1000;'; + + // Create wrapper for submenu content + const scrollWrapper = document.createElement('div'); + scrollWrapper.className = 'submenu-scroll-wrapper'; + scrollWrapper.style.cssText = 'height:100vh;overflow:hidden;position:relative;'; + + // Move submenu children to wrapper + while (submenu.firstChild) { + scrollWrapper.appendChild(submenu.firstChild); + } + + submenu.appendChild(scrollUpArrow); + submenu.appendChild(scrollWrapper); + submenu.appendChild(scrollDownArrow); + + let scrollPosition = 0; + let scrollInterval = null; + + function updateScrollArrows() { + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + scrollUpArrow.style.display = scrollPosition > 0 ? 'block' : 'none'; + scrollDownArrow.style.display = scrollPosition < maxScroll ? 'block' : 'none'; + } + + function startScrolling(direction) { + if (scrollInterval) return; + + scrollInterval = setInterval(() => { + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + + if (direction === 'up') { + scrollPosition = Math.max(0, scrollPosition - ARROW_STEP); + } else { + scrollPosition = Math.min(maxScroll, scrollPosition + ARROW_STEP); + } + + scrollWrapper.scrollTop = scrollPosition; + updateScrollArrows(); + + if ((direction === 'up' && scrollPosition === 0) || + (direction === 'down' && scrollPosition === maxScroll)) { + stopScrolling(); + } + }, ARROW_POLL_INTERVAL); + } + + function stopScrolling() { + if (scrollInterval) { + clearInterval(scrollInterval); + scrollInterval = null; + } + } + + scrollUpArrow.addEventListener('mouseenter', () => startScrolling('up')); + scrollUpArrow.addEventListener('mouseleave', stopScrolling); + scrollDownArrow.addEventListener('mouseenter', () => startScrolling('down')); + scrollDownArrow.addEventListener('mouseleave', stopScrolling); + + function wheelEvent(e) { + e.preventDefault(); + e.stopPropagation(); + + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + const wheelDelta = e.deltaY; + const scrollAmount = wheelDelta > 0 ? WHEEL_STEP : -WHEEL_STEP; // Scroll 30px per wheel tick + + scrollPosition = Math.max(0, Math.min(maxScroll, scrollPosition + scrollAmount)); + scrollWrapper.scrollTop = scrollPosition; + updateScrollArrows(); + } + + // Add mouse wheel scrolling support + scrollWrapper.addEventListener('wheel', (e) => wheelEvent(e)); + + // Also add wheel event to submenu itself to catch events + submenu.addEventListener('wheel', function(e) { + // Only handle if scrolling is enabled + if (submenu.dataset.scrollEnabled) { + wheelEvent(e); + } + }); + + // Initial arrow state + updateScrollArrows(); + } + + // Helper function to clean up scroll arrows + function disableSubmenuScrolling(submenu) { + if (!submenu.dataset.scrollEnabled) return; + + delete submenu.dataset.scrollEnabled; + + // Find and remove scroll elements + const scrollArrows = submenu.querySelectorAll('.submenu-scroll-arrow'); + const scrollWrapper = submenu.querySelector('.submenu-scroll-wrapper'); + + if (scrollWrapper) { + // Move children back to submenu + while (scrollWrapper.firstChild) { + submenu.appendChild(scrollWrapper.firstChild); + } + scrollWrapper.remove(); + } + + scrollArrows.forEach(arrow => arrow.remove()); + + // Reset styles + submenu.style.maxHeight = ''; + submenu.style.overflow = ''; + } + + menuItems.forEach(item => { + const submenu = item.querySelector('ul'); + if (submenu) { + const link = item.querySelector('a'); + if (link) { + // Add class and ARIA attributes for accessibility + link.classList.add('has-submenu'); + link.setAttribute('aria-haspopup', 'true'); + link.setAttribute('aria-expanded', 'false'); + + // Add sub-arrow indicator + const span = document.createElement('span'); + span.classList.add('sub-arrow'); + link.append(span); + + // Calculate nesting level for z-index + // Root menu (main-menu) is level 200 (above the search box at 102), + // first submenus are level 201, etc. + let nestingLevel = 200; + let currentElement = item.parentElement; + while (currentElement && currentElement.id !== 'main-menu') { + if (currentElement.tagName === 'UL') { + nestingLevel++; + } + currentElement = currentElement.parentElement; + } + + // Apply z-index based on nesting level + // This ensures child menus with shadows appear above parent menus + submenu.style.zIndex = nestingLevel + 1; + + // Check if this is a level 2+ submenu (nested within another dropdown) + const isNestedSubmenu = item.parentElement && item.parentElement.id !== 'main-menu'; + + // Timeout management for smooth menu navigation + let showTimeout = null; + let hideTimeout = null; + + // Desktop: show on hover + item.addEventListener('mouseenter', function() { + if (!isMobile()) { + // Clear any pending hide timeout + if (hideTimeout) { + clearTimeout(hideTimeout); + hideTimeout = null; + } + + // Set show timeout + showTimeout = setTimeout(() => { + // Hide all sibling menus at the same level before showing this one + const parentElement = item.parentElement; + if (parentElement) { + const siblings = parentElement.querySelectorAll(':scope > li'); + siblings.forEach(sibling => { + if (sibling !== item) { + const siblingSubmenu = sibling.querySelector('ul'); + const siblingLink = sibling.querySelector('a'); + if (siblingSubmenu && siblingLink) { + siblingSubmenu.style.display = 'none'; + siblingLink.setAttribute('aria-expanded', 'false'); + disableSubmenuScrolling(siblingSubmenu); + } + } + }); + } + + submenu.style.display = 'block'; + // Only apply positioning for nested submenus (level 2+) + if (isNestedSubmenu) { + positionNestedSubmenu(submenu, link); + } + link.setAttribute('aria-expanded', 'true'); + showTimeout = null; + }, SHOW_DELAY); + } + }); + + item.addEventListener('mouseleave', function() { + if (!isMobile()) { + // Clear any pending show timeout + if (showTimeout) { + clearTimeout(showTimeout); + showTimeout = null; + } + + // Set hide timeout + hideTimeout = setTimeout(() => { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + // Clean up scrolling if enabled + disableSubmenuScrolling(submenu); + hideTimeout = null; + }, HIDE_DELAY); + } + }); + + if (isMobile() && isNestedSubmenu) { + positionNestedSubmenu(submenu, link); + } + + function toggleMenu() { + const isExpanded = link.getAttribute('aria-expanded') === 'true'; + if (isExpanded) { + slideUp(submenu, SLIDE_DELAY, () => { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + link.classList.remove('highlighted') + disableSubmenuScrolling(submenu); + }); + } else { + slideDown(submenu, SLIDE_DELAY, () => { + submenu.style.display = 'block'; + link.classList.add('highlighted') + link.setAttribute('aria-expanded', 'true'); + }); + } + } + + // Mobile/Touch: toggle on click + link.addEventListener('click', function(e) { + if (isMobile()) { + e.preventDefault(); + toggleMenu(); + } + }); + + // Keyboard navigation + link.addEventListener('keydown', function(e) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + toggleMenu(); + } else if (e.key === 'Escape') { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + disableSubmenuScrolling(submenu); + link.focus(); + } + }); + } + } + }); + + // Helper function to close all open dropdown menus + closeAllDropdowns = function() { + menuItems.forEach(item => { + const submenu = item.querySelector('ul'); + const link = item.querySelector('a.has-submenu'); + if (submenu && link) { + disableSubmenuScrolling(submenu); + submenu.style.display = 'none'; + submenu.style.marginLeft = 0; + link.setAttribute('aria-expanded', 'false'); + link.classList.remove('highlighted'); + } + }); + }; + + // Close all dropdown menus when clicking a link (navigation to new page or anchor) + const allLinks = mainMenu.querySelectorAll('a'); + allLinks.forEach(link => { + link.addEventListener('click', function() { + // Close dropdowns when navigating (unless it's a has-submenu link in mobile mode) + if (!link.classList.contains('has-submenu') || !isMobile()) { + if (closeAllDropdowns) { + closeAllDropdowns(); + } + } + }); + }); + } + + // Initialize dropdown menu behavior + initDropdownMenu(); + + // Close all open menus when browser back button is pressed + window.addEventListener('popstate', function() { + if (closeAllDropdowns) { + closeAllDropdowns(); + } + }); +} + +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..c63056b0c --- /dev/null +++ b/menudata.js @@ -0,0 +1,28 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/namespacedftfe.html b/namespacedftfe.html new file mode 100644 index 000000000..9016d7c91 --- /dev/null +++ b/namespacedftfe.html @@ -0,0 +1,119 @@ + + + + + + + +DFT-FE: dftfe Namespace Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ +
dftfe Namespace Reference
+
+
+ + + +

+Namespaces

namespace  pseudoUtils
+
+ + +
+ + diff --git a/namespacedftfe_1_1pseudo_utils.html b/namespacedftfe_1_1pseudo_utils.html new file mode 100644 index 000000000..d7fe6a57d --- /dev/null +++ b/namespacedftfe_1_1pseudo_utils.html @@ -0,0 +1,395 @@ + + + + + + + +DFT-FE: dftfe::pseudoUtils Namespace Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+ +
dftfe::pseudoUtils Namespace Reference
+
+
+ + + + + + + + + + + + + +

+Functions

std::vector< double > XmlTagReaderMain (std::vector< std::string > tag_name, std::string file_path_in)
void XmlTagReaderAttr (std::vector< std::string > tag_name, std::string file_path_in, std::vector< std::string > *attr_type, std::vector< std::string > *attr_value)
dftfe::Int xmlNodeChildCount (std::vector< std::string > tag_name, std::string file_path_in)
void xmltoSummaryFile (std::string file_path_in, std::string file_path_out)
void xmltoProjectorFile (std::string file_path_in, std::string file_path_out)
void xmltoLocalPotential (std::string file_path_in, std::string file_path_out)
void xmltoDenomFile (std::string file_path_in, std::string file_path_out)
void xmltoCoreDensityFile (std::string file_path_in, std::string file_path_out)
void xmltoDensityFile (std::string file_path_in, std::string file_path_out)
void xmltoOrbitalFile (std::string file_path_in, std::string file_path_out)
dftfe::Int pseudoPotentialToDftfeParser (const std::string file_path_in, const std::string file_path_out, const dftfe::Int verbosity, dftfe::uInt &nlccFlag, dftfe::uInt &socFlag, dftfe::uInt &pawFlag)
+

Function Documentation

+ +

◆ pseudoPotentialToDftfeParser()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::Int dftfe::pseudoUtils::pseudoPotentialToDftfeParser (const std::string file_path_in,
const std::string file_path_out,
const dftfe::Int verbosity,
dftfe::uInt & nlccFlag,
dftfe::uInt & socFlag,
dftfe::uInt & pawFlag )
+
+ +
+
+ +

◆ xmlNodeChildCount()

+ +
+
+ + + + + + + + + + + +
dftfe::Int dftfe::pseudoUtils::xmlNodeChildCount (std::vector< std::string > tag_name,
std::string file_path_in )
+
+ +
+
+ +

◆ XmlTagReaderAttr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::pseudoUtils::XmlTagReaderAttr (std::vector< std::string > tag_name,
std::string file_path_in,
std::vector< std::string > * attr_type,
std::vector< std::string > * attr_value )
+
+ +
+
+ +

◆ XmlTagReaderMain()

+ +
+
+ + + + + + + + + + + +
std::vector< double > dftfe::pseudoUtils::XmlTagReaderMain (std::vector< std::string > tag_name,
std::string file_path_in )
+
+ +
+
+ +

◆ xmltoCoreDensityFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoCoreDensityFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoDenomFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoDenomFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoDensityFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoDensityFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoLocalPotential()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoLocalPotential (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoOrbitalFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoOrbitalFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoProjectorFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoProjectorFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+ +

◆ xmltoSummaryFile()

+ +
+
+ + + + + + + + + + + +
void dftfe::pseudoUtils::xmltoSummaryFile (std::string file_path_in,
std::string file_path_out )
+
+ +
+
+
+ + +
+ + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..1c071b7b3 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,122 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all namespace members with links to the namespace documentation for each member:
+
+ + +
+ + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..4116f13d3 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,122 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all namespace functions with links to the namespace documentation for each function:
+
+ + +
+ + diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..0ea3a07a5 --- /dev/null +++ b/navtree.css @@ -0,0 +1,327 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0; + padding:0; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + position: relative; + background-color: var(--nav-menu-active-bg); + border-radius: 0 6px 6px 0; + /*margin-right: 5px;*/ +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); + line-height: 22px; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--page-link-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin: 0 6px 0 -5px; + padding: 0 0 0 5px; + height: 22px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + transition: opacity 0.5s ease; + background-color: var(--nav-splitbar-bg-color); + opacity:0; + cursor:col-resize; + height:100%; + right:0; + top:0; + width:6px; + position: relative; +} + +.ui-resizable-e:after { + content: ''; + display: block; + top: 50%; + left: 1px; + width: 2px; + height: 15px; + border-left: 1px solid var(--nav-splitbar-handle-color); + border-right: 1px solid var(--nav-splitbar-handle-color); + position: absolute; +} + +.ui-resizable-e:hover { + opacity: 1; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ + scrollbar-width: thin; + border-right: 1px solid var(--nav-border-color); + padding-left: 5px; +} + +#nav-sync { + position:absolute; + top:0px; + right:0px; + z-index:1; +} + +#nav-sync img { + opacity:0.3; +} + +div.nav-sync-icon { + position: relative; + width: 24px; + height: 17px; + left: -6px; + top: -1px; + opacity: 0.7; + display: inline-block; + background-color: var(--sync-icon-background-color); + border: 1px solid var(--sync-icon-border-color); + box-sizing: content-box; +} + +div.nav-sync-icon:hover { + background-color: var(--sync-icon-selected-background-color); + opacity: 1.0; +} + +div.nav-sync-icon.active:after { + content: ''; + background-color: var(--sync-icon-background-color); + border-top: 2px solid var(--sync-icon-color); + position: absolute; + width: 16px; + height: 0px; + top: 7px; + left: 4px; +} + +div.nav-sync-icon.active:hover:after { + border-top: 2px solid var(--sync-icon-selected-color); +} + +span.sync-icon-left { + position: absolute; + padding: 0; + margin: 0; + top: 3px; + left: 4px; + display: inline-block; + width: 8px; + height: 8px; + border-left: 2px solid var(--sync-icon-color); + border-top: 2px solid var(--sync-icon-color); + transform: rotate(-45deg); +} + +span.sync-icon-right { + position: absolute; + padding: 0; + margin: 0; + top: 3px; + left: 10px; + display: inline-block; + width: 8px; + height: 8px; + border-right: 2px solid var(--sync-icon-color); + border-bottom: 2px solid var(--sync-icon-color); + transform: rotate(-45deg); +} + +div.nav-sync-icon:hover span.sync-icon-left { + border-left: 2px solid var(--sync-icon-selected-color); + border-top: 2px solid var(--sync-icon-selected-color); +} + +div.nav-sync-icon:hover span.sync-icon-right { + border-right: 2px solid var(--sync-icon-selected-color); + border-bottom: 2px solid var(--sync-icon-selected-color); +} + +#nav-path ul { + border-top: 1px solid var(--nav-breadcrumb-separator-color); +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + +/*---------------------------*/ +#container { + display: grid; + grid-template-columns: auto auto; + overflow: hidden; +} + +#page-nav { + background: var(--nav-background-color); + display: block; + width: 250px; + box-sizing: content-box; + position: relative; + border-left: 1px solid var(--nav-border-color); +} + +#page-nav-tree { + display: inline-block; +} + +#page-nav-resize-handle { + transition: opacity 0.5s ease; + background-color: var(--nav-splitbar-bg-color); + opacity:0; + cursor:col-resize; + height:100%; + right:0; + top:0; + width:6px; + position: relative; + z-index: 1; + user-select: none; +} + +#page-nav-resize-handle:after { + content: ''; + display: block; + top: 50%; + left: 1px; + width: 2px; + height: 15px; + border-left: 1px solid var(--nav-splitbar-handle-color); + border-right: 1px solid var(--nav-splitbar-handle-color); + position: absolute; +} + +#page-nav-resize-handle.dragging, +#page-nav-resize-handle:hover { + opacity: 1; +} + +#page-nav-contents { + padding: 0; + margin: 0; + display: block; + top: 0; + left: 0; + height: 100%; + width: 100%; + position: absolute; + overflow: auto; + scrollbar-width: thin; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +ul.page-outline, +ul.page-outline ul { + text-indent: 0; + list-style: none outside none; + padding: 0 0 0 4px; +} + +ul.page-outline { + margin: 0 4px 4px 6px; +} + +ul.page-outline div.item { + font: 12px var(--font-family-nav); + line-height: 22px; +} + +ul.page-outline li { + white-space: nowrap; +} + +ul.page-outline li.vis { + background-color: var(--nav-breadcrumb-active-bg); +} + +#container.resizing { + cursor: col-resize; + user-select: none; +} diff --git a/pseudo_potential_to_dftfe_converter_8cc.html b/pseudo_potential_to_dftfe_converter_8cc.html new file mode 100644 index 000000000..b4b452d7a --- /dev/null +++ b/pseudo_potential_to_dftfe_converter_8cc.html @@ -0,0 +1,151 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters/pseudoPotentialToDftfeConverter.cc File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.3.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
+ +
pseudoPotentialToDftfeConverter.cc File Reference
+
+
+
#include <iostream>
+#include <vector>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <fstream>
+#include <sstream>
+#include <cstdlib>
+#include <algorithm>
+#include <iterator>
+#include <iomanip>
+#include <stdexcept>
+#include <cmath>
+
+ + + +

+Namespaces

namespace  dftfe
namespace  dftfe::pseudoUtils
+ + + + + + + + + + + + +

+Functions

std::vector< double > dftfe::pseudoUtils::XmlTagReaderMain (std::vector< std::string > tag_name, std::string file_path_in)
void dftfe::pseudoUtils::XmlTagReaderAttr (std::vector< std::string > tag_name, std::string file_path_in, std::vector< std::string > *attr_type, std::vector< std::string > *attr_value)
dftfe::Int dftfe::pseudoUtils::xmlNodeChildCount (std::vector< std::string > tag_name, std::string file_path_in)
void dftfe::pseudoUtils::xmltoSummaryFile (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoProjectorFile (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoLocalPotential (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoDenomFile (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoCoreDensityFile (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoDensityFile (std::string file_path_in, std::string file_path_out)
void dftfe::pseudoUtils::xmltoOrbitalFile (std::string file_path_in, std::string file_path_out)
dftfe::Int dftfe::pseudoUtils::pseudoPotentialToDftfeParser (const std::string file_path_in, const std::string file_path_out, const dftfe::Int verbosity, dftfe::uInt &nlccFlag, dftfe::uInt &socFlag, dftfe::uInt &pawFlag)
+
+ + +
+ + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..01a296cfc --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_3a_20density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..84dfde7c4 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['about_0',['About',['../index.html#autotoc_md0',1,'']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..ba0447ecc --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['contributing_20to_20dft_20fe_0',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..e196a1d03 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dft_20fe_1',['DFT FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['dft_20fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dftfe_3',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3apseudoutils_4',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..3333b6685 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..fa87c1519 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fe_0',['FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_1',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['functional_20theory_20with_20finite_20elements_3',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..19d42fa17 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['information_0',['More information',['../index.html#autotoc_md4',1,'']]], + ['installation_20instructions_1',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['instructions_2',['Installation instructions',['../index.html#autotoc_md1',1,'']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..d18ec9156 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['license_0',['License',['../index.html#autotoc_md5',1,'']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..6abc324e0 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['more_20information_0',['More information',['../index.html#autotoc_md4',1,'']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..a1749dae5 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pseudopotentialtodftfeconverter_2ecc_0',['pseudoPotentialToDftfeConverter.cc',['../pseudo_potential_to_dftfe_converter_8cc.html',1,'']]], + ['pseudopotentialtodftfeparser_1',['pseudoPotentialToDftfeParser',['../namespacedftfe_1_1pseudo_utils.html#a23728643c76533841814069ba3c20444',1,'dftfe::pseudoUtils']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..db00a4db8 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['running_20dft_20fe_1',['Running DFT-FE',['../index.html#autotoc_md2',1,'']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..d84bd8e24 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['to_20dft_20fe_1',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..8458b9f2c --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..82d010f00 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['xmlnodechildcount_0',['xmlNodeChildCount',['../namespacedftfe_1_1pseudo_utils.html#a246c17442ff80fe937a00567d9350a44',1,'dftfe::pseudoUtils']]], + ['xmltagreaderattr_1',['XmlTagReaderAttr',['../namespacedftfe_1_1pseudo_utils.html#a75a8233dcc3a128d15abdf3533c83049',1,'dftfe::pseudoUtils']]], + ['xmltagreadermain_2',['XmlTagReaderMain',['../namespacedftfe_1_1pseudo_utils.html#a41aa029491b427fc0b872524d4d09f14',1,'dftfe::pseudoUtils']]], + ['xmltocoredensityfile_3',['xmltoCoreDensityFile',['../namespacedftfe_1_1pseudo_utils.html#a34d23bb0ab288d03aaaf3fb428ccb113',1,'dftfe::pseudoUtils']]], + ['xmltodenomfile_4',['xmltoDenomFile',['../namespacedftfe_1_1pseudo_utils.html#a7183d2fd2951b1888a6ec155323f5527',1,'dftfe::pseudoUtils']]], + ['xmltodensityfile_5',['xmltoDensityFile',['../namespacedftfe_1_1pseudo_utils.html#aa0bd155b029e18c2a87b2cfd258f31e5',1,'dftfe::pseudoUtils']]], + ['xmltolocalpotential_6',['xmltoLocalPotential',['../namespacedftfe_1_1pseudo_utils.html#acf9b5d684bea023db3e8521b757ebaaa',1,'dftfe::pseudoUtils']]], + ['xmltoorbitalfile_7',['xmltoOrbitalFile',['../namespacedftfe_1_1pseudo_utils.html#a79681219fa8dee1a8417571d1a04ab4b',1,'dftfe::pseudoUtils']]], + ['xmltoprojectorfile_8',['xmltoProjectorFile',['../namespacedftfe_1_1pseudo_utils.html#abbb6b8ca243c6057166cb3199d2f895e',1,'dftfe::pseudoUtils']]], + ['xmltosummaryfile_9',['xmltoSummaryFile',['../namespacedftfe_1_1pseudo_utils.html#a1518b8505a8bc835eb318a24167cceee',1,'dftfe::pseudoUtils']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 000000000..88c9815d7 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pseudopotentialtodftfeconverter_2ecc_0',['pseudoPotentialToDftfeConverter.cc',['../pseudo_potential_to_dftfe_converter_8cc.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 000000000..4accdc1f4 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..a576832be --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pseudopotentialtodftfeparser_0',['pseudoPotentialToDftfeParser',['../namespacedftfe_1_1pseudo_utils.html#a23728643c76533841814069ba3c20444',1,'dftfe::pseudoUtils']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..82d010f00 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['xmlnodechildcount_0',['xmlNodeChildCount',['../namespacedftfe_1_1pseudo_utils.html#a246c17442ff80fe937a00567d9350a44',1,'dftfe::pseudoUtils']]], + ['xmltagreaderattr_1',['XmlTagReaderAttr',['../namespacedftfe_1_1pseudo_utils.html#a75a8233dcc3a128d15abdf3533c83049',1,'dftfe::pseudoUtils']]], + ['xmltagreadermain_2',['XmlTagReaderMain',['../namespacedftfe_1_1pseudo_utils.html#a41aa029491b427fc0b872524d4d09f14',1,'dftfe::pseudoUtils']]], + ['xmltocoredensityfile_3',['xmltoCoreDensityFile',['../namespacedftfe_1_1pseudo_utils.html#a34d23bb0ab288d03aaaf3fb428ccb113',1,'dftfe::pseudoUtils']]], + ['xmltodenomfile_4',['xmltoDenomFile',['../namespacedftfe_1_1pseudo_utils.html#a7183d2fd2951b1888a6ec155323f5527',1,'dftfe::pseudoUtils']]], + ['xmltodensityfile_5',['xmltoDensityFile',['../namespacedftfe_1_1pseudo_utils.html#aa0bd155b029e18c2a87b2cfd258f31e5',1,'dftfe::pseudoUtils']]], + ['xmltolocalpotential_6',['xmltoLocalPotential',['../namespacedftfe_1_1pseudo_utils.html#acf9b5d684bea023db3e8521b757ebaaa',1,'dftfe::pseudoUtils']]], + ['xmltoorbitalfile_7',['xmltoOrbitalFile',['../namespacedftfe_1_1pseudo_utils.html#a79681219fa8dee1a8417571d1a04ab4b',1,'dftfe::pseudoUtils']]], + ['xmltoprojectorfile_8',['xmltoProjectorFile',['../namespacedftfe_1_1pseudo_utils.html#abbb6b8ca243c6057166cb3199d2f895e',1,'dftfe::pseudoUtils']]], + ['xmltosummaryfile_9',['xmltoSummaryFile',['../namespacedftfe_1_1pseudo_utils.html#a1518b8505a8bc835eb318a24167cceee',1,'dftfe::pseudoUtils']]] +]; diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..73d1600e5 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dftfe_0',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3apseudoutils_1',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..01a296cfc --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_3a_20density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..84dfde7c4 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['about_0',['About',['../index.html#autotoc_md0',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 000000000..ba0447ecc --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['contributing_20to_20dft_20fe_0',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 000000000..c73933acb --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dft_20fe_1',['DFT FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['dft_20fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_4.js b/search/pages_4.js new file mode 100644 index 000000000..3333b6685 --- /dev/null +++ b/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_5.js b/search/pages_5.js new file mode 100644 index 000000000..fa87c1519 --- /dev/null +++ b/search/pages_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fe_0',['FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_1',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['functional_20theory_20with_20finite_20elements_3',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_6.js b/search/pages_6.js new file mode 100644 index 000000000..19d42fa17 --- /dev/null +++ b/search/pages_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['information_0',['More information',['../index.html#autotoc_md4',1,'']]], + ['installation_20instructions_1',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['instructions_2',['Installation instructions',['../index.html#autotoc_md1',1,'']]] +]; diff --git a/search/pages_7.js b/search/pages_7.js new file mode 100644 index 000000000..d18ec9156 --- /dev/null +++ b/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['license_0',['License',['../index.html#autotoc_md5',1,'']]] +]; diff --git a/search/pages_8.js b/search/pages_8.js new file mode 100644 index 000000000..6abc324e0 --- /dev/null +++ b/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['more_20information_0',['More information',['../index.html#autotoc_md4',1,'']]] +]; diff --git a/search/pages_9.js b/search/pages_9.js new file mode 100644 index 000000000..e7294d07a --- /dev/null +++ b/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['running_20dft_20fe_0',['Running DFT-FE',['../index.html#autotoc_md2',1,'']]] +]; diff --git a/search/pages_a.js b/search/pages_a.js new file mode 100644 index 000000000..d84bd8e24 --- /dev/null +++ b/search/pages_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['to_20dft_20fe_1',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]] +]; diff --git a/search/pages_b.js b/search/pages_b.js new file mode 100644 index 000000000..8458b9f2c --- /dev/null +++ b/search/pages_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..043d32d98 --- /dev/null +++ b/search/search.css @@ -0,0 +1,377 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 43px; + margin-right: 0; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + border: 1px solid var(--search-box-border-color); + z-index: 102; + margin-right: 4px; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.6em; +} + +#MSearchField { + display: inline-block; + vertical-align: top; + width: 7.5em; + height: 22px; + margin: 0 0 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.6em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + margin: 6px 0 0 4px; +} + +.close-icon { + width: 11px; + height: 11px; + background-color: var(--search-close-icon-bg-color); + border-radius: 50%; + position: relative; + display: flex; + justify-content: center; + align-items: center; + box-sizing: content-box; +} + +.close-icon:before, +.close-icon:after { + content: ''; + position: absolute; + width: 7px; + height: 1px; + background-color: var(--search-close-icon-fg-color); +} + +.close-icon:before { + transform: rotate(45deg); +} + +.close-icon:after { + transform: rotate(-45deg); +} + + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + +.search-icon { + width: 20px; + height: 20px; + display: inline-block; + position: relative; + margin-left: 3px; +} + +#MSearchSelectExt.search-icon { + width: 10px; +} + +#MSearchSelectExt + input { + margin-left: 5px; +} + +.search-icon::before, .search-icon::after { + content: ''; + position: absolute; + border: 1.5px solid var(--search-foreground-color); + box-sizing: content-box; +} + +.search-icon::before { + width: 6px; + height: 6px; + border-radius: 50%; + top: 7px; + left: 2px; + background: var(--search-background-color); +} + +.search-icon::after { + border: 1px solid var(--search-foreground-color); + width: 0px; + height: 3px; + border-radius: 2px; + top: 15px; + left: 8px; + transform: rotate(-45deg); + transform-origin: top left; +} + +.search-icon-dropdown { + content: ''; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 3px solid var(--search-foreground-color); + top: 8px; + left: 15px; + transform: translateX(-50%); + position: absolute; +} + + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + backdrop-filter: var(--search-filter-backdrop-filter); + -webkit-backdrop-filter: var(--search-filter-backdrop-filter); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + border-radius: 4px; +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: auto; + right: 4px; + top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + backdrop-filter: var(--search-results-backdrop-filter); + -webkit-backdrop-filter: var(--search-results-backdrop-filter); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; + border-radius: 8px; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResults; + box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); +} + + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 10pt; + padding: 2px 5px; +} + +div.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +#searchBoxPos1 dark-mode-toggle { + margin-top: 4px; +} + +/*---------------- External search page results */ + +.pages b { + color: var(--nav-foreground-color); + padding: 5px 5px 3px 5px; + background-color: var(--nav-menu-active-bg); + border-radius: 4px; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..dc14410fb --- /dev/null +++ b/search/search.js @@ -0,0 +1,708 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const decodeHtml = (html) => { + const txt = document.createElement("textarea"); + txt.innerHTML = html; + return txt.value; + }; + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = decodeHtml(elem[1][0]); + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + if (elem[1][1][0].startsWith('http://') || elem[1][1][0].startsWith('https://')) { // absolute path + srLink.setAttribute('href',elem[1][1][0]); + } else { // relative path + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + } + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = decodeHtml(elem[1][1][2]); + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; cli>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6 { + margin: 0; + padding: 0 +} + +.sm ul { + display: none +} + +.sm a,.sm li { + position: relative +} + +.sm a,.sm:after { + display: block +} + +.sm a.disabled { + cursor: not-allowed +} + +.sm:after { + content: " "; + height: 0; + font: 0/0 serif; + clear: both; + visibility: hidden; + overflow: hidden +} + +.sm,.sm *,.sm :after,.sm :before { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.main-menu-btn { + position: relative; + display: inline-block; + width: 36px; + height: 36px; + text-indent: 36px; + margin-left: 8px; + white-space: nowrap; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: transparent +} + +.main-menu-btn-icon { + top: 50%; + left: 2px +} + +.main-menu-btn-icon,.main-menu-btn-icon:after,.main-menu-btn-icon:before { + position: absolute; + height: 2px; + width: 24px; + background: var(--nav-menu-button-color); + -webkit-transition: all .25s; + transition: all .25s +} + +.main-menu-btn-icon:before { + content: ""; + top: -7px; + left: 0 +} + +.main-menu-btn-icon:after { + content: ""; + top: 7px; + left: 0 +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon { + height: 0 +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before { + top: 0; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after { + top: 0; + -webkit-transform: rotate(45deg); + transform: rotate(45deg) +} + +#main-menu-state { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + border: 0; + padding: 0; + overflow: hidden; + clip: rect(1px,1px,1px,1px) +} + +#main-menu-state:not(:checked)~#main-menu { + display: none +} + +#main-menu-state:checked~#main-menu { + display: block +} + +@media (min-width:768px) { + .main-menu-btn { + position: absolute; + top: -99999px + } + + #main-menu-state:not(:checked)~#main-menu { + display: block + } +} + +.sm-dox { + background-color: var(--nav-menu-background-color) +} + +.sm-dox a,.sm-dox a:active,.sm-dox a:focus,.sm-dox a:hover { + padding: 0 43px 0 12px; + font-family: var(--font-family-nav); + font-size: 13px; + line-height: 36px; + text-decoration: none; + color: var(--nav-text-normal-color); + outline: 0 +} + +.sm-dox a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox a.current { + color: #d23600 +} + +.sm-dox a.disabled { + color: #bbb +} + +.sm-dox a span.sub-arrow { + position: absolute; + top: 50%; + margin-top: -14px; + left: auto; + right: 3px; + width: 28px; + height: 28px; + overflow: hidden; + font: 700 12px/28px monospace!important; + text-align: center; + text-shadow: none; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px +} + +.sm-dox a span.sub-arrow:before { + display: block; + content: "+" +} + +.sm-dox a.highlighted span.sub-arrow:before { + display: block; + content: "-" +} + +.sm-dox>li:first-child>:not(ul) a,.sm-dox>li:first-child>a { + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px; + border-radius: 5px 5px 0 0 +} + +.sm-dox>li:last-child>:not(ul) a,.sm-dox>li:last-child>a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0; + border-radius: 0 0 5px 5px +} + +.sm-dox>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0 +} + +.sm-dox ul { + background: var(--nav-menu-background-color) +} + +.sm-dox ul a,.sm-dox ul a:active,.sm-dox ul a:focus,.sm-dox ul a:hover { + font-size: 12px; + border-left: 8px solid transparent; + line-height: 36px; + text-shadow: none; + background-color: var(--nav-menu-background-color); + background-image: none +} + +.sm-dox ul a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox ul ul a,.sm-dox ul ul a:active,.sm-dox ul ul a:focus,.sm-dox ul ul a:hover { + border-left: 16px solid transparent +} + +.sm-dox ul ul ul a,.sm-dox ul ul ul a:active,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:hover { + border-left: 24px solid transparent +} + +.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:active,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:hover { + border-left: 32px solid transparent +} + +.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:active,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:hover { + border-left: 40px solid transparent +} + +@media (min-width:768px) { +.sm-dox ul { + position: absolute; + width: 12em; + border: 1px solid #bbb; + padding: 5px 0; + background: var(--nav-menu-background-color); + -moz-border-radius: 5px!important; + -webkit-border-radius: 5px; + border-radius: 5px!important; + -moz-box-shadow: 0 5px 9px rgba(0,0,0,.2); + -webkit-box-shadow: 0 5px 9px rgba(0,0,0,.2); + box-shadow: 0 5px 9px rgba(0,0,0,.2) +} + +.sm-dox li { + float: left; + border-top: 0; + padding: 3px +} + +.sm-dox.sm-rtl li { + float: right +} + +.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li { + float: none +} + +.sm-dox a { + white-space: nowrap +} + +.sm-dox ul a,.sm-dox.sm-vertical a { + white-space: normal +} + +.sm-dox .sm-nowrap>li>:not(ul) a,.sm-dox .sm-nowrap>li>a { + white-space: nowrap +} + +.sm-dox,.sm-dox a span.sub-arrow { + background-color: var(--nav-menu-background-color) +} + +.sm-dox { + padding: 0 10px; + line-height: 36px +} + +.sm-dox a span.sub-arrow { + top: 15px; + right: 10px; + box-sizing: content-box; + padding: 0; + margin: 0; + display: inline-block; + width: 5px; + height: 5px; + border-right: 2px solid var(--nav-arrow-color); + border-bottom: 2px solid var(--nav-arrow-color); + transform: rotate(45deg); + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0 +} + +.sm-dox a,.sm-dox a.highlighted,.sm-dox a:active,.sm-dox a:focus,.sm-dox a:hover { + padding: 0 6px +} + +.sm-dox a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px!important +} + +.sm-dox a:hover span.sub-arrow { + background-color: var(--nav-menu-active-bg); + border-right: 2px solid var(--nav-arrow-selected-color); + border-bottom: 2px solid var(--nav-arrow-selected-color) +} + +.sm-dox a.has-submenu { + padding-right: 24px +} + +.sm-dox>li>ul:after,.sm-dox>li>ul:before { + content: ""; + position: absolute; + top: -18px; + left: 30px; + width: 0; + height: 0; + overflow: hidden; + border-width: 9px; + border-style: dashed dashed solid; + border-color: transparent transparent #bbb +} + +.sm-dox>li>ul:after { + top: -16px; + left: 31px; + border-width: 8px; + border-color: transparent transparent var(--nav-menu-background-color) transparent +} + +.sm-dox ul a span.sub-arrow { + transform: rotate(-45deg); + top: 3px; +} + +.sm-dox ul a,.sm-dox ul a.highlighted,.sm-dox ul a:active,.sm-dox ul a:focus,.sm-dox ul a:hover { + color: var(--nav-menu-foreground-color); + background-image: none; + line-height: normal; + border: 0!important +} + +.sm-dox ul a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox span.scroll-down,.sm-dox span.scroll-up { + position: absolute; + display: none; + visibility: hidden; + overflow: hidden; + background: var(--nav-menu-background-color); + height: 36px +} + +.sm-dox span.scroll-down:hover,.sm-dox span.scroll-up:hover { + background: #eee +} + +.sm-dox span.scroll-up:hover span.scroll-down-arrow,.sm-dox span.scroll-up:hover span.scroll-up-arrow { + border-color: transparent transparent #d23600 +} + +.sm-dox span.scroll-down:hover span.scroll-down-arrow { + border-color: #d23600 transparent transparent +} + +.sm-dox span.scroll-down-arrow,.sm-dox span.scroll-up-arrow { + position: absolute; + top: 0; + left: 50%; + margin-left: -6px; + width: 0; + height: 0; + overflow: hidden; + border-width: 6px; + border-style: dashed dashed solid; + border-color: transparent transparent var(--nav-menu-foreground-color) transparent +} + +.sm-dox span.scroll-down-arrow { + top: 8px; + border-style: solid dashed dashed; + border-color: var(--nav-menu-foreground-color) transparent transparent transparent +} + +.sm-dox.sm-rtl a.has-submenu { + padding-right: 6px; + padding-left: 24px +} + +.sm-dox.sm-rtl a span.sub-arrow { + right: auto; + left: 6px +} + +.sm-dox.sm-rtl.sm-vertical a.has-submenu,.sm-dox.sm-vertical a,.sm-dox.sm-vertical ul a { + padding: 10px 20px +} + +.sm-dox.sm-rtl ul a span.sub-arrow,.sm-dox.sm-rtl.sm-vertical a span.sub-arrow { + right: auto; + left: 8px; + border-style: dashed solid dashed dashed; + border-color: transparent #555 transparent transparent +} + +.sm-dox.sm-rtl>li>ul:before { + left: auto; + right: 30px +} + +.sm-dox.sm-rtl>li>ul:after { + left: auto; + right: 31px +} + +.sm-dox.sm-rtl ul a.has-submenu { + padding: 10px 20px!important +} + +.sm-dox.sm-vertical { + padding: 10px 0; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px +} + +.sm-dox.sm-vertical a.highlighted,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:hover { + background: #fff +} + +.sm-dox.sm-vertical a span.sub-arrow { + right: 8px; + top: 50%; + margin-top: -5px; + border-width: 5px; + border-style: dashed dashed dashed solid; + border-color: transparent transparent transparent #555 +} + +.sm-dox.sm-vertical>li>ul:after,.sm-dox.sm-vertical>li>ul:before { + display: none +} + +.sm-dox.sm-vertical ul a.highlighted,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:hover { + background: #eee +} + +.sm-dox.sm-vertical ul a.disabled { + background: var(--nav-menu-background-color) +} +} +