diff --git a/doc/_themes/sphinxdoc/layout.html b/doc/_themes/sphinxdoc/layout.html new file mode 100644 index 0000000000..1064527679 --- /dev/null +++ b/doc/_themes/sphinxdoc/layout.html @@ -0,0 +1,274 @@ +{# + basic/layout.html + ~~~~~~~~~~~~~~~~~ + + Master layout template for Sphinx themes. + + :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- block doctype -%} +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +{%- endblock %} +{% set script_files = script_files + [pathto("_static/insertIframe.js", 1)] %} +{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %} +{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %} +{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and + (sidebars != []) %} +{%- set url_root = pathto('', 1) %} +{# XXX necessary? #} +{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} +{%- if not embedded and docstitle %} + {%- set titlesuffix = " — "|safe + docstitle|e %} +{%- else %} + {%- set titlesuffix = "" %} +{%- endif %} +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-33108845-1']); + _gaq.push(['_setDomainName', 'opencv.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + +</script> +{%- macro relbar() %} + <div class="related"> + <h3>{{ _('Navigation') }}</h3> + <ul> + {%- for rellink in rellinks %} + <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}> + <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}" + {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a> + {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li> + {%- endfor %} + {%- block rootrellink %} + <li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li> + {%- endblock %} + {%- for parent in parents %} + <li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li> + {%- endfor %} + {%- block relbaritems %} {% endblock %} + </ul> + </div> +{%- endmacro %} + +{%- macro sidebar() %} + {%- if render_sidebar %} + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + {%- block sidebarlogo %} + {%- if logo %} + <p class="logo"><a href="{{ pathto(master_doc) }}"> + <img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/> + </a></p> + {%- endif %} + {%- endblock %} + {%- if sidebars == None %} + {%- block sidebarsearch %} + {%- include "searchbox.html" %} + {%- endblock %} + {%- endif %} + {%- if sidebars != None %} + {#- new style sidebar: explicitly include/exclude templates #} + {%- for sidebartemplate in sidebars %} + {%- include sidebartemplate %} + {%- endfor %} + {%- else %} + {#- old style sidebars: using blocks -- should be deprecated #} + {%- block sidebartoc %} + {%- include "localtoc.html" %} + {%- endblock %} + {%- block sidebarrel %} + {%- include "relations.html" %} + {%- endblock %} + {%- if customsidebar %} + {%- include customsidebar %} + {%- endif %} + {%- endif %} + </div> + </div> + {%- endif %} +{%- endmacro %} + +{%- macro script() %} + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '{{ url_root }}', + VERSION: '{{ release|e }}', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}', + HAS_SOURCE: {{ has_source|lower }} + }; + </script> + {%- for scriptfile in script_files %} + <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script> + {%- endfor %} +{%- endmacro %} + +{%- macro css() %} + <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" /> + <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" /> + {%- for cssfile in css_files %} + <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" /> + {%- endfor %} +{%- endmacro %} + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" /> + {{ metatags }} + {%- block htmltitle %} + <title>{{ title|striptags|e }}{{ titlesuffix }}</title> + {%- endblock %} + {{ css() }} + {%- if not embedded %} + {{ script() }} + {%- if use_opensearch %} + <link rel="search" type="application/opensearchdescription+xml" + title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" + href="{{ pathto('_static/opensearch.xml', 1) }}"/> + {%- endif %} + {%- if favicon %} + <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/> + {%- endif %} + {%- endif %} +{%- block linktags %} + {%- if hasdoc('about') %} + <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" /> + {%- endif %} + {%- if hasdoc('genindex') %} + <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" /> + {%- endif %} + {%- if hasdoc('search') %} + <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" /> + {%- endif %} + {%- if hasdoc('copyright') %} + <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" /> + {%- endif %} + <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" /> + {%- if parents %} + <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" /> + {%- endif %} + {%- if next %} + <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" /> + {%- endif %} + {%- if prev %} + <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" /> + {%- endif %} +{%- endblock %} +{%- block extrahead %} + <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,700' + rel='stylesheet' type='text/css' /> +{%- if not embedded %} + <style type="text/css"> + table.right { float: right; margin-left: 20px; } + table.right td { border: 1px solid #ccc; } + </style> + <script type="text/javascript"> + // intelligent scrolling of the sidebar content + $(window).scroll(function() { + var sb = $('.sphinxsidebarwrapper'); + var win = $(window); + var sbh = sb.height(); + var offset = $('.sphinxsidebar').position()['top']; + var wintop = win.scrollTop(); + var winbot = wintop + win.innerHeight(); + var curtop = sb.position()['top']; + var curbot = curtop + sbh; + // does sidebar fit in window? + if (sbh < win.innerHeight()) { + // yes: easy case -- always keep at the top + sb.css('top', $u.min([$u.max([0, wintop - offset - 10]), + $(document).height() - sbh - 200])); + } else { + // no: only scroll if top/bottom edge of sidebar is at + // top/bottom edge of window + if (curtop > wintop && curbot > winbot) { + sb.css('top', $u.max([wintop - offset - 10, 0])); + } else if (curtop < wintop && curbot < winbot) { + sb.css('top', $u.min([winbot - sbh - offset - 20, + $(document).height() - sbh - 200])); + } + } + }); + </script> +{%- endif %} +{% endblock %} + </head> +{%- block header %}{% endblock %} + +{%- block relbar1 %}{{ relbar() }}{% endblock %} + + {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %} + {%- block sidebar2 %}{{ sidebar() }}{% endblock %} + <body> + +{%- block content %} + + <div class="document"> + {%- block document %} + <div class="documentwrapper"> + {%- if render_sidebar %} + <div class="bodywrapper"> + {%- endif %} + <div class="body"> + {% block body %} {% endblock %} + </div> + <div class="feedback"> + <h2>Help and Feedback</h2> + You did not find what you were looking for? + <ul> + {% if theme_lang == 'c' %} + {% endif %} + {% if theme_lang == 'cpp' %} + <li>Try the <a href="http://docs.opencv.org/opencv_cheatsheet.pdf">Cheatsheet</a>.</li> + {% endif %} + {% if theme_lang == 'py' %} + <li>Try the <a href="cookbook.html">Cookbook</a>.</li> + {% endif %} + <li>Ask a question on the <a href="http://answers.opencv.org">Q&A forum</a>.</li> + <li>If you think something is missing or wrong in the documentation, + please file a <a href="http://code.opencv.org">bug report</a>.</li> + </ul> + </div> + {%- if render_sidebar %} + </div> + {%- endif %} + </div> + {%- endblock %} + + <div class="clearer"></div> + </div> +{%- endblock %} + +{%- block relbar2 %}{{ relbar() }}{% endblock %} + +{%- block footer %} + <div class="footer"> + {%- if show_copyright %} + {%- if hasdoc('copyright') %} + {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %} + {%- else %} + {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} + {%- endif %} + {%- endif %} + {%- if last_updated %} + {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} + {%- endif %} + {%- if show_sphinx %} + {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx-doc.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %} + {%- endif %} + {%- if show_source and has_source and sourcename %} + <a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow">{{ _('Show this page source.') }}</a> + {%- endif %} + </div> +{%- endblock %} + </body> +</html> diff --git a/doc/_themes/sphinxdoc/searchbox.html b/doc/_themes/sphinxdoc/searchbox.html new file mode 100644 index 0000000000..73616d9ed4 --- /dev/null +++ b/doc/_themes/sphinxdoc/searchbox.html @@ -0,0 +1,21 @@ +{# + basic/searchbox.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: quick search box. + + :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if pagename != "search" and builder != "singlehtml" %} +<div id="searchbox" style="display: none"> + <h3>{{ _('Quick search') }}</h3> + <form class="search" action="{{ pathto('search') }}" method="get"> + <input type="text" name="q" /> + <input type="submit" value="{{ _('Go') }}" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> +{%- endif %} diff --git a/doc/_themes/sphinxdoc/static/bodybg.png b/doc/_themes/sphinxdoc/static/bodybg.png new file mode 100644 index 0000000000..ebe92f6691 Binary files /dev/null and b/doc/_themes/sphinxdoc/static/bodybg.png differ diff --git a/doc/_themes/sphinxdoc/static/default.css_t b/doc/_themes/sphinxdoc/static/default.css_t new file mode 100644 index 0000000000..ce5ee06350 --- /dev/null +++ b/doc/_themes/sphinxdoc/static/default.css_t @@ -0,0 +1,466 @@ +/* + * sphinxdoc.css_t + * ~~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- sphinxdoc theme. + * + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + text-align: center; + background-image: url(bodybg.png); + color: black; + padding: 0; + border-right: 1px solid #0a507a; + border-left: 1px solid #0a507a; + + margin: 0 auto; + min-width: 780px; + max-width: 1080px; +} + +div.document { + background-color: white; + text-align: left; +} + +div.bodywrapper { + margin: 0 240px 0 0; + border-right: 1px solid #0a507a; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} + +div.related { + font-size: 1em; + color: white; +} + +div.related ul { + background-image: url(relbg.png); + text-align: left; + border-top: 1px solid #002e50; + border-bottom: 1px solid #002e50; +} + +div.related li + li { + display: inline; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #f9f9f0; + text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5); +} + +div.related ul li a:hover { + color: white; + text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); +} + +div.footer { + background-image: url(footerbg.png); + color: #ccc; + text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8); + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: center; +} + +div.sphinxsidebarwrapper { + position: relative; + top: 0px; + padding: 0; +} + +div.sphinxsidebar { + word-wrap: break-word; + margin: 0; + padding: 0 15px 15px 0; + width: 210px; + float: right; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar .logo { + text-align: center; +} + +div.sphinxsidebar .logo img { + width: 150px; + vertical-align: middle; +} + +div.sphinxsidebar input { + border: 1px solid #aaa; + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 160px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 40px; +} + +div.sphinxsidebar h3 { + font-size: 1.5em; + border-top: 1px solid #0a507a; + margin-top: 1em; + margin-bottom: 0.5em; + padding-top: 0.5em; +} + +div.sphinxsidebar h4 { + font-size: 1.2em; + margin-bottom: 0; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin-right: -15px; + margin-left: -15px; + padding-right: 14px; + padding-left: 14px; + color: #333; + font-weight: 300; + /*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/ +} + +div.sphinxsidebarwrapper > h3:first-child { + margin-top: 0.5em; + border: none; +} + +div.sphinxsidebar h3 a { + color: #333; +} + +div.sphinxsidebar ul { + color: #444; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; + list-style-image: url(listitem.png); +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a, a tt { + color: #2878a2; +} + +a:hover, a tt:hover { + color: #68b8c2; +} + +a tt { + border: 0; +} + +h1, h2, h3, h4, h5, h6 { + color: #0a507a; + background-color: #e5f5ff; + font-weight: 300; +} + +h1 { + margin: 10px 0 0 0; +} + +h2 { + margin: 1.em 0 0.2em 0; + padding: 0; +} + +h3 { + margin: 1em 0 -0.3em 0; +} + +h1 { font-size: 200%; } +h2 { font-size: 160%; } +h3 { font-size: 140%; } +h4 { font-size: 120%; } +h5 { font-size: 110%; } +h6 { font-size: 100%; } + +div a, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + text-decoration: none; +} + +div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, +div.body h4 a tt, div.body h5 a tt, div.body h6 a tt { + color: #0a507a !important; + font-size: inherit !important; +} + +a.headerlink { + color: #0a507a !important; + font-size: 12px; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none !important; + float: right; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', + monospace; + font-size: 14px; + min-width: 780px; + max-width: 1080px; +} + +tt { + color: #003048; + padding: 1px; +} + +tt.descname, tt.descclassname, tt.xref { + font-size: 12px; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +pre { + font-family: 'Consolas', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', + monospace; + font-size: 13px; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + border-radius: 2px; + background-color: #f8f8f8; +} + +pre a { + color: inherit; + text-decoration: none; +} + +td.linenos pre { + padding: 0.5em 0; +} + +td.code pre { + max-width: 740px; + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 0px 7px; + border: 1px solid #ccc; + margin-left: 1em; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +div.admonition ul li, div.warning ul li, +div.admonition ol li, div.warning ol li { + text-align: left; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +/* ------------------ our styles ----------------*/ + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; + margin-top: 1em; + margin-bottom: 1em; +} + +div.toctree-wrapper li, ul.simple li { + margin:0; +} + +/*a.toc-backref { +}*/ + +div.feedback { + /*background-color: #;*/ + /*color: #;*/ + padding: 20px 20px 30px 20px; + border-top: 1px solid #002e50; +} + +div.feedback h2 { + margin: 10px 0 10px 0; +} + +div.feedback a { + /*color: #;*/ + font-weight: bold; +} + +div.math p { + margin-top: 10px; + margin-bottom: 10px; +} + +dl.function > dt:first-child { + margin-bottom: 7px; +} + +dl.cfunction > dt:first-child { + margin-bottom: 7px; + color: #8080B0; +} + +dl.cfunction > dt:first-child tt.descname { + color: #8080B0; +} + +dl.pyfunction > dt:first-child { + margin-bottom: 7px; +} + +dl.jfunction > dt:first-child { + margin-bottom: 7px; +} + +table.field-list { + margin-top: 20px; +} + +em.menuselection, em.guilabel { + font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, + Arial, Helvetica, sans-serif; +} + +.enumeratevisibleitemswithsquare ul { + list-style: square; + margin-bottom: 0px; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; +} + +.enumeratevisibleitemswithsquare li { + margin-bottom: 0.2em; + margin-left: 0px; + margin-right: 0px; + margin-top: 0.2em; + } + +.enumeratevisibleitemswithsquare p { + margin-bottom: 0pt; + margin-top: 1pt; +} + +.enumeratevisibleitemswithsquare dl { + margin-bottom: 0px; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; +} + +.toctableopencv { + width: 100% ; + table-layout: fixed; +} + +.toctableopencv colgroup col:first-child { + width: 100pt !important; + max-width: 100pt !important; + min-width: 100pt !important; +} + +.toctableopencv colgroup col:nth-child(2) { + width: 100% !important; +} + +div.body ul.search li { + text-align: left; +} + +div.linenodiv { + min-width: 1em; + text-align: right; +} diff --git a/doc/_themes/sphinxdoc/static/footerbg.png b/doc/_themes/sphinxdoc/static/footerbg.png new file mode 100644 index 0000000000..df783e2c76 Binary files /dev/null and b/doc/_themes/sphinxdoc/static/footerbg.png differ diff --git a/doc/_themes/sphinxdoc/static/headerbg.png b/doc/_themes/sphinxdoc/static/headerbg.png new file mode 100644 index 0000000000..22830f99ef Binary files /dev/null and b/doc/_themes/sphinxdoc/static/headerbg.png differ diff --git a/doc/_themes/sphinxdoc/static/listitem.png b/doc/_themes/sphinxdoc/static/listitem.png new file mode 100644 index 0000000000..e45715f914 Binary files /dev/null and b/doc/_themes/sphinxdoc/static/listitem.png differ diff --git a/doc/_themes/sphinxdoc/static/relbg.png b/doc/_themes/sphinxdoc/static/relbg.png new file mode 100644 index 0000000000..2006af7d2a Binary files /dev/null and b/doc/_themes/sphinxdoc/static/relbg.png differ diff --git a/doc/_themes/sphinxdoc/theme.conf b/doc/_themes/sphinxdoc/theme.conf new file mode 100644 index 0000000000..1f5132065d --- /dev/null +++ b/doc/_themes/sphinxdoc/theme.conf @@ -0,0 +1,4 @@ +[theme] +inherit = basic +stylesheet = default.css +pygments_style = sphinx diff --git a/doc/conf.py b/doc/conf.py index c6a879d76a..97d0b6facb 100755 --- a/doc/conf.py +++ b/doc/conf.py @@ -114,7 +114,7 @@ todo_include_todos=True # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'blue' +html_theme = 'sphinxdoc' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -133,7 +133,7 @@ html_theme_path = ['_themes'] # The name of an image file (relative to this directory) to place at the top # of the sidebar. -html_logo = 'opencv-logo-white.png' +html_logo = 'opencv-logo2.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32