Olena-patches
Threads by month
- ----- 2025 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2013
- 7 participants
- 66 discussions
---
milena/mln/inpainting/fast_isotropic_diffusion.hh | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/milena/mln/inpainting/fast_isotropic_diffusion.hh b/milena/mln/inpainting/fast_isotropic_diffusion.hh
index 44a8989..fad9fac 100644
--- a/milena/mln/inpainting/fast_isotropic_diffusion.hh
+++ b/milena/mln/inpainting/fast_isotropic_diffusion.hh
@@ -1,3 +1,6 @@
+#ifndef FAST_ISOTROPIC_DIFFUSION_HH_
+# define FAST_ISOTROPIC_DIFFUSION_HH_
+
#include <mln/core/macros.hh>
#include <mln/core/concept/image.hh>
#include <mln/core/alias/point2d.hh>
@@ -9,7 +12,7 @@
#include <algorithm>
#include <limits>
-#define CONVERGENCE_THRESHOLD 0.05
+#define CONVERGENCE_THRESHOLD 0.00005
namespace mln
{
@@ -29,7 +32,8 @@ namespace mln
void fast_isotropic_diffusion::operator()(I<T>& src,
const I<bool>& mask)
{
- I<T> src_next(src);
+ I<T> src_next;
+ src_next = duplicate(src);
I<T>* u_ = &src;
I<T>* u_next_ = &src_next;
@@ -50,7 +54,7 @@ namespace mln
mln_pixter(const I<bool>) p_m(mask);
mln_nixter(const I<T>, const neighb2d) n(p, c8());
- for_all_3(p, p_next, p_m)
+ for_all_3 (p, p_next, p_m)
{
if (p_m.val())
{
@@ -74,10 +78,14 @@ namespace mln
}
std::swap(u_, u_next_);
-
}
+
+ std::cout << iterations << "\t";
+
}
} /* mln::inpainting */
} /* mln */
+
+#endif
--
1.7.2.5
1
0

