Various doc improvements... including a owl in the API doc header.

This commit is contained in:
Gael Guennebaud 2008-08-25 10:49:53 +00:00
parent da674fa032
commit 9e25dfcb2c
9 changed files with 425 additions and 192 deletions

View File

@ -1,5 +1,5 @@
PROJECT(Eigen)
SET(EIGEN_VERSION "2.0-alpha7 (svn)")
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

View File

@ -11,6 +11,16 @@ CONFIGURE_FILE(
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
)
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_header.html.in
${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_header.html
)
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_footer.html.in
${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_footer.html
)
SET(examples_targets "")
SET(snippets_targets "")
@ -20,6 +30,10 @@ ADD_SUBDIRECTORY(snippets)
ADD_CUSTOM_TARGET(
run_doxygen
ALL
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_tabs.css
${CMAKE_CURRENT_BINARY_DIR}/html/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Eigen_Silly_Professor_64x64.png
${CMAKE_CURRENT_BINARY_DIR}/html/
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/buildexamplelist.sh ${CMAKE_SOURCE_DIR} > ${CMAKE_CURRENT_BINARY_DIR}/ExampleList.dox
COMMAND doxygen
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}

View File

@ -31,7 +31,8 @@ PROJECT_NAME = Eigen
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = 2.0-alpha7
#EIGEN_VERSION is set in the root CMakeLists.txt
PROJECT_NUMBER = ${EIGEN_VERSION}
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@ -767,13 +768,14 @@ HTML_FILE_EXTENSION = .html
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
HTML_HEADER =
HTML_HEADER = ${CMAKE_BINARY_DIR}/doc/eigendoxy_header.html
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER =
# the footer has not been customized yet, so let's use the default one
#HTML_FOOTER = ${CMAKE_BINARY_DIR}/doc/eigendoxy_footer.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -1,27 +1,28 @@
namespace Eigen {
/** \page QuickStartGuide
<a name="top"></a>
<h1>Quick start guide</h1>
\b Table \b of \b contents
- \ref SimpleExampleFixedSize
- \ref SimpleExampleDynamicSize
- \ref MatrixTypes
- \ref MatrixInitialization
- \ref BasicLinearAlgebra
- \ref Reductions
- \ref SubMatrix
- \ref MatrixTransformations
- \ref Geometry
- \ref Performance
- \ref AdvancedLinearAlgebra
- \ref LinearSolvers
- \ref LU
- \ref Cholesky
- \ref QR
- \ref EigenProblems
- Core features (Chapter I)
- \ref SimpleExampleFixedSize
- \ref SimpleExampleDynamicSize
- \ref MatrixTypes
- \ref MatrixInitialization
- \ref BasicLinearAlgebra
- \ref Reductions
- \ref SubMatrix
- \ref MatrixTransformations
- \ref TriangularMatrix
- \ref Performance
- \ref Geometry (Chapter II)
- \ref AdvancedLinearAlgebra (Chapter III)
- \ref LinearSolvers
- \ref LU
- \ref Cholesky
- \ref QR
- \ref EigenProblems
</br>
<hr>
@ -31,7 +32,7 @@ namespace Eigen {
By fixed-size, we mean that the number of rows and columns are known at compile-time. In this case, Eigen avoids dynamic memory allocation and unroll loops. This is useful for very small sizes (typically up to 4x4).
<table><tr><td>
<table class="tutorial_code"><tr><td>
\include Tutorial_simple_example_fixed_size.cpp
</td>
<td>
@ -43,7 +44,7 @@ output:
Dynamic-size means that the number of rows and columns are not known at compile-time. In this case, they are stored as runtime variables and the arrays are dynamically allocated.
<table><tr><td>
<table class="tutorial_code"><tr><td>
\include Tutorial_simple_example_dynamic_size.cpp
</td>
<td>
@ -58,7 +59,7 @@ output:
<a href="#" class="top">top</a>\section MatrixTypes Matrix and vector types
In Eigen, all kinds of dense matrices and vectors are represented by the template class Matrix. In most cases you can simply use one of the several convenient typedefs (\ref matrixtypedefs).
In Eigen, all kinds of dense matrices and vectors are represented by the template class Matrix. In most cases you can simply use one of the \ref matrixtypedefs "several convenient typedefs".
The template class Matrix takes a number of template parameters, but for now it is enough to understand the 3 first ones (and the others can then be left unspecified):
@ -77,30 +78,8 @@ What if the matrix has dynamic-size i.e. the number of rows or cols isn't known
<a href="#" class="top">top</a>\section MatrixInitialization Matrix and vector creation and initialization
To get a matrix with all coefficients equals to a given value you can use the Matrix::Constant() function, e.g.:
<table><tr><td>
\code
int rows=2, cols=3;
cout << MatrixXf::Constant(rows, cols, sqrt(2));
\endcode
</td>
<td>
output:
\code
1.41 1.41 1.41
1.41 1.41 1.41
\endcode
</td></tr></table>
To set all the coefficients of a matrix you can also use the setConstant() variant:
\code
MatrixXf m(rows, cols);
m.setConstant(rows, cols, value);
\endcode
Eigen also offers variants of these functions for vector types and fixed-size matrices or vectors, as well as similar functions to create matrices with all coefficients equal to zero or one, to create the identity matrix and matrices with random coefficients:
<table>
Eigen offers several methods to create or set matrices with coefficients equals to either a constant value, the identity matrix or even random values:
<table class="tutorial_code">
<tr>
<td>Fixed-size matrix or vector</td>
<td>Dynamic-size matrix</td>
@ -113,14 +92,14 @@ Matrix3f x;
x = Matrix3f::Zero();
x = Matrix3f::Ones();
x = Matrix3f::Constant(6);
x = Matrix3f::Constant(value);
x = Matrix3f::Identity();
x = Matrix3f::Random();
x.setZero();
x.setOnes();
x.setIdentity();
x.setConstant(6);
x.setConstant(value);
x.setRandom();
\endcode
</td>
@ -130,13 +109,13 @@ MatrixXf x;
x = MatrixXf::Zero(rows, cols);
x = MatrixXf::Ones(rows, cols);
x = MatrixXf::Constant(rows, cols, 6);
x = MatrixXf::Constant(rows, cols, value);
x = MatrixXf::Identity(rows, cols);
x = MatrixXf::Random(rows, cols);
x.setZero(rows, cols);
x.setOnes(rows, cols);
x.setConstant(rows, cols, 6);
x.setConstant(rows, cols, value);
x.setIdentity(rows, cols);
x.setRandom(rows, cols);
\endcode
@ -147,13 +126,13 @@ VectorXf x;
x = VectorXf::Zero(size);
x = VectorXf::Ones(size);
x = VectorXf::Constant(size, 6);
x = VectorXf::Constant(size, value);
x = VectorXf::Identity(size);
x = VectorXf::Random(size);
x.setZero(size);
x.setOnes(size);
x.setConstant(size, 6);
x.setConstant(size, value);
x.setIdentity(size);
x.setRandom(size);
\endcode
@ -161,8 +140,27 @@ x.setRandom(size);
</tr>
</table>
Finally, all the coefficients of a matrix can be set to specific values using the comma initializer syntax:
<table><tr><td>
Here is an usage example:
<table class="tutorial_code"><tr><td>
\code
cout << MatrixXf::Constant(2, 3, sqrt(2)) << endl;
RowVector3i v;
v.setConstant(6);
cout << "v = " << v << endl;
\endcode
</td>
<td>
output:
\code
1.41 1.41 1.41
1.41 1.41 1.41
v = 6 6 6
\endcode
</td></tr></table>
Eigen also offer a comma initializer syntax which allows to set all the coefficients of a matrix to specific values:
<table class="tutorial_code"><tr><td>
\include Tutorial_commainit_01.cpp
</td>
<td>
@ -170,8 +168,8 @@ output:
\verbinclude Tutorial_commainit_01.out
</td></tr></table>
Eigen's comma initializer also allows you to set the matrix per block:
<table><tr><td>
Feel the above example boring ? Look at the following example where the matrix is set per block:
<table class="tutorial_code"><tr><td>
\include Tutorial_commainit_02.cpp
</td>
<td>
@ -179,9 +177,9 @@ output:
\verbinclude Tutorial_commainit_02.out
</td></tr></table>
Here .finished() is used to get the actual matrix object once the comma initialization
<p class="note">\b Side \b note: here .finished() is used to get the actual matrix object once the comma initialization
of our temporary submatrix is done. Note that despite the appearant complexity of such an expression
Eigen's comma initializer usually yields to very optimized code without any overhead.
Eigen's comma initializer usually yields to very optimized code without any overhead.</p>
@ -197,7 +195,7 @@ mat4 -= mat1*1.5 + mat2 * mat3/4;
which includes two matrix scalar products ("mat1*1.5" and "mat3/4"), a matrix-matrix product ("mat2 * mat3/4"),
a matrix addition ("+") and substraction with assignment ("-=").
<table>
<table class="tutorial_code">
<tr><td>
matrix/vector product</td><td>\code
col2 = mat1 * col1;
@ -233,9 +231,9 @@ In Eigen only mathematically well defined operators can be used right away,
but don't worry, thanks to the \link Cwise .cwise() \endlink operator prefix,
Eigen's matrices also provide a very powerful numerical container supporting
most common coefficient wise operators:
<table>
<table class="noborder">
<tr><td>
<table class="tutorial_code" style="margin-right:10pt">
<tr><td>Coefficient wise product</td>
<td>\code mat3 = mat1.cwise() * mat2; \endcode
</td></tr>
@ -262,7 +260,9 @@ mat3 = mat1.cwise() <= mat2;
mat3 = mat1.cwise() > mat2;
etc.
\endcode
</td></tr>
</td></tr></table>
</td>
<td><table class="tutorial_code">
<tr><td>
Trigo:\n sin, cos, tan</td><td>\code
mat3 = mat1.cwise().sin();
@ -270,7 +270,7 @@ etc.
\endcode
</td></tr>
<tr><td>
Power:\n pow, square, cube, sqrt, exp, log</td><td>\code
Power:\n pow, square, cube,\n sqrt, exp, log</td><td>\code
mat3 = mat1.cwise().square();
mat3 = mat1.cwise().pow(5);
mat3 = mat1.cwise().log();
@ -285,46 +285,38 @@ mat3 = mat1.cwise().abs(mat2);
mat3 = mat1.cwise().abs2(mat2);
\endcode</td></tr>
</table>
</td></tr></table>
<p class="note">\b Side \b note: If you feel the \c .cwise() syntax is too verbose for your taste and don't bother to have non mathematical operator directly available feel free to extend MatrixBase as described \ref ExtendingMatrixBase "here".</p>
<a href="#" class="top">top</a>\section Reductions Reductions
Reductions can be done matrix-wise,
Eigen provides several several reduction methods such as:
\link Cwise::minCoeff() minCoeff() \endlink, \link Cwise::maxCoeff() maxCoeff() \endlink,
\link Cwise::sum() sum() \endlink, \link Cwise::trace() trace() \endlink,
\link Cwise::norm() norm() \endlink, \link Cwise::norm2() norm2() \endlink,
\link Cwise::all() all() \endlink,and \link Cwise::any() any() \endlink.
All reduction operations can be done matrix-wise,
\link MatrixBase::colwise() column-wise \endlink or
\link MatrixBase::rowwise() row-wise \endlink, e.g.:
<table>
<tr><td>\code mat \endcode
</td><td>\code
5 3 1
2 7 8
9 4 6
\endcode
</td></tr>
<tr><td>\code mat.minCoeff(); \endcode</td><td>\code 1 \endcode</td><td></td>
<td>\code mat.maxCoeff(); \endcode</td><td>\code 9 \endcode</td></tr>
<tr><td>\code mat.colwise().minCoeff(); \endcode</td><td>\code 2 3 1 \endcode</td><td></td>
<td>\code mat.colwise().maxCoeff(); \endcode</td><td>\code 9 7 8 \endcode</td></tr>
\link MatrixBase::rowwise() row-wise \endlink. Usage example:
<table class="tutorial_code">
<tr><td rowspan="3" style="border-right-style:dashed">\code
5 3 1
mat = 2 7 8
9 4 6 \endcode
</td> <td>\code mat.minCoeff(); \endcode</td><td>\code 1 \endcode</td></tr>
<tr><td>\code mat.colwise().minCoeff(); \endcode</td><td>\code 2 3 1 \endcode</td></tr>
<tr><td>\code mat.rowwise().minCoeff(); \endcode</td><td>\code
1
2
4
\endcode</td><td></td>
<td>\code mat.rowwise().maxCoeff(); \endcode</td><td>\code
5
8
9
\endcode</td></tr>
</table>
Eigen provides several other reduction methods such as \link Cwise::sum() sum() \endlink,
\link Cwise::norm() norm() \endlink, \link Cwise::norm2() norm2() \endlink,
\link Cwise::all() all() \endlink, and \link Cwise::any() any() \endlink.
The all() and any() functions are especially useful in combinaison with coeff-wise comparison operators.
<p class="note">\b Side \b note: The all() and any() functions are especially useful in combinaison with coeff-wise comparison operators (\ref CwiseAll "example").</p>
@ -339,8 +331,8 @@ mat1.row(i) = mat2.col(j);
mat1.col(j1).swap(mat1.col(j2));
\endcode
Read-write access to sub-vector:
<table>
Read-write access to sub-vectors:
<table class="tutorial_code">
<tr>
<td>Default versions</td>
<td>Optimized versions when the size is known at compile time</td></tr>
@ -353,7 +345,7 @@ Read-write access to sub-vector:
</table>
Read-write access to sub-matrices:
<table>
<table class="tutorial_code">
<tr><td>Default versions</td>
<td>Optimized versions when the size is known at compile time</td><td></td></tr>
@ -378,6 +370,13 @@ Read-write access to sub-matrices:
mat1.corner<rows,cols>(BottomRight)\endcode
\link MatrixBase::corner(CornerType) (more) \endlink</td>
<td>the \c rows x \c cols sub-matrix \n taken in one of the four corners</td></tr>
<tr>
<td>\code
vec1 = mat1.diagonal();
mat1.diagonal() = vec1;
\endcode
\link MatrixBase::diagonal() (more) \endlink</td></td>
<td></td>
</table>
@ -386,25 +385,74 @@ Read-write access to sub-matrices:
<a href="#" class="top">top</a>\section MatrixTransformations Matrix transformations
transpose, adjoint, etc...
<a href="#" class="top">top</a>\section Geometry Geometry features
maybe a second tutorial for that
<table class="tutorial_code">
<tr><td>
\link MatrixBase::transpose() transposition \endlink (read-write)</td><td>\code
mat3 = mat1.transpose() * mat2;
mat3.transpose() = mat1 * mat2.transpose();
\endcode
</td></tr>
<tr><td>
\link MatrixBase::adjoint() adjoint \endlink (read only)\n</td><td>\code
mat3 = mat1.adjoint() * mat2;
mat3 = mat1.conjugate().transpose() * mat2;
\endcode
</td></tr>
<tr><td>
\link MatrixBase::asDiagonal() make a diagonal matrix \endlink from a vector \n
\b Note: this product is automatically optimized !</td><td>\code
mat3 = mat1 * vec2.asDiagonal();\endcode
</td></tr>
<tr><td>
\link MatrixBase::minor() minor \endlink (read-write)</td><td>\code
mat4x4.minor(i,j) = mat3x3;
mat3x3 = mat4x4.minor(i,j);\endcode
</td></tr>
</table>
<a href="#" class="top">top</a>\section TriangularMatrix Dealing with triangular matrices
todo
<a href="#" class="top">top</a>\section Performance Notes on performances
<table class="tutorial_code">
<tr><td>\code
m4 = m4 * m4;\endcode</td><td>
auto-evaluates so no aliasing problem (performance penalty is low)</td></tr>
<tr><td>\code
Matrix4f other = (m4 * m4).lazy();\endcode</td><td>
forces lazy evaluation</td></tr>
<tr><td>\code
m4 = m4 + m4;\endcode</td><td>
here Eigen goes for lazy evaluation, as with most expressions</td></tr>
<tr><td>\code
m4 = -m4 + m4 + 5 * m4;\endcode</td><td>
same here, Eigen chooses lazy evaluation for all that.</td></tr>
<tr><td>\code
m4 = m4 * (m4 + m4);\endcode</td><td>
here Eigen chooses to first evaluate m4 + m4 into a temporary.
indeed, here it is an optimization to cache this intermediate result.</td></tr>
<tr><td>\code
m3 = m3 * m4.block<3,3>(1,1);\endcode</td><td>
here Eigen chooses \b not to evaluate block() into a temporary
because accessing coefficients of that block expression is not more costly than accessing
coefficients of a plain matrix.</td></tr>
<tr><td>\code
m4 = m4 * m4.transpose();\endcode</td><td>
same here, lazy evaluation of the transpose.</td></tr>
<tr><td>\code
m4 = m4 * m4.transpose().eval();\endcode</td><td>
forces immediate evaluation of the transpose</td></tr>
</table>
<a href="#" class="top">top</a>\section Geometry Geometry features
maybe a second chapter for that
<a href="#" class="top">top</a>\section AdvancedLinearAlgebra Advanced Linear Algebra
Again, let's do another chapter for that
\subsection LinearSolvers Solving linear problems
\subsection LU LU
\subsection Cholesky Cholesky

View File

@ -1,22 +1,23 @@
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 9.4pt;
}
BODY,TD {
font-size: 90%;
/*font-size: 90%;*/
}
H1 {
text-align: center;
font-size: 160%;
font-size: 15pt;
}
H2 {
font-size: 120%;
background-color : #d8d6af; margin-top : 2em;
font-size: 12pt;
background-color : #d8d6af; margin-top : 20pt;
}
H3 {
font-size: 100%;
}
CAPTION {
font-weight: bold
CAPTION {
font-weight: bold
}
DIV.qindex {
width: 100%;
@ -45,7 +46,7 @@ DIV.navtab {
padding: 2px;
}
TD.navtab {
font-size: 70%;
font-size: 100%;
}
A.qindex {
text-decoration: none;
@ -73,42 +74,42 @@ A.qindexHL:hover {
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited {
text-decoration: none;
background-color: #6666cc;
color: #ffffff
A.qindexHL:visited {
text-decoration: none;
background-color: #6666cc;
color: #ffffff
}
A.el {
text-decoration: none;
font-weight: bold
A.el {
text-decoration: none;
font-weight: bold
}
A.elRef {
font-weight: bold
A.elRef {
font-weight: bold
}
A.code:link {
text-decoration: none;
font-weight: normal;
A.code:link {
text-decoration: none;
font-weight: normal;
color: #0000FF
}
A.code:visited {
text-decoration: none;
font-weight: normal;
A.code:visited {
text-decoration: none;
font-weight: normal;
color: #0000FF
}
A.codeRef:link {
font-weight: normal;
A.codeRef:link {
font-weight: normal;
color: #0000FF
}
A.codeRef:visited {
font-weight: normal;
A.codeRef:visited {
font-weight: normal;
color: #0000FF
}
A:hover {
text-decoration: none;
background-color: #f2f2ff
A:hover {
text-decoration: none;
background-color: #f2f2ff
}
DL.el {
margin-left: -1cm
DL.el {
margin-left: -1cm
}
.fragment {
font-family: monospace, fixed;
@ -126,12 +127,12 @@ PRE.fragment {
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
DIV.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
}
DIV.groupHeader {
@ -140,10 +141,10 @@ DIV.groupHeader {
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText {
margin-left: 16px;
font-style: italic;
font-size: 90%
DIV.groupText {
margin-left: 16px;
font-style: italic;
font-size: 95%
}
BODY {
background: white;
@ -178,15 +179,15 @@ TD.indexvalue {
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
background-color: #f0f0f0;
}
P.formulaDsp {
text-align: center;
P.formulaDsp {
text-align: center;
}
IMG.formulaDsp {
}
IMG.formulaInl {
vertical-align: middle;
IMG.formulaInl {
vertical-align: middle;
}
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
@ -202,7 +203,7 @@ SPAN.vhdllogic { color: #ff0000 }
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-size: 90%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
@ -213,7 +214,7 @@ SPAN.vhdllogic { color: #ff0000 }
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-size: 90%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
@ -238,7 +239,7 @@ SPAN.vhdllogic { color: #ff0000 }
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
font-size: 90%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
@ -256,7 +257,7 @@ SPAN.vhdllogic { color: #ff0000 }
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
font-size: 90%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
@ -274,7 +275,7 @@ SPAN.vhdllogic { color: #ff0000 }
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
font-size: 90%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
@ -292,7 +293,7 @@ SPAN.vhdllogic { color: #ff0000 }
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
font-size: 90%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
@ -311,9 +312,9 @@ SPAN.vhdllogic { color: #ff0000 }
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
font-size: 90%;
}
.search {
.search {
color: #003399;
font-weight: bold;
}
@ -321,14 +322,14 @@ FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search {
font-size: 75%;
INPUT.search {
font-size: 90%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
TD.tiny {
font-size: 75%;
TD.tiny {
font-size: 85%;
}
a {
color: #1A41A8;
@ -336,16 +337,16 @@ a {
a:visited {
color: #2A3798;
}
.dirtab {
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
TH.dirtab {
TH.dirtab {
background: #e8eef2;
font-weight: bold;
}
HR {
HR {
height: 1px;
border: none;
border-top: 1px solid black;
@ -353,12 +354,12 @@ HR {
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
font-size: 90%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
@ -408,44 +409,92 @@ HR {
font-family: sans-serif;
margin:0.5em;
}
.directory {
font-size: 9pt;
font-weight: bold;
.directory {
font-size: 9pt;
font-weight: bold;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory > h3 {
margin-top: 0;
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
.directory img {
vertical-align: -30%;
}
H2 A {
font-size: 130%;margin:10px 0 1em 1em;display:block;
font-size: 13pt;margin:10px 0 1em 1em;display:block;
}
H2 A:hover {
background-color: #d8d6af
}
A.top {
font-size: 120%;
font-size: 11pt;
display:block;
color: #666666;
position:absolute;
right:2em;
margin:17px 0 0 0;
right:20pt;
margin:12pt 0 0 0;
text-decoration : none;
}
A.top:hover {
background-color: #d8d6af;font-weight : bolder;
A.top:hover, A.logo:hover {
background-color: transparent;font-weight : bolder;
}
P.note {
font-size: 7pt;
}
TABLE.noborder {
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;
}
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;
}
TABLE.tutorial_code {
border-bottom-style : none;
border-left-style : dashed;
border-right-style : dashed;
border-top-style : dashed ;
border-spacing : 0px 0px;
empty-cells : show;
margin: 4pt 0 0 0;
padding: 0 0 0 0;
}
TABLE.tutorial_code TD {
border-bottom-style : dashed;
border-left-style : none;
border-right-style : none;
border-top-style : none;
border-spacing : 0px 0px;
empty-cells : show;
margin: 0 0 0 0;
padding: 2pt 5pt 2pt 5pt;
vertical-align: middle;
}

View File

@ -0,0 +1,5 @@
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 24 23:40:21 2008 for Eigen by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>

View File

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Eigen: AngleAxis Class Template Reference</title>
<link href="eigendoxy.css" rel="stylesheet" type="text/css">
<link href="eigendoxy_tabs.css" rel="stylesheet" type="text/css">
</head><body>
<a name="top"></a>
<a class="logo" href="http://eigen.tuxfamily.org/">
<img src="Eigen_Silly_Professor_64x64.png" width=64 height=64 alt="Eiegn's silly professor"
style="border:none" /></a>

105
doc/eigendoxy_tabs.css Normal file
View File

@ -0,0 +1,105 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
position: absolute;
right: 10pt;
left: 0px;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
margin-left : 100px;
margin-top : -2em;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs INPUT
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI.current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI.current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.navpath
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
}