Commit 07b07481 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

improved look of the generated PDF and html docs; started merging reference manuals

parent e2219b72
...@@ -271,7 +271,7 @@ tt.descname { ...@@ -271,7 +271,7 @@ tt.descname {
color: {{ theme_headtext_color }} color: {{ theme_headtext_color }}
background-color: #ecf0f3; background-color: #ecf0f3;
padding: 0 1px 0 1px; padding: 0 1px 0 1px;
font-size: 1.6em; font-size: 1.4em;
} }
div.math p { div.math p {
...@@ -281,17 +281,24 @@ div.math p { ...@@ -281,17 +281,24 @@ div.math p {
dl.function > dt:first-child { dl.function > dt:first-child {
margin-bottom: 7px; margin-bottom: 7px;
background-color: #ecf0f3;
} }
dl.cfunction > dt:first-child { dl.cfunction > dt:first-child {
margin-bottom: 7px; margin-bottom: 7px;
background-color: #ecf0f3; color: #8080B0;
} }
dl.pyfunction > dt:first-child { dl.pyfunction > dt:first-child {
margin-bottom: 7px; margin-bottom: 7px;
background-color: #ecf0f3; }
dl.pyoldfunction > dt:first-child {
margin-bottom: 7px;
color: #8080B0;
}
dl.jfunction > dt:first-child {
margin-bottom: 7px;
} }
table.field-list { table.field-list {
......
...@@ -170,7 +170,7 @@ htmlhelp_basename = 'opencv' ...@@ -170,7 +170,7 @@ htmlhelp_basename = 'opencv'
# OpenCV docs use some custom LaTeX macros in the formulae. Make sure we include the definitions # OpenCV docs use some custom LaTeX macros in the formulae. Make sure we include the definitions
pngmath_latex_preamble = r""" pngmath_latex_preamble = r"""
\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm} \usepackage{euler}\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm}
\newcommand{\matTT}[9]{ \newcommand{\matTT}[9]{
\[ \[
\left|\begin{array}{ccc} \left|\begin{array}{ccc}
...@@ -237,7 +237,13 @@ latex_documents = [ ...@@ -237,7 +237,13 @@ latex_documents = [
u'', 'manual'), u'', 'manual'),
] ]
latex_elements = {'preamble': '\usepackage{mymath}\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm}\setcounter{secnumdepth}{1}'} preamble ="""
\usepackage{euler}
\usepackage[scaled=0.85]{beramono}
\usepackage{mymath}\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm}\setcounter{secnumdepth}{1}
"""
latex_elements = {'preamble': preamble}
# The name of an image file (relative to this directory) to place at the top of # The name of an image file (relative to this directory) to place at the top of
# the title page. # the title page.
......
...@@ -243,12 +243,13 @@ class OCVPyModulelevel(OCVPyObject): ...@@ -243,12 +243,13 @@ class OCVPyModulelevel(OCVPyObject):
""" """
Description of an object on module level (functions, data). Description of an object on module level (functions, data).
""" """
directive_prefix = 'py'
def needs_arglist(self): def needs_arglist(self):
return self.objtype == 'pyfunction' return self.objtype == self.__class__.directive_prefix + 'function'
def get_index_text(self, modname, name_cls): def get_index_text(self, modname, name_cls):
if self.objtype == 'pyfunction': if self.objtype == self.__class__.directive_prefix + 'function':
if not modname: if not modname:
fname = name_cls[0] fname = name_cls[0]
if not fname.startswith("cv") and not fname.startswith("cv2"): if not fname.startswith("cv") and not fname.startswith("cv2"):
...@@ -265,6 +266,10 @@ class OCVPyModulelevel(OCVPyObject): ...@@ -265,6 +266,10 @@ class OCVPyModulelevel(OCVPyObject):
else: else:
return '' return ''
class OCVPyOldModulelevel(OCVPyModulelevel):
directive_prefix = 'pyold'
pass
class OCVPyXRefRole(XRefRole): class OCVPyXRefRole(XRefRole):
def process_link(self, env, refnode, has_explicit_title, title, target): def process_link(self, env, refnode, has_explicit_title, title, target):
refnode['ocv:module'] = env.temp_data.get('ocv:module') refnode['ocv:module'] = env.temp_data.get('ocv:module')
...@@ -1075,6 +1080,8 @@ class DefinitionParser(object): ...@@ -1075,6 +1080,8 @@ class DefinitionParser(object):
class OCVObject(ObjectDescription): class OCVObject(ObjectDescription):
"""Description of a C++ language object.""" """Description of a C++ language object."""
langname = "C++"
doc_field_types = [ doc_field_types = [
TypedField('parameter', label=l_('Parameters'), TypedField('parameter', label=l_('Parameters'),
names=('param', 'parameter', 'arg', 'argument'), names=('param', 'parameter', 'arg', 'argument'),
...@@ -1104,7 +1111,8 @@ class OCVObject(ObjectDescription): ...@@ -1104,7 +1111,8 @@ class OCVObject(ObjectDescription):
node += pnode node += pnode
def attach_modifiers(self, node, obj): def attach_modifiers(self, node, obj):
node += nodes.strong("C++:", "C++:") lname = self.__class__.langname
node += nodes.strong(lname + ":", lname + ":")
node += addnodes.desc_name(" ", " ") node += addnodes.desc_name(" ", " ")
if obj.visibility != 'public': if obj.visibility != 'public':
node += addnodes.desc_annotation(obj.visibility, node += addnodes.desc_annotation(obj.visibility,
...@@ -1259,7 +1267,8 @@ class OCVFunctionObject(OCVObject): ...@@ -1259,7 +1267,8 @@ class OCVFunctionObject(OCVObject):
node += addnodes.desc_addname(' = 0', ' = 0') node += addnodes.desc_addname(' = 0', ' = 0')
def get_index_text(self, name): def get_index_text(self, name):
return _('%s (C++ function)') % name lname = self.__class__.langname
return _('%s (%s function)') % (name, lname)
def parse_definition(self, parser): def parse_definition(self, parser):
return parser.parse_function() return parser.parse_function()
...@@ -1322,6 +1331,13 @@ class OCVXRefRole(XRefRole): ...@@ -1322,6 +1331,13 @@ class OCVXRefRole(XRefRole):
return title, target return title, target
class OCVCFunctionObject(OCVFunctionObject):
langname = "C"
class OCVJavaFunctionObject(OCVFunctionObject):
langname = "Java"
class OCVDomain(Domain): class OCVDomain(Domain):
"""OpenCV C++ language domain.""" """OpenCV C++ language domain."""
name = 'ocv' name = 'ocv'
...@@ -1329,7 +1345,10 @@ class OCVDomain(Domain): ...@@ -1329,7 +1345,10 @@ class OCVDomain(Domain):
object_types = { object_types = {
'class': ObjType(l_('class'), 'class'), 'class': ObjType(l_('class'), 'class'),
'function': ObjType(l_('function'), 'func', 'funcx'), 'function': ObjType(l_('function'), 'func', 'funcx'),
'cfunction': ObjType(l_('cfunction'), 'cfunc', 'cfuncx'),
'jfunction': ObjType(l_('jfunction'), 'jfunc', 'jfuncx'),
'pyfunction': ObjType(l_('pyfunction'), 'pyfunc'), 'pyfunction': ObjType(l_('pyfunction'), 'pyfunc'),
'pyoldfunction': ObjType(l_('pyoldfunction'), 'pyoldfunc'),
'member': ObjType(l_('member'), 'member'), 'member': ObjType(l_('member'), 'member'),
'type': ObjType(l_('type'), 'type') 'type': ObjType(l_('type'), 'type')
} }
...@@ -1337,7 +1356,10 @@ class OCVDomain(Domain): ...@@ -1337,7 +1356,10 @@ class OCVDomain(Domain):
directives = { directives = {
'class': OCVClassObject, 'class': OCVClassObject,
'function': OCVFunctionObject, 'function': OCVFunctionObject,
'cfunction': OCVCFunctionObject,
'jfunction': OCVJavaFunctionObject,
'pyfunction': OCVPyModulelevel, 'pyfunction': OCVPyModulelevel,
'pyoldfunction': OCVPyOldModulelevel,
'member': OCVMemberObject, 'member': OCVMemberObject,
'type': OCVTypeObject, 'type': OCVTypeObject,
'namespace': OCVCurrentNamespace 'namespace': OCVCurrentNamespace
...@@ -1346,7 +1368,12 @@ class OCVDomain(Domain): ...@@ -1346,7 +1368,12 @@ class OCVDomain(Domain):
'class': OCVXRefRole(), 'class': OCVXRefRole(),
'func' : OCVXRefRole(fix_parens=True), 'func' : OCVXRefRole(fix_parens=True),
'funcx' : OCVXRefRole(), 'funcx' : OCVXRefRole(),
'cfunc' : OCVXRefRole(fix_parens=True),
'cfunc' : OCVXRefRole(),
'jfunc' : OCVXRefRole(fix_parens=True),
'jfunc' : OCVXRefRole(),
'pyfunc' : OCVPyXRefRole(), 'pyfunc' : OCVPyXRefRole(),
'pyoldfunc' : OCVPyXRefRole(),
'member': OCVXRefRole(), 'member': OCVXRefRole(),
'type': OCVXRefRole() 'type': OCVXRefRole()
} }
......
...@@ -31,6 +31,16 @@ Computes the per-element absolute difference between two arrays or between an ar ...@@ -31,6 +31,16 @@ Computes the per-element absolute difference between two arrays or between an ar
.. ocv:function:: void absdiff(InputArray src1, InputArray src2, OutputArray dst) .. ocv:function:: void absdiff(InputArray src1, InputArray src2, OutputArray dst)
.. ocv:pyfunction:: cv2.absdiff(src1, src2, [dst=None]) -> dst
.. ocv:pyoldfunction:: cv.AbsDiff(src1, src2, dst) -> None
.. ocv:pyoldfunction:: cv.AbsDiffS(src1, src2, dst) -> None
.. ocv:cfunction:: void cvAbsDiff(const CvArr* src1, const CvArr* src2, CvArr* dst)
.. ocv:cfunction:: void cvAbsDiffS(const CvArr* src1, CvScalar src2, CvArr* dst)
:param src1: First input array or a scalar. :param src1: First input array or a scalar.
:param src2: Second input array or a scalar. :param src2: Second input array or a scalar.
......
...@@ -52,7 +52,7 @@ Different variants of boosting are known as Discrete Adaboost, Real AdaBoost, Lo ...@@ -52,7 +52,7 @@ Different variants of boosting are known as Discrete Adaboost, Real AdaBoost, Lo
3.3. Set :math:`w_i \Leftarrow w_i exp[c_m 1_{(y_i \neq f_m(x_i))}], i = 1,2,...,N,` and renormalize so that :math:`\Sigma i w_i = 1` . 3.3. Set :math:`w_i \Leftarrow w_i exp[c_m 1_{(y_i \neq f_m(x_i))}], i = 1,2,...,N,` and renormalize so that :math:`\Sigma i w_i = 1` .
#. Classify new samples *x* using the formula: :math:`\sign (\Sigma m = 1M c_m f_m(x))` . #. Classify new samples *x* using the formula: :math:`\textrm{sign} (\Sigma m = 1M c_m f_m(x))` .
.. note:: Similar to the classical boosting methods, the current implementation supports two-class classifiers only. For M .. note:: Similar to the classical boosting methods, the current implementation supports two-class classifiers only. For M
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment