From c0a6c04f08527ee46ae77e17dbe2e96acfa64b47 Mon Sep 17 00:00:00 2001 From: Stefan Hoffmann Date: Sat, 7 Jun 2014 23:31:51 +0200 Subject: [PATCH] update theme to match neovim.org --- Doxyfile | 4 +- contrib/doxygen/customdoxygen.css | 1473 ++++++++--------------------- contrib/doxygen/extra.css | 777 +++++++++++++++ contrib/doxygen/footer.html | 12 +- contrib/doxygen/header.html | 45 +- contrib/doxygen/logo-devdoc.png | Bin 0 -> 27382 bytes 6 files changed, 1197 insertions(+), 1114 deletions(-) create mode 100644 contrib/doxygen/extra.css create mode 100644 contrib/doxygen/logo-devdoc.png diff --git a/Doxyfile b/Doxyfile index 4bb2990aae..de31c8355f 100644 --- a/Doxyfile +++ b/Doxyfile @@ -47,7 +47,7 @@ PROJECT_BRIEF = # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = contrib/doxygen/logo-devdoc.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -917,7 +917,7 @@ HTML_STYLESHEET = contrib/doxygen/customdoxygen.css # robust against future updates. Doxygen will copy the style sheet file to # the output directory. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = contrib/doxygen/extra.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note diff --git a/contrib/doxygen/customdoxygen.css b/contrib/doxygen/customdoxygen.css index f0f36f89f5..800df62fb6 100644 --- a/contrib/doxygen/customdoxygen.css +++ b/contrib/doxygen/customdoxygen.css @@ -1,48 +1,12 @@ -/* The standard CSS for doxygen 1.8.6 */ -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} +/* + * Title, should be H1 + */ .title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -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 cyan; + font-family: 'Lato', sans-serif; + font-size: 2em; + margin: 0.67em 0 0; } dt { @@ -56,270 +20,34 @@ div.multicol { -webkit-column-count: 3; } -p.startli, p.startdd { - margin-top: 2px; -} -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ +div.qindex, div.navtab { background-color: #EBEFF6; border: 1px solid #A3B4D7; text-align: center; } -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - 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: -53px; - padding-left: 53px; - 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; + font-family: monospace, fixed; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + 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: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; } -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - 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; + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + white-space: pre; } /* @group Code Colorization */ @@ -352,828 +80,100 @@ span.charliteral { color: #008080 } -span.vhdldigit { - color: #ff00ff +span.vhdldigit { + color: #ff00ff } -span.vhdlchar { - color: #000000 +span.vhdlchar { + color: #000000 } -span.vhdlkeyword { - color: #700070 +span.vhdlkeyword { + color: #700070 } -span.vhdllogic { - color: #ff0000 +span.vhdllogic { + color: #ff0000 } blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; } /* @end */ -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - hr { height: 0px; border: none; - border-top: 1px solid #4A6AAA; + display: none; } -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -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; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,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: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view when not used as main index */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - 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.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.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: #3D578C; -} - -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; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - 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 { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.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-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.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; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; +dl { + padding: 0 0 0 10px; } /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ +dl.section { margin-left: 0px; padding-left: 0px; } -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; +dl.note { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; } -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; +dl.warning, dl.attention { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; } -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; +dl.pre, dl.post, dl.invariant { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; } -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; +dl.deprecated { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; } -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; +dl.todo { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; } -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; +dl.test { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; } -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; +dl.bug { + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; } dl.section dd { margin-bottom: 6px; } - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 20px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - 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 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - /* tooltip related style info */ .ttc { @@ -1345,6 +345,329 @@ tr.heading h2 { margin-top: -11px; } +/* + * Centered container for all content + */ + +div.contents, +div.header > *, +ul.tablist, +.navpath ul { + margin:0 15px; +} +@media (min-width: 568px) { + div.contents, + div.header > *, + ul.tablist, + .navpath ul { + margin: 0 auto; + width: 90%; + max-width: 1200px; + } +} + +/* + * padding inside content + */ + +div.contents > * { + padding-top: 8px; + padding-bottom: 8px; +} + +@media (min-width: 568px) { + div.contents > h2, + div.contents > div.textblock, + div.contents > div.memitem, + div.contents > table.memberdecls h2, + div.contents > p { + padding-top: 30px; + } +} + +div.contents h2 { + margin-top: 0px; +} + +div.summary { + display: none; +} + +/* + * Tabs + * + * Based on doxygen tabs.css + */ + +.tabs, .tabs2, .tabs3 { + width: 100%; + background-color: #f4f4f4; + border-top: solid 1px #ececec; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 30px 0 0; +} + +.tabs3 .tablist a { + padding: 0 20px 0 0; +} + +.tablist li.current a { + color: #54a23d; +} + +/* + * Navpath + */ + +.navpath ul +{ + padding:20px 0px; +} + +.navpath li +{ + list-style-type:none; + padding-right: 10px; + float:left; +} + +.navpath li.navelem a +{ + padding-left: 10px; +} + +.navpath li.navelem:before { + content: "/"; + color: #777; +} + +/* + * Member + * + * Styles for detailed member documentation + */ + +.memitem { + border-top: solid 1px #c9c9c9; +} + +.memname { + font-weight: bold; + font-family: monospace; +} + +td.memname { + color: #54a23d; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + font-weight: bold; +} + +.memdoc, dl.reflist dd { +} + +/* + * Parameters + */ + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #aa0e0e; + white-space: nowrap; +} + +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params td { + padding-right: 1em; + padding-bottom: 0.5em; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +/* + * Inline Label etc. + */ + +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; +} + +/* + * Member Descriptions + */ + +table.memberdecls { + font-family: monospace; + border-spacing: 0px; + padding: 0px; +} + +.memSeparator { + line-height: 1px; + margin: 0px; + padding: 0 0 0.2em 0; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* + * Fieldtable (Enums) + */ + +.fieldtable td, .fieldtable th { + padding: 0 1em 0.2em 0; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + vertical-align: top; +} + +/* + * Directory + */ + +.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; +} + +.directory tr.even { + padding-left: 6px; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3c92d1; +} + +/* + * Data Structure Index + * + * Hardcoded style attribute + */ + +.contents > table[style] { + margin: 20px auto !important; +} + +/* + * Search Box + */ + +#MSearchBox { + right: 4%; +} + @media print { #top { display: none; } diff --git a/contrib/doxygen/extra.css b/contrib/doxygen/extra.css new file mode 100644 index 0000000000..feb6d2d237 --- /dev/null +++ b/contrib/doxygen/extra.css @@ -0,0 +1,777 @@ +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9. + * Hide the `template` element in IE, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8+, and Opera + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +/* neovim.org/css/main.css */ + +* { + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 1.4; + color: #444; + background-color: #fbfbfb; +} +@media (min-width: 568px) { + body { + font-size: 17px; + } +} + +a { + color: #3c92d1; + text-decoration: none; +} + +h1, +h2, +h3 { + font-family: 'Lato', sans-serif; +} + +h2 { + font-size: 24px; + font-weight: 400; + color: #54a23d; + margin-bottom: 0; +} +@media (min-width: 568px) { + h2 { + font-size: 30px; + } +} +h3 { + /* color: #54a23d; */ +} + +blockquote { + border-left: 5px solid #eeeeee; + margin-left: 0; + padding-left: 15px; +} + +/* + * Content container + * + * Centered container for all content + */ + +.container { + margin: 0 15px; +} +@media (min-width: 568px) { + .container { + margin: 0 auto; + width: 90%; + max-width: 1200px; + } +} + +/* + * Navbar + * + * Logo and navigation at the top of the page + */ + +.navbar { + padding: 12px 0; +} +@media (min-width: 568px) { + .navbar { + padding-top: 30px; + padding-bottom: 30px; + } +} + +.logo { + width: 120px; + position: relative; + top: 4px; +} +@media (min-width: 568px) { + .logo { + width: 180px; + } +} + +.site-nav { + display: none; +} +@media (min-width: 568px) { + .site-nav { + display: block; + float: right; + } + .site-nav ul { + list-style: none; + } + .site-nav li { + display: inline-block; + margin-top: 5px; + margin-left: 20px; + font-size: 18px; + font-family: 'Lato', sans-serif; + } +} + +/* + * Masthead + * + * Big intro billboard + */ + +.masthead { + border-top: solid 1px #ececec; + border-bottom: solid 1px #ececec; + text-align: center; + padding: 20px 12px; +} +@media (min-width: 568px) { + .masthead { + padding-top: 40px; + padding-bottom: 40px; + } +} + +.masthead .container { +} +@media (min-width: 568px) { + .masthead .container { + width: 568px; + margin: 0 auto; + } +} + +.masthead h1 { + font-size: 20px; + font-weight: 400; +} +@media (min-width: 568px) { + .masthead h1 { + font-size: 40px; + margin-bottom: 50px; + } +} + +.masthead .lead { + font-weight: 900; + color: #54a23d; + font-family: 'Lato', sans-serif; + font-size: 16px; + font-weight: 900; +} +@media (min-width: 568px) { + .masthead .lead { + font-size: 26px; + } +} + +/* + * Columns + * + * Two columns utilizing the golden ratio + */ + +.col-wide, +.col-narrow { + display: block; +} +@media (min-width: 568px) { + .col-wide { + display: table-cell; + width: 61.8%; + vertical-align: top; + } + .col-narrow { + display: table-cell; + width: 38.2%; + padding-left: 6%; + vertical-align: top; + } +} + +/* + * Front page + * + * Big section blocks for the front page + */ + +.front-section { + padding: 8px 0; +} +@media (min-width: 568px) { + .front-section { + padding-top: 30px; + padding-bottom: 30px; + display: table; + width: 100%; + } + .front-section h2:first-child { + margin-top: 0; + } +} + +.front-section.shaded { + background-color: #f4f4f4; +} + +/* + * FAQs + * + * Formatted as a definition list + */ + +.faqs dt { + font-weight: 700; +} + +.faqs dd { + color: #777; + font-size: 15px; + margin-left: 0; + margin-bottom: 20px; +} + +/* + * Buttons + * + * Fun to click + */ + +.btn { + display: inline-block; + text-align: center; + vertical-align: middle; + background-color: #3c92d1; + color: #fff; + font-family: 'Lato', sans-serif; + border-radius: 4px; + padding: 15px 30px; +} + +.btn:hover { + background-color: #3889c4; +} + +.btn.full-width { + width: 100%; +} + +/* + * Sponsors + * + * Callout-style box + */ +.sponsors { + background-color: #f5f5f5; + padding: 5px 20px; + border-radius: 4px; + margin-top: 10px; +} + +.sponsors h3 { + color: #54a23d; +} + +.first-level-sponsor { + margin-bottom: 20px; +} + +.first-level-sponsor img { + max-width: 100%; +} + +.second-level-sponsors { + width: 100%; +} + +.second-level-sponsors td { + width: 50%; + padding: 12px 0; + text-align: center; + vertical-align: middle; +} + +.second-level-sponsors img { + width: 80%; +} +@media (min-width: 568px) { + .second-level-sponsor img { + width: auto; + } +} + +/* + * Footer + * + * Links, legalese, etc. + */ + +footer .container { + border-top: solid 1px #ececec; + padding: 20px 0 50px; + font-size: 12px; + color: #777; +} +@media (min-width: 568px) { + footer .container { + font-size: 14px; + display: table; + } +} + +footer a { + color: #444; +} + + +/* + * Misc + * + * Odds 'n ends + */ + +.light { + color: #777; +} + +.light a { + color: #444; +} + +.small { + font-size: 70%; +} + +/* + * Newsletter CSS + */ + +.newsletter h1 { + margin-bottom: 0px; +} + diff --git a/contrib/doxygen/footer.html b/contrib/doxygen/footer.html index e9a2ed7d93..a6d8bb1ee4 100644 --- a/contrib/doxygen/footer.html +++ b/contrib/doxygen/footer.html @@ -11,11 +11,13 @@ - + diff --git a/contrib/doxygen/header.html b/contrib/doxygen/header.html index 7a0adcb09d..e1afe71aee 100644 --- a/contrib/doxygen/header.html +++ b/contrib/doxygen/header.html @@ -7,7 +7,6 @@ $projectname: $title $title - $treeview @@ -15,41 +14,23 @@ $search $mathjax $extrastylesheet +
-
- - - - - - - - - - - - - - - - - - - - - -
-
$projectname -  $projectnumber -
-
$projectbrief
-
-
$projectbrief
-
$searchbox
-
+ diff --git a/contrib/doxygen/logo-devdoc.png b/contrib/doxygen/logo-devdoc.png new file mode 100644 index 0000000000000000000000000000000000000000..a25ef2b9d77edbcc3cb86ba8d4bb3d18489fd6dc GIT binary patch literal 27382 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

=ju$CoybdGJ}-qnNzTR+_4@qO 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 i|D{*&Wup&y!I7dK4&5^!9{