olena-2.0-36-gdd1d663 Add: new mean gradient error metric. Some metric refactoring.
by Coddy Levi 07 Jan '13
by Coddy Levi 07 Jan '13
07 Jan '13
---
.../mln/inpainting/metric/mean_gradient_error.hh | 75 ++++++++++++++++++++
milena/mln/inpainting/metric/mean_l1_error.hh | 57 +++++++++++++++
milena/mln/inpainting/metric/{psnr.hh => mse.hh} | 23 ++----
milena/mln/inpainting/metric/psnr.hh | 29 +-------
4 files changed, 144 insertions(+), 40 deletions(-)
create mode 100644 milena/mln/inpainting/metric/mean_gradient_error.hh
create mode 100644 milena/mln/inpainting/metric/mean_l1_error.hh
copy milena/mln/inpainting/metric/{psnr.hh => mse.hh} (60%)
diff --git a/milena/mln/inpainting/metric/mean_gradient_error.hh b/milena/mln/inpainting/metric/mean_gradient_error.hh
new file mode 100644
index 0000000..05e1b2c
--- /dev/null
+++ b/milena/mln/inpainting/metric/mean_gradient_error.hh
@@ -0,0 +1,75 @@
+#ifndef MEAN_GRADIENT_ERROR_HH_
+# define MEAN_GRADIENT_ERROR_HH_
+
+# include <mln/core/concept/image.hh>
+# include <mln/norm/l1.hh>
+# include <mln/trait/value_.hh>
+# include <mln/algebra/vec.hh>
+# include <mln/linear/gaussian.hh>
+
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/pw/value.hh>
+
+# include <mln/data/compute.hh>
+# include <mln/data/transform.hh>
+# include <mln/fun/vv2v/diff_abs.hh>
+# include <mln/accu/math/sum.hh>
+
+# include <mln/inpainting/tv.hh>
+
+namespace mln
+{
+ namespace inpainting
+ {
+ namespace metric
+ {
+ template <typename I, typename M>
+ float mean_gradient_error(const Image<I>& original_,
+ const Image<I>& altered_,
+ const Image<M>& mask_)
+ {
+ I original_dx;
+ I original_dy;
+ I altered_dx;
+ I altered_dy;
+
+ initialize(original_dx, exact(original_));
+ initialize(original_dy, exact(original_));
+ initialize(altered_dx, exact(original_));
+ initialize(altered_dy, exact(original_));
+
+ internal::convolve(exact(original_), original_dx, make_dx_kernel<float>());
+ internal::convolve(exact(altered_), altered_dx, make_dx_kernel<float>());
+ internal::convolve(exact(original_), original_dy, make_dy_kernel<float>());
+ internal::convolve(exact(altered_), altered_dy, make_dy_kernel<float>());
+
+ unsigned card = 0;
+
+ mln_piter(I) p( original_dx.domain() );
+
+ float error = 0;
+
+ const M& mask = exact(mask_);
+
+ for_all(p)
+ {
+ if (mask(p))
+ {
+ const mln_value(I) diff = original_dx(p) + original_dy(p)
+ - (altered_dx(p) + altered_dy(p));
+
+ for (unsigned i = 0; i < mln_dim(mln_value(I)); ++i)
+ error += std::abs(diff[i]);
+
+ ++card;
+ }
+ }
+
+ return error / (card * mln_dim(mln_value(I)));
+ }
+ }
+ }
+}
+
+
+#endif
diff --git a/milena/mln/inpainting/metric/mean_l1_error.hh b/milena/mln/inpainting/metric/mean_l1_error.hh
new file mode 100644
index 0000000..f5caa90
--- /dev/null
+++ b/milena/mln/inpainting/metric/mean_l1_error.hh
@@ -0,0 +1,57 @@
+#ifndef MEAN_L1_ERROR_HH_
+# define MEAN_L1_ERROR_HH_
+
+# include <mln/core/concept/image.hh>
+# include <mln/norm/l1.hh>
+# include <mln/trait/value_.hh>
+# include <mln/algebra/vec.hh>
+
+# include <mln/data/compute.hh>
+# include <mln/accu/math/sum.hh>
+
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/pw/value.hh>
+
+namespace mln
+{
+ namespace inpainting
+ {
+ namespace metric
+ {
+ template <typename I, typename M>
+ float mean_l1_error(const Image<I>& original_,
+ const Image<I>& altered_,
+ const Image<M>& mask_)
+ {
+ const I& original = exact(original_);
+ const I& altered = exact(altered_);
+ const M& mask = exact(mask_);
+
+ mln_piter(I) p( original.domain() );
+
+ unsigned card = 0;
+
+ float error = 0;
+
+ for_all(p)
+ {
+ if (mask(p))
+ {
+ const mln_value(I) diff = original(p) - altered(p);
+
+ for (unsigned i = 0; i < mln_dim(mln_value(I)); ++i)
+ {
+ error += std::abs(diff[i]);
+ }
+
+ ++card;
+ }
+ }
+
+ return error / (card * mln_dim(mln_value(I)));
+ }
+ }
+ }
+}
+
+#endif
diff --git a/milena/mln/inpainting/metric/psnr.hh b/milena/mln/inpainting/metric/mse.hh
similarity index 60%
copy from milena/mln/inpainting/metric/psnr.hh
copy to milena/mln/inpainting/metric/mse.hh
index 5dd8fdd..0c09252 100644
--- a/milena/mln/inpainting/metric/psnr.hh
+++ b/milena/mln/inpainting/metric/mse.hh
@@ -1,7 +1,5 @@
-#ifndef MLN_INPAINTING_METRIC_PSNR_HH
-# define MLN_INPAINTING_METRIC_PSNR_HH
-
-# include <cmath>
+#ifndef MSE_HH_
+# define MSE_HH_
# include <mln/core/concept/image.hh>
# include <mln/norm/l1.hh>
@@ -15,7 +13,7 @@ namespace mln
namespace metric
{
template <typename I, typename I2>
- double psnr(const Image<I>& original_,
+ double mse(const Image<I>& original_,
const Image<I2>& altered_)
{
const I& original = exact(original_);
@@ -32,21 +30,16 @@ namespace mln
for_all(p)
{
const mln_sum(mln_value(I)) diff = original(p) - altered(p);
-
- if (dim == 1)
- mse += diff * diff;
- else
- for (unsigned i = 0; i < dim; ++i)
- mse += diff[i] * diff[i];
+
+ for (unsigned i = 0; i < dim; ++i)
+ mse += diff[i] * diff[i];
++nelements;
}
- mse /= ( nelements * dim);
-
- const unsigned max = pow(2, mln_nbits(mln_value(I)) / dim) - 1;
+ mse /= (nelements * dim);
- return 20 * log10( max ) - 10 * log10(mse);
+ return mse;
}
}
}
diff --git a/milena/mln/inpainting/metric/psnr.hh b/milena/mln/inpainting/metric/psnr.hh
index 5dd8fdd..3a97fb0 100644
--- a/milena/mln/inpainting/metric/psnr.hh
+++ b/milena/mln/inpainting/metric/psnr.hh
@@ -4,9 +4,10 @@
# include <cmath>
# include <mln/core/concept/image.hh>
-# include <mln/norm/l1.hh>
+
+# include <mln/inpainting/metric/mse.hh>
+
# include <mln/trait/value_.hh>
-# include <mln/algebra/vec.hh>
namespace mln
{
@@ -18,32 +19,10 @@ namespace mln
double psnr(const Image<I>& original_,
const Image<I2>& altered_)
{
- const I& original = exact(original_);
- const I2& altered = exact(altered_);
-
- mln_piter(I) p( altered.domain() );
-
- double mse = 0;
+ double mse = metric::mse(original_, altered_);
const unsigned dim = mln_dim(mln_value(I));
-
- unsigned nelements = 0;
-
- for_all(p)
- {
- const mln_sum(mln_value(I)) diff = original(p) - altered(p);
-
- if (dim == 1)
- mse += diff * diff;
- else
- for (unsigned i = 0; i < dim; ++i)
- mse += diff[i] * diff[i];
-
- ++nelements;
- }
- mse /= ( nelements * dim);
-
const unsigned max = pow(2, mln_nbits(mln_value(I)) / dim) - 1;
return 20 * log10( max ) - 10 * log10(mse);
--
1.7.2.5
1
0
---
milena/doc/.gitignore | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/milena/doc/.gitignore b/milena/doc/.gitignore
index 3c88ad7..6010cc6 100644
--- a/milena/doc/.gitignore
+++ b/milena/doc/.gitignore
@@ -8,14 +8,14 @@
/figures/*.png
-/ref-guide.hh
+/ref-guide.dox
/ref-guide.pdf
/ref-guide/
/technical.pdf
/technical/
-/tutorial.hh
+/tutorial.dox
/tutorial.pdf
/tutorial/
--
1.7.2.5
1
0
---
doc/Doxyfile.in | 14 +-
doc/DoxygenLayout.xml | 1 -
doc/bibliography.dox | 8 +-
doc/doc.css | 27 +
doc/doxygen.css | 644 +++++++++++++++-----
doc/footer.html | 2 +-
doc/header.html | 19 +-
doc/subdoc_footer.html | 16 +-
milena/doc/Doxyfile.in | 130 +++--
milena/doc/DoxygenLayout.xml | 7 +-
milena/doc/Makefile.am | 16 +-
milena/doc/demo.dox | 5 +
milena/doc/examples.dox | 7 +
milena/doc/footer.html | 27 +
milena/doc/white-paper.tex | 2 +-
milena/mln/canvas/browsing/backdiagonal2d.hh | 35 +-
milena/mln/canvas/browsing/diagonal2d.hh | 35 +-
.../canvas/browsing/dir_struct_elt_incr_update.hh | 34 +-
milena/mln/canvas/browsing/directional.hh | 48 +-
milena/mln/canvas/browsing/fwd.hh | 20 +-
milena/mln/canvas/browsing/snake_fwd.hh | 26 +-
milena/mln/canvas/browsing/snake_generic.hh | 36 +-
scribo/doc/Doxyfile.in | 14 +-
23 files changed, 800 insertions(+), 373 deletions(-)
create mode 100644 doc/doc.css
create mode 100644 milena/doc/demo.dox
create mode 100644 milena/doc/examples.dox
create mode 100644 milena/doc/footer.html
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index e922c9a..9e10f56 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -1,4 +1,5 @@
-# Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+# Copyright (C) 2011, 2012 EPITA Research and Development Laboratory
+# (LRDE)
#
# This file is part of Olena.
#
@@ -34,7 +35,7 @@ INLINE_INHERITED_MEMB = YES
FULL_PATH_NAMES = NO
STRIP_FROM_PATH = @top_srcdir@
STRIP_FROM_INC_PATH =
-SHORT_NAMES = YES
+SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
@@ -74,7 +75,6 @@ GENERATE_DEPRECATEDLIST= NO
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO # Disabled for light doc
-SHOW_DIRECTORIES = NO # Disabled for light doc
SHOW_FILES = NO # Disabled for light doc
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
@@ -112,7 +112,8 @@ INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
INPUT_ENCODING = ISO-8859-1
-CITE_BIB_FILES = @abs_top_srcdir@/doc/olena.bib
+CITE_BIB_FILES = @abs_top_srcdir@/doc/doc.bib \
+ @abs_top_srcdir@/doc/olena.bib
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
@@ -139,8 +140,8 @@ HTML_FILE_EXTENSION = .html
HTML_HEADER = @top_srcdir@/doc/header.html
HTML_FOOTER = @top_srcdir@/doc/footer.html
HTML_STYLESHEET = @top_srcdir@/doc/doxygen.css
+HTML_EXTRA_STYLESHEET = @top_srcdir@/doc/doc.css
LAYOUT_FILE = @top_srcdir@/doc/DoxygenLayout.xml
-HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
@@ -353,7 +354,8 @@ DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
-SEARCHENGINE = NO
+SEARCHENGINE = YES
+SERVER_BASED_SEARCH = NO
# Local Variables:
diff --git a/doc/DoxygenLayout.xml b/doc/DoxygenLayout.xml
index 0dbf0d7..5feeee9 100644
--- a/doc/DoxygenLayout.xml
+++ b/doc/DoxygenLayout.xml
@@ -18,7 +18,6 @@
<tab type="files" visible="no" title=""/>
<tab type="globals" visible="no" title=""/>
</tab>
- <tab type="dirs" visible="no" title=""/>
<tab type="examples" visible="no" title=""/>
</navindex>
diff --git a/doc/bibliography.dox b/doc/bibliography.dox
index 59518cb..49067f6 100644
--- a/doc/bibliography.dox
+++ b/doc/bibliography.dox
@@ -9,9 +9,9 @@
\li \ref olnpublisposters
\li \ref olnpublistechreps
- \li \ref{burrus.03.mpool}
- \li \ref{darbon.02.ismm}
- \li \ref{darbon.04.ecoopphd}
+ \li \cite burrus.03.mpool
+ \li \cite darbon.02.ismm
+ \li \cite darbon.04.ecoopphd
\li \cite duret.00.gcse
\li \cite geraud.00.icpr
\li \cite geraud.01.ai
@@ -34,4 +34,6 @@
\subsection olnpublistechreps Student Technical Reports
+ \cite sauvola00pr
+ \cite besl.1992.pami
*/
diff --git a/doc/doc.css b/doc/doc.css
new file mode 100644
index 0000000..72a4b19
--- /dev/null
+++ b/doc/doc.css
@@ -0,0 +1,27 @@
+table.itable th
+{
+ font-size: 17px;
+
+}
+
+table.itable li
+{
+ font-size: 16px;
+}
+
+table.itable td
+{
+ font-size: 17px;
+ vertical-align: top;
+}
+
+address.div
+{
+ font-size: 10px;
+}
+
+table.itable
+{
+ width:850px;
+ table-layout:fixed;
+}
diff --git a/doc/doxygen.css b/doc/doxygen.css
index 83f13a4..dc14a84 100644
--- a/doc/doxygen.css
+++ b/doc/doxygen.css
@@ -1,13 +1,12 @@
-/* The standard CSS for doxygen */
+/* The standard CSS for doxygen 1.8.2-20120930 */
body, table, div, p, dl {
- font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
- font-size: 12px;
+ font: 400 14px/19px Roboto,sans-serif;
}
/* @group Heading Levels */
-h1 {
+h1.groupheader {
font-size: 150%;
}
@@ -17,14 +16,34 @@ h1 {
margin: 10px 2px;
}
-h2 {
- font-size: 120%;
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
}
-h3 {
+h3.groupheader {
font-size: 100%;
}
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
dt {
font-weight: bold;
}
@@ -72,8 +91,6 @@ div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
- margin: 2px;
- padding: 2px;
}
div.qindex, div.navpath {
@@ -123,12 +140,12 @@ a.el {
a.elRef {
}
-a.code {
- color: #4665A2;
+a.code, a.code:visited {
+ color: #4665A2;
}
-a.codeRef {
- color: #4665A2;
+a.codeRef, a.codeRef:visited {
+ color: #4665A2;
}
/* @end */
@@ -137,20 +154,72 @@ dl.el {
margin-left: -1cm;
}
-.fragment {
+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: 105%;
+ 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;
}
-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%;
+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 {
@@ -183,15 +252,15 @@ div.groupText {
}
body {
- background: white;
+ background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
- margin-left: 10px;
- margin-right: 5px;
+ margin-left: 12px;
+ margin-right: 8px;
}
td.indexkey {
@@ -200,6 +269,8 @@ td.indexkey {
border: 1px solid #C4CFE5;
margin: 2px 0px 2px 0;
padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
}
td.indexvalue {
@@ -218,7 +289,7 @@ p.formulaDsp {
}
img.formulaDsp {
-
+
}
img.formulaInl {
@@ -276,20 +347,27 @@ span.charliteral {
color: #008080
}
-span.vhdldigit {
- color: #ff00ff
+span.vhdldigit {
+ color: #ff00ff
}
-span.vhdlchar {
- color: #000000
+span.vhdlchar {
+ color: #000000
}
-span.vhdlkeyword {
- color: #700070
+span.vhdlkeyword {
+ color: #700070
}
-span.vhdllogic {
- color: #ff0000
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
}
/* @end */
@@ -345,6 +423,24 @@ table.memberdecls {
padding: 0px;
}
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
@@ -359,8 +455,11 @@ table.memberdecls {
color: #555;
}
-.memItemLeft, .memItemRight, .memTemplParams {
- border-top: 1px solid #C4CFE5;
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
}
.memItemLeft, .memTemplItemLeft {
@@ -374,6 +473,7 @@ table.memberdecls {
.memTemplParams {
color: #4665A2;
white-space: nowrap;
+ font-size: 80%;
}
/* @end */
@@ -406,15 +506,29 @@ table.memberdecls {
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 {
- white-space: nowrap;
font-weight: bold;
margin-left: 6px;
}
-.memproto {
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
@@ -422,45 +536,55 @@ table.memberdecls {
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: 8px;
- border-top-left-radius: 8px;
+ 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: 8px;
- -moz-border-radius-topleft: 8px;
+ -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: 8px;
- -webkit-border-top-left-radius: 8px;
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
}
-.memdoc {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 2px 5px;
+.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: 8px;
- border-bottom-right-radius: 8px;
+ 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: 8px;
- -moz-border-radius-bottomright: 8px;
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
/* webkit specific markup */
- -webkit-border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
}
.paramkey {
@@ -478,125 +602,140 @@ table.memberdecls {
.paramname em {
font-style: normal;
}
+.paramname code {
+ line-height: 14px;
+}
.params, .retval, .exception, .tparams {
- border-spacing: 6px 2px;
-}
+ 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;
+}
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
+span.mlabels {
+ margin-left: 8px;
+}
-.ftvtree {
- font-family: sans-serif;
- margin: 0px;
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
}
-/* 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;
-}
+/* @end */
-/*
-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.
-*/
+/* these are for tree view when not used as main index */
-/*
-.directory h3.swap {
- height: 61px;
- background-repeat: no-repeat;
- background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
- display: none;
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
}
-*/
-.directory > h3 {
- margin-top: 0;
+.directory table {
+ border-collapse:collapse;
}
-.directory p {
- margin: 0px;
- white-space: nowrap;
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
}
-.directory div {
- display: none;
- margin: 0px;
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
}
-.directory img {
- vertical-align: -30%;
+.directory td.entry a {
+ outline:none;
}
-/* these are for tree view when not used as main index */
-
-.directory-alt {
- font-size: 100%;
- font-weight: bold;
+.directory td.entry a img {
+ border: none;
}
-.directory-alt h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
}
-.directory-alt > h3 {
- margin-top: 0;
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
}
-.directory-alt p {
- margin: 0px;
- white-space: nowrap;
+.directory img {
+ vertical-align: -30%;
}
-.directory-alt div {
- display: none;
- margin: 0px;
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
}
-.directory-alt img {
- vertical-align: -30%;
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
}
-/* @end */
-
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 {
@@ -606,9 +745,8 @@ address {
table.doxtable {
border-collapse:collapse;
- /* new */
- width:80%;
- table-layout:fixed;
+ margin-top: 4px;
+ margin-bottom: 4px;
}
table.doxtable td, table.doxtable th {
@@ -622,11 +760,68 @@ table.doxtable th {
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);
+}
- /* Changed */
- text-align:center;
+.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 td.fielddoc p:first-child {
+ margin-top: 2px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
.tabsearch {
top: 0px;
left: 10px;
@@ -642,6 +837,7 @@ table.doxtable th {
font-size: 11px;
background-image:url('tab_b.png');
background-repeat:repeat-x;
+ background-position: 0 -5px;
height:30px;
line-height:30px;
color:#8AA0CC;
@@ -669,6 +865,10 @@ table.doxtable th {
display:block;
text-decoration: none;
outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
}
.navpath li.navelem a:hover
@@ -697,7 +897,7 @@ div.summary
padding-right: 5px;
width: 50%;
text-align: right;
-}
+}
div.summary a
{
@@ -707,7 +907,6 @@ div.summary a
div.ingroups
{
font-size: 8pt;
- padding-left: 5px;
width: 50%;
text-align: left;
}
@@ -736,73 +935,96 @@ 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.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
{
- border-left:4px solid;
- padding: 0 0 0 6px;
+ 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
{
- /* Changed */
- font: 32px Tahoma, Arial,sans-serif;
-
+ font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
-
+
#projectbrief
{
- /* Changed */
- font: 13px Tahoma, Arial,sans-serif;
-
+ font: 120% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 0px;
}
@@ -842,27 +1064,117 @@ dl.bug
font-weight: bold;
}
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
-/* ===> NEW */
+dl.citelist {
+ margin-bottom:50px;
+}
-table.itable th
-{
- font-size: 17px;
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
}
-table.itable li
-{
- font-size: 16px;
+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;
}
-table.itable td
-{
- font-size: 17px;
- vertical-align: top;
+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;
}
-address.div
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+@media print
{
- font-size: 10px;
-}
\ No newline at end of file
+ #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;
+ }
+}
+
diff --git a/doc/footer.html b/doc/footer.html
index e09f03e..e3881df 100644
--- a/doc/footer.html
+++ b/doc/footer.html
@@ -1,6 +1,6 @@
<hr class="footer"/><address class="footer"><small>
<div style="position:absolute;text-align:left;">Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)</div>
-<div align='right'>Olena 2.0</div>
+<div align='right'>$projectname $projectnumber</div>
</small></address>
</body>
</html>
diff --git a/doc/header.html b/doc/header.html
index 6c5cf96..0d1b1cc 100644
--- a/doc/header.html
+++ b/doc/header.html
@@ -1,28 +1,36 @@
+<!-- HTML header for doxygen 1.8.2-20120930-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>$title</title>
+<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$tabs.css" rel="stylesheet" type="text/css"/>
-<link href="$relpath$doxygen.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" />
+$extrastylesheet
</head>
<body>
-<div id="top"><!-- do not remove this div! -->
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
<!--BEGIN TITLEAREA-->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<!--BEGIN PROJECT_LOGO-->
- <td id="projectlogo"><a href="@relcommondocpath@$relpath$index.html"><img alt="Logo" src="$relpath$$projectlogo"></a></td>
+ <td id="projectlogo"><a href="@relcommondocpath@$relpath$index.html"><img alt="Logo" src="$relpath$$projectlogo"/></a></td>
<!--END PROJECT_LOGO-->
<!--BEGIN PROJECT_NAME-->
<td style="padding-left: 0.5em;">
<div id="projectname">Olena
- <!--BEGIN PROJECT_NUMBER--><!--  <span id="projectnumber">$projectnumber</span> --><!--END PROJECT_NUMBER-->
+ <!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
</div>
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
</td>
@@ -44,3 +52,4 @@ $mathjax
</table>
</div>
<!--END TITLEAREA-->
+<!-- end header part -->
diff --git a/doc/subdoc_footer.html b/doc/subdoc_footer.html
index 3548c1e..9fd0598 100644
--- a/doc/subdoc_footer.html
+++ b/doc/subdoc_footer.html
@@ -1,6 +1,18 @@
+<!-- HTML footer for doxygen 1.8.2-20120930-->
+<!-- start footer part -->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ $navpath
+ <li class="footer">
+Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)</li>
+ </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+<!--BEGIN !GENERATE_TREEVIEW-->
<hr class="footer"/><address class="footer"><small>
-<span style="position:absolute;bottom:0;left:5px;text-align:left;">Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)</span>
-<span style="position:absolute;bottom:0;right:5px;text-align:right;">Olena 2.0</span>
+Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
</small></address>
+<!--END !GENERATE_TREEVIEW-->
</body>
</html>
diff --git a/milena/doc/Doxyfile.in b/milena/doc/Doxyfile.in
index 6ebdcf4..c629d2d 100644
--- a/milena/doc/Doxyfile.in
+++ b/milena/doc/Doxyfile.in
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.0-20120409
+# Doxyfile 1.8.2-20120930
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -126,7 +126,9 @@ FULL_PATH_NAMES = NO
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
-# path to strip.
+# path to strip. Note that you specify absolute paths here, but also
+# relative paths, which will be relative from the directory where doxygen is
+# started.
STRIP_FROM_PATH = @top_srcdir@/milena
@@ -137,13 +139,13 @@ STRIP_FROM_PATH = @top_srcdir@/milena
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH = @top_srcdir@/milena
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
-SHORT_NAMES = YES
+SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
# will interpret the first line (until the first dot) of a JavaDoc-style
@@ -229,14 +231,15 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension,
+# and language is one of the parsers supported by doxygen: IDL, Java,
+# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
+# C++. For instance to make doxygen treat .inc files as Fortran files (default
+# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
+# that for custom extensions you also need to set FILE_PATTERNS otherwise the
+# files are not read by doxygen.
EXTENSION_MAPPING =
@@ -249,6 +252,13 @@ EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
+# When enabled doxygen tries to link words that correspond to documented classes,
+# or namespaces to their corresponding documentation. Such a link can be
+# prevented in individual cases by by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+
+AUTOLINK_SUPPORT = YES
+
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
@@ -269,10 +279,10 @@ CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES (the
+# default) will make doxygen replace the get and set methods by a property in
+# the documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
@@ -362,7 +372,8 @@ EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
EXTRACT_PACKAGE = NO
@@ -578,7 +589,7 @@ FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. The create the layout file
+# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
@@ -591,9 +602,11 @@ LAYOUT_FILE = @top_srcdir@/milena/doc/DoxygenLayout.xml
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
+# feature you need bibtex and perl available in the search path. Do not use
+# file names with spaces, bibtex cannot handle them.
-CITE_BIB_FILES = @abs_top_srcdir@/doc/doc.bib
+CITE_BIB_FILES = @abs_top_srcdir@/doc/doc.bib \
+ @abs_top_srcdir@/doc/olena.bib
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
@@ -807,7 +820,7 @@ INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
+# fragments. Normal C, C++ and Fortran comments will always remain visible.
STRIP_CODE_COMMENTS = YES
@@ -910,12 +923,22 @@ HTML_FOOTER = @top_srcdir@/doc/subdoc_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
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# 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!
+# fine-tune the look of the HTML output. If left blank doxygen will
+# generate a default style sheet. Note that it is recommended to use
+# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
+# tag will in the future become obsolete.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
+# user-defined cascading style sheet that is included after the standard
+# style sheets created by doxygen. Using this option one can overrule
+# certain style aspects. This is preferred over using HTML_STYLESHEET
+# since it does not replace the standard style sheet and is therefor more
+# robust against future updates. Doxygen will copy the style sheet file to
+# the output directory.
-HTML_STYLESHEET = @top_srcdir@/doc/doxygen.css
+HTML_EXTRA_STYLESHEET = @top_srcdir@/doc/doc.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -957,20 +980,23 @@ HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+# page has loaded.
HTML_DYNAMIC_SECTIONS = NO
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
+# entries shown in the various tree structured indices initially; the user
+# can expand and collapse entries dynamically later on. Doxygen will expand
+# the tree to such a level that at most the specified number of entries are
+# visible (unless a fully collapsed tree already exceeds this amount).
+# So setting the number of entries 1 will produce a full collapsed tree by
+# default. 0 is a special value representing an infinite number of entries
+# and will result in a full expanded tree by default.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard).
@@ -989,24 +1015,24 @@ GENERATE_DOCSET = NO
# documentation sets from a single provider (such as a company or product suite)
# can be grouped.
-DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_FEEDNAME = "Olena Platform Documentation"
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
# should uniquely identify the documentation set bundle. This should be a
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
# will append .docset to the name.
-DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_BUNDLE_ID = org.lrde.olena
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
+# identify the documentation publisher. This should be a reverse domain-name
+# style string, e.g. com.mycompany.MyDocSet.documentation.
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_ID = org.lrde
# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-DOCSET_PUBLISHER_NAME = Publisher
+DOCSET_PUBLISHER_NAME = EPITA - LRDE
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
@@ -1050,7 +1076,7 @@ BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members
# to the contents of the HTML help documentation and to the tree view.
-TOC_EXPAND = NO
+TOC_EXPAND = YES
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
@@ -1494,7 +1520,7 @@ MACRO_EXPANSION = YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
-EXPAND_ONLY_PREDEF = YES
+EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# pointed to by INCLUDE_PATH will be searched when a #include is found.
@@ -1528,6 +1554,7 @@ PREDEFINED = "for_all(x)=for(x.start(); x.is_valid(); x.next())" \
"for_all_remaining(x)=if (! x.is_valid()) {} else while (x.next(), x.is_valid())" \
"mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret" \
"mlc_equal(T1,T2)=mln::metal::equal<T1,T2>" \
+ "mlc_bool(B)=mln::metal::bool_<( B )>" \
"mln_piter(T)=typename T::piter" \
"mln_fwd_piter(T)=typename T::fwd_piter" \
"mln_bkd_piter(T)=typename T::bkd_piter" \
@@ -1629,8 +1656,23 @@ PREDEFINED = "for_all(x)=for(x.start(); x.is_valid(); x.next())" \
"mlc_is_a(T, M)=mln::metal::is_a<T, M>" \
"mlc_is_a__1comma(Tleft, Tright, M)=mln::metal::is_a<Tleft, Tright, M>" \
"mlc_is_not_a(T, M)=mln::metal::is_not_a< T, M >" \
+ "mlc_is_not(T, U)=mln::metal::is_not< T, U >" \
"mlc_converts_to(T, U)=mln::metal::converts_to< T, U >" \
"mlc_not_equal(T1, T2)=mln::metal::not_equal< T1, T2 >" \
+ "mlc_is(T, U)=mln::metal::is< T, U >" \
+ "mlc_and(B1, B2)=mln::metal::and_< B1, B2 >" \
+ "mln_trait_window_size(W)=typename mln::trait::window_< W >::size" \
+ "mln_trait_window_support(W)=typename mln::trait::window_< W >::support" \
+ "mln_trait_window_definition(W)=typename mln::trait::window_< W >::definition" \
+ "mln_is_simple_window(W)=mln::metal::and_< mlc_is(mln_trait_window_size(W), \
+ mln::trait::window::size::fixed), \
+ mln::metal::and_< mlc_is(mln_trait_window_support(W), \
+ mln::trait::window::support::regular), \
+ mlc_is(mln_trait_window_definition(W), \
+ mln::trait::window::definition::unique) > >" \
+ "mln_is_fastest_IW(I, W)=mlc_and(mlc_is(mln_trait_image_speed(I), \
+ trait::image::speed::fastest), \
+ mln_is_simple_window(W))" \
"BOOST_PP_LOCAL_ITERATE()=<boost/preprocessor/iteration/detail/local.hpp>"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
diff --git a/milena/doc/DoxygenLayout.xml b/milena/doc/DoxygenLayout.xml
index 05f050a..1aeee52 100644
--- a/milena/doc/DoxygenLayout.xml
+++ b/milena/doc/DoxygenLayout.xml
@@ -1,12 +1,9 @@
<doxygenlayout version="1.0">
+ <!-- Generated by doxygen 1.8.2-20120930 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="Milena"/>
- <tab type="pages" visible="no" title="" intro=""/>
- <tab type="usergroup" url="@ref mainpage" title="Getting started">
- <tab type="user" url="@ref quickref" title="Quick Reference Guide"/>
- <tab type="user" url="@ref tutorial" title="Tutorial"/>
- </tab>
+ <tab type="pages" visible="yes" title="Getting started" intro=""/>
<tab type="modules" visible="yes" title="API Reference Manual" intro=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="no" title="" intro=""/>
diff --git a/milena/doc/Makefile.am b/milena/doc/Makefile.am
index 4c83006..55ce81e 100644
--- a/milena/doc/Makefile.am
+++ b/milena/doc/Makefile.am
@@ -185,8 +185,8 @@ regen-split-examples-mk:
REFMAN_deps = \
$(PNG_FIGURES) \
- $(srcdir)/tutorial.hh \
- $(srcdir)/ref-guide.hh
+ $(srcdir)/tutorial.dox \
+ $(srcdir)/ref-guide.dox
# ----------------------- #
# User Reference Manual. #
@@ -441,11 +441,7 @@ $(srcdir)/$(TUTORIAL): $(srcdir)/$(TUTORIAL).stamp
DATA_html_dirs += $(TUTORIAL)
# Intermediate product for the (Doxygen) User Reference Manual.
-#
-# This is not a bug: TUTORIAL_HH is meant to have a `.hh' extension,
-# since it is later parsed by Doxygen, which complains about `.html'
-# files.
-TUTORIAL_HH = $(srcdir)/tutorial.hh
+TUTORIAL_HH = $(srcdir)/tutorial.dox
$(TUTORIAL_HH): $(srcdir)/$(TUTORIAL).stamp $(srcdir)/tools/todoxygen.sh
# The script `todoxygen.sh' may fail and still create a (partial and
# invalid) file, thus preventing Make from trying to generate it
@@ -558,11 +554,7 @@ $(srcdir)/$(REF_GUIDE): $(srcdir)/$(REF_GUIDE).stamp
DATA_html_dirs += $(REF_GUIDE)
# Intermediate product for the (Doxygen) User Reference Manual.
-#
-# This is not a bug: REF_GUIDE_HH is meant to have a `.hh' extension,
-# since it is later parsed by Doxygen, which complains about `.html'
-# files.
-REF_GUIDE_HH = $(srcdir)/ref-guide.hh
+REF_GUIDE_HH = $(srcdir)/ref-guide.dox
$(REF_GUIDE_HH): $(srcdir)/$(REF_GUIDE).stamp $(srcdir)/tools/todoxygen.sh
# The script `todoxygen.sh' may fail and still create a (partial and
# invalid) file, thus preventing Make from trying to generate it
diff --git a/milena/doc/demo.dox b/milena/doc/demo.dox
new file mode 100644
index 0000000..5573b8a
--- /dev/null
+++ b/milena/doc/demo.dox
@@ -0,0 +1,5 @@
+/** \page demos Demos
+
+ List of Online demos.
+
+*/
\ No newline at end of file
diff --git a/milena/doc/examples.dox b/milena/doc/examples.dox
new file mode 100644
index 0000000..1b6d607
--- /dev/null
+++ b/milena/doc/examples.dox
@@ -0,0 +1,7 @@
+/** \page examples Examples
+
+ List of working program examples.
+
+ List programs related to articles.
+
+*/
\ No newline at end of file
diff --git a/milena/doc/footer.html b/milena/doc/footer.html
new file mode 100644
index 0000000..53f7303
--- /dev/null
+++ b/milena/doc/footer.html
@@ -0,0 +1,27 @@
+<!-- HTML footer for doxygen 1.8.2-20120930-->
+<!-- start footer part -->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ $navpath
+ <li class="footer">
+ Copyright (c) 2012 EPITA Research and Development Laboratory (LRDE)
+ </li>
+ </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+<!--BEGIN !GENERATE_TREEVIEW-->
+<hr class="footer"/><address class="footer"><small>
+ Copyright (c) 2012 EPITA Research and Development Laboratory (LRDE)
+</small></address>
+<!--END !GENERATE_TREEVIEW-->
+</body>
+</html>
+
+
+<hr class="footer"/><address class="footer"><small>
+<span style="position:absolute;bottom:0;left:5px;text-align:left;">Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)</span>
+<span style="position:absolute;bottom:0;right:5px;text-align:right;">Olena 2.0</span>
+</small></address>
+</body>
+</html>
diff --git a/milena/doc/white-paper.tex b/milena/doc/white-paper.tex
index 0120ad6..a4e9157 100644
--- a/milena/doc/white-paper.tex
+++ b/milena/doc/white-paper.tex
@@ -171,7 +171,7 @@ Olena's \textbf{official website}: \url{http://olena.lrde.epita.fr}
Olena's \textbf{Trac}: \url{http://trac.lrde.org/olena}
Milena's \textbf{documentation}:
-\url{http://www.lrde.epita.fr/dload/doc/milena/user-refman-html}
+\url{http://www.lrde.epita.fr/dload/olena/latest/doc/milena/user-refman-html}
%
\medskip
diff --git a/milena/mln/canvas/browsing/backdiagonal2d.hh b/milena/mln/canvas/browsing/backdiagonal2d.hh
index 2648f97..57f5a35 100644
--- a/milena/mln/canvas/browsing/backdiagonal2d.hh
+++ b/milena/mln/canvas/browsing/backdiagonal2d.hh
@@ -58,26 +58,27 @@ namespace mln
* - final(): Will be called at the end.
*
* F shall features : \n
- * { \n
- * --- as types: \n
- * I; \n
- * --- as attributes: \n
- * dim; \n
- * dir; // and test dir < dim \n
- * input; \n
- * p; \n
- * --- as methods: \n
- * void init(); \n
- * void next(); \n
- * void final(); \n
- * } \n
+ - As types:
+ + I;
+ - As attributes:
+ + dim;
+ + dir; // and test dir < dim
+ + input;
+ + p;
+ - As methods:
+ + void init();
+ + void next();
+ + void final();
+ \endverbatim
*
* Example : \n
*
- * ------->
- * | 4 7 9
- * | 2 5 8
- * | 1 3 6
+ \verbatim
+ ------->
+ | 4 7 9
+ | 2 5 8
+ | 1 3 6
+ \endverbatim
*
* \ingroup modcanvasbrowsing
*/
diff --git a/milena/mln/canvas/browsing/diagonal2d.hh b/milena/mln/canvas/browsing/diagonal2d.hh
index 6f7501f..22108cf 100644
--- a/milena/mln/canvas/browsing/diagonal2d.hh
+++ b/milena/mln/canvas/browsing/diagonal2d.hh
@@ -57,27 +57,26 @@ namespace mln
* - final(): Will be called at the end.
*
* F shall features : \n
- * { \n
- * --- as types: \n
- * I; \n
- * --- as attributes: \n
- * dim; \n
- * dir; // and test dir < dim \n
- * input; \n
- * p; \n
- * --- as methods: \n
- * void init(); \n
- * void next(); \n
- * void final(); \n
- * } \n
+ - As types:
+ + I;
+ - As attributes:
+ + dim;
+ + dir; // and test dir < dim
+ + input;
+ + p;
+ - As methods:
+ + void init();
+ + void next();
+ + void final();
*
* Example : \n
*
- * | 1 3 6
- * | 2 5 8
- * | 4 7 9
- * L------>
- *
+ \verbatim
+ ------->
+ | 1 3 6
+ | 2 5 8
+ | 4 7 9
+ \endverbatim
*
* \ingroup modcanvasbrowsing
*/
diff --git a/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh b/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh
index 2bc2fc9..719fe15 100644
--- a/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh
+++ b/milena/mln/canvas/browsing/dir_struct_elt_incr_update.hh
@@ -64,24 +64,22 @@ namespace mln
* provided by the functor).
* - final() : Will be called at the end.
*
- * F shall features : \n
- * { \n
- * --- as types: \n
- * I; \n
- * --- as attributes: \n
- * dim; \n
- * dir; // and test dir < dim \n
- * input; \n
- * p; \n
- * length; \n
- * --- as methods: \n
- * void init(); \n
- * void init_line(); \n
- * void add_point(q) \n
- * void remove_point(q) \n
- * void next(); \n
- * void final(); \n
- * } \n
+ * F shall features : \n
+ - As types:
+ + I
+ - As attributes:
+ + dim
+ + dir // and test dir < dim
+ + input
+ + p
+ + length
+ - As methods:
+ + void init()
+ + void init_line()
+ + void add_point(q)
+ + void remove_point(q)
+ + void next()
+ + void final()
*
*
* \ingroup modcanvasbrowsing
diff --git a/milena/mln/canvas/browsing/directional.hh b/milena/mln/canvas/browsing/directional.hh
index 8caad7c..f6a9dcd 100644
--- a/milena/mln/canvas/browsing/directional.hh
+++ b/milena/mln/canvas/browsing/directional.hh
@@ -57,33 +57,33 @@ namespace mln
* - final(): Will be called at the end.
*
* F shall features : \n
- * { \n
- * --- as types: \n
- * I; \n
- * --- as attributes: \n
- * dim; \n
- * dir; // and test dir < dim \n
- * input; \n
- * p; \n
- * --- as methods: \n
- * void init(); \n
- * void next(); \n
- * void final(); \n
- * } \n
+ - As types:
+ + I
+ - As attributes:
+ + dim
+ + dir // and test dir < dim
+ + input
+ + p
+ - As methods:
+ + void init()
+ + void next()
+ + void final()
*
* Example : \n
*
- * 1 0 0
- * 2 0 0
- * 3 0 0
- *
- * 4 0 0
- * 5 0 0
- * 6 0 0
- *
- * 7 0 0
- * 8 0 0
- * 9 0 0
+ \verbatim
+ 1 0 0
+ 2 0 0
+ 3 0 0
+
+ 4 0 0
+ 5 0 0
+ 6 0 0
+
+ 7 0 0
+ 8 0 0
+ 9 0 0
+ \endverbatim
*
*
* \ingroup modcanvasbrowsing
diff --git a/milena/mln/canvas/browsing/fwd.hh b/milena/mln/canvas/browsing/fwd.hh
index 9c2800b..7309968 100644
--- a/milena/mln/canvas/browsing/fwd.hh
+++ b/milena/mln/canvas/browsing/fwd.hh
@@ -57,17 +57,15 @@ namespace mln
* - final(): Will be called at the end.
*
* F shall feature: \n
- * { \n
- * --- as typedef: \n
- * I; \n
- * --as attributes: \n
- * input; \n
- * p; \n
- * --- as method: \n
- * void init(); \n
- * void next(); \n
- * void final(); \n
- * } \n
+ - As typedef:
+ + I
+ - As attributes:
+ + input
+ + p
+ - As method:
+ + void init()
+ + void next()
+ + void final()
*
* \ingroup modcanvasbrowsing
*/
diff --git a/milena/mln/canvas/browsing/snake_fwd.hh b/milena/mln/canvas/browsing/snake_fwd.hh
index d40ad95..16c187b 100644
--- a/milena/mln/canvas/browsing/snake_fwd.hh
+++ b/milena/mln/canvas/browsing/snake_fwd.hh
@@ -49,9 +49,11 @@ namespace mln
* This canvas browse all the point of an image 'input' like
* this :
*
- * ------->
- * <------'
- * '------>
+ \verbatim
+ ------->
+ <------'
+ '------>
+ \endverbatim
*
* The fonctor should provide (In addition to 'input') four
* methods :
@@ -68,16 +70,14 @@ namespace mln
* Warning: This canvas works only on 2D.
*
* F shall feature: \n
- * { \n
- * --- as attributes: \n
- * input; \n
- * p; \n
- * --- as methods: \n
- * void init(); \n
- * void down(); \n
- * void fwd(); \n
- * void bkd(); \n
- * } \n
+ - As attributes:
+ + input
+ + p
+ - As methods:
+ + void init()
+ + void down()
+ + void fwd()
+ + void bkd()
*
*
* \ingroup modcanvasbrowsing
diff --git a/milena/mln/canvas/browsing/snake_generic.hh b/milena/mln/canvas/browsing/snake_generic.hh
index 7360dbe..980fec0 100644
--- a/milena/mln/canvas/browsing/snake_generic.hh
+++ b/milena/mln/canvas/browsing/snake_generic.hh
@@ -47,29 +47,27 @@ namespace mln
/*! \brief Multidimentional Browsing in a given-way.
*
* F shall feature: \n
- * { \n
- * --- as attributes: \n
- * input; \n
- * p; \n
- * --- as methods: \n
- * void init(); \n
- * void *() moves[]; \n
- * dpsite dps[]; \n
- * } \n
+ - As attributes:
+ + input
+ + p
+ - As methods:
+ + void init()
+ + void *() moves[]
+ + dpsite dps[]
*
- * init is called before browsing
+ * init() is called before browsing
*
* The snake follow dimension using the delta point site of dps.
- * dps[0] = delta psite following the global dimension (forward)
- * dps[1] = delta psite following the 2nd dimension to follow (forward).
- * dps[2] = delta psite following the 2nd dimension to follow (backward).
- * dps[3] = delta psite following the 3nd dimension to follow (forward).
- * dps[3] = delta psite following the 3nd dimension to follow (backward).
+ * - dps[0] = delta psite following the global dimension (forward)
+ * - dps[1] = delta psite following the 2nd dimension to follow (forward).
+ * - dps[2] = delta psite following the 2nd dimension to follow (backward).
+ * - dps[3] = delta psite following the 3nd dimension to follow (forward).
+ * - dps[3] = delta psite following the 3nd dimension to follow (backward).
*
- * moves contains pointer to f's members. These merbers will be call in each time
- * the snake progress in the correct dimension :
- *
- * moves[i] is called at each move following the delta psite dps[i]
+ * moves contains pointer to f's members. These members will be
+ * called each time the snake progress in the correct dimension:
+ * moves[i] is called at each move following the delta psite
+ * dps[i].
*
*
* \ingroup modcanvasbrowsing
diff --git a/scribo/doc/Doxyfile.in b/scribo/doc/Doxyfile.in
index dd1bf26..b215839 100644
--- a/scribo/doc/Doxyfile.in
+++ b/scribo/doc/Doxyfile.in
@@ -1,4 +1,5 @@
-# Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+# Copyright (C) 2011, 2012 EPITA Research and Development Laboratory
+# (LRDE)
#
# This file is part of Olena.
#
@@ -34,7 +35,7 @@ INLINE_INHERITED_MEMB = YES
FULL_PATH_NAMES = NO
STRIP_FROM_PATH = @top_srcdir@/scribo
STRIP_FROM_INC_PATH =
-SHORT_NAMES = YES
+SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
@@ -77,7 +78,6 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO # Disabled for light doc
-SHOW_DIRECTORIES = NO # Disabled for light doc
SHOW_FILES = NO # Disabled for light doc
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
@@ -124,8 +124,8 @@ INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
INPUT_ENCODING = ISO-8859-1
-CITE_BIB_FILES = @abs_top_srcdir@/doc/doc.bib \
- @abs_top_srcdir@/doc/olena.bib
+CITE_BIB_FILES = @abs_top_srcdir@/doc/doc.bib \
+ @abs_top_srcdir@/doc/olena.bib
LATEX_BIB_STYLE = plain
#---------------------------------------------------------------------------
# configuration options related to source browsing
@@ -152,9 +152,9 @@ HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = @top_srcdir@/doc/header.html
HTML_FOOTER = @top_srcdir@/doc/subdoc_footer.html
-HTML_STYLESHEET = @top_srcdir@/doc/doxygen.css
+HTML_STYLESHEET =
+HTML_EXTRA_STYLESHEET = @top_srcdir@/doc/doc.css
LAYOUT_FILE = @top_srcdir@/scribo/doc/DoxygenLayout.xml
-HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
--
1.7.2.5
1
0
* mln/world/kn/compute_tree_of_shapes.hh: Use kn::debug::println
for printing debug.
* mln/world/kn/internal/display.hh: Remove.
---
milena/ChangeLog | 9 +
milena/mln/world/kn/compute_tree_of_shapes.hh | 75 ++----
milena/mln/world/kn/internal/display.hh | 320 -------------------------
3 files changed, 30 insertions(+), 374 deletions(-)
delete mode 100644 milena/mln/world/kn/internal/display.hh
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 4d9dc1a..cafb263 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,14 @@
2012-11-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Remove kn::internal::display.
+
+ * mln/world/kn/compute_tree_of_shapes.hh: Use kn::debug::println
+ for printing debug.
+
+ * mln/world/kn/internal/display.hh: Remove.
+
+2012-11-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* mln/world/kn/compute_tree_of_shapes.hh: Fix tree
canonicalization.
diff --git a/milena/mln/world/kn/compute_tree_of_shapes.hh b/milena/mln/world/kn/compute_tree_of_shapes.hh
index 8fe5073..4a3b226 100644
--- a/milena/mln/world/kn/compute_tree_of_shapes.hh
+++ b/milena/mln/world/kn/compute_tree_of_shapes.hh
@@ -48,7 +48,7 @@
// FIXME: to be removed or disabled.
-# include <mln/world/kn/internal/display.hh>
+# include <mln/world/kn/debug/println.hh>
namespace mln
@@ -114,7 +114,7 @@ namespace mln
P find_root(T& zpar, P x);
- T union_find(const Array_P& R, display& dsp);
+ T union_find(const util::tree_of_shapes<I>& t);
void priority_push(q_type& q, const P& p, const I& F);
P priority_pop(q_type& q);
@@ -125,8 +125,7 @@ namespace mln
EV level_next_to_lcur(q_type& q);
- void sort(const Image<I>& F_, util::tree_of_shapes<I>& t,
- display& dsp);
+ void sort(const Image<I>& F_, util::tree_of_shapes<I>& t);
void canonicalize_tree(util::tree_of_shapes<I>& t);
@@ -183,10 +182,10 @@ namespace mln
template <typename I, typename IV>
typename compute_tree_of_shapes_t<I,IV>::T
- compute_tree_of_shapes_t<I,IV>::union_find(const Array_P& R,
- display& dsp)
+ compute_tree_of_shapes_t<I,IV>::union_find(const util::tree_of_shapes<I>& t)
// with balancing
{
+ const Array_P& R = t.R;
T zpar(D), parent(D);
U rank(D), last(D);
mln_ch_value(I,bool) done(D);
@@ -218,12 +217,13 @@ namespace mln
}
done(p) = true;
- if (dsp.level_changes_at(i))
+ if (t.level_changes_at(i))
{
- std::cout << "union-find: done with level " << dsp.level(p) << std::endl;
- //dsp.show(done);
+ std::cout << "union-find: done with level " << t.level(p) << std::endl;
+ kn::debug::println(done);
}
}
+
return parent;
}
@@ -358,7 +358,7 @@ namespace mln
template <typename I, typename IV>
void
compute_tree_of_shapes_t<I,IV>::sort(const Image<I>& F_,
- util::tree_of_shapes<I>& t, display& dsp)
+ util::tree_of_shapes<I>& t)
{
trace::entering("mln::world::kn::sort");
mln_precondition(exact(F_).is_valid());
@@ -403,7 +403,7 @@ namespace mln
if (q.is_empty_at(lcur))
{
std::cout << "sort: done with level " << lcur << std::endl;
- dsp.show(done);
+ kn::debug::println(done);
}
}
while (i != N);
@@ -429,43 +429,6 @@ namespace mln
if (Fb(parent(q)) == Fb(q))
parent(p) = parent(q);
}
-
- // mln_ch_value(I,bool) show(D);
- // for (unsigned i = 0; i <= N - 1; ++i)
- // {
- // P p = R[i];
- // show(p) = k2::is_primary_2_face(p) || t.is_representative(p);
- // }
-
- // for (unsigned i = 0; i <= N - 1; ++i)
- // {
- // P p = R[i]; // p goes from root to leaves
- // if (! show(p))
- // continue;
- // P q = parent(p);
-
- // if (show(q) == false) // skip node q
- // {
- // if (parent(q) == q) // q cannot be root
- // std::abort();
-
- // P r = parent(q); // new representative
- // if (p != r) // if p is a repr node, do nothing
- // parent(p) = r;
- // }
- // else
- // if (Fb(q) == Fb(p) && k2::is_primary_2_face(p) && ! k2::is_primary_2_face(q))
- // {
- // show(q) = false;
-
- // if (parent(q) == q) // q is root
- // parent(p) = p; // p is the new root
- // else
- // parent(p) = parent(q); // new parent of the representative
- // parent(q) = p; // the new representative is p, stored as q's parent
- // }
- // }
- // t.show = show;
}
@@ -492,10 +455,9 @@ namespace mln
util::tree_of_shapes<I> t;
- display_in_K2<util::tree_of_shapes<I> > dsp(t, std::cout);
- sort(F, t, dsp);
+ sort(F, t);
- t.parent = union_find(t.R, dsp);
+ t.parent = union_find(t);
canonicalize_tree(t);
return t;
@@ -521,10 +483,9 @@ namespace mln
util::tree_of_shapes<I> t;
- display_in_K2<util::tree_of_shapes<I> > dsp(t, std::cout);
- sort(F, t, dsp);
+ sort(F, t);
- t.parent = union_find(t.R, dsp);
+ t.parent = union_find(t);
canonicalize_tree(t);
return t;
@@ -538,14 +499,20 @@ namespace mln
// Each face's parent is a representative.
for (unsigned i = 0; i <= tree.R.size() - 1; ++i)
if (!tree.is_representative(tree.parent(tree.R[i])))
+ {
+ mln_assertion(false);
return false;
+ }
// Checking that the parent of a representative face is a parent.
mln_piter(I) p(tree.Fb.domain());
for_all(p)
if (tree.is_representative(p) && !tree.is_root(p))
if (tree.level(p) == tree.level(tree.parent(p)))
+ {
+ mln_assertion(false);
return false;
+ }
return true;
}
diff --git a/milena/mln/world/kn/internal/display.hh b/milena/mln/world/kn/internal/display.hh
deleted file mode 100644
index efa0b59..0000000
--- a/milena/mln/world/kn/internal/display.hh
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
-//
-// This file is part of Olena.
-//
-// Olena is free software: you can redistribute it and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, version 2 of the License.
-//
-// Olena is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Olena. If not, see <http://www.gnu.org/licenses/>.
-//
-// As a special exception, you may use this file as part of a free
-// software project without restriction. Specifically, if other files
-// instantiate templates or use macros or inline functions from this
-// file, or you compile this file and link it with other files to produce
-// an executable, this file does not by itself cause the resulting
-// executable to be covered by the GNU General Public License. This
-// exception does not however invalidate any other reasons why the
-// executable file might be covered by the GNU General Public License.
-
-/// \file
-///
-/// \brief Helpers to display tree of shapes.
-
-#ifndef MLN_WORLD_KN_INTERNAL_DISPLAY_HH
-# define MLN_WORLD_KN_INTERNAL_DISPLAY_HH
-
-# include <sstream>
-# include <mln/world/kn/face_dim.hh>
-# include <mln/world/k2/is_primary_2_face.hh>
-# include <mln/world/kn/is_1_face_horizontal.hh>
-# include <mln/world/kn/is_1_face_vertical.hh>
-
-
-namespace mln
-{
-
- namespace world
- {
-
- namespace kn
- {
-
- namespace internal
- {
-
-
- struct display
- {
- virtual bool is_on() const = 0;
- virtual std::string level(const point2d& p) = 0;
- virtual bool level_changes_at(unsigned i) const = 0;
- virtual void show(const image2d<bool>& input) = 0;
- virtual ~display();
- };
-
-
- struct display_off : public display
- {
- virtual bool is_on() const;
- virtual std::string level(const point2d&);
- virtual bool level_changes_at(unsigned) const;
- virtual void show(const image2d<bool>&);
- };
-
-
- template <typename Tree>
- struct display_on : public display
- {
- const Tree& t;
- std::ostream& ostr;
-
- display_on(const Tree& t, std::ostream& ostr);
- virtual bool is_on() const;
- virtual std::string level(const point2d& p);
- virtual bool level_changes_at(unsigned i) const;
- virtual void print_p(const point2d& p) = 0;
- virtual void show(const image2d<bool>& input);
- };
-
-
-
- template <typename Tree>
- struct display_in_D : public display_on<Tree>
- {
- typedef display_on<Tree> super;
- using super::ostr;
- using super::t;
-
- display_in_D(const Tree& t, std::ostream& ostr = std::cout);
- virtual void print_p(const point2d& p);
- };
-
-
-
- template <typename Tree>
- struct display_in_K1 : public display_on<Tree>
- {
- typedef display_on<Tree> super;
- using super::ostr;
- using super::t;
-
- display_in_K1(const Tree& t, std::ostream& ostr = std::cout);
- virtual void print_p(const point2d& p);
- };
-
-
-
- template <typename Tree>
- struct display_in_K2 : public display_on<Tree>
- {
- typedef display_on<Tree> super;
- using super::ostr;
- using super::t;
-
- display_in_K2(const Tree& t, std::ostream& ostr = std::cout);
- virtual void print_p(const point2d& p);
- };
-
-
-# ifndef MLN_INCLUDE_ONLY
-
- // display
-
- inline
- display::~display()
- {
- }
-
-
- // display_off
-
- inline
- bool
- display_off::is_on() const
- {
- return false;
- }
-
- inline
- std::string
- display_off::level(const point2d&)
- {
- return "";
- }
-
- inline
- bool
- display_off::level_changes_at(unsigned) const
- {
- return false;
- }
-
- inline
- void
- display_off:: show(const image2d<bool>&)
- {
- }
-
-
- // display_on
-
- template <typename Tree>
- display_on<Tree>::display_on(const Tree& t,
- std::ostream& ostr)
- : t(t), ostr(ostr)
- {
- }
-
- template <typename Tree>
- bool
- display_on<Tree>::is_on() const
- {
- return true;
- }
-
- template <typename Tree>
- std::string
- display_on<Tree>::level(const point2d& p)
- {
- std::ostringstream s;
- s << t.level(p);
- return s.str();
- }
-
- template <typename Tree>
- bool
- display_on<Tree>::level_changes_at(unsigned i) const
- {
- return t.level_changes_at(i);
- }
-
- template <typename Tree>
- void
- display_on<Tree>::show(const image2d<bool>& input)
- {
- box2d dom = input.domain();
- const short
- min_row = dom.pmin().row(),
- max_row = dom.pmax().row(),
- min_col = dom.pmin().col(),
- max_col = dom.pmax().col();
-
- point2d p;
- short& row = p.row();
- short& col = p.col();
-
- char bdr = '#';
-
- for (col = min_col; col <= max_col + 2; ++col)
- ostr << bdr << ' ';
- ostr << std::endl;
-
- for (row = min_row; row <= max_row; ++row)
- {
- ostr << bdr;
- for (col = min_col; col <= max_col; ++col)
- if (input(p))
- print_p(p);
- else
- ostr << " ";
- ostr << ' ' << bdr << std::endl;
- }
-
- for (col = min_col; col <= max_col + 2; ++col)
- ostr << bdr << ' ';
- ostr << std::endl
- << std::endl;
- }
-
-
- // display_in_D
-
- template <typename Tree>
- display_in_D<Tree>::display_in_D(const Tree& t,
- std::ostream& ostr)
- : super(t, ostr)
- {
- }
-
- template <typename Tree>
- void
- display_in_D<Tree>::print_p(const point2d& p)
- {
- ostr << " O";
- }
-
-
- // display_in_K1
-
- template <typename Tree>
- display_in_K1<Tree>::display_in_K1(const Tree& t,
- std::ostream& ostr)
- : super(t, ostr)
- {
- }
-
- template <typename Tree>
- void
- display_in_K1<Tree>::print_p(const point2d& p)
- {
- switch (face_dim(p))
- {
- case 0:
- ostr << " +";
- break;
- case 1:
- ostr << (kn::is_1_face_horizontal(p) ? " -" : " |");
- break;
- case 2:
- ostr << " O";
- break;
- }
- }
-
-
- // display_in_K2
-
- template <typename Tree>
- display_in_K2<Tree>::display_in_K2(const Tree& t,
- std::ostream& ostr)
- : super(t, ostr)
- {
- }
-
- template <typename Tree>
- void
- display_in_K2<Tree>::print_p(const point2d& p)
- {
- switch (face_dim(p))
- {
- case 0:
- ostr << " +";
- break;
- case 1:
- ostr << (kn::is_1_face_horizontal(p) ? " -" : " |");
- break;
- case 2:
- ostr << (k2::is_primary_2_face(p) ? " O" : " x");
- break;
- }
- }
-
-# endif // ! MLN_INCLUDE_ONLY
-
- } // end of namespace mln::world::kn::internal
-
- } // end of namespace mln::world::kn
-
- } // end of namespace mln::world
-
-} // end of namespace mln
-
-
-#endif // ! MLN_WORLD_KN_INTERNAL_DISPLAY_HH
--
1.7.2.5
1
0

olena-2.0-182-g4d09ba5 mln/world/kn/compute_tree_of_shapes.hh: Fix tree canonicalization.
by Guillaume Lazzara 04 Jan '13
by Guillaume Lazzara 04 Jan '13
04 Jan '13
---
milena/ChangeLog | 5 +
milena/mln/world/kn/compute_tree_of_shapes.hh | 99 +++++++++++++++---------
2 files changed, 67 insertions(+), 37 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 3c91081..4d9dc1a 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/world/kn/compute_tree_of_shapes.hh: Fix tree
+ canonicalization.
+
2012-11-22 Guillaume Lazzara <z(a)lrde.epita.fr>
Small fixes.
diff --git a/milena/mln/world/kn/compute_tree_of_shapes.hh b/milena/mln/world/kn/compute_tree_of_shapes.hh
index 90007ac..8fe5073 100644
--- a/milena/mln/world/kn/compute_tree_of_shapes.hh
+++ b/milena/mln/world/kn/compute_tree_of_shapes.hh
@@ -221,7 +221,7 @@ namespace mln
if (dsp.level_changes_at(i))
{
std::cout << "union-find: done with level " << dsp.level(p) << std::endl;
- dsp.show(done);
+ //dsp.show(done);
}
}
return parent;
@@ -430,42 +430,42 @@ namespace mln
parent(p) = parent(q);
}
- mln_ch_value(I,bool) show(D);
- for (unsigned i = 0; i <= N - 1; ++i)
- {
- P p = R[i];
- show(p) = k2::is_primary_2_face(p) || t.is_representative(p);
- }
-
- for (unsigned i = 0; i <= N - 1; ++i)
- {
- P p = R[i]; // p goes from root to leaves
- if (! show(p))
- continue;
- P q = parent(p);
-
- if (show(q) == false) // skip node q
- {
- if (parent(q) == q) // q cannot be root
- std::abort();
-
- P r = parent(q); // new representative
- if (p != r) // if p is a repr node, do nothing
- parent(p) = r;
- }
- else
- if (Fb(q) == Fb(p) && k2::is_primary_2_face(p) && ! k2::is_primary_2_face(q))
- {
- show(q) = false;
-
- if (parent(q) == q) // q is root
- parent(p) = p; // p is the new root
- else
- parent(p) = parent(q); // new parent of the representative
- parent(q) = p; // the new representative is p, stored as q's parent
- }
- }
- t.show = show;
+ // mln_ch_value(I,bool) show(D);
+ // for (unsigned i = 0; i <= N - 1; ++i)
+ // {
+ // P p = R[i];
+ // show(p) = k2::is_primary_2_face(p) || t.is_representative(p);
+ // }
+
+ // for (unsigned i = 0; i <= N - 1; ++i)
+ // {
+ // P p = R[i]; // p goes from root to leaves
+ // if (! show(p))
+ // continue;
+ // P q = parent(p);
+
+ // if (show(q) == false) // skip node q
+ // {
+ // if (parent(q) == q) // q cannot be root
+ // std::abort();
+
+ // P r = parent(q); // new representative
+ // if (p != r) // if p is a repr node, do nothing
+ // parent(p) = r;
+ // }
+ // else
+ // if (Fb(q) == Fb(p) && k2::is_primary_2_face(p) && ! k2::is_primary_2_face(q))
+ // {
+ // show(q) = false;
+
+ // if (parent(q) == q) // q is root
+ // parent(p) = p; // p is the new root
+ // else
+ // parent(p) = parent(q); // new parent of the representative
+ // parent(q) = p; // the new representative is p, stored as q's parent
+ // }
+ // }
+ // t.show = show;
}
@@ -530,6 +530,27 @@ namespace mln
return t;
}
+
+ template <typename I>
+ bool
+ is_tree_canonicalized(const util::tree_of_shapes<I>& tree)
+ {
+ // Each face's parent is a representative.
+ for (unsigned i = 0; i <= tree.R.size() - 1; ++i)
+ if (!tree.is_representative(tree.parent(tree.R[i])))
+ return false;
+
+ // Checking that the parent of a representative face is a parent.
+ mln_piter(I) p(tree.Fb.domain());
+ for_all(p)
+ if (tree.is_representative(p) && !tree.is_root(p))
+ if (tree.level(p) == tree.level(tree.parent(p)))
+ return false;
+
+ return true;
+ }
+
+
} // end of namespace mln::world::kn::internal
@@ -548,6 +569,8 @@ namespace mln
util::tree_of_shapes<I>
t = internal::compute_tree_of_shapes_t<I,IV>()(exact(F), inter, p_infty);
+ mln_postcondition(internal::is_tree_canonicalized(t));
+
trace::exiting("mln::world::kn::compute_tree_of_shapes");
return t;
}
@@ -566,6 +589,8 @@ namespace mln
util::tree_of_shapes<I>
t = internal::compute_tree_of_shapes_t<I,IV>()(exact(F), inter, p_infty, l_inf);
+ mln_postcondition(internal::is_tree_canonicalized(t));
+
trace::exiting("mln::world::kn::compute_tree_of_shapes");
return t;
}
--
1.7.2.5
1
0
* mln/world/kn/compute_tree_of_shapes.hh: Add a missing include.
* mln/world/kn/debug/println.hh: Check value type of the input
image.
* mln/world/kn/hqueue.hh: Remove from namespace internal.
---
milena/ChangeLog | 11 ++
milena/mln/world/kn/compute_tree_of_shapes.hh | 1 +
milena/mln/world/kn/debug/println.hh | 2 +
milena/mln/world/kn/hqueue.hh | 197 ++++++++++++-------------
4 files changed, 110 insertions(+), 101 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index d9f6a99..3c91081 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,14 @@
+2012-11-22 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * mln/world/kn/compute_tree_of_shapes.hh: Add a missing include.
+
+ * mln/world/kn/debug/println.hh: Check value type of the input
+ image.
+
+ * mln/world/kn/hqueue.hh: Remove from namespace internal.
+
2012-11-12 Guillaume Lazzara <z(a)lrde.epita.fr>
Improve initialization of 2-faces in borders.
diff --git a/milena/mln/world/kn/compute_tree_of_shapes.hh b/milena/mln/world/kn/compute_tree_of_shapes.hh
index 9c686f2..90007ac 100644
--- a/milena/mln/world/kn/compute_tree_of_shapes.hh
+++ b/milena/mln/world/kn/compute_tree_of_shapes.hh
@@ -44,6 +44,7 @@
# include <mln/world/kn/hqueue.hh>
# include <mln/util/tree_of_shapes.hh>
# include <mln/world/kn/is_2_face.hh>
+# include <mln/world/k2/is_primary_2_face.hh>
// FIXME: to be removed or disabled.
diff --git a/milena/mln/world/kn/debug/println.hh b/milena/mln/world/kn/debug/println.hh
index 6580aa5..ce31c8c 100644
--- a/milena/mln/world/kn/debug/println.hh
+++ b/milena/mln/world/kn/debug/println.hh
@@ -106,6 +106,8 @@ namespace mln
{
const I& ima = exact(ima_);
const B& bbox = exact(bbox_);
+ typedef mln_value(I) V;
+ mlc_is(V,bool)::check();
mln_precondition(ima.is_valid());
mln_precondition(I::site::dim == 2);
mln_precondition(bbox.is_valid());
diff --git a/milena/mln/world/kn/hqueue.hh b/milena/mln/world/kn/hqueue.hh
index fe29376..dc2b365 100644
--- a/milena/mln/world/kn/hqueue.hh
+++ b/milena/mln/world/kn/hqueue.hh
@@ -23,8 +23,8 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef MLN_WORLD_KN_INTERNAL_HQUEUE_HH
-# define MLN_WORLD_KN_INTERNAL_HQUEUE_HH
+#ifndef MLN_WORLD_KN_HQUEUE_HH
+# define MLN_WORLD_KN_HQUEUE_HH
/// \file
/// \brief Class for hierarchical queues.
@@ -43,118 +43,113 @@ namespace mln
namespace kn
{
- namespace internal
+ /// \internal
+ /// \brief Class for hierarchical queues.
+ template <typename T, typename P>
+ class hqueue
{
+ public:
+ hqueue();
+ hqueue(const value::interval<P>& inter);
+ hqueue(const P& first, const P& last);
- /// \internal
- /// \brief Class for hierarchical queues.
- template <typename T, typename P>
- class hqueue
- {
- public:
- hqueue();
- hqueue(const value::interval<P>& inter);
- hqueue(const P& first, const P& last);
+ unsigned nelements() const;
- unsigned nelements() const;
+ bool is_empty() const;
+ bool is_empty_at(const P& bucket) const;
- bool is_empty() const;
- bool is_empty_at(const P& bucket) const;
+ void push(const T& t, const P& bucket);
+ T pop(const P& bucket);
- void push(const T& t, const P& bucket);
- T pop(const P& bucket);
+ // FIXME: add some reserve strategies...
- // FIXME: add some reserve strategies...
-
- private:
- std::vector< internal::queue_<T> > v_;
- value::interval<P> inter_;
- unsigned n_;
- };
+ private:
+ std::vector< internal::queue_<T> > v_;
+ value::interval<P> inter_;
+ unsigned n_;
+ };
# ifndef MLN_INCLUDE_ONLY
- template <typename T, typename P>
- hqueue<T,P>::hqueue()
- {
- n_ = 0;
- }
-
- template <typename T, typename P>
- hqueue<T,P>::hqueue(const value::interval<P>& inter)
- {
- v_.resize(inter.nelements());
- inter_ = inter;
- n_ = 0;
- }
-
- template <typename T, typename P>
- hqueue<T,P>::hqueue(const P& first, const P& last)
- {
- v_.resize(inter_.nelements());
- inter_ = value::interval<P>(first, last);
- n_ = 0;
- }
-
- template <typename T, typename P>
- unsigned
- hqueue<T,P>::nelements() const
- {
- return n_;
- }
-
- template <typename T, typename P>
- bool
- hqueue<T,P>::is_empty_at(const P& bucket) const
- {
- unsigned i = inter_.index_of(bucket);
- mln_precondition(i < v_.size());
- return v_[i].is_empty();
- }
-
- template <typename T, typename P>
- bool
- hqueue<T,P>::is_empty() const
- {
- return n_ == 0;
- }
-
- template <typename T, typename P>
- void
- hqueue<T,P>::push(const T& t, const P& bucket)
- {
- unsigned i = inter_.index_of(bucket);
- mln_precondition(i < v_.size());
- v_[i].push(t);
- }
-
- template <typename T, typename P>
- T
- hqueue<T,P>::pop(const P& bucket)
- {
- mln_precondition(! is_empty_at(bucket));
- unsigned i = inter_.index_of(bucket);
- mln_precondition(i < v_.size());
- return v_[i].pop();
- }
-
- // template <typename T, typename P>
- // std::ostream&
- // operator<<(std::ostream& ostr, const hqueue<T,P>& q)
- // {
- // unsigned n = q.size();
- // ostr << '(';
- // for (unsigned i = 0; i < n; ++i)
- // ostr << q.v_[i] << (i + 1 == n ? "" : ", ");
- // return ostr << ')';
- // }
+ template <typename T, typename P>
+ hqueue<T,P>::hqueue()
+ {
+ n_ = 0;
+ }
+ template <typename T, typename P>
+ hqueue<T,P>::hqueue(const value::interval<P>& inter)
+ {
+ v_.resize(inter.nelements());
+ inter_ = inter;
+ n_ = 0;
+ }
-# endif // ! MLN_INCLUDE_ONLY
+ template <typename T, typename P>
+ hqueue<T,P>::hqueue(const P& first, const P& last)
+ {
+ v_.resize(inter_.nelements());
+ inter_ = value::interval<P>(first, last);
+ n_ = 0;
+ }
+
+ template <typename T, typename P>
+ unsigned
+ hqueue<T,P>::nelements() const
+ {
+ return n_;
+ }
+
+ template <typename T, typename P>
+ bool
+ hqueue<T,P>::is_empty_at(const P& bucket) const
+ {
+ unsigned i = inter_.index_of(bucket);
+ mln_precondition(i < v_.size());
+ return v_[i].is_empty();
+ }
+
+ template <typename T, typename P>
+ bool
+ hqueue<T,P>::is_empty() const
+ {
+ return n_ == 0;
+ }
- } // end of namespace mln::world::kn::internal
+ template <typename T, typename P>
+ void
+ hqueue<T,P>::push(const T& t, const P& bucket)
+ {
+ unsigned i = inter_.index_of(bucket);
+ mln_precondition(i < v_.size());
+ v_[i].push(t);
+ }
+
+ template <typename T, typename P>
+ T
+ hqueue<T,P>::pop(const P& bucket)
+ {
+ mln_precondition(! is_empty_at(bucket));
+ unsigned i = inter_.index_of(bucket);
+ mln_precondition(i < v_.size());
+ return v_[i].pop();
+ }
+
+ // template <typename T, typename P>
+ // std::ostream&
+ // operator<<(std::ostream& ostr, const hqueue<T,P>& q)
+ // {
+ // unsigned n = q.size();
+ // ostr << '(';
+ // for (unsigned i = 0; i < n; ++i)
+ // ostr << q.v_[i] << (i + 1 == n ? "" : ", ");
+ // return ostr << ')';
+ // }
+
+
+# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln::world::kn
@@ -162,4 +157,4 @@ namespace mln
} // end of namespace mln
-#endif // ! MLN_WORLD_KN_INTERNAL_HQUEUE_HH
+#endif // ! MLN_WORLD_KN_HQUEUE_HH
--
1.7.2.5
1
0
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/newdoc has been updated
via bffe887ee94cd08a9667bf59a0ce33b7cd9229c5 (commit)
via 3a717026f04d96ae19d1d886f1c841968f458698 (commit)
from de2cb2343b67f0c639216179374880abdc090ca4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
bffe887 Fix .gitignore
3a71702 [WIP] Improve documentation
-----------------------------------------------------------------------
Summary of changes:
doc/Doxyfile.in | 14 +-
doc/DoxygenLayout.xml | 1 -
doc/bibliography.dox | 8 +-
doc/doc.css | 27 +
doc/doxygen.css | 644 +++++++++++++++-----
doc/footer.html | 2 +-
doc/header.html | 19 +-
doc/subdoc_footer.html | 16 +-
milena/doc/.gitignore | 4 +-
milena/doc/Doxyfile.in | 130 +++--
milena/doc/DoxygenLayout.xml | 7 +-
milena/doc/Makefile.am | 16 +-
milena/doc/demo.dox | 5 +
milena/doc/examples.dox | 7 +
milena/doc/footer.html | 27 +
milena/doc/white-paper.tex | 2 +-
milena/mln/canvas/browsing/backdiagonal2d.hh | 35 +-
milena/mln/canvas/browsing/diagonal2d.hh | 35 +-
.../canvas/browsing/dir_struct_elt_incr_update.hh | 34 +-
milena/mln/canvas/browsing/directional.hh | 48 +-
milena/mln/canvas/browsing/fwd.hh | 20 +-
milena/mln/canvas/browsing/snake_fwd.hh | 26 +-
milena/mln/canvas/browsing/snake_generic.hh | 36 +-
scribo/doc/Doxyfile.in | 14 +-
24 files changed, 802 insertions(+), 375 deletions(-)
create mode 100644 doc/doc.css
create mode 100644 milena/doc/demo.dox
create mode 100644 milena/doc/examples.dox
create mode 100644 milena/doc/footer.html
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/khalimsky has been updated
via ef5c21b243f3ef39ea22323313c1c6625b839366 (commit)
via e7ef72283909571efc19d4a215b8b7d8e3376e37 (commit)
via 714925b69b78e873880b7e5b67663cb8f97d8446 (commit)
via 463e9a6a68d609c5d7bec06fa2dd30aec3cb33ff (commit)
via 616b0b6d9dfa0ba0dd6b6d3d3336d135faff9878 (commit)
via 4fa59915ef298bcf75ea0c00ec5e43dd684bcd31 (commit)
via 734f1842938ec54761188470804349fcb695c538 (commit)
via 4d09ba5879b25a753eace0af21d167d94a117a09 (commit)
via d6bf15abd18b5c3bc86875557b32a6ae4d75177f (commit)
from a8acc5bfb4b222a5c84bc6bbff1fbb014ec4ecd8 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
ef5c21b mln/util/tree_of_shapes.hh: Extend structure for storing new tree canonicalizationss.
e7ef722 Add util::map.
714925b mln/inner_border/remove.hh: New.
463e9a6 Add new v2v functions.
616b0b6 Small fixes.
4fa5991 Make use of data::transform in arith::revert.
734f184 Remove kn::internal::display.
4d09ba5 mln/world/kn/compute_tree_of_shapes.hh: Fix tree canonicalization.
d6bf15a Small fixes.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 96 +++
milena/mln/arith/revert.hh | 97 +---
milena/mln/arith/revert.spe.hh | 84 ---
milena/mln/border/get.hh | 7 +
milena/mln/data/compute.hh | 5 +-
milena/mln/debug/println_with_border.hh | 30 +-
milena/mln/debug/println_with_border.spe.hh | 44 +-
milena/mln/fun/v2v/{abs.hh => ceil.hh} | 36 +-
milena/mln/fun/v2v/{abs.hh => floor.hh} | 35 +-
milena/mln/fun/{vv2v/span.hh => v2v/revert.hh} | 32 +-
milena/mln/inner_border/{extend.hh => remove.hh} | 30 +-
milena/mln/util/map.hh | 741 ++++++++++++++++++++
milena/mln/util/tree_of_shapes.hh | 36 +-
milena/mln/value/intsub.hh | 4 +-
.../k2/fill_non_primary_from_primary_2_faces.hh | 2 -
milena/mln/world/k2/immerse.hh | 12 +-
.../mln/world/k2/is_non_primary_2_face_center.hh | 5 +-
.../world/kn/border/adjust_duplicate_2_faces.hh | 2 +-
.../mln/world/kn/border/fill_1_from_aux_2_faces.hh | 17 +-
milena/mln/world/kn/compute_tree_of_shapes.hh | 104 ++--
milena/mln/world/kn/debug/println.hh | 2 +
milena/mln/world/kn/fill_0_from_1_faces.hh | 4 +-
milena/mln/world/kn/hqueue.hh | 197 +++---
milena/mln/world/kn/internal/display.hh | 320 ---------
milena/mln/world/kn/is_0_or_1_face.hh | 2 +-
milena/mln/world/kn/safe_cast.hh | 19 +-
milena/tests/util/Makefile.am | 2 +
.../compute_in_inner_border.cc => util/map.cc} | 47 +-
milena/tests/value/intsub.cc | 9 +
milena/tests/world/k2/un_immerse.cc | 126 +++-
30 files changed, 1364 insertions(+), 783 deletions(-)
delete mode 100644 milena/mln/arith/revert.spe.hh
copy milena/mln/fun/v2v/{abs.hh => ceil.hh} (76%)
copy milena/mln/fun/v2v/{abs.hh => floor.hh} (75%)
copy milena/mln/fun/{vv2v/span.hh => v2v/revert.hh} (72%)
copy milena/mln/inner_border/{extend.hh => remove.hh} (73%)
create mode 100644 milena/mln/util/map.hh
delete mode 100644 milena/mln/world/kn/internal/display.hh
copy milena/tests/{data/compute_in_inner_border.cc => util/map.cc} (63%)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0

olena-2.0-189-gef5c21b mln/util/tree_of_shapes.hh: Extend structure for storing new tree canonicalizationss.
by Guillaume Lazzara 04 Jan '13
by Guillaume Lazzara 04 Jan '13
04 Jan '13
---
milena/ChangeLog | 5 +++++
milena/mln/util/tree_of_shapes.hh | 36 +++++++++++++++++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index a6df4ca..b2a096f 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,10 @@
2013-01-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * mln/util/tree_of_shapes.hh: Extend structure for storing new
+ tree canonicalizationss.
+
+2013-01-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Add util::map.
* mln/util/map.hh,
diff --git a/milena/mln/util/tree_of_shapes.hh b/milena/mln/util/tree_of_shapes.hh
index c3b00e5..9bf978f 100644
--- a/milena/mln/util/tree_of_shapes.hh
+++ b/milena/mln/util/tree_of_shapes.hh
@@ -37,6 +37,8 @@ namespace mln
namespace util
{
+ enum Tags { None, Spurious, Noise };
+
template <typename I>
struct tree_of_shapes
{
@@ -45,15 +47,31 @@ namespace mln
typedef mln_equiv(V) EV;
I Fb;
+
+ // Default canonicalization.
std::vector<P> R;
mln_ch_value(I,P) parent;
- mln_ch_value(I,bool) show;
+
+ // 0-canonicalization.
+ std::vector<P> R0;
+ mln_ch_value(I,P) parent0;
+ // Attributes/tags for 0-representants.
+ std::vector<Tags> tag;
+
+ // 01-canonicalization.
+ std::vector<P> R01;
+ mln_ch_value(I,P) parent01;
+
V level(const P& p) const;
bool level_changes_at(unsigned i) const;
bool is_root(const P& p) const;
bool is_representative(const P& p) const;
+ bool is_0_representative(const P& p) const;
+
+ bool is_01_representative(const P& p) const;
+
};
@@ -91,6 +109,22 @@ namespace mln
return is_root(p) || Fb(parent(p)) != Fb(p);
}
+ template <typename I>
+ bool
+ tree_of_shapes<I>::is_0_representative(const P& p) const
+ {
+ return is_representative(p) && (Fb(p) == V(0));
+ }
+
+ template <typename I>
+ bool
+ tree_of_shapes<I>::is_01_representative(const P& p) const
+ {
+ return is_root(p)
+ || (Fb(p) == V(0) && Fb(parent(p)) != V(0))
+ || (Fb(p) != V(0) && Fb(parent(p)) == V(0));
+ }
+
# endif // ! MLN_INCLUDE_ONLY
--
1.7.2.5
1
0