
* doc/tutorial/doxyfile_tuto.local: new doxyfile. Generate only the tutorial. * doc/tutorial/figures/extend-1.ppm, * doc/tutorial/figures/extend-2.ppm, * doc/tutorial/figures/extend-3.ppm, * doc/tutorial/figures/extend-4.ppm, * doc/tutorial/figures/extend-5.ppm, * doc/tutorial/outputs/extend.txt: new reference files for the new example. * doc/tutorial/samples/Makefile.am, * doc/tutorial/samples/extend.cc: new example for the tutorial, related to the image extension. * doc/tutorial/samples/ima2d-rot.cc: use extended_to(). * doc/tutorial/tools/todoxygen.sh: support keyword subsubsection. * doc/tutorial/tutorial.tex: add more details about image extension. --- milena/ChangeLog | 25 +++ milena/doc/tutorial/doxyfile_tuto.local | 342 ++++++++++++++++++++++++++++++ milena/doc/tutorial/figures/extend-1.ppm | Bin 0 -> 12406 bytes milena/doc/tutorial/figures/extend-2.ppm | Bin 0 -> 16546 bytes milena/doc/tutorial/figures/extend-3.ppm | Bin 0 -> 16546 bytes milena/doc/tutorial/figures/extend-4.ppm | 7 + milena/doc/tutorial/figures/extend-5.ppm | Bin 0 -> 12406 bytes milena/doc/tutorial/samples/Makefile.am | 2 + milena/doc/tutorial/samples/extend.cc | 94 ++++++++ milena/doc/tutorial/samples/ima2d-rot.cc | 2 +- milena/doc/tutorial/tools/todoxygen.sh | 2 +- milena/doc/tutorial/tutorial.tex | 80 +++++++- 12 files changed, 545 insertions(+), 9 deletions(-) create mode 100644 milena/doc/tutorial/doxyfile_tuto.local create mode 100644 milena/doc/tutorial/figures/extend-1.ppm create mode 100644 milena/doc/tutorial/figures/extend-2.ppm create mode 100644 milena/doc/tutorial/figures/extend-3.ppm create mode 100644 milena/doc/tutorial/figures/extend-4.ppm create mode 100644 milena/doc/tutorial/figures/extend-5.ppm create mode 100644 milena/doc/tutorial/outputs/extend.txt create mode 100644 milena/doc/tutorial/samples/extend.cc diff --git a/milena/ChangeLog b/milena/ChangeLog index b2951e8..81868ae 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,3 +1,28 @@ +2009-02-24 Guillaume Lazzara <z@lrde.epita.fr> + + Update tutorial. + + * doc/tutorial/doxyfile_tuto.local: new doxyfile. Generate only the + tutorial. + + * doc/tutorial/figures/extend-1.ppm, + * doc/tutorial/figures/extend-2.ppm, + * doc/tutorial/figures/extend-3.ppm, + * doc/tutorial/figures/extend-4.ppm, + * doc/tutorial/figures/extend-5.ppm, + * doc/tutorial/outputs/extend.txt: new reference files for the new + example. + + * doc/tutorial/samples/Makefile.am, + * doc/tutorial/samples/extend.cc: new example for the tutorial, + related to the image extension. + + * doc/tutorial/samples/ima2d-rot.cc: use extended_to(). + + * doc/tutorial/tools/todoxygen.sh: support keyword subsubsection. + + * doc/tutorial/tutorial.tex: add more details about image extension. + 2009-02-23 Fabien Freling <fabien.freling@lrde.epita.fr> Add DICOM support. diff --git a/milena/doc/tutorial/doxyfile_tuto.local b/milena/doc/tutorial/doxyfile_tuto.local new file mode 100644 index 0000000..a026b2e --- /dev/null +++ b/milena/doc/tutorial/doxyfile_tuto.local @@ -0,0 +1,342 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Milena (Olena)" +PROJECT_NUMBER = "User documentation 1.0 $Id: ChangeLog 2542 2008-10-10 13:35:03Z ballas $" +OUTPUT_DIRECTORY = ./user/ +CREATE_SUBDIRS = YES +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../../../milena \ + ../../milena +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = YES +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = YES +HIDE_IN_BODY_DOCS = YES +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = YES +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = YES +SORT_GROUP_NAMES = YES +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.cc \ + *.hh \ + *.hxx \ + *.hcc +RECURSIVE = YES +EXCLUDE = user +EXCLUDE_SYMLINKS = YES +EXCLUDE_PATTERNS = *spe.hh +EXCLUDE_SYMBOLS = *::internal* +EXAMPLE_PATH = /lrde/stockholm/lazzara/svn/olena/git/oln/milena/doc/tutorial/samples \ + /lrde/stockholm/lazzara/svn/olena/git/oln/milena/doc/tutorial/outputs \ + /lrde/stockholm/lazzara/svn/olena/git/oln/milena/doc/tutorial/examples \ + /lrde/stockholm/lazzara/svn/olena/git/oln/milena/doc/examples \ + /lrde/stockholm/lazzara/svn/olena/git/build/milena/doc/tutorial/samples \ + /lrde/stockholm/lazzara/svn/olena/git/build/milena/doc/tutorial/outputs +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = /lrde/stockholm/lazzara/svn/olena/git/oln/milena/doc/tutorial/figures \ + /lrde/stockholm/lazzara/svn/olena/git/build/milena/doc/tutorial/figures \ + /lrde/stockholm/lazzara/svn/olena/git/oln/milena/img +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = YES +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = FRAME +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = YES +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = "mlc_unqualif(T)=typename mln::metal::unqualif<T>::ret" \ + "mln_piter(T)=typename T::piter" \ + "mln_fwd_piter(T)=typename T::fwd_piter" \ + "mln_bkd_piter(T)=typename T::bkd_piter" \ + "mln_qiter(T)=typename T::qiter" \ + "mln_fwd_qiter(T)=typename T::fwd_qiter" \ + "mln_bkd_qiter(T)=typename T::bkd_qiter" \ + "mln_niter(T)=typename T::niter" \ + "mln_fwd_niter(T)=typename T::fwd_niter" \ + "mln_bkd_niter(T)=typename T::bkd_niter" \ + "mln_viter(T)=typename T::viter" \ + "mln_fwd_viter(T)=typename T::fwd_viter" \ + "mln_bkd_viter(T)=typename T::bkd_viter" \ + "mln_result(T)=typename T::result" \ + "mln_enc(T)=typename T::enc" \ + "mln_value(T)=typename T::value" \ + "mln_qlf_value(T)=typename T::qlf_value" \ + "mln_pset(T)=typename T::pset" \ + "mln_sum(T)=typename mln::value::props<T>::sum" \ + "mln_vset(T)=typename T::vset" \ + "mln_rvalue(T)=typename T::rvalue" \ + "mln_lvalue(T)=typename T::lvalue" \ + "mln_mesh(T)=typename T::mesh" \ + "mln_coord(T)=typename T::coord" \ + "mln_site(T)=typename T::site" \ + "mln_psite(T)=typename T::psite" \ + "mln_dpsite(T)=typename T::dpsite" \ + "mln_accu_with(A, T)=typename A::template with< T >::ret" \ + "mln_trait_op_plus(L, R)=typename mln::trait::op::plus< L , R >::ret" \ + "mln_trait_op_minus(L, R)=typename mln::trait::op::minus< L , R >::ret" \ + "mln_trait_op_times(L, R)=typename mln::trait::op::times< L , R >::ret" \ + "mln_trait_op_div(L, R)=typename mln::trait::op::div< L , R >::ret" \ + "mln_trait_op_mod(L, R)=typename mln::trait::op::mod< L , R >::ret" \ + "mln_trait_op_uminus(T)=typename mln::trait::op::uminus< T >::ret" \ + "mln_ch_value(I, V)=typename mln::trait::ch_value< I, V >::ret" \ + "mlc_unqualif_(T)=mln::metal::unqualif<T>::ret" \ + "mln_piter_(T)=T::piter" \ + "mln_fwd_piter_(T)=T::fwd_piter" \ + "mln_bkd_piter_(T)=T::bkd_piter" \ + "mln_qiter_(T)=T::qiter" \ + "mln_fwd_qiter_(T)=T::fwd_qiter" \ + "mln_bkd_qiter_(T)=T::bkd_qiter" \ + "mln_niter_(T)=T::niter" \ + "mln_fwd_niter_(T)=T::fwd_niter" \ + "mln_bkd_niter_(T)=T::bkd_niter" \ + "mln_viter_(T)=T::viter" \ + "mln_fwd_viter_(T)=T::fwd_viter" \ + "mln_bkd_viter_(T)=T::bkd_viter" \ + "mln_result_(T)=T::result" \ + "mln_enc_(T)=T::enc" \ + "mln_value_(T)=T::value" \ + "mln_qlf_value_(T)=T::qlf_value" \ + "mln_pset_(T)=T::pset" \ + "mln_sum_(T)=mln::value::props<T>::sum" \ + "mln_vset_(T)=T::vset" \ + "mln_rvalue_(T)=T::rvalue" \ + "mln_lvalue_(T)=T::lvalue" \ + "mln_mesh_(T)=T::mesh" \ + "mln_coord_(T)=T::coord" \ + "mln_site_(T)=T::site" \ + "mln_psite_(T)=T::psite" \ + "mln_dpsite_(T)=T::dpsite" \ + "mln_accu_with_(A, T)=A::template with< T >::ret" \ + "mln_trait_op_plus_(L, R)=mln::trait::op::plus< L , R >::ret" \ + "mln_trait_op_minus_(L, R)=mln::trait::op::minus< L , R >::ret" \ + "mln_trait_op_times_(L, R)=mln::trait::op::times< L , R >::ret" \ + "mln_trait_op_div_(L, R)=mln::trait::op::div< L , R >::ret" \ + "mln_trait_op_mod_(L, R)=mln::trait::op::mod< L , R >::ret" \ + "mln_trait_op_uminus_(T)=mln::trait::op::uminus< T >::ret" \ + "mln_ch_value_(I, V)=typename mln::trait::ch_value< I, V >::ret" \ + "mln_ch_value(I, V)_=mln::trait::ch_value< I, V >::ret" \ + "mln_morpher_lvalue(I)=typename internal::morpher_lvalue_<I>::ret" \ + "mln_concrete(I)=typename mln::trait::concrete< I >::ret" \ + "mln_concrete_ch_value(I, V)=typename mln::trait::ch_value< typename mln::trait::concrete< I >::ret, V >::ret" \ + "mlc_const(T)=typename mln::metal::const_< T >::ret" \ + "mlc_const_return(T)=typename mln::metal::const_return_< T >::ret" \ + "mln_element(T)=typename T::element" \ + "mln_element_(T)=T::element" \ + "mln_delta(T)=typename T::delta" \ + "mln_delta_(T)=T::delta" \ + "mln_dpoint(T)=typename T::dpoint" \ + "mln_dpoint_(T)=T::dpoint" \ + "mln_point(T)=typename T::point" \ + "mln_point_(T)=T::point" \ + "mln_gradient_component(I)=typename mln::trait::ch_value< I, mln::value::props< typename I::value >::sum >::ret" \ + "mln_gradient(I)=mln::value::stack_image< I::point::dim, mln::trait::ch_value< I, mln::value::props< typename I::value >::sum >::ret >" +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/milena/doc/tutorial/figures/extend-1.ppm b/milena/doc/tutorial/figures/extend-1.ppm new file mode 100644 index 0000000000000000000000000000000000000000..ccc5f9e76fb35adf4fbedd54004c2b400ee122cf GIT binary patch literal 12406 zcmai4XH-+^y1u_>-FwbGa}@y_mMP9SIF61LlR!cZp_ATwLP!PDLjnl|M7lKTHc+Gp zDosFo?@EVIY=el-%sJ<-`|D;7e{$CT)*9CS@vd(_yzjH${eExxc0w+Eal*})Bj(5% zF&wrVQ|*Qkh&W<~+gbM?-Q4&wG14n%&Pe`PaTm$i9CwaX5W{fi%I*K<9pWG1=@!OO za2RqH-;E(=yP-I79FasC%@N1A1u~ctyHbf<?e=Y87|Q$97Z=XET{!>6Pe1?s#eYEl ze#wX#V{<BCxEen~JsSHMjfFt|W0XZ3V>2eX%oz@2lEawbu%MVpo_(D$#$}DN7{e^) zFp~krtXO5s2H}cPyqXZb8qZ%f@}QVz0;QcyX`?b<kSX0%S~rCX#W=3KPZf^Rh?Q4E z9wEaT{lg#og*x8dlP6fT2^M9NO`l=YrvA79-2Qkj7H!=Aq)hq<ojO9NLG`Se6*jYE z-4eZF5v?Z(Y$iSw(-=l*BT_m@lui=G{s_Gk3KZkG^4c6V%A{3z1l4&3HTj1%_=Y&% z-IFJov<W7Cibb7f(f_!Z0G~|p*b^M)IEyjHq>eFYqf~(1C4*ukHEuISwv{T~us=nD z2x_Y#oX~<LbrQ*)6lxcZ(a&T;F^(&5EW&XbuHsTatyfT^Us!`5fd2%II?iBBF{o1v z+6;{{#Q^w!oKBx$G40nVjWSB3j#9~vR`%otP3(qMxnYf2PnK*X3D-gVr_-cOVYm(w zxr<EhqR@s|f68AlPK~tlf8-VX*f*r!Cm3pXoI)C>(WYtC2|9g}!J480{69jajWSqc zEY2v6Hg4w+dhf3k(p6K8%@VU_k=PPNwnQ=1);}l9nrY0|a9kIeVt0O_2Y`>`f4wye zM=98{3xDu$^a*JI@+XrgDfCGSb&^J#qA{jGd#ay89VAmnDD+VZeT>c;r_dd(?8&nd z(V|+mVvJc!kgOTSHe(bN^M8x?*Y6nWgRpIQO5wF2;y#!o=1sEXeTM9{k+Ui$y*BgS zq(~g^?#a)5gSvtvhOxL20)CuK7$*ZFVK7$TqfH!4xjt5qGkvdQ@@^4S&ls6DN}>$n z$em%NXBa|P1Yk$lw7iu#&b*v6CuP2pF;`4Ns2<iKB;%kLW&btWzN_!kq`#y^&vCF* z6ztn%;rkoWP<)e5a0e!0AR=-IPZ%TM$4Epd=7lt_U!xyPNF2>fo4A!beYXIL8NgHR z<h#QO?LoLE|Hz(j5)`wnU@a+F3sTm+n6V(C&q)9~i{au)b@rqjfYT3L-N{vKX;`&z z|6xMJyA;7MApZ5<q0Iqd-64^^;n+buag+$K`&=OF7AtyGx?!tjx+Lf2{X!_Wrx;vE z2);9v(2OBG_KkQE3edAGWv(dLi!%EouovZ=MFkhChk5`(bw<!#;P@{uZ>LH|i4lco zeTIqHUs8nI=`tw378UXo9nlqv?+(KbM&d_s1SqCg7~Lb1^(o?p;tdnIX><1h@iSaf z{2&0=WUq<7k##=Uju1fntjXAG3eK{WwJhVTD7b5J0;nzeK_u-EitXlOg-6=t^s1`? zB|rNOlW^~?g6#}I{MVtv{>4ACHv&I|BMjp~{Q08(C~?13KB`j9WTh-t1Nd*x_6-#m zRCr(>Aj9u_MzjS3{J*B)+vJ=TDQ8v2Ta$6ORDc~#c11;hA7=KzPv~Pi12LtS0?ID< z4iRy0Eq4D)q0d|A9r`RFtSc1T7lE_$A0hzw4~e2jq|z~kVoVt~o0>RRk_pxGdhEsa z{BVOznRgLg<`L40!9y`CGNDb*Taj?qWc&>Uf1E{!Vz?(UDM(JQQZ=HBh2DK<5seUW zH_!Oo_P{*!3avo`@@;zvzAXg*Jc87Yr*$*9{d_>(w6)c3bTzJbHm$ZlUhi$*=xv7D zT8)X?(n~jV@_quD?+i1X^nzjt|Lq|-jAT0_nD&@IfM6c>fnpq2-de;XBtq_w0TovQ zA9@BqLIL`p)*$TjU~ESO=>>@~$P<l908zL4<o;4))oM%KMo;r*Z_7r1tD}`Yc}2$C z(n~h9@&O`M><Xv-^&%9*c82o~deU7y?P-VU>dAHsfMOh1-dZFhWMa0vU)d#eH4Ibj z3GzP%+Yy9)5lI<ja7F~8VF4gZFFh!;wLDsDtFv`9u68|J>jwCLNy^{UMQ`e4{UoZ$ z6@mZjB}XQEGVc(QeHg_&=*6<<d?!RD9#Eql|LdJ4dYFLC_};tZLO>0|-o;@Y@9xR% zn8=P`TpyX)M`3o;*h4Hf6tmKBce&x-O4EboCpEVAKLQDgnHO_k$BQ@g;w~J4?Br1( zPk>@LcIP|6C{A$pL8SQ#c|@y&VjNd~NfnP$2zh6`E3csKEodVu$nox;{LDY{MFgQ2 zN9`rC2btUs0-(w)R+r7+E?#<AvD#F<)>60D-T>9JWLCb`b5@n?r&LZ?N%2x!Jru)m zhST<4W4pj<&d6?=cFbUaVjNdKWXLAy_<}R2+gAhYkU<Sdfd8Ak!`d*|UM#f_PwOJF zr{ffk8usM5!kop5g5`U~OI0Pyb@q2r1;wm1+}qF#R?2eL+8(TSHEs;FKru8Y7<Jz@ zuB%rmnlq`>&svR+7<-de<B6&FM33OZ-z7(V%m*;3^9+3AjcGsx{oZ7G$)~gihC6E5 zlSiboS%dy%a^ie$=6rs}T+VeUX1@0ReB;A~+Iz36Z@+wWZ{ltR6tmIWvesJrdhq$y zNGoo?C*9c-ig}r0oUt0FlXO!_+6SIN4-l9d1bPr3@y;sT$%}#F>k;Ti6y~va$lse1 z*EF073LtOKYLruI&6HO6GR3l(owk^F1FC1fx^nJr+1#CqnWDU@vciShQYgmORy&(_ zW3jrlF*%vwgrGUYp_rGc#+ekuOp5(oXsZyI`>=oqu)t9w?p;dM_Dw)VsPjZOc%d86 z5x>`I?LF$e08sbGrLwU&<%~u<XHJ;2SYD;3LhZh~nLT?mXCgCeuHxoOZLzHt5K*(Y zvd6ER=S%W5NDBD?+<rmzOsB?ATlLc^x@oJ<?*D2;P$LpEW$zzSqCVsU{9lJa*TMZ8 zLvjCXO@5ypy{@4{bq)$-<MP-Um98^N|AcL*<C>tD{&?#|TH5m6TwBwf_161~O?RP~ zHi@Kx%$>ep8u2#|dy~mLgoI+Ill4={+DWT!(xR<FhCD!qJo65EMaBMdJ!+=_z`p^G zehl}s4`Tn@mHw$xu@D7_pCMlKge10uqj^eKS7Ia<7@!ZiC(_NA7py<Mx7Jd<+WK&@ z`5~0sZC~80Te&IWOtKTqe%X@`6f>C=Kar#xx9BF#>Uy8BS}#m9%FaLX{dLiYJiz{~ zM+DZx{O?}y{k0|aw`$cimk!lAE)chq<*gKDwqLCNJUjX%phuc1$Xux}TX|N!+;nI8 zX%&$FN?B$qnn>9XV>rR+_RM+24{B?|nlPE9AGcp-J@oEQw)7RBl;iGQc{$)AEU?xy z5Q^!e(T3>!UMjbn#OtN<dzgTls5nhFpwxVKR@5c_6S3k|c|KH6>vc<ZxUhn$du7tT z&Q!mv1nin&rDnz&|0+A-WmdvWdcxFoK#g<M{4qy9&!=Ra_AbBZZ{OFoaJ1vyJ-LTO z>7xm{h`cVUqKBgBBt=6pLbuRpcec`BTS7O^-!57KMf;75kvYNQO15FzY~Cs|CBgx< zvL{A0pPTT~&Ob9@HZx&5?N9jc<|*tMCi^tXJ`_BFV;;c){vV{$TOwFpBvB7V)Qp#B zT;o9bbB~9_{=`WQPkNqOuuxqx1Dc4tNlfD<LSCezPoHEw?L++X8dOiOUiT``Je!>` zn`P&3noduIVjNdK=Ef~V(Q|+BF1r+1g9xto3UR!<C%1(V+Oe!Y0=JjQxBM6?`8o`W z;hgY)KvFar^5?5d=4;AFb2FfrMRly=h*$j2#BM{Hz~1NV2k;*@>!#C<v)QJZjQH6M z<7@^XvpH)1m>)YQV&t9;sJMi#LxweY1GsgD;`>SL<}kMIR4~WYM*!mA#uG0TWcA!A zoVr^vQ+aDDC*9G?p1fV0mG+Gn+ts^SnIt;l&pimJw&SVsLy7vK1pR2Te%xx9y74Fc zck*LjiI{n311miKbp+}I;6Fy;wA13u?qU3I2*mw9!mlEs++HS|mhKkz<(JIfE1ykE zv02Pe%;zWfYG6UQFX6QUUF<h#-VqcOGnHu^&oGXqnTC_~FO2r<-}=vbRPZBv3jsrS zghXy7DLxcxpc)!cq3!6<!SKj&D)ku=Uljz%jpY4aoMXZKuZZ+xp;_LfQHv3(=Y3Jm zc2VZegQA_sw|85retQAvHlx4xW4It_E}n%UysntonRGz6*%fc-(CIog+Fp&yKAYG1 zgg%6!pJT$_SY$heYN*}EUYHiYkiH1Qf;{R@I62*m3B|CF2GE>+gx`}C?!m+Hy49*Y zD5jgld2=J_Ls|AtZTW|)!cirlR`T6YOjiW=i0@;rd{D1?nf7nq-qSgllGu}IYS+g% z$u$qXf*&A)ZeR9m_6vSv5q~U>gW9e2@b6>@=5*p!t@t^Mt33_Ka?<l`h6^h4%WF>s z;+3*ATMMAJP7@hxQpJb-^v})rAJcip(|}2k<pN{6!sXuucgkZXt(s{oARY#iOfQUv zHm%`FobG{F@I4r&=)6w@D)3FR_+tsc|CJYg>sZ3&4AXNuQ~e!A_&pW+jO6_=ypyNt zGGR0|X}PZQRrM_>W&nd*VheXl^OkO9ntlqu;R86^VK`r-xxjA*F#6ST)2Z6YBmn;| zy{<V<Q!i6J)9GuyL#yDJqMv;1P5zrC@ot$GYPT$q+pV_N$El;-sq#x=-gkihlf3^L z#nrPzu3WlvbNX)K00|IdQ#krOjkj~ZVyQ5{hpT!XZG_sQ9k|9l;#J2M4;eL+$(k{< z3W{ltRdvQ|W{VRxYLe~oQ+gSlecJ2(RlhB>bhjM9{~24OyTW0*h48;)S|U@UegsUr zk^2xu{<xPpsWVkYPyNDP(gD7mV~G}socARq@0#nEbjB%06qFm?*+cS`Z@WZ3o^0>X zG@}WCc$msdc++Tk*JOUzXn|_@T&`P<VN{$$)xv|i@S>+Yz$C&viPIpJDnDgr0Gn|L zg>wSr?G2^oZJPC6e%9OktT%a?HqhKUMPL=4^A{cRlpgo*HCZ_>9#B3*iJAeUsz<Nx zR4bn;Vy5%sp%}-N-D2IEf?0ar=YeNvM<A{w7~lb-Gm3FMfawCOA_$e|LW2Kt)ltKq zye^f$F~|RspYgsZ^KDkrx*CufW=ZTD-+M<LM2HR|hb&gMD*~#gKVH*oP`%KpT4G}R z6ICCc{#pM}s9cjV3f;Zy!$i%@L@NStwiEHUYX*0;;dE%5M41K)r5ys;U5}Ey)@k3R zB)-o`ew%7ql>mCY2?AYq1Svm`<T=A%s7>-80KHakyt-Sbe6EUXQ7ASa7<QZg#Q&de zsn->>TW9@i19^|J%EXI+Z-Rt<@Wd<FyTN3YdjR%-JnoVJ{hN&|+*HJDY1MDchApG^ z6%&AI4kVEF!(+cfah<L{5veS29Mu1PCUv)7*%qT1O;PQ(ns%H2r2qVMOJ|GamR}C5 zh6U9J3KM<?e3Okjfx<bX4A&T>12EO)$i?y;s9hV2w<(iv#>H(Jw43po1uoz{THMh@ zXQb*YuPEoMl@v*qKOi&r8sfUOu`P1NdZq4DtLal0U_Uxq|5U7BS8+?u`Q7utv|%OE zQ-Ew)j3yHf`syxI>!bBGWKM%t@2Fu<UZr!^MbR5_`zz3H8TB@`5{e<adeaX3n11w^ z9)@KFFw4RL@2JP1>eR%x$I7<r4WFJ{J`WZ->am{kvVM(7JOO_a$=pm<ZQlg!*0`$z z);EOcGt9Vaa-EMpi=5)9VNYfs@Q@yZv-f*c`rwBH!xso7C}vfo{-vhkecipS(wncu zv1yk8=SbrU_C!+Lh($AKQuP@%J$k@X?+z7z9I4nDfB12%R&^8}f8r1Rjp2-qRPA;F zz>|XSN$hVa8k9!ssgz%qT5tgV%>7qlPIwBOJZ{3mI=liGh(sv=DI#f+&X^NKk2ClK ztZ14Gpxc~QbH}Z!5wpskGkZ<yo_Ik0+8rtTI99bYS^II~QS>2%#tokME$S(ry_u@| zPz>moh^_(Rp9E%7x)PyDK%10sz>Lpz_K><Eq7Qo}pGQ|+_L~R;_;y36d1FZ1RHe>| z<>{A0DWJ2p8H0E%MKzqH9x|(YOsW_0fOyy)zq>p6V0WVG)97uUD@^Kg#e53c6iV8# z#C|9R_@8znQs~aj6cm|p8A_x!ivifJ?1Ns>$GpUDUWPONY2PE;P=Kj<5zkzqMK6h! zofMXxy#06w`i>?O6(cFCp=9lFvbxuzePIOf|2$Q-J5us-sAzZS7W2S0w$rtoOMz_> zBwM`n!!3aS>0je0N3rRGf^>dy67EKNI3R<uToAlN2+2{n_$XX;5>e=mfO6YPHgB4Y zi%M1E4}MrDFD7VO8A((OU)T0q^#e(|o+SNq6M)a>i94UiDn5^t{yJ1bv!BuJhu=8w z-+?8r8)e(K0R0c=8yw+KSTa6Ea#@zaFU{tcLb);R)2lNq>M&e%6d^tC8F%Cw6!Ru6 zWi!<}DipI^kpwq1@1!pj(`St9Ptx|74KK{`U1nX20l??C@$z5$^LJX)X0iYi#7>cR zDTZ^05M6{-FiwPuzKwudDbrTvajfjKWP+=Y_LL6`RDUym^s7cjw1w09?X!a<b`{kB zFb;a^+ygS;5os3!<4*@pCIP%%7pJ_<6>mMw`p0DP@1sS3A1;LQaa`HXH>{-?3;Zd1 z7%kk%TlNE>CR$19)^KB~G@W@WT>Xs??>OL_T1y~qj6@%&v1j;E3u5WKT<&OPPmXkg zYkvs1ek~&99NK&?bVLt0J-)*dl#ux!JJSE&pZWVx;ji6*-RG$JL%v~EEv%=<3ce2t z`5R2{3HUab&b(O=U1-M0jlQC2Hx&OkAQLvBBS-L*F)C}0FI<Qc&5Oj2R`%p_Rf6cG zx9R7ggwsCBmm-1RLu&}cLR9EZ%k_T@=l?#CH(&(RaYxM`iqxA4vCm>ngab&j3yO0R zFfCf~X}8pOlEU>j@M_T+Ecb-JqlP{CX&`O@M|sKOEeeE-QNkq|zz@F-H#H`uM!R|H zPoYv__yG;z9kufaFL<Qihw}e9Ui|)Xg5@WGEl2A+CAuw>_*O(z=$A0sQ9sHNz%J7V znsPWdE0wpDaDGCNkO_+a2EWLcG{yppvn1p%M+sNt0RF!YH2gmGJUxOZa`nhT;`-D8 zOuv-8oFo3nWa&Rf^M~}DoQoJoworMuRQEbwa5I=4c>qZ}>Wg;<oWN_mwV9l}n^Bpv zpIJ$S7|szuCT~VZ&QmDM9M&?Qy&T0`RRFks?tlE-`17SF)s(+nC=JB-=>WgJ*euum z-ktux)1|+5T5E$tD&fJ7oP+=K(mj3Jv+T_1LmrDt?ha`FRe4Fd-$gKvq3sbxboGxq z3z#3p$GkX)5%y2C8E1V)vAFCX0XuqCDX}G}*3;rQi&I}e%-wFe?Z{+L?l#19X%%fs zd6QiFNGKZ60d~!k;K))$Xk{QN*O!9+;zD_BQfpqW;w!I(7|u4Rf8cx*#``vuehiI2 zfTSG8@J|DJ8^c8`|1d&)2=*9-nIw`ke*{F`iXwW=5NEUMHgc1;s<Pibt%UOL)G6B3 zvR0M6Ng;nEjCz>{$ne$P!4;_RTYjV)Fl^9&UCv>vS_<<uXZ+`6tPdrC^9ssQG~+m$ zc-WtG*pGHRH0m74|0hxQangLsvnM2Cm`F}P2biQ*q{3B=V$G~s&oph6Uw`ws7|Opx zANO1r+op+aj8Qz1h^F-bTSZqfm45hKBq0k$#{AbMD^}86SYYu8ofXlxivaxw<9HDB z>kyh-0O_C)>+5jgPb{ci%DyWc`wVi$ZwQOC|6b^h7vNVDD-xkSgw_l(YpJ^RBFk0{ z;Ee7*nbs(YeyWOjs)-vgNXKGnP+R3b*gP+6t`9NsVo>0JUPuV!b>A*a^CwR5DDMjZ z{VMGkhISmoIv#*O;6*x$7XA##z{I~@GJT8azy$Y&g_*uZ4G;h^wj9M=l?zw3lC>n2 zEyuKZCj-hY?SfzOdEbPK=o`M+t{C1-D&Y55`CiyO6h7ORB0J$}IOCfgDHy1(EFg17 zdDM4B0RHx{VV=O)3jx-}i|C4?9tnWj6*ynH<KZ_D7J9?os}g~kXOW?pWdVITn!Tco zS~DqZ*L9mEfH|T(Ff!94NbwB{`#)D}*wptmfQoSaa!3(|VTDDCj{&~!?cCPP>ICUX zhCOqVTu_ulfK0+aO^(NCVqsjI6U=T1|K%kp+Z8@zRmffwa%|CDo0zv21&HL$dpU2O zRc-e^-5qZK(EB(K35dE$6V>>gr}k^l>*vr#e#Au3&T_QAdq=;VD3N^^f^$LAj`&j# z0lol=&v8-+De_Cq2qzeB-&K~=MMn*L@)DP}%4e)aacp9)O(9&90M0Qs%G0;%%inc2 z><m8tG}c~82JEc#i|FfTee4a=EezFsKEQMqFj+WS|8&PVs)^<tM-yC8cK)mr|5h*d zkn)R6`Bjnp3O9V82Ydg;oF8D08usL64rPT$UlaW65u^f}9B^8=UYNR3mH+x#^>**G z55sNEpdPgj6IpOIC<lp8JRcB$)~^UdhuU&n`B-Tfh!r!B_!3=_oUei<-vRn(-dCZ# zZzI(RvE+2vjc+^}5hzCud-4jKY`@m{Oq-CiF6G;#0w~6oYgxaYz14X8T}Q)*f!0^| b0Fy;?aF~6jwp_(puZHEK@HM=Dn_mAPd6Er% literal 0 HcmV?d00001 diff --git a/milena/doc/tutorial/figures/extend-2.ppm b/milena/doc/tutorial/figures/extend-2.ppm new file mode 100644 index 0000000000000000000000000000000000000000..6e44be099697121a6daa526889b2662ab230816e GIT binary patch literal 16546 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 literal 0 HcmV?d00001 diff --git a/milena/doc/tutorial/figures/extend-3.ppm b/milena/doc/tutorial/figures/extend-3.ppm new file mode 100644 index 0000000000000000000000000000000000000000..c2ad4ad4d1ce49e5fbb45dceb25d6c92f92bb99c GIT binary patch literal 16546 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 literal 0 HcmV?d00001 diff --git a/milena/doc/tutorial/figures/extend-4.ppm b/milena/doc/tutorial/figures/extend-4.ppm new file mode 100644 index 0000000..5425043 --- /dev/null +++ b/milena/doc/tutorial/figures/extend-4.ppm @@ -0,0 +1,7 @@ +P6 +# Generated by Milena 1.0 http://olena.lrde.epita.fr +# EPITA Research and Development Laboratory (LRDE) +64 64 +255 +âyá tßlÞnâpéwêtÍde¡>W¬HY°KV²KV±KUºSXÄZZË_\Íb`ÍebÌc_ÍdaÐfbÓeaÐeaÏecÐgcÎgeÌggÌd`ËfcÎc_ÐgaÏeaÍfcÌcaÊcbÊbaÊabÈaa¿[a±QYÁZZØzoÝqÜ~jÝnÞmÞhÞgÝjÝnç¢zùÑ鎩NZžY]Œ\]»^bÁ\]Â^_Â]^Ã`bÃ_^¿Z^ÇniâmâlâkàiånêréjÌ_Z¢;PCR³IS²HQ²HPºQVÄY\Ê^ZÍ_[Íb_Ïc_Ïc]Ðd`Ód_Ñd_ÑdaÐcaÐcaÏdaÎa^Íd`Îb\ÐeaÏc_Îc_Íb`Ë`^Ë`_Ë`_Ê`_Â[`¶RZ²NYÑnkßsàoá mâ láiàhÞiÛkÛmõÃúÑÄtg³RY»Z]Ÿ[]¿[]Á\]Ä]]Æ_^Éb`¡DR_AámãkâlánæqçoåkÌb_¡<N¯BNŽIR±GP²FNŒPTÄXYÊ\YÎ`]Ïb]Ðb_Ïb`Ñc^Òc`Òc`Òb^ÒcaÑb`ÐbaÏcaÎc`Îa]ÑgdÏebÎcaÍb^Ía_Ì^]Í`_Í_^Ã]aŒU\°LXÃ`dÛ~sâvãqäpâ mâlÞjÛ~lÙ}kåuúÑSY¹V[¿Z\¿]^À_aÆbbÏfb?P[B]?âmå lã oårçrâoæ jÎ_W¡8J®BN³HR±HPŽHP»NRÅXXÉ\ZÍ^[Í`]Ï_^ÎaaÑa^Ña_Ó_]ÑaaÒdcÐ\ZÎZWÎ]\Ì][Ë^\Î``ÏcbÏcbÌ_]Ì_^Ì^\Í]\Í_^Å\`ŸV]ŽMXÁ\fÙzuâwâtáoâjálßmÝnÚ~lØzióŒûÖ ÒpŽRWŸ[\À\\À]_Écb<O\B\<d?ã nänæséqçlãlæ iÎ^U¡8JBO²GP°FO²EP»OTÄVXÇZZË][Í_]Î][Î__Ò_^Ï``ÐacÑ_^Ò``Ð[ZÊYYÊZXÊZYÇZYË^_ÌacÍceÌ__Î_^Ì]]Í\]Í]]É[_ÀU\·MYÂXbÖspÞtà tß oàlànànßmÜ~nØyißjùÒ÷О_bºSWÀ\]Æbb<OZBaEd@b>äpåpèpæfçhånçjÌ]V6JBO³FP±FO²FNŒNTÆWWÇZYË[YË\]Î\\Ð]`Ð]^Ð__Ñ_aÑ]^Ñ__Ð]^ÌacÈikÈqqÅmlÆ]^È\^Ë]`Ì]`Í`cÎ]`Í]]Î]\ÈY]¿S\¹NZÂU_ÔolÚyqÝtßoßnàkálß}jÚxiÙueÖraðŽúÚ§á€~°NV»X]=NZ>^BeD`?]<æoéqåeÞn[ågæoèkÐ^V6H¬>M³FQ±FN·GNÀOTÊVWËYXÎ\YÎ\\Ñ^^Ó^_Ò\^Ð^^Ò^^ÍbhÈu}Ã{ÈÍÒŠÐ¥ÓªÏÆssÄW\É_dÍ^cÍ\_Ì[]ÈW\¿R[·MYÀT]Öni×tmÚyqÞqÞ}mß}jà{gÝveØre×pbÖqbÝjøÎûØ¥Éwh;MX>]?cCaB]=_;épêm×eVÑ]VçjémêkÑ^V1G¥<MAN°CLŽFOŸMTÇTUÉXYÍYXÍ[ZÑ[\Ð]^ÏcfÈntÀbm¿kuÁpvÆz}ÈÌÏÒ¥Ö¬Ù² Þ¹šÑŸ_hÄX`ÇX^ÈW\ÂSYŒNWŽIUÃS[ÙoiÚtkÚvoÛyrÞ{lÜueÜscÛscÙpcØnaÙo`×oaë¡}ý۬݀W>Z?dBaA^A]?`;ísäzc®?IÊYTèiêmêjÑ\S.E 9KªAO¬CO°EQžJRÂPUÄSVÈXZÌZ[ÏYYÐd]ŒS\œ[b»]f¿ioœiqÂnsÃx|Ê Òէ׬۳¡Ý¶€ÝŒ¬Ø³Šœos¶MWŸPX¿QYžMY²GTÁQ[ÝqjßxlÙsmÖplÚtkÛsgÜpbÝsdÚqcÙpdÚreÚsfÜzkó¹~9LV>bAdB^@^@`?X9ëoÌZT1FÊZVêjëqégÎ[T-D¢;MªCS¬CQ®DP¶KTÀQXÂRVÈUXËWYÒ\[ÆZY»NVœU\Á^dÁchÄjmÃlqÅsvÉ~Ïקگ܎£Þ¹©Ü¹§Ú»°àĹʪJWŽKV²GU¯FVŸP]ßumä~oÞvlË]`Ë]_ÝujßqdßseÜpcÜqeÝsfßviázj0IW=`?d>^>`C_Dd F?Uàr`š;J5HÊ[WéiëoèiÍYS/F€;M¬APER¯DR¶KTÀQUÄTXÉWYÊXYËWX»LSœS\ŸX_ŸZaŸ^dÄhlÆknÆprÌxxÓکܯ ثَ¬à·åË¿æÌŸëÔÅÉ¡<MªCS§AT»O[Þsjä}láynÁTY3JÓffßshàreÝpeÞqgßqfäxk€FSW;`?dA]>c@\Dm+R<XÏ}u¿LM8J6GÉZWç jëpè hÌXS0H£=O¬AQDQ¯EQ·JRÀQVÅTWÉWYÉYY»LSºOYŸU\¹T\»X`ÃbfÉlmËppÍssÍwvÔ×Ó Þº±åÈœâŹâÄžãÈŒåÍÁëØÊ±qw7K<PºMXßtlå}názpÄZ`n=±IVÝqjàrgÝoeßqhâshÎc`^A_?gA^?cA]@f$MCeÄwxË|u8J£:J 7JÇXUçjétè lËZW/F£<M«BQ¬CO°EP·JQÁRVÄTWÊZ[ÀRXŒPX»PXœT[ŒX_ÂafÆhlËnoÍqpÉmoÌssÎ~Ò໯âÀ³á¿ŽÞŒ²áÄžâÄžâÈœäÌÀæÑĶ-D¶ITÞtkä}pâ|rÆY\h>~$BÍ]_ásgÝmcàqiãtiz#CY<iCd@b@`@bFw3YŸqxÉ~zÕ~ :K¢<L9KÆYXålèrç nË[Y0J¡:L«AODQ®DP·JRÀQW¿QWÒnbŽEPºNVœOVŸT[Á[aÈglÌooÊmoËmpÁcjÃrw؀ീ޵§Û³šÞ¹¯âÞãÄ¹âÆºâǺáÈŒäÎÁé×ÇXhBNÝqgä}oâ{rÇZ^n?_73FÔjdÚtjáti§FRY=d?gA`AaAbAd J·kwÄvwÑ~Õ<M:K5GÃVVælèrç oË\Z.H8K©>M©AOETµJTœMT¿V\Özi³FTŒMVŸNVÁU]ÈaeËilÊijÉijº[fÅx}ݚܧ۪۫à¹ß»¯àŸ³ÞÀ·ßžßùáÈœáÊÀåÑÅל³9LÛphã|mã|qÆ[^l@X8MfÞœ°åÊŸæÅ·_F]BgCdDbBcB]@¢XnÈxyÏÔ~Ô{;L¥=L€:IÄTTæjêrè mÊYV+E6J¬@N¯BM°CN¶HQœOUÑ{oÐj_°ESŒMUŸOWÅ\bÅ]bÂ_dÉcdœX_ÏÜØÙ¡Ú€Ý±¥Ü±ŠÝŽªÜµ¬àŒ³á¿ŽàÀµÞÞàÈŸßÈÀåÓɵpvØnfånâ}nÀWY\<rÙ·«æÌ¿êÑÂðÚÉxIf]AeA`>]?dC:\Ë{|Í}Õ}Ô}Ó{©@M¬BN¬>KÇUSåkêsênÌ]Y/E¢:K¯BN³DNŽDN»KQŸMSàyÈ\W¯DQ·IUÁTYÄW^Ä[dÈbfŸYaÓ~y×ÖÛÜ¥Û§Ú©Ø£Û«¡Þީ߹¯ßŒ±Þœ°Ù²©ÝÀ·ÞĺÞÅŒÜÅ¿Ûwå}eÞwd¶^eÀÛ»°åÊŒãÆžâÆºïØÈ~Mf_Ca?_=d?_CÂq{Í~~Ö~Ô|Ó|Ó{COBM®ALÎXRækërìqÏ`X/D£;L¯CN±CM²BKžHNµFPç{ÈYW³FTŽER»MVÄV^ÅX_À[dÒvsÓ|xÍ{{ØÚØÚ¢×ڡ܊ۚܯ¥Ü±š×©Ø²šÛŒ³Üº²Ú»Ž×¹²Ý±Šâ}iÝß»ªÞÀ³âǹàöâÄ·æÌÀîØÆi3V_C_>^=fBKeÐ|}ÔÕ~Ô{Ò|ÒzBO¬AM°AKËXSèkîsîsÑ`X.C¥:I®AL¯@L¯ALµEM±@NôŽ Õh]ºLS·HTŸMVÅV^ÃXbÑstÒtrËpqÔ~}ÕØØ×ÛÛÙÚ€Ú© Ù§Ø®§Ø³«Ù®ŠÖ©£ÕŠÏ¥¡×Žªßµ€ßŒ¬ãÃŽá¶ßÀ³âĹߺ®åÈœä˺WA`A\>c@1YÍv|ÐÖÕÓ~Ò|Ñ{ªANª@M¬@KÈXTèjítìsÐaY0G¥<K¯AN¯AL°@K³DM²EPõŽßzeÏ]X¶EQ»MWŸR]ÐkmÏqqÇhkÔzwÑyzÑ{|Õ ÚÚÚÛØ××ـة¢×¥×€¡ÓÑٮܶšáÀ²àŸ°ÞŸ²ßÀŽá÷໮ÔÚ©³Y@_?]<fJ¯]pÐ|}Ô×ÕÓ~Ó}Ô{š@M§>Jª>LÌZWèkëuìqÑcZ0G¥<LAM®@K¯AK±BK±KTô¯{ågØi]ºJSºLWÏjlÊgjÃbiÓrqÎpqÍvwÓz{×× Ö×ØÔ ÕØØÖÔÏסݮບߌ«Ýž¬Ý»¯àÁ¶àÞäÈŒÔÎØzC]\?\?aA>bÏ{|ÑÔÓ~ÒÒ}Ò|Ò|ªAN©@N³CMÑ[WékìtípÒe\.C¢;L¬?M?K¯@K¯?I³QW÷ºémáz`ÈVVÉ_cÇciÁ_hÑmnËjmÈiqÎruÓx|¿k}µd~¯fŸvžn~ÏÍÏŒvÆÏÜ¥àŽ€áº§ÚŽ¥Û¹®ÞŸ±á¶âùãǻ޶©»oo±\fÒ§T<^AbCeJ»huÐ||ÕÔ~Ò}Ò}Ñ{Ð|Ð {¬CPªCP·ENÖ^VêkítîqÕf[-D¡9J¬@M°AM±?K²?H°FOøÀð¢sÙkXÈ[YÀW_ºXdÏikÈeiÆcjÉgmÏouŸez¶`y¢Mo >p²tQ~Dy?nh$Q_$SŠl|Ø á¶Šß¹©Þº«Úž«ÞŸ±àÀ³ãĶ߻®ÆšQW£GWÖSb\>\>a?~5YÍy|ÒÔÔÒÐÏ|Î |Ðy°FR®BMžDNÖ^UélìsíqÔfZ/E£:J¬@K¯AL°@L°>I¥6Gò¹ó©xÒf`ÍhgµP]ÍeiÅbjÆ`hÇdlÎinŒ\rº]wHu}4dm$YN}=t}Atg/bRHŠjtÓݰݷ©ÜހܶšÚž«ÝŒ±Þ»Æ¡FT£GVÀjmÝKZ]>a>`?_H¯`pÍ~}ÕÕÓÑÏÐ}Î}Î}²IU°EQ¶CKÓ]VékësípÖh[.E¢9J«>L®ALAL±AJª=IØwöŽÜoÅ__É`hÄ^fÂ[gÄ^hÃbnÀ]mŠNjw0ak(X_Hy7js,\~Dyh.ck8hµnsÖ Ú¬×« Ö«ØÜޥܹ«º Sj¡b|Ö{åyè¢O\]=d@`>c>r+SÊwzÓÖÕÓÑÏÎÍÌ}ŽKU°FR±AKÎWRémìuîrØh],E 7Iª>L®?K¯?KŽCL¶FLŽRVôœè{Ã[]Å_iÀZgÀ^sÃ]s¿[m8_x5ee#Us2c[Go)Wj Qm.dwI{`أݎ¥ÔªÔšÒ£Ô¢Û°¥Û7UOn¢d~Òä?N\:e>eA^<cCNfÃtxØÕÕÔÒÐÏÌÌ}ŽJU±FQ¬?KÆSQçmìvïsØi],D5Hª?M?L®@LµDNœLR°CLàîªÈ^`¹TcÀ[lÃ]lžXr=er'Y|6g`Ou2fh#Q`Df"Pu2eSœÙ©Ó¥Ñ¢Ò¢Ò£â°šë³©ìާÂ[b8YUsÅ},FZ=g>jBa=a;l$M°epÄ}|ÖÔÔÔÒÑÐÎ~Ì|°IV¯FRª>JÁRTæoìwîvÙk`-E8L¬@O°BP°@M¶FPÀNUºHOÞàr»PYŒVcÅYfÄZh 0Qo&RZCl(Zl*[h']|@qZBe#Iª[sŽ~ةج ÌÒ¡Øè¬¡í¹¬î¹ñœ¯ÚyusB5ZÂ~iA`=i@l"E^;`=B^ºpsÊ|ÒÔÓÔÔÑÑÐ~Î{±HR¯EP©?LÀRTænìxîu×la1J¡8K¯CR±ER±BO»LTÄUXÃOSÌnh×~n¿QXÆ[džRd|)OeFi&ReK_Gf Rz:pt:jXA»gnÙÃÑ¥¡Ó¢Ñßè첊î»ñÀ²ôÆ·ë'BdEžwl#IfAk Ej C_<_B®dnÆ}xÎÉ}É}Ì}Î~ÑÐÐÐ|Ï{±FRCOš=J¿PSæqëxíuÖlb1L¡<PCR³FR³DQŒLTÄQVÄRUÆUVÌg]Í]eŒ_v.Rh'YZFj%Ug!NcMdNl+^c'UZgÕÛ¥ÅÔŠ Ôà çêí³Šîº«ñÀ°ôÇžñµŠ¬>NW?®i|u'KgDk$FdAb>t-RÀstÏÑÎÍÊ}Á}Á|Ä~É{Ì|Ðy°DOANª>KŸPUäsìzíwØk_0J :O®DS±ES³DQŒKQÈSUÎ^^·ZXšNY¿f~£AXl.`k2e[Co*X\Be!Oh%Z`!QE[Ì Ø×€ÒŠ»ejÊhpÜéëíªí²£ï¹šóÁ°ï² §>PX<Vo:Yk%Jm&Ha@_APgÀtuÓ~ÑÐ}ÑÐÉ}Ã}À~Ÿ||¿z{Äzx¯DR¯FQ«>KœMRæ qíyïzÙna1L¡;O¯DS±CP²BM¹HPÅTYÙrk€S\Bb§IWw._l-cu<n\Ja"OdJ_Fj+[s.OÊ|ÞšÕÑËceËchÂYb¢8MÂ[eæìí® ìšÌwtMZ¡8Jb=EcKcm%Hh Db@fG²frÈ}xÕ|Ñ|Ð{Î}Ï|Ë{É}ÈÃŒ}Žrz«BOª@N£9HžHOæ nîvîxÚoa/F¡7I°BN±?J®<I¿ai×|nÞ{nœcf{,Nl/a{@vDz]Ok,\V@p4daDU=¶inÝ๫É)Aw<o>~1N.JÒZaßpsìñž§²`g,JuAu?c; <\¢Xln%Ic>b?r*O¿rtÐzÒzÐyÑyÏzÏzÌyÉ|ÇÁ~»{~µv|ªBOŠ>M4F±DLænîyî{Úm_1Fš;K³BL²CM¢7G¯cjÜœ`by*Mj+^i([h*aR XC\Gh%P\>XA9YÌܯ¢Ö©¯IU}?9T9^ß·¹²J\ÇMWÛdjíÛ2SFiWjg7^;8Z©bts+La=_?JaÆyvÒ{ÐzÏxÏxÏxÏyËxÅ{À}|žvz°qx·|}®EQš?M2F¯ALænï{ð|Ýqb¢6H±ALœJR:ILfÂy°vyk.^r8ng*]l0fy@x]h*YY=`A\=]AŸrwÛ€Ò¥Ç[bÖfmÊ`kÄWhÈrØØu{ÑW`Ø_gí§¡ÛÃfxœm9N|>aA}4X¯l|t+L_=fB¯dnÉzÐzÍxÌyÍ}ÌzÌxÆ}v¿xwžux¿zÔ⬫BO9K,B§;Häpï {ò¡ßta£4E°@J¿IOÄak·dz|:eb Ph*b Uk0df(_{HSm5a[?]?U@IWÕÓš¶HRÕ`ißx}á~Þ{~Ü{ÞÜ~×clÙZeéèž°Û|Ñak¹JV,Bf=v,S¹wn#E`<o%GŒorÎ|Î zÌyËzÊxÈyÆ}wŸyv·suÑæ³ èŽè³ :M2H&@¢8Hãoî{ñ |Þta¡3D®?NÀXl¶gVt9il+`OK~VEb$WzCwxHwJdaDWAi*OÄsuÛ²=PÅKTØ`gâwzçèçæà~~ÜkqÚZcæëÀ¶ßÛioÑYc3IlAp"IÄe<_;>VÃvtÐ|Í {Ê|ÉzÇxÃ}y¿yw·stÒìºì¹ éŽéž/H,E#A5Gâpì{ï|ßsb4FªAQŸLWOy Ex}9kl2iTi+\\DZDa"Jb>šYjw3PO; MZØ¢cm#BËPXÙ^cápræêéçáyvÝkmØ[`ãíÄ»Þ ÜotÔ[d+Ek@lCÉ d@e>«X_Ì{ÏyÌ{ÊyÆzÄ~xÁ|x¹tuÆxì¶ížìºëÀëÄ/K-KvB3Gâoê{îwßqa.E°Rlžb@jRo5is>z`r9h`IT=~.K~,Q»ow>Q_@ÂpsÄW<'BÇLTÙ]aákoå|{èéçÞom×`dÔV[ßv|ðÈ¿ÝÛlsÏY`qCr"Cg?Áyr-LfAÀnkÑyÑwÌ yÉzÄyÂ|wœxv¹ssãª~ïží¹îÅîÊ¡ìÄ2K-Ht<-Bâoì|ðyás_1I®Lg²Vw7hF{p3ns?wao7i\HY?:V¥O\x.JV<¥[eÇq1K]<1FÄJRØ[_àfjãstä{yæ~ä{ÖbeØ^cØ]bÝmqòƹÜ|ÙjpžLY[?u%Df;µlx ?Wy/LËxnÐzÍ wËvÈyÅyÂ}w»tsÌxïºïžïÄîÈìÈìÉ¥2I,D!>£;Lâqë}ð|àuf 9R©>N°Lj5gFwo;ql1jUa\Ek#DWD~=a[>x9UÚ `hX7d> :LÈKOÙX[àcgãqrãvvä~{ãzÙfjÐTX¿HQÑTZè ÛxxÕfk .KZCx%Bk;¢]oI^LYÏrÎzËxÉyÆyÄ~vÂ{u¹rsá¢|ðºðÀîÇíÊ¡ìËŠìÊŠ/E,D &A·R^ãwêyð}áxf3HŠ<M»Vop)]r3in4er6pTco3`K\YG|9^°m}¬\e±{}YBf"FeB§EUÌOUØX[Þ`eálmârtä{{ä}àywÝilá{yâå ÚtxÁYc\E_F0Ip>JbSeŒgdÐtÍzËxÇyÆyÃ~x¿zuŒuqë°~ðœ ñÈîÈïË íÌ¥í˪)B&@#?µUbãxëyð|áye2DªBZŽXty1gv;ic'Ym/bv=r|F}\}3Uy/Q¶tÁ¥Xbh&Fd<p!?d<¢FXÊLSÙY[Þ`cáhjáijârrávuÝutÞzyꬡ鯊äÖnu8SZDf F /Gr<6T®cnÎsdÏvË zÈxÅzÃ}wÂ}wŸxqÂzqï·~ñÅñÉïÉîË¡íΫîÍ®x?#@#?³Saâ{ë}ð}âye5N¬Kd°Rmj([i+[d(]zDz{Awr9p WDnÃÑ£«W`y>Vl@b:t#Ai<>RŸBLÙZZÝ]\áfgàjhËSVÎWYÔ]^ÑZ[Ú`a×imÎahÇcm_D]Cn#E1Gv!>r(LŸorÒyfÎxËxÇxÄyÃxÂ|vœvrÅ}pñœòÌñËïËîÍšíЮîÏm@z ?(D¶Xdãxì|ï|Üyv¬OjšD`§Nop/^ZJn2i[w@zKw?s³eÙºnn¢dj^B_;f<p @mA4Kš9HÏRSÕWYÜ`báomÝbbÖPWßR]âjzæ~ãx×nr9Q]A]>p A3Iz(DkFÌ~yÓ~nÍxÊyÉyÃxÁyÂ~wºurËrôÉñÍ ñÍ¡ïÎ¥ïЪïÏšðÌ£g>p:)CŽQ[â uì}ï Þ|s,H¯Vr8^z@i_#Uj.fiWwC{akÎÇq`#KdE`AdBm!Bn B~/I+C»DKÊPTÖ[^ÜfiÞijÚ^aØZ]ÚXbÝ_mÛnw¿]c]A^Af@t"A3I+Em!HÑ|ÐsËxÉ{ÊyÄ {ÁyŒ|xµrpËvöÑ£òТòÑ©ñÑšïËîÉïÉb=d=8L»T[àpì|ï~àyi-H¥Mm{3_m.X`&W]VihWSR}Ço/N[EgBaAc@g@o?n?x$@.@»DLÒW\ØcgÛimÝnràvxäãÚwx-HVBbDi@v$D6J -Dq EÒËsÊ{Æ}Ç|Ã}œ|ž|xoqÈ{öÖšóÑ€óÐ¥ñÏ€ñÍ¡ñËòÉ_?\?4IŸVZáqë{î|ázf.G>[f$Sp3]e'WYRXo9qhh¥^D_\!K]Fo"Dd@bA`>k?l@p"Av=";¹DLÎY`×inÞvxåæãÌjncCY Kg$Gf?{,I:N0Fu$GÒÅvÆ{Ã~ÁÀ|¹~{ŽyxšmpÑö×§óÎôÑ€óÎ òÆíºÓt_@X={&B²LTárê{í{Ûte€YmVsa#Ql(Tf$QTKhw?t}I}^{šed1\YF{)Fc@_@b?b?l!Bm A(A0H©CT»S_Æai×ouÞ~~ßÛÈ{zn7YZ#Md!GaA|.J?T6L,LÐ|®^`Žefµor¹xwŒ|ž|{¯vw£fnä¶öÐôÌõÊðŸÊly.Ed=8ShAq>5GÞzlé{ë~ßI]}>_SEq-Wf%Sm+ZxEwWYV[Spb)Sy'Fg"F_Ca@a@hBkAz%B¹LWÍ[`Î_dÓhkÙnpØrrØtsàçŽèŒ§»wA^U?{-J=T3K3QË}užjjŽbd¬Zb€T^£W`€^f€ci\hîŸõÆôÉòÂÉpr#Bs"A5J§uUg/G}#>Útiêzì~Þyj°`ui+NP>}Aoh,_Cp`%XL|PtBybmMrGlm Dh"DaC_CbEfCw'Eq"CŽKUËX]Í^c×hjÙklØlnÜ|wâæ¯é¶îŸ€îì xl$E5N,F8UË|uÂ|vŸvt¹ps±ekŠWaJY¬YZDQí¹öÊôÇÇjx'B/G:L9K¡qXe{"?Úvkë|ìyãu·uYC\De$Nn,Ui)Wj/[k5ee+^p:qXy€S}Xyl/Vf#IeF^Gg#Hk#G7Lr!C¶LWÇW]ÕcgÚijÚkjÛqoàzâä¡ç¬ì·ñŠóÊŽ³m A})D>XÇzrÃy¿|wœyxžtv°lrŠdmŒgYÁg[ôÉ÷Îé² 2I;M>O§IT?Pu5V°°y#AÛxlí~í|änTkQ>_H]G[Iw;gYGe)Ys8kt;q}Le¢ww?hNjb@kA]Ai#Gh?®DO~$A±HUÕ_aÙceÛjhÜkjÝroàuá}ã æ€ê²ïœ¡òDZôÑœTgl<CWÅyoÄtÁ|tœyvºww³ru®joÆp\ÜnöÐöÌÉ}e7M BRMW BQ£HZXA®¶m=Úxiì{ï|åiOdUC_GXCb$Tp6aaIb$Rf)[{EzzE{ekq5cYteAq%D_AeBo?µFM)BžKUØ]]ÜecÜhdÜkgÞsoßzrà zâä æ®íŒ£ñƲóΜ۵©]6LXÅ|qÅrÂ|sŒxu·sr°oqŽgfã |ôÂøÒò¿®OP¢?O±NV€DQ¢DRK_O8Š}·m<Úwfí{î¡{æg?Z^HY?UBxBpf*Ta!KYCZIk1d|J~dqpzLnjAn!Be@cB1FÌVW0FŸNTÚaaÝfcÜfbÜhdÝpkÞwoàxáãå«ë¹£ïŲðÌ»ôÓ¿t6QªTXÆuÂ~tÀ{s»wrŽrpjlÇ|n÷Ï÷ÌøÑßhš@JªCNµOU@Q¢L[G]K +6 uºs%BÙteë|è}ápBeWCZ@`!Le'Rg(Q`!KXC]Mh,Zl8mpOzNq}Bd=_~7Vh@n>²DMÐZ\0GÇTXÚbaÞjfÝfbÜd_ÜkeÝsmß~và|âäšè¶¢íÁ°ðÈžòÏ¿€qyµ_\Ãu¿|s»yqºxrŽsrjkÕt÷Ì÷ÍõÄÌfW°FL°HN©EO¡DSH[>VN 9dx¹z/I×qcìzì{ãoCbXA[Fe%N]Ka"KZI[H_"Qk3dtDycU x?iaEh Bn$Db>)AÃPTÊZ\3LÒ^^ÝhfÞjfÞhdÛfbÜibÝpjÞzsßzáâ æ²êŸ®ïƶð˜Ԛ¿haŸ}tŸ}vœ|u»zu³tsµolÒ}dî²zøÏëªvÀQQ«CMŠAL;M¢HXCYD\M 8Vož <QÔl_ëyìzãk PeYD` IWDa"Nb&P_ J[Fc&Sj2cl5dj9el4egcA_<]:e;¢:HÉVW®DP€BQÙdaÝjgàniàjdÝgaÜhbÝojÞwoß~tß|á ä¬èºšîŶðËœñÌ»ºe_HR§\_³om¶xt¶zvÇ~pÍu_ÙkúÒßb¯DL¢>M4H FVBVFZ7NL6Lg£IZÏg]éxí{æjFc^GW@_ K_!M_"Mc"JXB[Kj5jcv<mz?hf$J];Z:Z8(@ŸMOÅRR(DÇYZÛdaÞjgàlfàleßhaÜf^ÜkbÞrjÞ{oßxàã€æ¶€ìÂŽïÊ»óÏ¿Žps;L6H4G7KGVÀtgÓfç©}öĺTM,C7IASBVDXG]q#A~/GUiÇ©¢\fÌg^èxì¡zÝkEbYD]F\E[Hb#Me$NVBZD^JuDtkO{Z=X:U9i:€<HÇRQ.B¢@MØc\ÜgbÞidßkgàmhàkbÝg`Üi`ÜmdÝwkßsà|ãå¯éŸ®íǹñÌŸÒIU LU<Ns'DV;¬d^é¬róœÖc$@,D;QFX9PMa>Un!?BV¡kyÄš€¢mpÊf^éyí£zÔ|iCaXC[D]FYEb%Pc(S_"Md&Re'Th,\Mzu>fW>V;X8.B®BH*@5FÑZWÙc]ÝhaÞjdßjeàmfàngßkdÜkdÜjaÝrgÞ{nßzáãŠæ·šëĶïÊŒìIJCQ¡PWIT<O|.H·g`ó¿Ð^*A{&A3KHZ3LAXQg9Qr(Fr,IVlŸ¡šuwÈd\ézï€}Üoq*PWC_I^H`$Oj.Zf(Y|Cpe*V_'Tn3eYr8bT>W;c7z#<.DºIOÍXWÓ]Y×b\Ûf_ÞhaßkeànfàsjßohÝmeÝlbÜodÝxlÞwáâ ä° è¿±íÈœðÍŒ¢\cJTQZN\¢Q[¹\\Ârb7K1F3KM^4J1KViNdt*Fm#Cc Bz<[Ê«ŠŸÇe^ëzð€Ìzme"KYD_Ic#Oa&Rm2_] R Qc)Yl5_r7br;lr:fS<d7->¹GJÇQOÏYVÓ\WÕ_XØ`ZÜe]Ýg`ßiaßkeàpiàrkßrjßqgÝriÞxkÞ~qà}áâšå·©ëÄ·ìÊ»ž~~DQT^¥]eµZZ¶QUªHS¯MU;NCX4J1HM` ]o;Sj!@j=]=n.RØ·«Ò«Çg`êxî¢~ÇunbGZCe%Oo*Tj*Xv>ij(Yv:iw?nt=hg%Qg(Uy@no,R'<³@DÇNMÍVRÑ[UÒ\V×_XÙ`XÝd\Ýd\ßhbàjeáphàpiàsiáwkßvjßznàsá}à á£ä³£èŸ±ìǺ֊CULWª[`Ä`ZÂXUÍ`XžOR>R ;V;RDX¬gsG\f>i!@9K \ No newline at end of file diff --git a/milena/doc/tutorial/figures/extend-5.ppm b/milena/doc/tutorial/figures/extend-5.ppm new file mode 100644 index 0000000000000000000000000000000000000000..d384c49a159ce39916c48838244da08cac42f724 GIT binary patch literal 12406 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 literal 0 HcmV?d00001 diff --git a/milena/doc/tutorial/outputs/extend.txt b/milena/doc/tutorial/outputs/extend.txt new file mode 100644 index 0000000..e69de29 diff --git a/milena/doc/tutorial/samples/Makefile.am b/milena/doc/tutorial/samples/Makefile.am index f4c4877..899f8a8 100644 --- a/milena/doc/tutorial/samples/Makefile.am +++ b/milena/doc/tutorial/samples/Makefile.am @@ -9,6 +9,7 @@ noinst_PROGRAMS = \ domain-display \ dpoint-1 \ estim-sites \ + extend \ extension-ignore \ fill \ fill-call-1 \ @@ -55,6 +56,7 @@ box2d_bbox_SOURCES = box2d-bbox.cc domain_display_SOURCES = domain-display.cc dpoint_1_SOURCES = dpoint-1.cc estim_sites_SOURCES = estim-sites.cc +extend_SOURCES = extend.cc extension_ignore_SOURCES = extension-ignore.cc fill_SOURCES = fill.cc fill_call_1_SOURCES = fill-call-1.cc diff --git a/milena/doc/tutorial/samples/extend.cc b/milena/doc/tutorial/samples/extend.cc new file mode 100644 index 0000000..2f9ae0d --- /dev/null +++ b/milena/doc/tutorial/samples/extend.cc @@ -0,0 +1,94 @@ +#include <mln/essential/2d.hh> +#include <mln/fun/p2b/big_chess.hh> +#include <tests/data.hh> +#include <doc/tutorial/tools/sample_utils.hh> + +namespace mln +{ + + struct saturate_rgb8 : public Function_v2v<saturate_rgb8> + { + + typedef value::rgb8 result; + + value::rgb8 operator()(const value::rgb8& v) const + { + value::rgb8 v2 = v; + v2.red() > 50 ? v2.red() -= 50 : v2.red() = 0; + v2.green() > 50 ? v2.green() -= 50 : v2.green() = 0; + v2.blue() > 50 ? v2.blue() -= 50 : v2.blue() = 0; + return v2; + } + + }; + +} // end of namespace mln + +// \{ +namespace mln +{ + + struct my_ext : public Function_p2v<my_ext> + { + + typedef value::rgb8 result; + + value::rgb8 operator()(const point2d& p) const + { + if ((p.row() + p.col()) % 20) + return literal::black; + return literal::white; + } + + }; + +} // end of namespace mln +// \} + +int main() +{ + using namespace mln; + using value::rgb8; + + border::thickness = 5; + + // \{ + image2d<rgb8> lena; + io::ppm::load(lena, MLN_IMG_DIR "/small.ppm"); + box2d bbox_enlarged = lena.domain(); + bbox_enlarged.enlarge(border::thickness); + mln_VAR(ima_roi, lena | fun::p2b::big_chess<box2d>(lena.domain(), 10)); + // \} + + image2d<rgb8> tmp; + initialize(tmp, lena); + data::fill(tmp, literal::black); + data::paste(ima_roi, tmp); + doc::ppmsave(tmp, "extend"); + + // \{ + mln_VAR(ext_with_val, extended_to(extend(ima_roi, literal::blue), bbox_enlarged)); + // \} + doc::ppmsave(ext_with_val, "extend"); + + // \{ + mln_VAR(ext_with_fun, extended_to(extend(ima_roi, my_ext()), bbox_enlarged)); + // \} + doc::ppmsave(ext_with_fun, "extend"); + + + // \{ + mln_VAR(ext_with_ima, extend(ima_roi, lena)); + // \} + doc::ppmsave(ext_with_ima, "extend"); + + image2d<bool> mask; + initialize(mask, lena); + data::fill(mask, true); + data::fill((mask | ima_roi.domain()).rw(), false); + mln_VAR(ima_ext, level::transform(lena | (pw::value(mask) != false), saturate_rgb8())); + data::paste(ima_ext, lena); + data::paste(ima_roi, lena); + doc::ppmsave(lena, "extend"); + +} diff --git a/milena/doc/tutorial/samples/ima2d-rot.cc b/milena/doc/tutorial/samples/ima2d-rot.cc index 6463a5c..05e12ad 100644 --- a/milena/doc/tutorial/samples/ima2d-rot.cc +++ b/milena/doc/tutorial/samples/ima2d-rot.cc @@ -41,7 +41,7 @@ int main() } draw::box(ima2, ima2.bbox(), literal::red); - doc::ppmsave(ima2 | extended_domain, IMA2_PPM); + doc::ppmsave(extended_to(ima2, extended_domain), IMA2_PPM); // \} } diff --git a/milena/doc/tutorial/tools/todoxygen.sh b/milena/doc/tutorial/tools/todoxygen.sh index 0d2aae5..fa5d188 100755 --- a/milena/doc/tutorial/tools/todoxygen.sh +++ b/milena/doc/tutorial/tools/todoxygen.sh @@ -30,7 +30,7 @@ sed -i -e 's/≡/\&equiv/g' $out #Doxygen wants us to preserve '\n' after commands. #\ref and \see do not need that extra new line. -for keyword in include section page subpage subsection image; do +for keyword in include section page subpage subsection subsubsection image; do sed -i -e "s/\\\\endhtmlonly\\\\$keyword/\\\\endhtmlonly\n\n\\\\$keyword/g" $out sed -i -e "s/\\\\$keyword \(.*\)\\\\htmlonly/\\\\$keyword \1\n\n\\\\htmlonly\n/g" $out done diff --git a/milena/doc/tutorial/tutorial.tex b/milena/doc/tutorial/tutorial.tex index 267d0e2..7a4de1b 100644 --- a/milena/doc/tutorial/tutorial.tex +++ b/milena/doc/tutorial/tutorial.tex @@ -73,6 +73,13 @@ \backslash htmlonly % } +\newcommand{\doxysubsubsection}[2]{% +\label{#1} +\backslash endhtmlonly% +\backslash subsubsection #1 #2% +\backslash htmlonly % +} + % #1 - part number (Optional) % #2 - file name \newcommand{\doxycode}[2][1]{ @@ -150,6 +157,7 @@ $$ \renewcommand{\doxychapter}[2]{\chapter{#2}\label{#1}} \renewcommand{\doxysection}[2]{\section{#2}\label{#1}} \renewcommand{\doxysubsection}[2]{\subsection{#2}\label{#1}} +\renewcommand{\doxysubsubsection}[2]{\subsubsection{#2}\label{#1}} \renewcommand{\doxycode}[2][1]{\lstinputlisting[frame=single]{samples/#2-#1.cc}} \renewcommand{\doxyrawcode}[1]{\lstinputlisting[frame=single]{samples/#1.cc.raw}} \renewcommand{\doxyoutput}[1]{\lstinputlisting[frame=single]{outputs/#1.txt}} @@ -564,7 +572,8 @@ restricted to the region of interest \var{roi}'. Actually this is not directly Note the use of \code{rw()} which is mandatory due to C++ limitations. In C++, the image created by \code{lena | roi} is \code{const}, e.g. read-only, though -\code{data::fill} expect a \code{non-const} image, e.g. read-write. +\code{data::fill} expect a \code{non-const} image, e.g. read-write. \code{rw()} +is a workaround to make it read-write. \begin{center} \begin{tabular}{c c c} @@ -1214,6 +1223,8 @@ image domain. In the library, both the concept of border and of extension can be These concepts are useful in many algorithms and can avoid costly tests while working with sites located on image edges. +\doxysubsection{imabordersection}{Image border} + A border is a finite extension provided to a basic image type, such as \type{image2d}. By default, every image is created with a border. The default width is defined through the global variable \var{border::thickness} defined in @@ -1234,8 +1245,6 @@ ignored while saving or printing an image. Some operations can be performed on the border. The functions are located in \hpath{mln/border}.\\ -FIXME: More details about border manipulation! border:get(), \ldots - % \bigskip % @@ -1254,7 +1263,9 @@ resize & Set image border to a specific size.\\ \end{tabular} \\ -On morphed images, decribed in section \doxyref{imamorphed}, the border concept +\doxysubsection{imextgeneral}{Generality on image extension} + +On morphed images, described in section \doxyref{imamorphed}, the border concept does not exist and is generalized to the extension concept. A simple example of a morphed image is a sub-image. A sub image does not have border nor extension by default. @@ -1264,8 +1275,6 @@ Another point is that an image can be used as extension. For instance, in the case of a sub-image, you may be interested in extending the sub-image with the image itself. -[FIXME: schema - voir cahier] - The extension supports the following operations. These functions are located in \hpath{mln/extension}.\\ @@ -1275,9 +1284,65 @@ The extension supports the following operations. These functions are located in \begin{tabular}{l|p{10cm}} Routine & Description \\ \hline +adjust & Adjust the extension given a structural element.\\ +adjust\_duplicate & Adjust the size of the extension given a structural element and duplicate the image inner boundary.\\ +adjust\_fill & Adjust the size of the extension given a structural element and fill it with a value.\\ +duplicate & Duplicate the values of the image inner boundary in the extension.\\ fill & Fill the extension with a given value.\\ \end{tabular} \\ + +In order to extend an image, a routine \code{extend} is available in +\hpath{mln/core/routine/extend.hh}. The routine \code{extended\_to} may +also help during debug. It allows to extend the image domain to a larger +one. The values associated to the new sites comes from the extension. + +\doxysubsection{extexample}{Different extensions} + +Let's say we have want to extract a sub domain from an image. In the following +example, \var{ima\_roi} holds several small rectangles from the original image. +\doxycode[2]{extend} + +\begin{center} + \begin{tabular}{c c c} + \doxyimg{small-enlarged} & ~\huge{\rightarrow}~ & \doxyfigure[1]{extend}{3cm} \\ + \var{lena} & & \var{ima\_roi} (black color means the sites are not included in the domain) \\ + \end{tabular} +\end{center} + + +Then, we may extend this sub image with one of the three following extension type. + +\doxysubsubsection{extval}{Extension with a value} + +Let's extend with the value \code{literal::blue}. +\doxycode[3]{extend} +\doxyfigure[2]{extend}{3cm} + +Note the use of the \code{extended\_to()} routine. We used a larger bbox to +extend the image domain. That is the reason why the image is surrounded by the +extension value, blue. + +\doxysubsubsection{extfun}{Extension with a function} + +Let's use the following function: +\doxycode[1]{extend} +\doxycode[4]{extend} +\doxyfigure[3]{extend}{3cm} + +\doxysubsubsection{extima}{Extension with an image} + +Let's extend with the original image, \var{lena}. +\doxycode[5]{extend} + +\begin{center} + \begin{tabular}{c c} + \doxyfigure[4]{extend}{3cm} & \doxyfigure[5]{extend}{3cm} \\ + \var{ext\_with\_ima}, the extended image. & The actual data in the domain (light) with its extension (dark) \\ + \end{tabular} +\end{center} + + %---------------- \subsection*{IMPORTANT NOTE} Many times, you may want to check if a site is part of the image before applying @@ -1559,7 +1624,8 @@ cuboid3d & Cuboid & - \\ These predefined windows can be passed directly to a function. The headers are located in \header{mln/core/alias/window*.hh}. - +\doxysubsection{wwindow}{Weighted window} +FIXME \doxysubsection{neighborhood}{Neighborhood} -- 1.5.6.5
participants (1)
-
Guillaume Lazzara