aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-01-05 16:37:11 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-01-05 16:37:11 +0100
commit93ee82b1fda6d395d1f70d7fb767b5dceaf4ca29 (patch)
tree21de49e996afa6db673dcff8757ed7bbbb0bf587 /doc
parenteac676ff6cf3f9c2d4a11e92e7211e7d763e8d6f (diff)
Big changes in Eigen documentation:
- Organize the documentation into "chapters". - Each chapter include many documentation pages, reference pages organized as modules, and a quick reference page. - The "Chapters" tree is created using the defgroup/ingroup mechanism, even for the documentation pages (i.e., .dox files for which I added an \eigenManualPage macro that we can switch between \page or \defgroup ). - Add a "General topics" entry for all pages that do not fit well in the previous "chapters". - The highlevel struture is managed by a new eigendoxy_layout.xml file. - remove the "index" and quite useless pages (namespace list, class hierarchy, member list, file list, etc.) - add the javascript search-engine. - add the "treeview" panel. - remove \tableofcontents (replace them by a custom \eigenAutoToc macro to be able to easily re-enable if needed). - add javascript to automatically generate a TOC from the h1/h2 tags of the current page, and put the TOC in the left side panel. - overload various javascript function generated by doxygen to: - remove the root of the treeview - remove links to section/subsection from the treeview - automatically expand the "Chapters" section - automatically expand the current section - adjust the height of the treeview to take into account the TOC - always use the default .css file, eigendoxy.css now only includes our modifications - use Doxyfile to specify our logo - remove cross references to unsupported modules (temporarily)
Diffstat (limited to 'doc')
-rw-r--r--doc/A05_PortingFrom2To3.dox4
-rw-r--r--doc/A10_Eigen2SupportModes.dox2
-rw-r--r--doc/B01_Experimental.dox2
-rw-r--r--doc/C00_QuickStartGuide.dox3
-rw-r--r--doc/C01_TutorialMatrixClass.dox6
-rw-r--r--doc/C02_TutorialMatrixArithmetic.dox5
-rw-r--r--doc/C03_TutorialArrayClass.dox5
-rw-r--r--doc/C04_TutorialBlockOperations.dox5
-rw-r--r--doc/C05_TutorialAdvancedInitialization.dox5
-rw-r--r--doc/C06_TutorialLinearAlgebra.dox5
-rw-r--r--doc/C07_TutorialReductionsVisitorsBroadcasting.dox5
-rw-r--r--doc/C08_TutorialGeometry.dox5
-rw-r--r--doc/C09_TutorialSparse.dox5
-rw-r--r--doc/C10_TutorialMapClass.dox4
-rw-r--r--doc/CMakeLists.txt7
-rw-r--r--doc/D01_StlContainers.dox4
-rw-r--r--doc/D03_WrongStackAlignment.dox2
-rw-r--r--doc/D07_PassingByValue.dox2
-rw-r--r--doc/D09_StructHavingEigenMembers.dox4
-rw-r--r--doc/D11_UnalignedArrayAssert.dox4
-rw-r--r--doc/Doxyfile.in25
-rw-r--r--doc/I00_CustomizingEigen.dox2
-rw-r--r--doc/I03_InsideEigenExample.dox2
-rw-r--r--doc/I05_FixedSizeVectorizable.dox2
-rw-r--r--doc/I10_Assertions.dox2
-rw-r--r--doc/I11_Aliasing.dox4
-rw-r--r--doc/I12_ClassHierarchy.dox2
-rw-r--r--doc/I13_FunctionsTakingEigenTypes.dox2
-rw-r--r--doc/I14_PreprocessorDirectives.dox2
-rw-r--r--doc/I15_StorageOrders.dox4
-rw-r--r--doc/I16_TemplateKeyword.dox2
-rw-r--r--doc/I17_SparseLinearSystems.dox6
-rw-r--r--doc/Manual.dox155
-rw-r--r--doc/Overview.dox6
-rw-r--r--doc/QuickReference.dox4
-rw-r--r--doc/SparseQuickReference.dox5
-rw-r--r--doc/TopicLinearAlgebraDecompositions.dox2
-rw-r--r--doc/UsingIntelMKL.dox2
-rw-r--r--doc/eigen_navtree_hacks.js239
-rw-r--r--doc/eigendoxy.css1306
-rw-r--r--doc/eigendoxy_header.html.in21
-rw-r--r--doc/eigendoxy_layout.xml.in177
42 files changed, 679 insertions, 1377 deletions
diff --git a/doc/A05_PortingFrom2To3.dox b/doc/A05_PortingFrom2To3.dox
index b6720f24f..3750316c5 100644
--- a/doc/A05_PortingFrom2To3.dox
+++ b/doc/A05_PortingFrom2To3.dox
@@ -5,11 +5,11 @@ namespace Eigen {
This page lists the most important API changes between Eigen2 and Eigen3,
and gives tips to help porting your application from Eigen2 to Eigen3.
-\tableofcontents
+\eigenAutoToc
\section CompatibilitySupport Eigen2 compatibility support
-In order to ease the switch from Eigen2 to Eigen3, Eigen3 features \ref Eigen2SupportModes "Eigen2 support modes".
+In order to ease the switch from Eigen2 to Eigen3, Eigen3 features \subpage Eigen2SupportModes "Eigen2 support modes".
The quick way to enable this is to define the \c EIGEN2_SUPPORT preprocessor token \b before including any Eigen header (typically it should be set in your project options).
diff --git a/doc/A10_Eigen2SupportModes.dox b/doc/A10_Eigen2SupportModes.dox
index e6ade5e8d..abfdb4683 100644
--- a/doc/A10_Eigen2SupportModes.dox
+++ b/doc/A10_Eigen2SupportModes.dox
@@ -5,7 +5,7 @@ namespace Eigen {
This page documents the Eigen2 support modes, a powerful tool to help migrating your project from Eigen 2 to Eigen 3.
Don't miss our page on \ref Eigen2ToEigen3 "API changes" between Eigen 2 and Eigen 3.
-\tableofcontents
+\eigenAutoToc
\section EIGEN2_SUPPORT_Macro The quick way: define EIGEN2_SUPPORT
diff --git a/doc/B01_Experimental.dox b/doc/B01_Experimental.dox
index b6a5df567..5fc0ccd60 100644
--- a/doc/B01_Experimental.dox
+++ b/doc/B01_Experimental.dox
@@ -2,7 +2,7 @@ namespace Eigen {
/** \page Experimental Experimental parts of Eigen
-\tableofcontents
+\eigenAutoToc
\section summary Summary
diff --git a/doc/C00_QuickStartGuide.dox b/doc/C00_QuickStartGuide.dox
index ba7ff9f46..ea32c3b3d 100644
--- a/doc/C00_QuickStartGuide.dox
+++ b/doc/C00_QuickStartGuide.dox
@@ -1,9 +1,8 @@
namespace Eigen {
/** \page GettingStarted Getting started
- \ingroup Tutorial
-\tableofcontents
+\eigenAutoToc
This is a very short guide on how to get started with Eigen. It has a dual purpose. It serves as a minimal introduction to the Eigen library for people who want to start coding as soon as possible. You can also read this page as the first part of the Tutorial, which explains the library in more detail; in this case you will continue with \ref TutorialMatrixClass.
diff --git a/doc/C01_TutorialMatrixClass.dox b/doc/C01_TutorialMatrixClass.dox
index b1f9393ac..41cfb777c 100644
--- a/doc/C01_TutorialMatrixClass.dox
+++ b/doc/C01_TutorialMatrixClass.dox
@@ -1,8 +1,6 @@
namespace Eigen {
-/** \page TutorialMatrixClass Tutorial page 1 - The %Matrix class
-
-\ingroup Tutorial
+/** \eigenManualPage TutorialMatrixClass The Matrix class
\li \b Previous: \ref GettingStarted
\li \b Next: \ref TutorialMatrixArithmetic
@@ -10,7 +8,7 @@ namespace Eigen {
We assume that you have already read the quick \link GettingStarted "getting started" \endlink tutorial.
This page is the first one in a much longer multi-page tutorial.
-\tableofcontents
+\eigenAutoToc
In Eigen, all matrices and vectors are objects of the Matrix template class.
Vectors are just a special case of matrices, with either 1 row or 1 column.
diff --git a/doc/C02_TutorialMatrixArithmetic.dox b/doc/C02_TutorialMatrixArithmetic.dox
index b8cdf4351..2969d54eb 100644
--- a/doc/C02_TutorialMatrixArithmetic.dox
+++ b/doc/C02_TutorialMatrixArithmetic.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialMatrixArithmetic Tutorial page 2 - %Matrix and vector arithmetic
- \ingroup Tutorial
+/** \eigenManualPage TutorialMatrixArithmetic Matrix and vector arithmetic
\li \b Previous: \ref TutorialMatrixClass
\li \b Next: \ref TutorialArrayClass
@@ -9,7 +8,7 @@ namespace Eigen {
This tutorial aims to provide an overview and some details on how to perform arithmetic
between matrices, vectors and scalars with Eigen.
-\tableofcontents
+\eigenAutoToc
\section TutorialArithmeticIntroduction Introduction
diff --git a/doc/C03_TutorialArrayClass.dox b/doc/C03_TutorialArrayClass.dox
index 3fdb4e6b0..6531ee232 100644
--- a/doc/C03_TutorialArrayClass.dox
+++ b/doc/C03_TutorialArrayClass.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialArrayClass Tutorial page 3 - The %Array class and coefficient-wise operations
- \ingroup Tutorial
+/** \eigenManualPage TutorialArrayClass The Array class and coefficient-wise operations
\li \b Previous: \ref TutorialMatrixArithmetic
\li \b Next: \ref TutorialBlockOperations
@@ -9,7 +8,7 @@ namespace Eigen {
This tutorial aims to provide an overview and explanations on how to use
Eigen's Array class.
-\tableofcontents
+\eigenAutoToc
\section TutorialArrayClassIntro What is the Array class?
diff --git a/doc/C04_TutorialBlockOperations.dox b/doc/C04_TutorialBlockOperations.dox
index 639df178e..64454a65e 100644
--- a/doc/C04_TutorialBlockOperations.dox
+++ b/doc/C04_TutorialBlockOperations.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialBlockOperations Tutorial page 4 - %Block operations
- \ingroup Tutorial
+/** \eigenManualPage TutorialBlockOperations Block operations
\li \b Previous: \ref TutorialArrayClass
\li \b Next: \ref TutorialAdvancedInitialization
@@ -11,7 +10,7 @@ A block is a rectangular part of a matrix or array. Blocks expressions can be us
as rvalues and as lvalues. As usual with Eigen expressions, this abstraction has zero runtime cost
provided that you let your compiler optimize.
-\tableofcontents
+\eigenAutoToc
\section TutorialBlockOperationsUsing Using block operations
diff --git a/doc/C05_TutorialAdvancedInitialization.dox b/doc/C05_TutorialAdvancedInitialization.dox
index 70aa7be74..acbf9b8cb 100644
--- a/doc/C05_TutorialAdvancedInitialization.dox
+++ b/doc/C05_TutorialAdvancedInitialization.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialAdvancedInitialization Tutorial page 5 - Advanced initialization
- \ingroup Tutorial
+/** \eigenManualPage TutorialAdvancedInitialization Advanced initialization
\li \b Previous: \ref TutorialBlockOperations
\li \b Next: \ref TutorialLinearAlgebra
@@ -10,7 +9,7 @@ This page discusses several advanced methods for initializing matrices. It gives
comma-initializer, which was introduced before. It also explains how to get special matrices such as the
identity matrix and the zero matrix.
-\tableofcontents
+\eigenAutoToc
\section TutorialAdvancedInitializationCommaInitializer The comma initializer
diff --git a/doc/C06_TutorialLinearAlgebra.dox b/doc/C06_TutorialLinearAlgebra.dox
index c1218a562..c6235f268 100644
--- a/doc/C06_TutorialLinearAlgebra.dox
+++ b/doc/C06_TutorialLinearAlgebra.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialLinearAlgebra Tutorial page 6 - Linear algebra and decompositions
- \ingroup Tutorial
+/** \eigenManualPage TutorialLinearAlgebra Linear algebra and decompositions
\li \b Previous: \ref TutorialAdvancedInitialization
\li \b Next: \ref TutorialReductionsVisitorsBroadcasting
@@ -10,7 +9,7 @@ This tutorial explains how to solve linear systems, compute various decompositio
QR, %SVD, eigendecompositions... for more advanced topics, don't miss our special page on
\ref TopicLinearAlgebraDecompositions "this topic".
-\tableofcontents
+\eigenAutoToc
\section TutorialLinAlgBasicSolve Basic linear solving
diff --git a/doc/C07_TutorialReductionsVisitorsBroadcasting.dox b/doc/C07_TutorialReductionsVisitorsBroadcasting.dox
index 881bf88f2..222965175 100644
--- a/doc/C07_TutorialReductionsVisitorsBroadcasting.dox
+++ b/doc/C07_TutorialReductionsVisitorsBroadcasting.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page TutorialReductionsVisitorsBroadcasting Tutorial page 7 - Reductions, visitors and broadcasting
- \ingroup Tutorial
+/** \eigenManualPage TutorialReductionsVisitorsBroadcasting Reductions, visitors and broadcasting
\li \b Previous: \ref TutorialLinearAlgebra
\li \b Next: \ref TutorialGeometry
@@ -9,7 +8,7 @@ namespace Eigen {
This tutorial explains Eigen's reductions, visitors and broadcasting and how they are used with
\link MatrixBase matrices \endlink and \link ArrayBase arrays \endlink.
-\tableofcontents
+\eigenAutoToc
\section TutorialReductionsVisitorsBroadcastingReductions Reductions
In Eigen, a reduction is a function taking a matrix or array, and returning a single
diff --git a/doc/C08_TutorialGeometry.dox b/doc/C08_TutorialGeometry.dox
index eec21ac05..90038cd2a 100644
--- a/doc/C08_TutorialGeometry.dox
+++ b/doc/C08_TutorialGeometry.dox
@@ -1,14 +1,13 @@
namespace Eigen {
-/** \page TutorialGeometry Tutorial page 8 - Geometry
- \ingroup Tutorial
+/** \eigenManualPage TutorialGeometry Geometry
\li \b Previous: \ref TutorialReductionsVisitorsBroadcasting
\li \b Next: \ref TutorialSparse
In this tutorial, we will briefly introduce the many possibilities offered by the \ref Geometry_Module "geometry module", namely 2D and 3D rotations and projective or affine transformations.
-\tableofcontents
+\eigenAutoToc
Eigen's Geometry module provides two different kinds of geometric transformations:
- Abstract transformations, such as rotations (represented by \ref AngleAxis "angle and axis" or by a \ref Quaternion "quaternion"), \ref Translation "translations", \ref Scaling "scalings". These transformations are NOT represented as matrices, but you can nevertheless mix them with matrices and vectors in expressions, and convert them to matrices if you wish.
diff --git a/doc/C09_TutorialSparse.dox b/doc/C09_TutorialSparse.dox
index 9a212ae02..fab3432a2 100644
--- a/doc/C09_TutorialSparse.dox
+++ b/doc/C09_TutorialSparse.dox
@@ -1,12 +1,11 @@
namespace Eigen {
-/** \page TutorialSparse Tutorial page 9 - Sparse Matrix
- \ingroup Tutorial
+/** \eigenManualPage TutorialSparse Sparse matrix manipulations
\li \b Previous: \ref TutorialGeometry
\li \b Next: \ref TutorialMapClass
-\tableofcontents
+\eigeneigenAutoToc
<hr>
diff --git a/doc/C10_TutorialMapClass.dox b/doc/C10_TutorialMapClass.dox
index e07b404d1..0d9dc602f 100644
--- a/doc/C10_TutorialMapClass.dox
+++ b/doc/C10_TutorialMapClass.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TutorialMapClass Tutorial page 10 - Interfacing with C/C++ arrays and external libraries: the %Map class
+/** \eigenManualPage TutorialMapClass Interfacing with C/C++ arrays and external libraries: the %Map class
\ingroup Tutorial
@@ -9,7 +9,7 @@ namespace Eigen {
This tutorial page explains how to work with "raw" C++ arrays. This can be useful in a variety of contexts, particularly when "importing" vectors and matrices from other libraries into Eigen.
-\tableofcontents
+\eigenAutoToc
\section TutorialMapIntroduction Introduction
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 33bc1d45d..d932ff3cc 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -30,6 +30,11 @@ configure_file(
${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_footer.html
)
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_layout.xml.in
+ ${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_layout.xml
+)
+
set(examples_targets "")
set(snippets_targets "")
@@ -44,7 +49,7 @@ add_custom_target(
doc-eigen-prerequisites
ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/html/
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_tabs.css
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/eigen_navtree_hacks.js
${CMAKE_CURRENT_BINARY_DIR}/html/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Eigen_Silly_Professor_64x64.png
${CMAKE_CURRENT_BINARY_DIR}/html/
diff --git a/doc/D01_StlContainers.dox b/doc/D01_StlContainers.dox
index c1d32b87f..d8d0d529c 100644
--- a/doc/D01_StlContainers.dox
+++ b/doc/D01_StlContainers.dox
@@ -1,8 +1,8 @@
namespace Eigen {
-/** \page TopicStlContainers Using STL Containers with Eigen
+/** \eigenManualPage TopicStlContainers Using STL Containers with Eigen
-\tableofcontents
+\eigenAutoToc
\section summary Executive summary
diff --git a/doc/D03_WrongStackAlignment.dox b/doc/D03_WrongStackAlignment.dox
index b0e42edce..17d5513a7 100644
--- a/doc/D03_WrongStackAlignment.dox
+++ b/doc/D03_WrongStackAlignment.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicWrongStackAlignment Compiler making a wrong assumption on stack alignment
+/** \eigenManualPage TopicWrongStackAlignment Compiler making a wrong assumption on stack alignment
<h4>It appears that this was a GCC bug that has been fixed in GCC 4.5.
If you hit this issue, please upgrade to GCC 4.5 and report to us, so we can update this page.</h4>
diff --git a/doc/D07_PassingByValue.dox b/doc/D07_PassingByValue.dox
index b1e5e683b..bf4d0ef4b 100644
--- a/doc/D07_PassingByValue.dox
+++ b/doc/D07_PassingByValue.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicPassingByValue Passing Eigen objects by value to functions
+/** \eigenManualPage TopicPassingByValue Passing Eigen objects by value to functions
Passing objects by value is almost always a very bad idea in C++, as this means useless copies, and one should pass them by reference instead.
diff --git a/doc/D09_StructHavingEigenMembers.dox b/doc/D09_StructHavingEigenMembers.dox
index 81995bd2d..74a8d5217 100644
--- a/doc/D09_StructHavingEigenMembers.dox
+++ b/doc/D09_StructHavingEigenMembers.dox
@@ -1,8 +1,8 @@
namespace Eigen {
-/** \page TopicStructHavingEigenMembers Structures Having Eigen Members
+/** \eigenManualPage TopicStructHavingEigenMembers Structures Having Eigen Members
-\tableofcontents
+\eigenAutoToc
\section summary Executive Summary
diff --git a/doc/D11_UnalignedArrayAssert.dox b/doc/D11_UnalignedArrayAssert.dox
index 3debc056c..8c97d7874 100644
--- a/doc/D11_UnalignedArrayAssert.dox
+++ b/doc/D11_UnalignedArrayAssert.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicUnalignedArrayAssert Explanation of the assertion on unaligned arrays
+/** \eigenManualPage TopicUnalignedArrayAssert Explanation of the assertion on unaligned arrays
Hello! You are seeing this webpage because your program terminated on an assertion failure like this one:
<pre>
@@ -14,7 +14,7 @@ is explained here: http://eigen.tuxfamily.org/dox/UnalignedArrayAssert.html
There are 4 known causes for this issue. Please read on to understand them and learn how to fix them.
-\tableofcontents
+\eigenAutoToc
\section where Where in my own code is the cause of the problem?
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 46d197355..b7dd41fc1 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -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 = "${Eigen_SOURCE_DIR}/doc/Eigen_Silly_Professor_64x64.png"
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -223,6 +223,9 @@ ALIASES = "only_for_vectors=This is only for vectors (either row-
"note_about_checking_solutions=This method just tries to find as good a solution as possible. If you want to check whether a solution exists or if it is accurate, just call this function to get a result and then compute the error of this result, or use MatrixBase::isApprox() directly, for instance like this: \code bool a_solution_exists = (A*result).isApprox(b, precision); \endcode This method avoids dividing by zero, so that the non-existence of a solution doesn't by itself mean that you'll get \c inf or \c nan values." \
"note_try_to_help_rvo=This function returns the result by value. In order to make that efficient, it is implemented as just a return statement using a special constructor, hopefully allowing the compiler to perform a RVO (return value optimization)."
+ALIASES += "eigenAutoToc= "
+ALIASES += "eigenManualPage=\defgroup"
+
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
@@ -474,7 +477,7 @@ HIDE_SCOPE_NAMES = YES
# will put a list of the files that are included by a file in the documentation
# of that file.
-SHOW_INCLUDE_FILES = YES
+SHOW_INCLUDE_FILES = NO
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
@@ -592,7 +595,7 @@ SHOW_FILES = YES
# This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
-SHOW_NAMESPACES = YES
+SHOW_NAMESPACES = NO
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
@@ -611,7 +614,7 @@ FILE_VERSION_FILTER =
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
-LAYOUT_FILE =
+LAYOUT_FILE = "${Eigen_BINARY_DIR}/doc/eigendoxy_layout.xml"
# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
@@ -954,7 +957,7 @@ HTML_FOOTER = "${Eigen_BINARY_DIR}/doc/eigendoxy_footer.html"
# the style sheet file to the HTML output directory, so don't put your own
# style sheet in the HTML output directory as well, or it will be erased!
-HTML_STYLESHEET = "${Eigen_SOURCE_DIR}/doc/eigendoxy.css"
+HTML_STYLESHEET =
# 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
@@ -963,7 +966,7 @@ HTML_STYLESHEET = "${Eigen_SOURCE_DIR}/doc/eigendoxy.css"
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
-HTML_EXTRA_FILES =
+HTML_EXTRA_FILES = "${Eigen_SOURCE_DIR}/doc/eigendoxy.css"
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
@@ -972,6 +975,7 @@ HTML_EXTRA_FILES =
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.
+# The default is 220.
HTML_COLORSTYLE_HUE = 220
@@ -1170,7 +1174,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.
-DISABLE_INDEX = NO
+DISABLE_INDEX = YES
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
@@ -1182,7 +1186,7 @@ DISABLE_INDEX = NO
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.
-GENERATE_TREEVIEW = NO
+GENERATE_TREEVIEW = YES
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
@@ -1252,7 +1256,7 @@ MATHJAX_EXTENSIONS =
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-SEARCHENGINE = NO
+SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
@@ -1614,7 +1618,8 @@ SKIP_FUNCTION_MACROS = YES
# NOT include the path). If a tag file is not located in the directory in which
# doxygen is run, you must also specify the path to the tagfile here.
-TAGFILES = "${Eigen_BINARY_DIR}/doc/eigen-unsupported.doxytags =unsupported"
+TAGFILES =
+# "${Eigen_BINARY_DIR}/doc/eigen-unsupported.doxytags =unsupported"
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
diff --git a/doc/I00_CustomizingEigen.dox b/doc/I00_CustomizingEigen.dox
index 78b6d2eee..e42eaa812 100644
--- a/doc/I00_CustomizingEigen.dox
+++ b/doc/I00_CustomizingEigen.dox
@@ -4,7 +4,7 @@ namespace Eigen {
Eigen can be extended in several ways, for instance, by defining global methods, \ref ExtendingMatrixBase "by adding custom methods to MatrixBase", adding support to \ref CustomScalarType "custom types" etc.
-\tableofcontents
+\eigenAutoToc
\section ExtendingMatrixBase Extending MatrixBase (and other classes)
diff --git a/doc/I03_InsideEigenExample.dox b/doc/I03_InsideEigenExample.dox
index 4e6647871..ed053c69d 100644
--- a/doc/I03_InsideEigenExample.dox
+++ b/doc/I03_InsideEigenExample.dox
@@ -2,7 +2,7 @@ namespace Eigen {
/** \page TopicInsideEigenExample What happens inside Eigen, on a simple example
-\tableofcontents
+\eigenAutoToc
<hr>
diff --git a/doc/I05_FixedSizeVectorizable.dox b/doc/I05_FixedSizeVectorizable.dox
index 192ea7406..8ae135173 100644
--- a/doc/I05_FixedSizeVectorizable.dox
+++ b/doc/I05_FixedSizeVectorizable.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicFixedSizeVectorizable Fixed-size vectorizable Eigen objects
+/** \eigenManualPage TopicFixedSizeVectorizable Fixed-size vectorizable Eigen objects
The goal of this page is to explain what we mean by "fixed-size vectorizable".
diff --git a/doc/I10_Assertions.dox b/doc/I10_Assertions.dox
index 8b64baffc..4ead40174 100644
--- a/doc/I10_Assertions.dox
+++ b/doc/I10_Assertions.dox
@@ -2,7 +2,7 @@ namespace Eigen {
/** \page TopicAssertions Assertions
-\tableofcontents
+\eigenAutoToc
\section PlainAssert Assertions
diff --git a/doc/I11_Aliasing.dox b/doc/I11_Aliasing.dox
index 3f7e849bd..bd1d329ce 100644
--- a/doc/I11_Aliasing.dox
+++ b/doc/I11_Aliasing.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicAliasing Aliasing
+/** \eigenManualPage TopicAliasing Aliasing
In Eigen, aliasing refers to assignment statement in which the same matrix (or array or vector) appears on the
left and on the right of the assignment operators. Statements like <tt>mat = 2 * mat;</tt> or <tt>mat =
@@ -8,7 +8,7 @@ mat.transpose();</tt> exhibit aliasing. The aliasing in the first example is har
second example leads to unexpected results. This page explains what aliasing is, when it is harmful, and what
to do about it.
-\tableofcontents
+\eigenAutoToc
\section TopicAliasingExamples Examples
diff --git a/doc/I12_ClassHierarchy.dox b/doc/I12_ClassHierarchy.dox
index 9c69e8fb9..468e60a76 100644
--- a/doc/I12_ClassHierarchy.dox
+++ b/doc/I12_ClassHierarchy.dox
@@ -6,7 +6,7 @@ This page explains the design of the core classes in Eigen's class hierarchy and
users probably need not concern themselves with these details, but it may be useful for both advanced users
and Eigen developers.
-\tableofcontents
+\eigenAutoToc
\section TopicClassHierarchyPrinciples Principles
diff --git a/doc/I13_FunctionsTakingEigenTypes.dox b/doc/I13_FunctionsTakingEigenTypes.dox
index 7053cde86..ad315edf0 100644
--- a/doc/I13_FunctionsTakingEigenTypes.dox
+++ b/doc/I13_FunctionsTakingEigenTypes.dox
@@ -8,7 +8,7 @@ Eigen's use of expression templates results in potentially every expression bein
Fortunately, all this myriad of expression types have in common that they all inherit a few common, templated base classes. By letting your function take templated parameters of these base types, you can let them play nicely with Eigen's expression templates.
-\tableofcontents
+\eigenAutoToc
\section TopicFirstExamples Some First Examples
diff --git a/doc/I14_PreprocessorDirectives.dox b/doc/I14_PreprocessorDirectives.dox
index 4b5310c60..0c4c47464 100644
--- a/doc/I14_PreprocessorDirectives.dox
+++ b/doc/I14_PreprocessorDirectives.dox
@@ -7,7 +7,7 @@ should be defined before any %Eigen headers are included. Often they are best se
This page lists the preprocesor tokens recognised by %Eigen.
-\tableofcontents
+\eigenAutoToc
\section TopicPreprocessorDirectivesMajor Macros with major effects
diff --git a/doc/I15_StorageOrders.dox b/doc/I15_StorageOrders.dox
index 345d3df20..61645313e 100644
--- a/doc/I15_StorageOrders.dox
+++ b/doc/I15_StorageOrders.dox
@@ -1,11 +1,11 @@
namespace Eigen {
-/** \page TopicStorageOrders Storage orders
+/** \eigenManualPage TopicStorageOrders Storage orders
There are two different storage orders for matrices and two-dimensional arrays: column-major and row-major.
This page explains these storage orders and how to specify which one should be used.
-\tableofcontents
+\eigenAutoToc
\section TopicStorageOrdersIntro Column-major and row-major storage
diff --git a/doc/I16_TemplateKeyword.dox b/doc/I16_TemplateKeyword.dox
index 61e019494..f4e4f237e 100644
--- a/doc/I16_TemplateKeyword.dox
+++ b/doc/I16_TemplateKeyword.dox
@@ -7,7 +7,7 @@ amongst programmers: to define templates. The other use is more obscure: to spec
to a template function or a type. This regularly trips up programmers that use the %Eigen library, often
leading to error messages from the compiler that are difficult to understand.
-\tableofcontents
+\eigenAutoToc
\section TopicTemplateKeywordToDefineTemplates Using the template and typename keywords to define templates
diff --git a/doc/I17_SparseLinearSystems.dox b/doc/I17_SparseLinearSystems.dox
index 47e3fb238..e447c40ce 100644
--- a/doc/I17_SparseLinearSystems.dox
+++ b/doc/I17_SparseLinearSystems.dox
@@ -1,8 +1,8 @@
namespace Eigen {
-/** \page TopicSparseSystems Solving Sparse Linear Systems
+/** \eigenManualPage TopicSparseSystems Solving Sparse Linear Systems
In Eigen, there are several methods available to solve linear systems when the coefficient matrix is sparse. Because of the special representation of this class of matrices, special care should be taken in order to get a good performance. See \ref TutorialSparse for a detailed introduction about sparse matrices in Eigen. In this page, we briefly present the main steps that are common to all the linear solvers in Eigen together with the main concepts behind them. Depending on the properties of the matrix, the desired accuracy, the end-user is able to tune these steps in order to improve the performance of its code. However, an impatient user does not need to know deeply what's hiding behind these steps: the last section presents a benchmark routine that can be easily used to get an insight on the performance of all the available solvers.
-\tableofcontents
+\eigenAutoToc
As summarized in \ref TutorialSparseDirectSolvers, there are many built-in solvers in Eigen as well as interface to external solvers libraries. All these solvers follow the same calling sequence. The basic steps are as follows :
\code
@@ -104,4 +104,4 @@ The following table gives an example of XHTML statistics from several Eigen buil
</TABLE>
*/
-} \ No newline at end of file
+}
diff --git a/doc/Manual.dox b/doc/Manual.dox
new file mode 100644
index 000000000..69e33770e
--- /dev/null
+++ b/doc/Manual.dox
@@ -0,0 +1,155 @@
+
+// This file strutures pages and modules into a convenient hierarchical structure.
+
+namespace Eigen {
+
+/** \page UserManual_Generalities General topics
+ - \subpage Eigen2ToEigen3
+ - \subpage TopicFunctionTakingEigenTypes
+ - \subpage TopicPreprocessorDirectives
+ - \subpage TopicAssertions
+ - \subpage TopicCustomizingEigen
+ - \subpage TopicMultiThreading
+ - \subpage TopicUsingIntelMKL
+ - \subpage TopicTemplateKeyword
+ - \subpage UserManual_UnderstandingEigen
+*/
+
+/** \page UserManual_UnderstandingEigen Understanding Eigen
+ - \subpage TopicInsideEigenExample
+ - \subpage TopicClassHierarchy
+ - \subpage TopicLazyEvaluation
+*/
+
+/** \page UnclassifiedPages Unclassified pages
+ - \subpage TopicResizing
+ - \subpage TopicVectorization
+ - \subpage TopicEigenExpressionTemplates
+ - \subpage TopicScalarTypes
+ - \subpage GettingStarted
+ - \subpage TutorialSparse_example_details
+ - \subpage TopicWritingEfficientProductExpression
+ - \subpage Experimental
+*/
+
+
+/** \defgroup Support_modules Support modules
+ * Category of modules which add support for external libraries.
+ */
+
+
+/** \defgroup DenseMatrixManipulation_chapter Dense matrix and array manipulation */
+/** \defgroup DenseMatrixManipulation_Alignement Alignment issues */
+/** \defgroup DenseMatrixManipulation_Reference Reference */
+
+/** \addtogroup TutorialMatrixClass
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialMatrixArithmetic
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialArrayClass
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialBlockOperations
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialAdvancedInitialization
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialReductionsVisitorsBroadcasting
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TutorialMapClass
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TopicAliasing
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TopicStorageOrders
+ \ingroup DenseMatrixManipulation_chapter */
+
+/** \addtogroup DenseMatrixManipulation_Alignement
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup TopicUnalignedArrayAssert
+ \ingroup DenseMatrixManipulation_Alignement */
+/** \addtogroup TopicFixedSizeVectorizable
+ \ingroup DenseMatrixManipulation_Alignement */
+/** \addtogroup TopicStructHavingEigenMembers
+ \ingroup DenseMatrixManipulation_Alignement */
+/** \addtogroup TopicStlContainers
+ \ingroup DenseMatrixManipulation_Alignement */
+/** \addtogroup TopicPassingByValue
+ \ingroup DenseMatrixManipulation_Alignement */
+/** \addtogroup TopicWrongStackAlignment
+ \ingroup DenseMatrixManipulation_Alignement */
+
+/** \addtogroup DenseMatrixManipulation_Reference
+ \ingroup DenseMatrixManipulation_chapter */
+/** \addtogroup Core_Module
+ \ingroup DenseMatrixManipulation_Reference */
+/** \addtogroup Jacobi_Module
+ \ingroup DenseMatrixManipulation_Reference */
+/** \addtogroup Householder_Module
+ \ingroup DenseMatrixManipulation_Reference */
+
+/** \addtogroup QuickRefPage
+ \ingroup DenseMatrixManipulation_chapter */
+
+
+/** \defgroup DenseLinearSolvers_chapter Dense linear problems and decompositions */
+/** \defgroup DenseLinearSolvers_Reference Reference */
+
+/** \addtogroup TutorialLinearAlgebra
+ \ingroup DenseLinearSolvers_chapter */
+/** \addtogroup TopicLinearAlgebraDecompositions
+ \ingroup DenseLinearSolvers_chapter */
+
+/** \addtogroup DenseLinearSolvers_Reference
+ \ingroup DenseLinearSolvers_chapter */
+/** \addtogroup Cholesky_Module
+ \ingroup DenseLinearSolvers_Reference */
+/** \addtogroup LU_Module
+ \ingroup DenseLinearSolvers_Reference */
+/** \addtogroup QR_Module
+ \ingroup DenseLinearSolvers_Reference */
+/** \addtogroup SVD_Module
+ \ingroup DenseLinearSolvers_Reference*/
+/** \addtogroup Eigenvalues_Module
+ \ingroup DenseLinearSolvers_Reference */
+
+
+
+
+/** \defgroup Sparse_chapter Sparse linear algebra */
+/** \defgroup Sparse_Reference Reference */
+
+/** \addtogroup TutorialSparse
+ \ingroup Sparse_chapter */
+/** \addtogroup TopicSparseSystems
+ \ingroup Sparse_chapter */
+
+/** \addtogroup Sparse_Reference
+ \ingroup Sparse_chapter */
+/** \addtogroup SparseCore_Module
+ \ingroup Sparse_Reference */
+/** \addtogroup OrderingMethods_Module
+ \ingroup Sparse_Reference */
+/** \addtogroup SparseCholesky_Module
+ \ingroup Sparse_Reference */
+/** \addtogroup SparseLU_Module
+ \ingroup Sparse_Reference */
+/** \addtogroup IterativeLinearSolvers_Module
+ \ingroup Sparse_Reference */
+/** \addtogroup Support_modules
+ \ingroup Sparse_Reference */
+
+/** \addtogroup SparseQuickRefPage
+ \ingroup Sparse_chapter */
+
+
+/** \defgroup Geometry_chapter Geometry */
+/** \defgroup Geometry_Reference Reference */
+
+/** \addtogroup TutorialGeometry
+ \ingroup Geometry_chapter */
+
+/** \addtogroup Geometry_Reference
+ \ingroup Geometry_chapter */
+/** \addtogroup Geometry_Module
+ \ingroup Geometry_Reference */
+/** \addtogroup Splines_Module
+ \ingroup Geometry_Reference */
+}
diff --git a/doc/Overview.dox b/doc/Overview.dox
index 2657c85bc..0b08f851a 100644
--- a/doc/Overview.dox
+++ b/doc/Overview.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-o /** \mainpage Eigen
+/** \mainpage notitle
<div class="eimainmenu">
\ref GettingStarted "Getting started"
@@ -29,7 +29,7 @@ For a first contact with Eigen, the best place is to have a look at the \ref Get
- \ref TutorialSparse
- \ref TutorialMapClass
- \ref QuickRefPage
- - <b>Advanced topics</b>
+ - \subpage UserManual_Generalities
- \ref TopicAliasing
- \ref TopicLazyEvaluation
- \ref TopicLinearAlgebraDecompositions
@@ -50,8 +50,6 @@ For a first contact with Eigen, the best place is to have a look at the \ref Get
- \ref TopicStructHavingEigenMembers
- \ref TopicPassingByValue
- \ref TopicWrongStackAlignment
-
-
Want more? Checkout the \ref Unsupported_modules "unsupported modules" <a href="unsupported/index.html">documentation</a>.
diff --git a/doc/QuickReference.dox b/doc/QuickReference.dox
index 89f99bf48..a5f0dab56 100644
--- a/doc/QuickReference.dox
+++ b/doc/QuickReference.dox
@@ -1,8 +1,8 @@
namespace Eigen {
-/** \page QuickRefPage Quick reference guide
+/** \eigenManualPage QuickRefPage Quick reference guide
-\tableofcontents
+\eigenAutoToc
<hr>
diff --git a/doc/SparseQuickReference.dox b/doc/SparseQuickReference.dox
index beddedff4..15015a0ca 100644
--- a/doc/SparseQuickReference.dox
+++ b/doc/SparseQuickReference.dox
@@ -1,7 +1,6 @@
namespace Eigen {
-/** \page SparseQuickRefPage Quick reference guide for sparse matrices
-
-\tableofcontents
+/** \eigenManualPage SparseQuickRefPage Quick reference guide for sparse matrices
+\eigenAutoToc
<hr>
diff --git a/doc/TopicLinearAlgebraDecompositions.dox b/doc/TopicLinearAlgebraDecompositions.dox
index 82472acf1..a401bb999 100644
--- a/doc/TopicLinearAlgebraDecompositions.dox
+++ b/doc/TopicLinearAlgebraDecompositions.dox
@@ -1,6 +1,6 @@
namespace Eigen {
-/** \page TopicLinearAlgebraDecompositions Linear algebra and decompositions
+/** \eigenManualPage TopicLinearAlgebraDecompositions Linear algebra and decompositions (catalogue)
\section TopicLinAlgBigTable Catalogue of decompositions offered by Eigen
diff --git a/doc/UsingIntelMKL.dox b/doc/UsingIntelMKL.dox
index f4444335d..7c5981460 100644
--- a/doc/UsingIntelMKL.dox
+++ b/doc/UsingIntelMKL.dox
@@ -165,4 +165,4 @@ In the examples, m1 and m2 are dense matrices and v1 and v2 are dense vectors.
*/
-} \ No newline at end of file
+}
diff --git a/doc/eigen_navtree_hacks.js b/doc/eigen_navtree_hacks.js
new file mode 100644
index 000000000..1a09e74fc
--- /dev/null
+++ b/doc/eigen_navtree_hacks.js
@@ -0,0 +1,239 @@
+
+// generate a table of contents in the side-nav based on the h1/h2 tags of the current page.
+function generate_autotoc() {
+ var headers = $("h1, h2");
+ if(headers.length > 1) {
+ var toc = $("#side-nav").append('<div id="nav-toc" class="toc"><h3>Table of contents</h3></div>');
+ toc = $("#nav-toc");
+ var footerHeight = footer.height();
+ toc = toc.append('<ul></ul>');
+ toc = toc.find('ul');
+ var indices = new Array();
+ indices[0] = 0;
+ indices[1] = 0;
+
+ var h1counts = $("h1").length;
+ headers.each(function(i) {
+ var current = $(this);
+ var levelTag = current[0].tagName.charAt(1);
+ if(h1counts==0)
+ levelTag--;
+ var cur_id = current.attr("id");
+
+ indices[levelTag-1]+=1;
+ var prefix = indices[0];
+ if (levelTag >1) {
+ prefix+="."+indices[1];
+ }
+
+ current.html(prefix + " " + current.html());
+ for(var l = levelTag; l < 2; ++l){
+ indices[l] = 0;
+ }
+
+ if(cur_id == undefined) {
+ current.attr('id', 'title' + i);
+ current.addClass('anchor');
+ toc.append("<li class='level" + levelTag + "'><a id='link" + i + "' href='#title" +
+ i + "' title='" + current.prop("tagName") + "'>" + current.text() + "</a></li>");
+ } else {
+ toc.append("<li class='level" + levelTag + "'><a id='" + cur_id + "' href='#title" +
+ i + "' title='" + current.prop("tagName") + "'>" + current.text() + "</a></li>");
+ }
+ });
+ resizeHeight();
+ }
+}
+
+
+var global_navtree_object;
+
+// Overloaded to remove links to sections/subsections
+function getNode(o, po)
+{
+ po.childrenVisited = true;
+ var l = po.childrenData.length-1;
+ for (var i in po.childrenData) {
+ var nodeData = po.childrenData[i];
+ if((!nodeData[1]) || (nodeData[1].indexOf('#')==-1)) // <- we added this line
+ po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], i==l);
+ }
+}
+
+// Overloaded to adjust the size of the navtree wrt the toc
+function resizeHeight()
+{
+ var toc = $("#nav-toc");
+ var tocHeight = toc.height(); // <- we added this line
+ var headerHeight = header.height();
+ var footerHeight = footer.height();
+ var windowHeight = $(window).height() - headerHeight - footerHeight;
+ content.css({height:windowHeight + "px"});
+ navtree.css({height:(windowHeight-tocHeight) + "px"}); // <- we modified this line
+ sidenav.css({height:(windowHeight) + "px",top: headerHeight+"px"});
+}
+
+// Overloaded to save the root node into global_navtree_object
+function initNavTree(toroot,relpath)
+{
+ var o = new Object();
+ global_navtree_object = o; // <- we added this line
+ o.toroot = toroot;
+ o.node = new Object();
+ o.node.li = document.getElementById("nav-tree-contents");
+ o.node.childrenData = NAVTREE;
+ o.node.children = new Array();
+ o.node.childrenUL = document.createElement("ul");
+ o.node.getChildrenUL = function() { return o.node.childrenUL; };
+ o.node.li.appendChild(o.node.childrenUL);
+ o.node.depth = 0;
+ o.node.relpath = relpath;
+ o.node.expanded = false;
+ o.node.isLast = true;
+ o.node.plus_img = document.createElement("img");
+ o.node.plus_img.src = relpath+"ftv2pnode.png";
+ o.node.plus_img.width = 16;
+ o.node.plus_img.height = 22;
+
+ navTo(o,toroot,window.location.hash,relpath);
+
+ $(window).bind('hashchange', function(){
+ if (window.location.hash && window.location.hash.length>1){
+ var a;
+ if ($(location).attr('hash')){
+ var clslink=stripPath($(location).attr('pathname'))+':'+
+ $(location).attr('hash').substring(1);
+ a=$('.item a[class$="'+clslink+'"]');
+ }
+ if (a==null || !$(a).parent().parent().hasClass('selected')){
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ }
+ var link=stripPath2($(location).attr('pathname'));
+ navTo(o,link,$(location).attr('hash'),relpath);
+ }
+ })
+
+ $(window).load(showRoot);
+}
+
+// return false if the the node has no children at all, or has only section/subsection children
+function checkChildrenData(node) {
+ if (!(typeof(node.childrenData)==='string')) {
+ for (var i in node.childrenData) {
+ var url = node.childrenData[i][1];
+ if(url.indexOf("#")==-1)
+ return true;
+ }
+ return false;
+ }
+ return (node.childrenData);
+}
+
+// Modified to:
+// 1 - remove the root node (added && node.parentNode.parentNode.parentNode)
+// 2 - remove the section/subsection children
+function createIndent(o,domNode,node,level)
+{
+ if (node.parentNode && node.parentNode.parentNode
+ && node.parentNode.parentNode.parentNode // <- we added this line
+ ) {
+ createIndent(o,domNode,node.parentNode,level+1);
+ }
+ var imgNode = document.createElement("img");
+ imgNode.width = 16;
+ imgNode.height = 22;
+
+ if (level==0 && checkChildrenData(node)) { // <- we modified this line to use checkChildrenData(node) instead of node.childrenData
+ node.plus_img = imgNode;
+ node.expandToggle = document.createElement("a");
+ node.expandToggle.href = "javascript:void(0)";
+ node.expandToggle.onclick = function() {
+ if (node.expanded) {
+ $(node.getChildrenUL()).slideUp("fast");
+ if (node.isLast) {
+ node.plus_img.src = node.relpath+"ftv2plastnode.png";
+ } else {
+ node.plus_img.src = node.relpath+"ftv2pnode.png";
+ }
+ node.expanded = false;
+ } else {
+ expandNode(o, node, false, false);
+ }
+ }
+ node.expandToggle.appendChild(imgNode);
+ domNode.appendChild(node.expandToggle);
+ } else {
+ domNode.appendChild(imgNode);
+ }
+ if (level==0) {
+ if (node.isLast) {
+ if (checkChildrenData(node)) { // <- we modified this line to use checkChildrenData(node) instead of node.childrenData
+ imgNode.src = node.relpath+"ftv2plastnode.png";
+ } else {
+ imgNode.src = node.relpath+"ftv2lastnode.png";
+ domNode.appendChild(imgNode);
+ }
+ } else {
+ if (checkChildrenData(node)) { // <- we modified this line to use checkChildrenData(node) instead of node.childrenData
+ imgNode.src = node.relpath+"ftv2pnode.png";
+ } else {
+ imgNode.src = node.relpath+"ftv2node.png";
+ domNode.appendChild(imgNode);
+ }
+ }
+ } else {
+ if (node.isLast) {
+ imgNode.src = node.relpath+"ftv2blank.png";
+ } else {
+ imgNode.src = node.relpath+"ftv2vertline.png";
+ }
+ }
+ imgNode.border = "0";
+}
+
+// Overloaded to automatically expand the selected node
+function selectAndHighlight(n)
+{
+ var a;
+ if ($(location).attr('hash')) {
+ var link=stripPath($(location).attr('pathname'))+':'+
+ $(location).attr('hash').substring(1);
+ a=$('.item a[class$="'+link+'"]');
+ }
+ if (a && a.length) {
+ a.parent().parent().addClass('selected');
+ a.parent().parent().attr('id','selected');
+ highlightAnchor();
+ } else if (n) {
+ $(n.itemDiv).addClass('selected');
+ $(n.itemDiv).attr('id','selected');
+ }
+ expandNode(global_navtree_object, n, true, true); // <- we added this line
+ showRoot();
+}
+
+
+$(document).ready(function() {
+
+ generate_autotoc();
+
+ (function (){ // wait until the first "selected" element has been created
+ try {
+
+ // this line will triger an exception if there is no #selected element, i.e., before the tree structure is complete.
+ document.getElementById("selected").className = "item selected";
+
+ // ok, the default tree has been created, we can keep going...
+
+ // expand the "Chapters" node
+ expandNode(global_navtree_object, global_navtree_object.node.children[0].children[2], true, true);
+
+ // Hide the root node "Eigen"
+ $(document.getElementsByClassName('index.html')[0]).parent().parent().css({display:"none"});
+
+ } catch (err) {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+});
diff --git a/doc/eigendoxy.css b/doc/eigendoxy.css
index efc960145..eedbc4a0d 100644
--- a/doc/eigendoxy.css
+++ b/doc/eigendoxy.css
@@ -1,1240 +1,14 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
- font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
- font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
- font-size: 150%;
-}
-
-.title {
- font-size: 150%;
- font-weight: bold;
- margin: 10px 2px;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h3 {
- 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;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
- margin-top: 2px;
-}
-
-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{
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
-/*eigen margin: 2px; */
-/*eigen padding: 2px; */
-}
-
-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 {
- color: #4665A2;
-}
-
-a.codeRef, a.codeRef: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;
- margin: 4px;
- 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;
-}
-
-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: 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;
-}
-
-/* @group Code Colorization */
-
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-blockquote {
- 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;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memberdecls td {
- -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 {
- 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;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
- border-top: 1px solid #C4CFE5;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
-}
-
-/* @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;
-}
-
-
-
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
- font-family: sans-serif;
- margin: 0px;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
- font-size: 9pt;
- font-weight: bold;
- margin: 5px;
-}
-
-.directory h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice. Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
- height: 61px;
- background-repeat: no-repeat;
- background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
- display: none;
-}
-*/
-
-.directory > h3 {
- margin-top: 0;
-}
-
-.directory p {
- margin: 0px;
- white-space: nowrap;
-}
-
-.directory div {
- display: none;
- margin: 0px;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-/* 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;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- 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.fielddoc {
- border-bottom: 1px solid #A8B8D9;
- width: 100%;
-}
-
-.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;
- 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;
-}
-
-.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 7px;
-}
-
-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
-{
- margin-left: 0px;
- padding-left: 0px;
-}
-
-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.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.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.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;
-}
-
-.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;
-}
-
-@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;
- }
-}
-
-
-
/******** Eigen specific CSS code ************/
-
+/* limits the width of paragraphs */
p, dl.warning, dl.attention, dl.note
{
- max-width:60em;
- text-align:justify;
+ max-width:60em;
+ text-align:justify;
}
img {
- border: 0;
-}
-
-a.logo {
- float:right;
- margin:10px;
+ border: 0;
}
div.fragment {
@@ -1244,7 +18,7 @@ div.fragment {
pre.fragment {
border: 1px solid #cccccc;
- margin: 2px 0px 2px 0px ;
+ margin: 2px 0px 2px 0px;
padding: 3px 5px 3px 5px;
}
@@ -1348,51 +122,28 @@ h2 {
border-color: #cccccc;
}
+/**** Table of content in the side-nav ****/
-/**** old Eigen's styles ****/
-
-th {
- /*text-align: left;
- padding-right: 1em;*/
- /* border: #cccccc dashed; */
- /* border-style: dashed; */
- /* border-width: 0 0 3px 0; */
-}
-/*
-table.noborder {
- border-collapse: separate;
- border-bottom-style : none;
- border-left-style : none;
- border-right-style : none;
- border-top-style : none ;
- border-spacing : 0px 0px;
- margin: 4pt 0 0 0;
- padding: 0 0 0 0;
-
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+div.toc {
+ margin:0;
+ padding:0;
+ width:100%;
+ float:none;
+ position:absolute;
+ bottom:0;
+ border-radius:0px;
}
-table.noborder td {
- border-bottom-style : none;
- border-left-style : none;
- border-right-style : none;
- border-top-style : none;
- border-spacing : 0px 0px;
- margin: 0 0 0 0;
- vertical-align: top;
+div.toc h3 {
+ margin-left: 0.5em;
}
-table.tutorial_code {
- width: 90%;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+div.toc ul {
+ margin-left: 0.5em;
}
-table.tutorial_code tr {
- border: 1px dashed #888888;
-}
-*/
+/**** old Eigen's styles ****/
+
table.tutorial_code td {
border-color: transparent; /* required for Firefox */
@@ -1410,23 +161,6 @@ table.tutorial_code td.note p.starttd {
border: none;
padding: 0px;
}
-/*
-div.fragment {
- font-family: monospace, fixed;
- font-size: 95%;
-
- border: none;
- padding: 0pt;
-}
-
-pre.fragment {
- margin: 0pt;
- border: 1px solid #cccccc;
- padding: 2px 5px 2px 5px;
-
- background-color: #f5f5f5;
-}
-*/
div.eimainmenu {
text-align: center;
diff --git a/doc/eigendoxy_header.html.in b/doc/eigendoxy_header.html.in
index b5b01f667..0f3859f40 100644
--- a/doc/eigendoxy_header.html.in
+++ b/doc/eigendoxy_header.html.in
@@ -3,27 +3,27 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<link href="$relpath$eigendoxy_tabs.css" rel="stylesheet" type="text/css">
-<!--<link href="$relpath$search/search.css" rel="stylesheet" type="text/css"/>-->
-<!--<script type="text/javaScript" src="$relpath$search/search.js"></script>-->
+<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="$relpath$jquery.js"></script>
<script type="text/javascript" src="$relpath$dynsections.js"></script>
$treeview
$search
$mathjax
+<link href="$relpath$$stylesheet" rel="stylesheet" type="text/css" />
<link href="$relpath$eigendoxy.css" rel="stylesheet" type="text/css">
-<!--<link href="$relpath$defCss" rel="stylesheet" type="text/css" />-->
+<!-- $extrastylesheet -->
+<script type="text/javascript" src="$relpath$eigen_navtree_hacks.js"></script>
+<!-- <script type="text/javascript"> -->
+<!-- </script> -->
+
</head>
<body>
-<!--<body onload='searchBox.OnSelectItem(0);'>-->
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!-- <a name="top"></a> -->
-<a class="logo" href="http://eigen.tuxfamily.org/">
-<img class="logo" src="Eigen_Silly_Professor_64x64.png" width=64 height=64 alt="Eigen's silly professor"/></a>
-
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
@@ -34,7 +34,7 @@ $mathjax
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td style="padding-left: 0.5em;">
- <div id="projectname">$projectname
+ <div id="projectname"><a href="http://eigen.tuxfamily.org">$projectname</a>
<!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
@@ -57,4 +57,5 @@ $mathjax
</table>
</div>
<!--END TITLEAREA-->
-<!-- end header part --> \ No newline at end of file
+<!-- end header part -->
+
diff --git a/doc/eigendoxy_layout.xml.in b/doc/eigendoxy_layout.xml.in
new file mode 100644
index 000000000..e2fd9b850
--- /dev/null
+++ b/doc/eigendoxy_layout.xml.in
@@ -0,0 +1,177 @@
+<?xml version="1.0"?>
+<doxygenlayout version="1.0">
+ <!-- Navigation index tabs for HTML output -->
+ <navindex>
+ <tab type="user" url="index.html" title="Overview" />
+ <tab type="user" url="@ref GettingStarted" title="Getting started" />
+ <tab type="modules" visible="yes" title="Chapters" intro=""/>
+ <tab type="mainpage" visible="yes" title=""/>
+ <tab type="classlist" visible="yes" title="" intro=""/>
+ </navindex>
+
+ <!-- Layout definition for a class page -->
+ <class>
+ <briefdescription visible="no"/>
+ <includes visible="$SHOW_INCLUDE_FILES"/>
+ <detaileddescription title=""/>
+ <inheritancegraph visible="$CLASS_GRAPH"/>
+ <collaborationgraph visible="$COLLABORATION_GRAPH"/>
+ <allmemberslink visible="yes"/>
+ <memberdecl>
+ <nestedclasses visible="yes" title=""/>
+ <publictypes title=""/>
+ <publicslots title=""/>
+ <signals title=""/>
+ <publicmethods title=""/>
+ <publicstaticmethods title=""/>
+ <publicattributes title=""/>
+ <publicstaticattributes title=""/>
+ <protectedtypes title=""/>
+ <protectedslots title=""/>
+ <protectedmethods title=""/>
+ <protectedstaticmethods title=""/>
+ <protectedattributes title=""/>
+ <protectedstaticattributes title=""/>
+ <packagetypes title=""/>
+ <packagemethods title=""/>
+ <packagestaticmethods title=""/>
+ <packageattributes title=""/>
+ <packagestaticattributes title=""/>
+ <properties title=""/>
+ <events title=""/>
+ <privatetypes title=""/>
+ <privateslots title=""/>
+ <privatemethods title=""/>
+ <privatestaticmethods title=""/>
+ <privateattributes title=""/>
+ <privatestaticattributes title=""/>
+ <friends title=""/>
+ <related title="" subtitle=""/>
+ <membergroups visible="yes"/>
+ </memberdecl>
+
+ <memberdef>
+ <inlineclasses title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <constructors title=""/>
+ <functions title=""/>
+ <related title=""/>
+ <variables title=""/>
+ <properties title=""/>
+ <events title=""/>
+ </memberdef>
+ <usedfiles visible="$SHOW_USED_FILES"/>
+ <authorsection visible="yes"/>
+ </class>
+
+ <!-- Layout definition for a namespace page -->
+ <namespace>
+ <briefdescription visible="yes"/>
+ <memberdecl>
+ <nestednamespaces visible="yes" title=""/>
+ <classes visible="yes" title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ <membergroups visible="yes"/>
+ </memberdecl>
+ <detaileddescription title=""/>
+ <memberdef>
+ <inlineclasses title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ </memberdef>
+ <authorsection visible="yes"/>
+ </namespace>
+
+ <!-- Layout definition for a file page -->
+ <file>
+ <briefdescription visible="yes"/>
+ <includes visible="$SHOW_INCLUDE_FILES"/>
+ <includegraph visible="$INCLUDE_GRAPH"/>
+ <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
+ <sourcelink visible="yes"/>
+ <memberdecl>
+ <classes visible="yes" title=""/>
+ <namespaces visible="yes" title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ <membergroups visible="yes"/>
+ </memberdecl>
+ <detaileddescription title=""/>
+ <memberdef>
+ <inlineclasses title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ </memberdef>
+ <authorsection/>
+ </file>
+
+ <!-- Layout definition for a group page -->
+ <group>
+ <briefdescription visible="no"/>
+ <detaileddescription title=""/>
+ <groupgraph visible="$GROUP_GRAPHS"/>
+ <memberdecl>
+ <nestedgroups visible="yes" title=""/>
+ <dirs visible="yes" title=""/>
+ <files visible="yes" title=""/>
+ <namespaces visible="yes" title=""/>
+ <classes visible="yes" title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <enumvalues title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ <signals title=""/>
+ <publicslots title=""/>
+ <protectedslots title=""/>
+ <privateslots title=""/>
+ <events title=""/>
+ <properties title=""/>
+ <friends title=""/>
+ <membergroups visible="yes"/>
+ </memberdecl>
+
+ <memberdef>
+ <pagedocs/>
+ <inlineclasses title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <enumvalues title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ <signals title=""/>
+ <publicslots title=""/>
+ <protectedslots title=""/>
+ <privateslots title=""/>
+ <events title=""/>
+ <properties title=""/>
+ <friends title=""/>
+ </memberdef>
+ <authorsection visible="yes"/>
+ </group>
+
+ <!-- Layout definition for a directory page -->
+ <directory>
+ <briefdescription visible="yes"/>
+ <directorygraph visible="yes"/>
+ <memberdecl>
+ <dirs visible="yes"/>
+ <files visible="yes"/>
+ </memberdecl>
+ <detaileddescription title=""/>
+ </directory>
+</doxygenlayout>