LRE
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
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
List overview
Download
Olena-patches
February 2013
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
olena-patches@lrde.epita.fr
9 participants
139 discussions
Start a n
N
ew thread
olena-2.0-384-g0f58d1b Move new viewer to scribo/demo.
by Guillaume Lazzara
* scribo/demo/viewer/BUGS, * scribo/demo/viewer/GScribo.pro, * scribo/demo/viewer/GScribo.pro.user, * scribo/demo/viewer/GScribo.pro.user.1.3, * scribo/demo/viewer/Makefile.am, * scribo/demo/viewer/PagesWidget/pagesdelegate.cc, * scribo/demo/viewer/PagesWidget/pagesdelegate.hh, * scribo/demo/viewer/PagesWidget/pagesmodel.cc, * scribo/demo/viewer/PagesWidget/pagesmodel.hh, * scribo/demo/viewer/PagesWidget/pageswidget.cc, * scribo/demo/viewer/PagesWidget/pageswidget.hh, * scribo/demo/viewer/Preferences/generaloptions.cc, * scribo/demo/viewer/Preferences/generaloptions.hh, * scribo/demo/viewer/Preferences/generaloptions.ui, * scribo/demo/viewer/Preferences/ocroptions.cc, * scribo/demo/viewer/Preferences/ocroptions.hh, * scribo/demo/viewer/Preferences/ocroptions.ui, * scribo/demo/viewer/Preferences/optionwidget.hh, * scribo/demo/viewer/Preferences/preferencesdialog.cc, * scribo/demo/viewer/Preferences/preferencesdialog.hh, * scribo/demo/viewer/Preferences/preferencesdialog.ui, * scribo/demo/viewer/Preferences/preprocessingoptions.cc, * scribo/demo/viewer/Preferences/preprocessingoptions.hh, * scribo/demo/viewer/Preferences/preprocessingoptions.ui, * scribo/demo/viewer/Preferences/segmentationoptions.cc, * scribo/demo/viewer/Preferences/segmentationoptions.hh, * scribo/demo/viewer/Preferences/segmentationoptions.ui, * scribo/demo/viewer/Processing/preprocess.cc, * scribo/demo/viewer/Processing/preprocess.hh, * scribo/demo/viewer/Processing/process.cc, * scribo/demo/viewer/Processing/process.hh, * scribo/demo/viewer/Processing/progressdialog.cc, * scribo/demo/viewer/Processing/progressdialog.hh, * scribo/demo/viewer/Processing/runner.cc, * scribo/demo/viewer/Processing/runner.hh, * scribo/demo/viewer/Rendering/abstractregionitem.hh, * scribo/demo/viewer/Rendering/backgroundtexture.hh, * scribo/demo/viewer/Rendering/graphicsview.cc, * scribo/demo/viewer/Rendering/graphicsview.hh, * scribo/demo/viewer/Rendering/regionitem.cc, * scribo/demo/viewer/Rendering/regionitem.hh, * scribo/demo/viewer/Rendering/rootgraphicsitem.cc, * scribo/demo/viewer/Rendering/rootgraphicsitem.hh, * scribo/demo/viewer/Rendering/scene.cc, * scribo/demo/viewer/Rendering/scene.hh, * scribo/demo/viewer/Rendering/selection.cc, * scribo/demo/viewer/Rendering/selection.hh, * scribo/demo/viewer/TODO, * scribo/demo/viewer/XmlWidget/attributesmodel.cc, * scribo/demo/viewer/XmlWidget/attributesmodel.hh, * scribo/demo/viewer/XmlWidget/selectionproxy.hh, * scribo/demo/viewer/XmlWidget/xmlattributes.cc, * scribo/demo/viewer/XmlWidget/xmlattributes.hh, * scribo/demo/viewer/XmlWidget/xmldelegate.hh, * scribo/demo/viewer/XmlWidget/xmlitem.cc, * scribo/demo/viewer/XmlWidget/xmlitem.hh, * scribo/demo/viewer/XmlWidget/xmlmodel.cc, * scribo/demo/viewer/XmlWidget/xmlmodel.hh, * scribo/demo/viewer/XmlWidget/xmlview.cc, * scribo/demo/viewer/XmlWidget/xmlview.hh, * scribo/demo/viewer/XmlWidget/xmlwidget.cc, * scribo/demo/viewer/XmlWidget/xmlwidget.hh, * scribo/demo/viewer/aboutdialog.cc, * scribo/demo/viewer/aboutdialog.hh, * scribo/demo/viewer/aboutdialog.ui, * scribo/demo/viewer/config.cc, * scribo/demo/viewer/configs.cc, * scribo/demo/viewer/configs.hh, * scribo/demo/viewer/defs.hh, * scribo/demo/viewer/dir.hh, * scribo/demo/viewer/dockwidget.cc, * scribo/demo/viewer/dockwidget.hh, * scribo/demo/viewer/general_options.hh, * scribo/demo/viewer/help_dialog.hh, * scribo/demo/viewer/image_scene.hh, * scribo/demo/viewer/image_view.hh, * scribo/demo/viewer/main.cc, * scribo/demo/viewer/mainwindow.cc, * scribo/demo/viewer/mainwindow.hh, * scribo/demo/viewer/mainwindow.ui, * scribo/demo/viewer/ocr_options.hh, * scribo/demo/viewer/option_widget.cc, * scribo/demo/viewer/option_widget.hh, * scribo/demo/viewer/preprocess.cc, * scribo/demo/viewer/preprocess.hh, * scribo/demo/viewer/process.cc, * scribo/demo/viewer/region.hh, * scribo/demo/viewer/regionwidget.cc, * scribo/demo/viewer/regionwidget.hh, * scribo/demo/viewer/variantpointer.cc, * scribo/demo/viewer/variantpointer.hh, * scribo/demo/viewer/xml.cc, * scribo/demo/viewer/xml.hh: New. * scribo/demo/viewer/README, * scribo/demo/viewer/browser_widget.cc, * scribo/demo/viewer/browser_widget.hh, * scribo/demo/viewer/common.hh, * scribo/demo/viewer/config.hh, * scribo/demo/viewer/general_options.cc, * scribo/demo/viewer/general_options.ui, * scribo/demo/viewer/help_dialog.cc, * scribo/demo/viewer/help_dialog.ui, * scribo/demo/viewer/icons/olena_smaller.jpg, * scribo/demo/viewer/image_region.cc, * scribo/demo/viewer/image_region.hh, * scribo/demo/viewer/image_region.hxx, * scribo/demo/viewer/image_scene.cc, * scribo/demo/viewer/image_view.cc, * scribo/demo/viewer/image_widget.cc, * scribo/demo/viewer/image_widget.hh, * scribo/demo/viewer/key_widget.cc, * scribo/demo/viewer/key_widget.hh, * scribo/demo/viewer/ocr_options.cc, * scribo/demo/viewer/ocr_options.ui, * scribo/demo/viewer/preferences_dialog.cc, * scribo/demo/viewer/preferences_dialog.hh, * scribo/demo/viewer/preferences_dialog.ui, * scribo/demo/viewer/preprocessing_options.cc, * scribo/demo/viewer/preprocessing_options.hh, * scribo/demo/viewer/preprocessing_options.ui, * scribo/demo/viewer/process.hh, * scribo/demo/viewer/runner.cc, * scribo/demo/viewer/runner.hh, * scribo/demo/viewer/segmentation_options.cc, * scribo/demo/viewer/segmentation_options.hh, * scribo/demo/viewer/segmentation_options.ui, * scribo/demo/viewer/step_widget.cc, * scribo/demo/viewer/step_widget.hh, * scribo/demo/viewer/viewer.cc, * scribo/demo/viewer/viewer.hh, * scribo/demo/viewer/viewer.hxx, * scribo/demo/viewer/viewer.qrc , * scribo/demo/viewer/xml_widget.cc, * scribo/demo/viewer/xml_widget.hh: Remove. --- ChangeLog | 80 ++ GScribo/GScribo.pro | 83 -- GScribo/PagesWidget/pagesdelegate.cpp | 20 - GScribo/PagesWidget/pagesdelegate.h | 18 - GScribo/PagesWidget/pagesmodel.cpp | 55 -- GScribo/PagesWidget/pagesmodel.h | 43 - GScribo/PagesWidget/pageswidget.cpp | 49 - GScribo/PagesWidget/pageswidget.h | 55 -- GScribo/Preferences/generaloptions.cpp | 44 - GScribo/Preferences/generaloptions.h | 34 - GScribo/Preferences/ocroptions.cpp | 53 - GScribo/Preferences/ocroptions.h | 33 - GScribo/Preferences/preferencesdialog.cpp | 98 -- GScribo/Preferences/preferencesdialog.h | 42 - GScribo/Preferences/preprocessingoptions.cpp | 45 - GScribo/Preferences/preprocessingoptions.h | 32 - GScribo/Preferences/segmentationoptions.cpp | 33 - GScribo/Preferences/segmentationoptions.h | 31 - GScribo/Processing/preprocess.cpp | 11 - GScribo/Processing/preprocess.h | 26 - GScribo/Processing/process.cpp | 21 - GScribo/Processing/process.h | 29 - GScribo/Processing/progressdialog.cpp | 16 - GScribo/Processing/progressdialog.h | 22 - GScribo/Processing/runner.cpp | 183 ---- GScribo/Processing/runner.h | 58 -- GScribo/Rendering/graphicsview.cpp | 150 --- GScribo/Rendering/graphicsview.h | 43 - GScribo/Rendering/regionitem.cpp | 59 -- GScribo/Rendering/regionitem.h | 80 -- GScribo/Rendering/rootgraphicsitem.h | 30 - GScribo/Rendering/scene.cpp | 273 ------ GScribo/Rendering/scene.h | 118 --- GScribo/Rendering/selection.cpp | 36 - GScribo/XmlWidget/attributesmodel.cpp | 69 -- GScribo/XmlWidget/attributesmodel.h | 48 - GScribo/XmlWidget/selectionproxy.h | 47 - GScribo/XmlWidget/xmlattributes.cpp | 23 - GScribo/XmlWidget/xmlattributes.h | 33 - GScribo/XmlWidget/xmlitem.cpp | 43 - GScribo/XmlWidget/xmlitem.h | 90 -- GScribo/XmlWidget/xmlmodel.cpp | 87 -- GScribo/XmlWidget/xmlmodel.h | 44 - GScribo/XmlWidget/xmlview.cpp | 88 -- GScribo/XmlWidget/xmlview.h | 79 -- GScribo/XmlWidget/xmlwidget.cpp | 34 - GScribo/XmlWidget/xmlwidget.h | 54 - GScribo/aboutdialog.h | 25 - GScribo/aboutdialog.ui | 136 --- GScribo/configs.h | 134 --- GScribo/dockwidget.h | 22 - GScribo/main.cpp | 23 - GScribo/mainwindow.cpp | 415 -------- GScribo/mainwindow.h | 120 --- GScribo/region.h | 56 -- GScribo/regionwidget.cpp | 70 -- GScribo/regionwidget.h | 40 - GScribo/variantpointer.h | 19 - GScribo/xml.cpp | 206 ---- GScribo/xml.h | 93 -- scribo/ChangeLog | 140 +++ {GScribo => scribo/demo/viewer}/BUGS | 0 scribo/demo/viewer/GScribo.pro | 83 ++ {GScribo => scribo/demo/viewer}/GScribo.pro.user | 0 .../demo/viewer}/GScribo.pro.user.1.3 | 0 scribo/demo/viewer/Makefile.am | 204 +++-- scribo/demo/viewer/PagesWidget/pagesdelegate.cc | 38 + scribo/demo/viewer/PagesWidget/pagesdelegate.hh | 36 + scribo/demo/viewer/PagesWidget/pagesmodel.cc | 91 ++ scribo/demo/viewer/PagesWidget/pagesmodel.hh | 51 + scribo/demo/viewer/PagesWidget/pageswidget.cc | 119 +++ scribo/demo/viewer/PagesWidget/pageswidget.hh | 61 ++ scribo/demo/viewer/Preferences/generaloptions.cc | 60 ++ scribo/demo/viewer/Preferences/generaloptions.hh | 50 + .../demo/viewer}/Preferences/generaloptions.ui | 0 scribo/demo/viewer/Preferences/ocroptions.cc | 69 ++ scribo/demo/viewer/Preferences/ocroptions.hh | 49 + .../demo/viewer}/Preferences/ocroptions.ui | 0 .../demo/viewer/Preferences/optionwidget.hh | 0 .../demo/viewer/Preferences/preferencesdialog.cc | 120 +++ .../demo/viewer/Preferences/preferencesdialog.hh | 55 ++ .../demo/viewer}/Preferences/preferencesdialog.ui | 0 .../viewer/Preferences/preprocessingoptions.cc | 61 ++ .../viewer/Preferences/preprocessingoptions.hh | 48 + .../viewer}/Preferences/preprocessingoptions.ui | 0 .../demo/viewer/Preferences/segmentationoptions.cc | 49 + .../demo/viewer/Preferences/segmentationoptions.hh | 46 + .../viewer}/Preferences/segmentationoptions.ui | 0 scribo/demo/viewer/Processing/preprocess.cc | 27 + scribo/demo/viewer/Processing/preprocess.hh | 42 + scribo/demo/viewer/Processing/process.cc | 37 + scribo/demo/viewer/Processing/process.hh | 45 + scribo/demo/viewer/Processing/progressdialog.cc | 37 + scribo/demo/viewer/Processing/progressdialog.hh | 36 + scribo/demo/viewer/Processing/runner.cc | 199 ++++ scribo/demo/viewer/Processing/runner.hh | 74 ++ scribo/demo/viewer/README | 32 - .../demo/viewer/Rendering/abstractregionitem.hh | 0 .../demo/viewer/Rendering/backgroundtexture.hh | 0 scribo/demo/viewer/Rendering/graphicsview.cc | 165 ++++ scribo/demo/viewer/Rendering/graphicsview.hh | 59 ++ scribo/demo/viewer/Rendering/regionitem.cc | 130 +++ scribo/demo/viewer/Rendering/regionitem.hh | 66 ++ scribo/demo/viewer/Rendering/rootgraphicsitem.cc | 46 + scribo/demo/viewer/Rendering/rootgraphicsitem.hh | 39 + scribo/demo/viewer/Rendering/scene.cc | 289 ++++++ scribo/demo/viewer/Rendering/scene.hh | 118 +++ scribo/demo/viewer/Rendering/selection.cc | 52 + .../demo/viewer/Rendering/selection.hh | 0 {GScribo => scribo/demo/viewer}/TODO | 0 scribo/demo/viewer/XmlWidget/attributesmodel.cc | 108 ++ scribo/demo/viewer/XmlWidget/attributesmodel.hh | 55 ++ scribo/demo/viewer/XmlWidget/selectionproxy.hh | 47 + scribo/demo/viewer/XmlWidget/xmlattributes.cc | 49 + scribo/demo/viewer/XmlWidget/xmlattributes.hh | 44 + .../demo/viewer/XmlWidget/xmldelegate.hh | 0 scribo/demo/viewer/XmlWidget/xmlitem.cc | 59 ++ scribo/demo/viewer/XmlWidget/xmlitem.hh | 106 ++ scribo/demo/viewer/XmlWidget/xmlmodel.cc | 123 +++ scribo/demo/viewer/XmlWidget/xmlmodel.hh | 51 + scribo/demo/viewer/XmlWidget/xmlview.cc | 104 ++ scribo/demo/viewer/XmlWidget/xmlview.hh | 95 ++ scribo/demo/viewer/XmlWidget/xmlwidget.cc | 66 ++ scribo/demo/viewer/XmlWidget/xmlwidget.hh | 61 ++ scribo/demo/viewer/aboutdialog.cc | 31 + scribo/demo/viewer/aboutdialog.hh | 40 + scribo/demo/viewer/aboutdialog.ui | 136 +++ scribo/demo/viewer/browser_widget.cc | 138 --- scribo/demo/viewer/browser_widget.hh | 50 - scribo/demo/viewer/common.hh | 73 -- scribo/demo/viewer/config.cc | 182 ---- scribo/demo/viewer/config.hh | 78 -- scribo/demo/viewer/configs.cc | 149 +++ scribo/demo/viewer/configs.hh | 74 ++ scribo/demo/viewer/defs.hh | 31 - GScribo/dir.h => scribo/demo/viewer/dir.hh | 0 scribo/demo/viewer/dockwidget.cc | 34 + scribo/demo/viewer/dockwidget.hh | 36 + scribo/demo/viewer/general_options.cc | 60 -- scribo/demo/viewer/general_options.hh | 40 - scribo/demo/viewer/general_options.ui | 100 -- scribo/demo/viewer/help_dialog.cc | 23 - scribo/demo/viewer/help_dialog.hh | 31 - scribo/demo/viewer/help_dialog.ui | 138 --- scribo/demo/viewer/icons/olena_smaller.jpg | Bin 8028 -> 0 bytes scribo/demo/viewer/image_region.cc | 138 --- scribo/demo/viewer/image_region.hh | 79 -- scribo/demo/viewer/image_region.hxx | 106 -- scribo/demo/viewer/image_scene.cc | 104 -- scribo/demo/viewer/image_scene.hh | 45 - scribo/demo/viewer/image_view.cc | 81 -- scribo/demo/viewer/image_view.hh | 42 - scribo/demo/viewer/image_widget.cc | 61 -- scribo/demo/viewer/image_widget.hh | 47 - scribo/demo/viewer/key_widget.cc | 162 --- scribo/demo/viewer/key_widget.hh | 55 -- scribo/demo/viewer/main.cc | 42 +- scribo/demo/viewer/mainwindow.cc | 496 ++++++++++ scribo/demo/viewer/mainwindow.hh | 130 +++ {GScribo => scribo/demo/viewer}/mainwindow.ui | 0 scribo/demo/viewer/ocr_options.cc | 74 -- scribo/demo/viewer/ocr_options.hh | 40 - scribo/demo/viewer/ocr_options.ui | 62 -- scribo/demo/viewer/option_widget.cc | 30 - scribo/demo/viewer/option_widget.hh | 30 - scribo/demo/viewer/preferences_dialog.cc | 129 --- scribo/demo/viewer/preferences_dialog.hh | 45 - scribo/demo/viewer/preferences_dialog.ui | 121 --- scribo/demo/viewer/preprocess.cc | 29 - scribo/demo/viewer/preprocess.hh | 41 - scribo/demo/viewer/preprocessing_options.cc | 66 -- scribo/demo/viewer/preprocessing_options.hh | 38 - scribo/demo/viewer/preprocessing_options.ui | 76 -- scribo/demo/viewer/process.cc | 42 - scribo/demo/viewer/process.hh | 46 - scribo/demo/viewer/region.hh | 72 ++ scribo/demo/viewer/regionwidget.cc | 114 +++ scribo/demo/viewer/regionwidget.hh | 58 ++ scribo/demo/viewer/runner.cc | 243 ----- scribo/demo/viewer/runner.hh | 73 -- scribo/demo/viewer/segmentation_options.cc | 56 -- scribo/demo/viewer/segmentation_options.hh | 37 - scribo/demo/viewer/segmentation_options.ui | 52 - scribo/demo/viewer/step_widget.cc | 178 ---- scribo/demo/viewer/step_widget.hh | 56 -- scribo/demo/viewer/variantpointer.cc | 39 + scribo/demo/viewer/variantpointer.hh | 33 + scribo/demo/viewer/viewer.cc | 1021 -------------------- scribo/demo/viewer/viewer.hh | 132 --- scribo/demo/viewer/viewer.hxx | 38 - scribo/demo/viewer/viewer.qrc | 5 - scribo/demo/viewer/xml.cc | 253 +++++ scribo/demo/viewer/xml.hh | 91 ++ scribo/demo/viewer/xml_widget.cc | 164 ---- scribo/demo/viewer/xml_widget.hh | 48 - 195 files changed, 5660 insertions(+), 8996 deletions(-) delete mode 100644 GScribo/GScribo.pro delete mode 100644 GScribo/PagesWidget/pagesdelegate.cpp delete mode 100644 GScribo/PagesWidget/pagesdelegate.h delete mode 100644 GScribo/PagesWidget/pagesmodel.cpp delete mode 100644 GScribo/PagesWidget/pagesmodel.h delete mode 100644 GScribo/PagesWidget/pageswidget.cpp delete mode 100644 GScribo/PagesWidget/pageswidget.h delete mode 100644 GScribo/Preferences/generaloptions.cpp delete mode 100644 GScribo/Preferences/generaloptions.h delete mode 100644 GScribo/Preferences/ocroptions.cpp delete mode 100644 GScribo/Preferences/ocroptions.h delete mode 100644 GScribo/Preferences/preferencesdialog.cpp delete mode 100644 GScribo/Preferences/preferencesdialog.h delete mode 100644 GScribo/Preferences/preprocessingoptions.cpp delete mode 100644 GScribo/Preferences/preprocessingoptions.h delete mode 100644 GScribo/Preferences/segmentationoptions.cpp delete mode 100644 GScribo/Preferences/segmentationoptions.h delete mode 100644 GScribo/Processing/preprocess.cpp delete mode 100644 GScribo/Processing/preprocess.h delete mode 100644 GScribo/Processing/process.cpp delete mode 100644 GScribo/Processing/process.h delete mode 100644 GScribo/Processing/progressdialog.cpp delete mode 100644 GScribo/Processing/progressdialog.h delete mode 100644 GScribo/Processing/runner.cpp delete mode 100644 GScribo/Processing/runner.h delete mode 100644 GScribo/Rendering/graphicsview.cpp delete mode 100644 GScribo/Rendering/graphicsview.h delete mode 100644 GScribo/Rendering/regionitem.cpp delete mode 100644 GScribo/Rendering/regionitem.h delete mode 100644 GScribo/Rendering/rootgraphicsitem.h delete mode 100644 GScribo/Rendering/scene.cpp delete mode 100644 GScribo/Rendering/scene.h delete mode 100644 GScribo/Rendering/selection.cpp delete mode 100644 GScribo/XmlWidget/attributesmodel.cpp delete mode 100644 GScribo/XmlWidget/attributesmodel.h delete mode 100644 GScribo/XmlWidget/selectionproxy.h delete mode 100644 GScribo/XmlWidget/xmlattributes.cpp delete mode 100644 GScribo/XmlWidget/xmlattributes.h delete mode 100644 GScribo/XmlWidget/xmlitem.cpp delete mode 100644 GScribo/XmlWidget/xmlitem.h delete mode 100644 GScribo/XmlWidget/xmlmodel.cpp delete mode 100644 GScribo/XmlWidget/xmlmodel.h delete mode 100644 GScribo/XmlWidget/xmlview.cpp delete mode 100644 GScribo/XmlWidget/xmlview.h delete mode 100644 GScribo/XmlWidget/xmlwidget.cpp delete mode 100644 GScribo/XmlWidget/xmlwidget.h delete mode 100644 GScribo/aboutdialog.h delete mode 100644 GScribo/aboutdialog.ui delete mode 100644 GScribo/configs.h delete mode 100644 GScribo/dockwidget.h delete mode 100644 GScribo/main.cpp delete mode 100644 GScribo/mainwindow.cpp delete mode 100644 GScribo/mainwindow.h delete mode 100644 GScribo/region.h delete mode 100644 GScribo/regionwidget.cpp delete mode 100644 GScribo/regionwidget.h delete mode 100644 GScribo/variantpointer.h delete mode 100644 GScribo/xml.cpp delete mode 100644 GScribo/xml.h rename {GScribo => scribo/demo/viewer}/BUGS (100%) create mode 100644 scribo/demo/viewer/GScribo.pro rename {GScribo => scribo/demo/viewer}/GScribo.pro.user (100%) rename {GScribo => scribo/demo/viewer}/GScribo.pro.user.1.3 (100%) create mode 100644 scribo/demo/viewer/PagesWidget/pagesdelegate.cc create mode 100644 scribo/demo/viewer/PagesWidget/pagesdelegate.hh create mode 100644 scribo/demo/viewer/PagesWidget/pagesmodel.cc create mode 100644 scribo/demo/viewer/PagesWidget/pagesmodel.hh create mode 100644 scribo/demo/viewer/PagesWidget/pageswidget.cc create mode 100644 scribo/demo/viewer/PagesWidget/pageswidget.hh create mode 100644 scribo/demo/viewer/Preferences/generaloptions.cc create mode 100644 scribo/demo/viewer/Preferences/generaloptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/generaloptions.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/ocroptions.cc create mode 100644 scribo/demo/viewer/Preferences/ocroptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/ocroptions.ui (100%) rename GScribo/Preferences/optionwidget.h => scribo/demo/viewer/Preferences/optionwidget.hh (100%) create mode 100644 scribo/demo/viewer/Preferences/preferencesdialog.cc create mode 100644 scribo/demo/viewer/Preferences/preferencesdialog.hh rename {GScribo => scribo/demo/viewer}/Preferences/preferencesdialog.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/preprocessingoptions.cc create mode 100644 scribo/demo/viewer/Preferences/preprocessingoptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/preprocessingoptions.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/segmentationoptions.cc create mode 100644 scribo/demo/viewer/Preferences/segmentationoptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/segmentationoptions.ui (100%) create mode 100644 scribo/demo/viewer/Processing/preprocess.cc create mode 100644 scribo/demo/viewer/Processing/preprocess.hh create mode 100644 scribo/demo/viewer/Processing/process.cc create mode 100644 scribo/demo/viewer/Processing/process.hh create mode 100644 scribo/demo/viewer/Processing/progressdialog.cc create mode 100644 scribo/demo/viewer/Processing/progressdialog.hh create mode 100644 scribo/demo/viewer/Processing/runner.cc create mode 100644 scribo/demo/viewer/Processing/runner.hh delete mode 100644 scribo/demo/viewer/README rename GScribo/Rendering/abstractregionitem.h => scribo/demo/viewer/Rendering/abstractregionitem.hh (100%) rename GScribo/Rendering/backgroundtexture.h => scribo/demo/viewer/Rendering/backgroundtexture.hh (100%) create mode 100644 scribo/demo/viewer/Rendering/graphicsview.cc create mode 100644 scribo/demo/viewer/Rendering/graphicsview.hh create mode 100644 scribo/demo/viewer/Rendering/regionitem.cc create mode 100644 scribo/demo/viewer/Rendering/regionitem.hh create mode 100644 scribo/demo/viewer/Rendering/rootgraphicsitem.cc create mode 100644 scribo/demo/viewer/Rendering/rootgraphicsitem.hh create mode 100644 scribo/demo/viewer/Rendering/scene.cc create mode 100644 scribo/demo/viewer/Rendering/scene.hh create mode 100644 scribo/demo/viewer/Rendering/selection.cc rename GScribo/Rendering/selection.h => scribo/demo/viewer/Rendering/selection.hh (100%) rename {GScribo => scribo/demo/viewer}/TODO (100%) create mode 100644 scribo/demo/viewer/XmlWidget/attributesmodel.cc create mode 100644 scribo/demo/viewer/XmlWidget/attributesmodel.hh create mode 100644 scribo/demo/viewer/XmlWidget/selectionproxy.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlattributes.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlattributes.hh rename GScribo/XmlWidget/xmldelegate.h => scribo/demo/viewer/XmlWidget/xmldelegate.hh (100%) create mode 100644 scribo/demo/viewer/XmlWidget/xmlitem.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlitem.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlmodel.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlmodel.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlview.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlview.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlwidget.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlwidget.hh create mode 100644 scribo/demo/viewer/aboutdialog.cc create mode 100644 scribo/demo/viewer/aboutdialog.hh create mode 100644 scribo/demo/viewer/aboutdialog.ui delete mode 100644 scribo/demo/viewer/browser_widget.cc delete mode 100644 scribo/demo/viewer/browser_widget.hh delete mode 100644 scribo/demo/viewer/common.hh delete mode 100644 scribo/demo/viewer/config.cc delete mode 100644 scribo/demo/viewer/config.hh create mode 100644 scribo/demo/viewer/configs.cc create mode 100644 scribo/demo/viewer/configs.hh delete mode 100644 scribo/demo/viewer/defs.hh rename GScribo/dir.h => scribo/demo/viewer/dir.hh (100%) create mode 100644 scribo/demo/viewer/dockwidget.cc create mode 100644 scribo/demo/viewer/dockwidget.hh delete mode 100644 scribo/demo/viewer/general_options.cc delete mode 100644 scribo/demo/viewer/general_options.hh delete mode 100644 scribo/demo/viewer/general_options.ui delete mode 100644 scribo/demo/viewer/help_dialog.cc delete mode 100644 scribo/demo/viewer/help_dialog.hh delete mode 100644 scribo/demo/viewer/help_dialog.ui delete mode 100644 scribo/demo/viewer/icons/olena_smaller.jpg delete mode 100644 scribo/demo/viewer/image_region.cc delete mode 100644 scribo/demo/viewer/image_region.hh delete mode 100644 scribo/demo/viewer/image_region.hxx delete mode 100644 scribo/demo/viewer/image_scene.cc delete mode 100644 scribo/demo/viewer/image_scene.hh delete mode 100644 scribo/demo/viewer/image_view.cc delete mode 100644 scribo/demo/viewer/image_view.hh delete mode 100644 scribo/demo/viewer/image_widget.cc delete mode 100644 scribo/demo/viewer/image_widget.hh delete mode 100644 scribo/demo/viewer/key_widget.cc delete mode 100644 scribo/demo/viewer/key_widget.hh create mode 100644 scribo/demo/viewer/mainwindow.cc create mode 100644 scribo/demo/viewer/mainwindow.hh rename {GScribo => scribo/demo/viewer}/mainwindow.ui (100%) delete mode 100644 scribo/demo/viewer/ocr_options.cc delete mode 100644 scribo/demo/viewer/ocr_options.hh delete mode 100644 scribo/demo/viewer/ocr_options.ui delete mode 100644 scribo/demo/viewer/option_widget.cc delete mode 100644 scribo/demo/viewer/option_widget.hh delete mode 100644 scribo/demo/viewer/preferences_dialog.cc delete mode 100644 scribo/demo/viewer/preferences_dialog.hh delete mode 100644 scribo/demo/viewer/preferences_dialog.ui delete mode 100644 scribo/demo/viewer/preprocess.cc delete mode 100644 scribo/demo/viewer/preprocess.hh delete mode 100644 scribo/demo/viewer/preprocessing_options.cc delete mode 100644 scribo/demo/viewer/preprocessing_options.hh delete mode 100644 scribo/demo/viewer/preprocessing_options.ui delete mode 100644 scribo/demo/viewer/process.cc delete mode 100644 scribo/demo/viewer/process.hh create mode 100644 scribo/demo/viewer/region.hh create mode 100644 scribo/demo/viewer/regionwidget.cc create mode 100644 scribo/demo/viewer/regionwidget.hh delete mode 100644 scribo/demo/viewer/runner.cc delete mode 100644 scribo/demo/viewer/runner.hh delete mode 100644 scribo/demo/viewer/segmentation_options.cc delete mode 100644 scribo/demo/viewer/segmentation_options.hh delete mode 100644 scribo/demo/viewer/segmentation_options.ui delete mode 100644 scribo/demo/viewer/step_widget.cc delete mode 100644 scribo/demo/viewer/step_widget.hh create mode 100644 scribo/demo/viewer/variantpointer.cc create mode 100644 scribo/demo/viewer/variantpointer.hh delete mode 100644 scribo/demo/viewer/viewer.cc delete mode 100644 scribo/demo/viewer/viewer.hh delete mode 100644 scribo/demo/viewer/viewer.hxx delete mode 100644 scribo/demo/viewer/viewer.qrc create mode 100644 scribo/demo/viewer/xml.cc create mode 100644 scribo/demo/viewer/xml.hh delete mode 100644 scribo/demo/viewer/xml_widget.cc delete mode 100644 scribo/demo/viewer/xml_widget.hh diff --git a/ChangeLog b/ChangeLog index 5cc8a6c..c8de092 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,83 @@ +2013-02-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + Move new viewer to scribo/demo. + + * GScribo/BUGS, + * GScribo/GScribo.pro, + * GScribo/GScribo.pro.user, + * GScribo/GScribo.pro.user.1.3, + * GScribo/PagesWidget/pagesdelegate.cpp, + * GScribo/PagesWidget/pagesdelegate.h, + * GScribo/PagesWidget/pagesmodel.cpp, + * GScribo/PagesWidget/pagesmodel.h, + * GScribo/PagesWidget/pageswidget.cpp, + * GScribo/PagesWidget/pageswidget.h, + * GScribo/Preferences/generaloptions.cpp, + * GScribo/Preferences/generaloptions.h, + * GScribo/Preferences/generaloptions.ui, + * GScribo/Preferences/ocroptions.cpp, + * GScribo/Preferences/ocroptions.h, + * GScribo/Preferences/ocroptions.ui, + * GScribo/Preferences/optionwidget.h, + * GScribo/Preferences/preferencesdialog.cpp, + * GScribo/Preferences/preferencesdialog.h, + * GScribo/Preferences/preferencesdialog.ui, + * GScribo/Preferences/preprocessingoptions.cpp, + * GScribo/Preferences/preprocessingoptions.h, + * GScribo/Preferences/preprocessingoptions.ui, + * GScribo/Preferences/segmentationoptions.cpp, + * GScribo/Preferences/segmentationoptions.h, + * GScribo/Preferences/segmentationoptions.ui, + * GScribo/Processing/preprocess.cpp, + * GScribo/Processing/preprocess.h, + * GScribo/Processing/process.cpp, + * GScribo/Processing/process.h, + * GScribo/Processing/progressdialog.cpp, + * GScribo/Processing/progressdialog.h, + * GScribo/Processing/runner.cpp, + * GScribo/Processing/runner.h, + * GScribo/Rendering/abstractregionitem.h, + * GScribo/Rendering/backgroundtexture.h, + * GScribo/Rendering/graphicsview.cpp, + * GScribo/Rendering/graphicsview.h, + * GScribo/Rendering/regionitem.cpp, + * GScribo/Rendering/regionitem.h, + * GScribo/Rendering/rootgraphicsitem.h, + * GScribo/Rendering/scene.cpp, + * GScribo/Rendering/scene.h, + * GScribo/Rendering/selection.cpp, + * GScribo/Rendering/selection.h, + * GScribo/TODO, + * GScribo/XmlWidget/attributesmodel.cpp, + * GScribo/XmlWidget/attributesmodel.h, + * GScribo/XmlWidget/selectionproxy.h, + * GScribo/XmlWidget/xmlattributes.cpp, + * GScribo/XmlWidget/xmlattributes.h, + * GScribo/XmlWidget/xmldelegate.h, + * GScribo/XmlWidget/xmlitem.cpp, + * GScribo/XmlWidget/xmlitem.h, + * GScribo/XmlWidget/xmlmodel.cpp, + * GScribo/XmlWidget/xmlmodel.h, + * GScribo/XmlWidget/xmlview.cpp, + * GScribo/XmlWidget/xmlview.h, + * GScribo/XmlWidget/xmlwidget.cpp, + * GScribo/XmlWidget/xmlwidget.h, + * GScribo/aboutdialog.h, + * GScribo/aboutdialog.ui, + * GScribo/configs.h, + * GScribo/dir.h, + * GScribo/dockwidget.h, + * GScribo/main.cpp, + * GScribo/mainwindow.cpp, + * GScribo/mainwindow.h, + * GScribo/mainwindow.ui, + * GScribo/region.h, + * GScribo/regionwidget.cpp, + * GScribo/regionwidget.h, + * GScribo/variantpointer.h, + * GScribo/xml.cpp, + * GScribo/xml.h: Move to scribo/demo. + 2013-03-08 Guillaume Lazzara <z(a)lrde.epita.fr> Improve look'n feel of general documentation. diff --git a/GScribo/GScribo.pro b/GScribo/GScribo.pro deleted file mode 100644 index 1495495..0000000 --- a/GScribo/GScribo.pro +++ /dev/null @@ -1,83 +0,0 @@ -# ------------------------------------------------- -# Project created by QtCreator 2013-01-21T09:20:54 -# ------------------------------------------------- -QT += xml -INCLUDEPATH += /lrde/home/stage/froger_a/olena/scribo/ \ - /lrde/home/stage/froger_a/olena/milena/ \ - /lrde/home/stage/froger_a/olena/_build/scribo/demo/ -QMAKE_CXXFLAGS += -DNDEBUG \ - -DMLN_WO_GLOBAL_VARS -LIBS += -I/usr/include/graphicsImage \ - -lGraphicsMagick++ \ - -ltesseract_full \ - -ltiff -TARGET = GScribo -TEMPLATE = app -SOURCES += regionwidget.cpp \ - mainwindow.cpp \ - main.cpp \ - xml.cpp \ - Rendering/scene.cpp \ - Rendering/selection.cpp \ - Rendering/regionitem.cpp \ - Rendering/graphicsview.cpp \ - PagesWidget/pageswidget.cpp \ - PagesWidget/pagesmodel.cpp \ - PagesWidget/pagesdelegate.cpp \ - Preferences/segmentationoptions.cpp \ - Preferences/preprocessingoptions.cpp \ - Preferences/ocroptions.cpp \ - Preferences/generaloptions.cpp \ - Preferences/preferencesdialog.cpp \ - Processing/progressdialog.cpp \ - Processing/preprocess.cpp \ - Processing/process.cpp \ - Processing/runner.cpp \ - XmlWidget/xmlwidget.cpp \ - XmlWidget/xmlmodel.cpp \ - XmlWidget/xmlitem.cpp \ - XmlWidget/xmlattributes.cpp \ - XmlWidget/attributesmodel.cpp \ - XmlWidget/xmlview.cpp -HEADERS += mainwindow.h \ - variantpointer.h \ - regionwidget.h \ - aboutdialog.h \ - configs.h \ - region.h \ - dir.h \ - xml.h \ - Rendering/scene.h \ - Rendering/selection.h \ - Rendering/regionitem.h \ - Rendering/graphicsview.h \ - PagesWidget/pageswidget.h \ - PagesWidget/pagesmodel.h \ - Processing/preprocess.h \ - Processing/process.h \ - Processing/runner.h \ - Processing/progressdialog.h \ - Preferences/segmentationoptions.h \ - Preferences/preprocessingoptions.h \ - Preferences/ocroptions.h \ - Preferences/generaloptions.h \ - Preferences/optionwidget.h \ - Preferences/preferencesdialog.h \ - XmlWidget/xmlwidget.h \ - XmlWidget/xmlmodel.h \ - XmlWidget/xmlitem.h \ - XmlWidget/xmlattributes.h \ - XmlWidget/selectionproxy.h \ - XmlWidget/xmldelegate.h \ - XmlWidget/attributesmodel.h \ - PagesWidget/pagesdelegate.h \ - Rendering/rootgraphicsitem.h \ - XmlWidget/xmlview.h \ - dockwidget.h -FORMS += mainwindow.ui \ - aboutdialog.ui \ - Preferences/preferencesdialog.ui \ - Preferences/ocroptions.ui \ - Preferences/segmentationoptions.ui \ - Preferences/generaloptions.ui \ - Preferences/preprocessingoptions.ui diff --git a/GScribo/PagesWidget/pagesdelegate.cpp b/GScribo/PagesWidget/pagesdelegate.cpp deleted file mode 100644 index 19a34c2..0000000 --- a/GScribo/PagesWidget/pagesdelegate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "pagesdelegate.h" - -PagesDelegate::PagesDelegate(QObject *parent) : - QStyledItemDelegate(parent) -{ - pen_.setColor(QColor::fromRgb(255, 69, 0, 255)); - pen_.setWidth(2); -} - -void PagesDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index) const -{ - QStyledItemDelegate::paint(painter, option, index); - - if(index.row() == index.data(Qt::UserRole+1).toInt()) - { - painter->setPen(pen_); - painter->drawRect(option.rect); - painter->fillRect(option.rect, QColor::fromRgb(255, 69, 0, 60)); - } -} diff --git a/GScribo/PagesWidget/pagesdelegate.h b/GScribo/PagesWidget/pagesdelegate.h deleted file mode 100644 index ff422ca..0000000 --- a/GScribo/PagesWidget/pagesdelegate.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PAGESDELEGATE_H -#define PAGESDELEGATE_H - -#include <QStyledItemDelegate> -#include <QPainter> - -class PagesDelegate : - public QStyledItemDelegate -{ - public: - explicit PagesDelegate(QObject *parent = 0); - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; - - private: - QPen pen_; -}; - -#endif // PAGESDELEGATE_H diff --git a/GScribo/PagesWidget/pagesmodel.cpp b/GScribo/PagesWidget/pagesmodel.cpp deleted file mode 100644 index faccb74..0000000 --- a/GScribo/PagesWidget/pagesmodel.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "pagesmodel.h" - -PagesModel::PagesModel(QObject *parent): - QAbstractListModel(parent) -{ - currentRow_ = 0; -} - -QVariant PagesModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - if(role == Qt::DecorationRole) - return pixmaps_[index.row()]; - - if(role == Qt::UserRole) - return filenames_[index.row()]; - - if(role == Qt::UserRole+1) - return currentRow_; - - return QVariant(); -} - -void PagesModel::addPicture(const QString& filename, const QPixmap& pixmap) -{ - beginInsertRows(QModelIndex(), 0, 0); - - pixmaps_.prepend(pixmap.scaled(QSize(200, 200), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - filenames_.prepend(filename); - - endInsertRows(); -} - -void PagesModel::removePixmap(const QModelIndex &parent) -{ - int row = parent.row(); - - beginRemoveRows(parent, row, row); - - pixmaps_.removeAt(row); - filenames_.removeAt(row); - - endRemoveRows(); -} - -void PagesModel::setCurrentRow(int currentRow) -{ - beginResetModel(); - - currentRow_ = currentRow; - - endResetModel(); -} diff --git a/GScribo/PagesWidget/pagesmodel.h b/GScribo/PagesWidget/pagesmodel.h deleted file mode 100644 index 4c18842..0000000 --- a/GScribo/PagesWidget/pagesmodel.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef PAGESMODEL_H -#define PAGESMODEL_H - -#include <QAbstractListModel> -#include <QIcon> -#include <QList> - -class PagesModel: - public QAbstractListModel -{ - Q_OBJECT - - public: - explicit PagesModel(QObject *parent = 0); - - inline QStringList filenames() const; - inline int rowCount(const QModelIndex& parent = QModelIndex()) const; - - inline int currentRow() const; - void setCurrentRow(int currentRow); - - QVariant data(const QModelIndex& index, int role = Qt::DecorationRole) const; - void addPicture(const QString& filename, const QPixmap& pixmap); - - private: - QStringList filenames_; - QList<QPixmap> pixmaps_; - int currentRow_; - - public slots: - void removePixmap(const QModelIndex& parent); -}; - -inline QStringList PagesModel::filenames() const -{ return filenames_; } - -inline int PagesModel::rowCount(const QModelIndex&) const -{ return filenames_.count(); } - -inline int PagesModel::currentRow() const -{ return currentRow_; } - -#endif // PAGESMODEL_H diff --git a/GScribo/PagesWidget/pageswidget.cpp b/GScribo/PagesWidget/pageswidget.cpp deleted file mode 100644 index 400046a..0000000 --- a/GScribo/PagesWidget/pageswidget.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "pageswidget.h" - -PagesWidget::PagesWidget(QWidget *parent): - QListView(parent) -{ - setUniformItemSizes(true); - setSelectionMode(QAbstractItemView::ExtendedSelection); - setViewMode(QListView::IconMode); - setIconSize(QSize(200, 200)); - setMovement(QListView::Static); - setResizeMode(QListView::Adjust); - setSpacing(10); - - setModel(&model_); - setItemDelegate(new PagesDelegate()); - - QShortcut *remove = new QShortcut(Qt::Key_Delete, this); - connect(remove, SIGNAL(activated()), this, SLOT(removeSelection())); - connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(getPicture(QModelIndex))); -} - -void PagesWidget::removeSelection() -{ - QModelIndexList indexes = selectionModel()->selectedIndexes(); - if(hasFocus() && indexes.count() > 0) - { - // Sort the list because after the first removal, the second row index may not be the good one. - qSort(indexes.begin(), indexes.end()); - - // From the highest row to the smallest to be sure to remove the good index. - for(int i = indexes.count()-1; i > -1; i--) - model_.removePixmap(indexes[i]); - - // Draw new image on the scene. - getPicture(model_.index(indexes[0].row())); - clearSelection(); - - model_.setCurrentRow(indexes[0].row()); - scrollTo(indexes[0]); - } -} - -void PagesWidget::getPicture(const QModelIndex& index) -{ - QString filename = index.data(Qt::UserRole).toString(); - model_.setCurrentRow(index.row()); - - emit imageSelectionned(filename); -} diff --git a/GScribo/PagesWidget/pageswidget.h b/GScribo/PagesWidget/pageswidget.h deleted file mode 100644 index eb6488c..0000000 --- a/GScribo/PagesWidget/pageswidget.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef PAGESWIDGET_H -#define PAGESWIDGET_H - -#include <QListView> -#include <QShortcut> - -#include "pagesdelegate.h" -#include "pagesmodel.h" - -class PagesWidget: - public QListView -{ - Q_OBJECT - - public: - explicit PagesWidget(QWidget *parent = 0); - - inline QStringList filenames() const; - inline int currentRow() const; - inline void setCurrentRow(int currentRow); - - inline void addPicture(const QString& filename, const QPixmap& pixmap); - - protected: - inline void focusOutEvent(QFocusEvent *event); - - private: - PagesModel model_; - - public slots: - void removeSelection(); - - private slots: - void getPicture(const QModelIndex& index); - - signals: - void imageSelectionned(const QString& filename); -}; - -inline QStringList PagesWidget::filenames() const -{ return model_.filenames(); } - -inline int PagesWidget::currentRow() const -{ return model_.currentRow(); } - -inline void PagesWidget::setCurrentRow(int currentRow) -{ model_.setCurrentRow(currentRow); } - -inline void PagesWidget::addPicture(const QString& filename, const QPixmap& pixmap) -{ model_.addPicture(filename, pixmap); } - -inline void PagesWidget::focusOutEvent(QFocusEvent *event) -{ QListView::focusOutEvent(event); clearSelection(); } - -#endif // PAGESWIDGET_H diff --git a/GScribo/Preferences/generaloptions.cpp b/GScribo/Preferences/generaloptions.cpp deleted file mode 100644 index 620a8fd..0000000 --- a/GScribo/Preferences/generaloptions.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "generaloptions.h" -#include "ui_generaloptions.h" - -GeneralOptions::GeneralOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::GeneralOptions) -{ - ui->setupUi(this); - loadConfig(); -} - -GeneralOptions::~GeneralOptions() -{ - delete ui; -} - -void GeneralOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->saveXml->setChecked(conf->generalSaveXmlEnabled()); - ui->sameDir->setChecked(conf->generalSaveXmlSameDir()); - ui->customDir->setChecked(conf->generalSaveXmlCustomDir()); - ui->customDirValue->setText(conf->generalSaveXmlCustomDirPath()); -} - - -void GeneralOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setGeneralSaveXmlEnabled(ui->saveXml->isChecked()); - conf->setGeneralSaveXmlSameDir(ui->sameDir->isChecked()); - conf->setGeneralSaveXmlCustomDir(ui->customDir->isChecked()); - conf->setGeneralSaveXmlCustomDirPath(ui->customDirValue->text()); -} - -void GeneralOptions::onCustomDirBrowseBtnClicked() -{ - QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); - - if (!dir.isEmpty()) - ui->customDirValue->setText(dir); -} diff --git a/GScribo/Preferences/generaloptions.h b/GScribo/Preferences/generaloptions.h deleted file mode 100644 index 0c07129..0000000 --- a/GScribo/Preferences/generaloptions.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef GENERALOPTIONS_H -#define GENERALOPTIONS_H - -#include <QFileDialog> - -#include "optionwidget.h" -#include "configs.h" - -namespace Ui -{ - class GeneralOptions; -} - -class GeneralOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit GeneralOptions(QWidget *parent = 0); - ~GeneralOptions(); - - virtual void loadConfig(); - virtual void saveConfig(); - - private: - Ui::GeneralOptions *ui; - - private slots: - void onCustomDirBrowseBtnClicked(); - -}; - -#endif // GENERAL_OPTIONS_H diff --git a/GScribo/Preferences/ocroptions.cpp b/GScribo/Preferences/ocroptions.cpp deleted file mode 100644 index fff05b2..0000000 --- a/GScribo/Preferences/ocroptions.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "ocroptions.h" -#include "ui_ocroptions.h" - -static const char *language[][2] = -{ - { "English", "eng" }, - { "French", "fra" }, - { 0, 0 } -}; - -OcrOptions::OcrOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::OcrOptions) -{ - ui->setupUi(this); - - for (unsigned i = 0; language[i][0]; ++i) - ui->ocr_language->insertItem(i, language[i][0]); - - loadConfig(); -} - -OcrOptions::~OcrOptions() -{ - delete ui; -} - -int OcrOptions::findIndex(const QString& lang) -{ - for (unsigned i = 0; language[i][0]; ++i) - if (lang == language[i][1]) - return i; - - return 0; -} - - -void OcrOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->enable_ocr->setChecked(conf->ocrEnabled()); - ui->ocr_language->setCurrentIndex(findIndex(conf->ocrLanguage())); -} - - -void OcrOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setOcrEnabled(ui->enable_ocr->isChecked()); - conf->setOcrLanguage(language[ui->ocr_language->currentIndex()][1]); -} diff --git a/GScribo/Preferences/ocroptions.h b/GScribo/Preferences/ocroptions.h deleted file mode 100644 index 9ba8d53..0000000 --- a/GScribo/Preferences/ocroptions.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef OCR_OPTIONS_H -#define OCR_OPTIONS_H - -//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "configs.h" -#include "region.h" - -namespace Ui -{ - class OcrOptions; -} - -class OcrOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit OcrOptions(QWidget *parent = 0); - ~OcrOptions(); - - void loadConfig(); - void saveConfig(); - - private: - int findIndex(const QString& lang); - - Ui::OcrOptions *ui; -}; - -#endif // OCR_OPTIONS_H diff --git a/GScribo/Preferences/preferencesdialog.cpp b/GScribo/Preferences/preferencesdialog.cpp deleted file mode 100644 index 23a0dd6..0000000 --- a/GScribo/Preferences/preferencesdialog.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include "preferencesdialog.h" -#include "ui_preferencesdialog.h" - -PreferencesDialog::PreferencesDialog(QWidget *parent) : - QDialog(parent, Qt::Dialog), - ui(new Ui::PreferencesDialog) -{ - ui->setupUi(this); - - // We may want to remove this useless object in the ui file. - delete ui->widget; - - connect(ui->optionList, SIGNAL(currentRowChanged(int)), this, SLOT(onOptionListCurrentRowChanged(int))); - setAttribute(Qt::WA_DeleteOnClose); - - loadOptionList(); - ui->optionList->setCurrentRow(0); -} - -PreferencesDialog::~PreferencesDialog() -{ - delete ui; -} - -void PreferencesDialog::loadOptionList() -{ - static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; - - int i; - for (i = 0; options[i]; ++i) - ui->optionList->insertItem(i, options[i]); - - widgets.fill(0, i); -} - -void PreferencesDialog::selectOptionWidget(int row) -{ - if(!widgets[row]) - { - QWidget *widget = 0; - - switch(row) - { - case 0: - widget = new GeneralOptions(this); - break; - - case 1: - widget = new PreprocessingOptions(this); - break; - - case 2: - widget = new SegmentationOptions(this); - break; - - case 3: - widget = new OcrOptions(this); - break; - } - - if(widget) - widgets[row] = widget; - } - - if(ui->horizontalLayout_2->count() == 2) - { - QWidget *current_widget = ui->horizontalLayout_2->itemAt(1)->widget(); - ui->horizontalLayout_2->removeWidget(current_widget); - current_widget->hide(); - } - - ui->horizontalLayout_2->insertWidget(1, widgets[row]); - widgets[row]->show(); -} - - -void PreferencesDialog::accept() -{ - for (int i = 0; i < widgets.size(); ++i) - { - if (widgets[i]) - { - static_cast<OptionWidget *>(widgets[i])->saveConfig(); - delete widgets[i]; - } - } - - QDialog::accept(); -} - - -void PreferencesDialog::reject() -{ - for (int i = 0; i < widgets.size(); ++i) - delete widgets[i]; - - QDialog::reject(); -} diff --git a/GScribo/Preferences/preferencesdialog.h b/GScribo/Preferences/preferencesdialog.h deleted file mode 100644 index b0b9b61..0000000 --- a/GScribo/Preferences/preferencesdialog.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef PREFERENCESDIALOG_H -#define PREFERENCESDIALOG_H - -#include <QDialog> - -#include "preprocessingoptions.h" -#include "segmentationoptions.h" -#include "generaloptions.h" -#include "ocroptions.h" - -namespace Ui -{ - class PreferencesDialog; -} - -class PreferencesDialog : - public QDialog -{ - Q_OBJECT - - public: - explicit PreferencesDialog(QWidget *parent = 0); - ~PreferencesDialog(); - - private: - void loadOptionList(); - void selectOptionWidget(int row); - - Ui::PreferencesDialog *ui; - QVector<QWidget *> widgets; - - private slots: - inline void onOptionListCurrentRowChanged(int row); - virtual void accept(); - virtual void reject(); - -}; - -inline void PreferencesDialog::onOptionListCurrentRowChanged(int row) -{ selectOptionWidget(row); } - -#endif // PREFERENCESDIALOG_H diff --git a/GScribo/Preferences/preprocessingoptions.cpp b/GScribo/Preferences/preprocessingoptions.cpp deleted file mode 100644 index 6639bae..0000000 --- a/GScribo/Preferences/preprocessingoptions.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "preprocessingoptions.h" -#include "ui_preprocessingoptions.h" - -using namespace scribo::toolchain::internal; - -PreprocessingOptions::PreprocessingOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::PreprocessingOptions) -{ - ui->setupUi(this); - - ui->bin_algoCbox->insertItem(Convert, "Violent convert"); - ui->bin_algoCbox->insertItem(Sauvola, "Local threshold"); - ui->bin_algoCbox->insertItem(SauvolaMs, "Local threshold multiscale"); - - loadConfig(); -} - -PreprocessingOptions::~PreprocessingOptions() -{ - delete ui; -} - -void PreprocessingOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->subsampleCb->setChecked(conf->preprocessingSubsample()); - ui->remove_bgCb->setChecked(conf->preprocessingRemoveBg()); - ui->deskewCb->setChecked(conf->preprocessingDeskew()); - ui->remove_noiseCb->setChecked(conf->preprocessingRemoveNoise()); - ui->bin_algoCbox->setCurrentIndex(conf->preprocessingBinAlgo()); -} - - -void PreprocessingOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setPreprocessingSubsample(ui->subsampleCb->isChecked()); - conf->setPreprocessingRemoveBg(ui->remove_bgCb->isChecked()); - conf->setPreprocessingDeskew(ui->deskewCb->isChecked()); - conf->setPreprocessingRemoveNoise(ui->remove_noiseCb->isChecked()); - conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex()); -} diff --git a/GScribo/Preferences/preprocessingoptions.h b/GScribo/Preferences/preprocessingoptions.h deleted file mode 100644 index 6cc0081..0000000 --- a/GScribo/Preferences/preprocessingoptions.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PREPROCESSINGOPTIONS_H -#define PREPROCESSINGOPTIONS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "region.h" -#include "configs.h" - -namespace Ui -{ - class PreprocessingOptions; -} - -class PreprocessingOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit PreprocessingOptions(QWidget *parent = 0); - ~PreprocessingOptions(); - - void loadConfig(); - void saveConfig(); - - private: - Ui::PreprocessingOptions *ui; - -}; - -#endif // PREPROCESSINGOPTIONS_H diff --git a/GScribo/Preferences/segmentationoptions.cpp b/GScribo/Preferences/segmentationoptions.cpp deleted file mode 100644 index d35209f..0000000 --- a/GScribo/Preferences/segmentationoptions.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "segmentationoptions.h" -#include "ui_segmentationoptions.h" - -SegmentationOptions::SegmentationOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::SegmentationOptions) -{ - ui->setupUi(this); - - ui->find_sepsCbox->insertItem(Separator::Lines, "Lines"); - ui->find_sepsCbox->insertItem(Separator::Whitespaces, "Whitespaces"); - ui->find_sepsCbox->insertItem(Separator::Both, "Lines and whitespaces"); - - loadConfig(); -} - -SegmentationOptions::~SegmentationOptions() -{ - delete ui; -} - -void SegmentationOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - ui->find_sepsCbox->setCurrentIndex(conf->segmentationFindSeps()); -} - - -void SegmentationOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - conf->setSegmentationFindSeps(ui->find_sepsCbox->currentIndex()); -} diff --git a/GScribo/Preferences/segmentationoptions.h b/GScribo/Preferences/segmentationoptions.h deleted file mode 100644 index 1506bfa..0000000 --- a/GScribo/Preferences/segmentationoptions.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SEGMENTATIONOPTIONS_H -#define SEGMENTATIONOPTIONS_H - -//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "configs.h" -#include "region.h" - -namespace Ui -{ - class SegmentationOptions; -} - -class SegmentationOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit SegmentationOptions(QWidget *parent = 0); - ~SegmentationOptions(); - - void loadConfig(); - void saveConfig(); - - private: - Ui::SegmentationOptions *ui; -}; - -#endif // SEGMENTATIONOPTIONS_H diff --git a/GScribo/Processing/preprocess.cpp b/GScribo/Processing/preprocess.cpp deleted file mode 100644 index f012d88..0000000 --- a/GScribo/Processing/preprocess.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "preprocess.h" - -void Preprocess::on_progress() -{ - emit progress(); -} - -void Preprocess::on_new_progress_label(const char *label) -{ - emit newProgressLabel(QString(label)); -} diff --git a/GScribo/Processing/preprocess.h b/GScribo/Processing/preprocess.h deleted file mode 100644 index d65357f..0000000 --- a/GScribo/Processing/preprocess.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef PREPROCESS_H -#define PREPROCESS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> -#include <mln/core/image/image2d.hh> -#include <mln/value/rgb8.hh> -#include <QObject> - -using namespace scribo::toolchain::internal; - -class Preprocess : - public QObject, - public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > -{ - Q_OBJECT - - public: - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - - signals: - void newProgressLabel(const QString& label); - void progress(); -}; - -#endif // PREPROCESS_H diff --git a/GScribo/Processing/process.cpp b/GScribo/Processing/process.cpp deleted file mode 100644 index bd37480..0000000 --- a/GScribo/Processing/process.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "process.h" - -Process::Process(const char *doc_filename) - : superT(doc_filename) -{ -} - -void Process::on_progress() -{ - emit progress(); -} - -void Process::on_new_progress_label(const char *label) -{ - emit newProgressLabel(QString(label)); -} - -void Process::on_xml_saved() -{ - emit xmlSaved(QString(output_file.c_str())); -} diff --git a/GScribo/Processing/process.h b/GScribo/Processing/process.h deleted file mode 100644 index 579a988..0000000 --- a/GScribo/Processing/process.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef PROCESS_H -#define PROCESS_H - -#include <scribo/toolchain/internal/content_in_doc_functor.hh> -#include <mln/core/image/image2d.hh> -#include <QObject> - -using namespace scribo::toolchain::internal; - -struct Process : - public QObject, - public content_in_doc_functor<mln::image2d<bool> > -{ - Q_OBJECT - typedef content_in_doc_functor<mln::image2d<bool> > superT; - - public : - explicit Process(const char *docFilename); - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - virtual void on_xml_saved(); - - signals: - void newProgressLabel(const QString& label); - void progress(); - void xmlSaved(const QString& filename); -}; - -#endif // PROCESS_H diff --git a/GScribo/Processing/progressdialog.cpp b/GScribo/Processing/progressdialog.cpp deleted file mode 100644 index 7f9d833..0000000 --- a/GScribo/Processing/progressdialog.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "progressdialog.h" - -ProgressDialog::ProgressDialog(QWidget *parent): - QProgressDialog(parent, Qt::Dialog) -{ - setAutoClose(false); - setCancelButton(0); - hide(); -} - -void ProgressDialog::reset() -{ - setValue(0); - setLabelText("Initilization"); - show(); -} diff --git a/GScribo/Processing/progressdialog.h b/GScribo/Processing/progressdialog.h deleted file mode 100644 index 822d9ba..0000000 --- a/GScribo/Processing/progressdialog.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef PROGRESSDIALOG_H -#define PROGRESSDIALOG_H - -#include <QProgressDialog> - -class ProgressDialog : - public QProgressDialog -{ - Q_OBJECT - - public: - explicit ProgressDialog(QWidget *parent = 0); - void reset(); - - public slots: - inline void run(); -}; - -void ProgressDialog::run() -{ setValue(value()+1); } - -#endif // PROGRESSDIALOG_H diff --git a/GScribo/Processing/runner.cpp b/GScribo/Processing/runner.cpp deleted file mode 100644 index c02223c..0000000 --- a/GScribo/Processing/runner.cpp +++ /dev/null @@ -1,183 +0,0 @@ -#include "runner.h" - -using namespace mln; -using namespace scribo::toolchain::internal; - -static QString get_pathto(const QString& file, const QString localdirsuffix = QString()) -{ - QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); - if (f.exists()) - return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; - f.setFileName(SCRIBO_PREFIX_BINDIR "/" + file); - if (f.exists()) - return SCRIBO_PREFIX_BINDIR; - - return ""; -} - -Runner::Runner(QObject *parent) : - QThread(parent) -{ - moveToThread(this); -} - -void Runner::run() -{ - if(mode_ == Demat) - { - image2d<value::rgb8> ima; - for(int i = 0; i < args_.count(); i++) - { - io::magick::load(ima, args_.at(i).toUtf8().constData()); - image2d<bool> bin_ima = preprocess(ima); - process(ima, bin_ima, i); - } - } - - else if(mode_ == Export) - export_as(); - - emit finished(); -} - -void Runner::stop() -{ - terminate(); -} - -// Demat related stuff -void Runner::start_demat(const QStringList& filenames) -{ - args_.clear(); - args_ = filenames; - mode_ = Demat; - QThread::start(); -} - - -image2d<bool> Runner::preprocess(const image2d<value::rgb8>& ima) -{ - emit new_step("Preprocessing"); - Preprocess f; - - // Load config. - Configs *const conf = Configs::getInstance(); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(newProgressLabel(QString)), - this, SIGNAL(new_progress_label(const QString&))); - - f.enable_subsample = conf->preprocessingSubsample(); - f.enable_fg_extraction = conf->preprocessingRemoveBg(); - f.enable_deskew = conf->preprocessingDeskew(); - f.enable_denoising = conf->preprocessingRemoveNoise(); - - f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessingBinAlgo()); - - emit new_progress_max_value(f.nsteps()); - - // Perform preprocessing. - f(ima); - - return f.output; -} - - -void Runner::process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima, int arg) -{ - emit new_step("Page segmentation"); - - Process f(args_.at(arg).toUtf8().constData()); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(newProgressLabel(QString)), - this, SIGNAL(new_progress_label(QString))); - connect(&f, SIGNAL(xmlSaved(QString)), - this, SIGNAL(xml_saved(const QString&))); - - // Load config. - Configs *const conf = Configs::getInstance(); - - Separator::FindSeparator find_seps = static_cast<Separator::FindSeparator>(conf->segmentationFindSeps()); - f.enable_line_seps = (find_seps == Separator::Lines - || find_seps == Separator::Both); - f.enable_whitespace_seps = (find_seps == Separator::Whitespaces - || find_seps == Separator::Both); - f.enable_ocr = conf->ocrEnabled(); - f.ocr_language = conf->ocrLanguage().toAscii().data(); - f.xml_format = scribo::io::xml::PageExtended; - - - f.save_doc_as_xml = true; - QFileInfo file(args_.at(arg)); - QString output_dir = QDir::tempPath(); - if (conf->generalSaveXmlEnabled()) - { - if (conf->generalSaveXmlSameDir()) - output_dir = file.absolutePath(); - else if (conf->generalSaveXmlCustomDir()) - output_dir = conf->generalSaveXmlCustomDirPath(); - - QDir dir(output_dir); - if (!dir.exists() && !dir.mkpath(output_dir)) - output_dir = QDir::tempPath(); - } - QString filename = (output_dir + "/" + file.baseName() + "_gui.xml"); - f.output_file = filename.toUtf8().constData(); - emit new_progress_max_value(f.nsteps()); - - // Perform text detection. - f(original_ima, processed_ima); -} - -// Export related stuff -void Runner::start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile) -{ - args_.clear(); - args_ << imgfile << xmlfile << outfile; - mode_ = Export; - - QThread::start(); -} - -void Runner::export_as() -{ - emit new_step("Exporting document"); - emit new_progress_max_value(2); - - // Checking output format - QFileInfo f(args_.at(2)); - - QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); - - if (pathto_xml2doc.isEmpty()) - { - QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); - return; - } - - emit progress(); - - int rvalue = 0; - if (f.suffix() == "pdf") - { - emit new_step("Exporting as PDF"); - rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else if (f.suffix() == "html" || f.suffix() == "htm") - { - emit new_step("Exporting as HTML"); - rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else - QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); - - if (rvalue != 0) - QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); -} diff --git a/GScribo/Processing/runner.h b/GScribo/Processing/runner.h deleted file mode 100644 index 721086a..0000000 --- a/GScribo/Processing/runner.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef RUNNER_H -#define RUNNER_H - -#include <mln/core/image/image2d.hh> -#include <mln/io/magick/load.hh> -#include <mln/value/rgb8.hh> -#include <QStringList> -#include <QMessageBox> -#include <QThread> -#include <QFile> - -#include "preprocess.h" -#include "process.h" -#include "configs.h" -#include "region.h" -#include "dir.h" - -using namespace mln; - -enum RunMode -{ - Demat, - Export -}; - -class Runner : - public QThread -{ - Q_OBJECT - - public: - explicit Runner(QObject *parent = 0); - void start_demat(const QStringList& filenames); - void start_export(const QString& imgfile, const QString& xmlfile, const QString& outfile); - - private: - image2d<bool> preprocess(const image2d<value::rgb8>& ima); - void process(const image2d<value::rgb8>& original_ima, const image2d<bool>& processed_ima, int arg); - void export_as(); - virtual void run(); - template <typename V> unsigned find_best_scale(const mln::image2d<V>& ima); - - QStringList args_; - RunMode mode_; - - public slots: - void stop(); - - signals: - void new_step(const QString& step_name); - void new_progress_max_value(int i); - void new_progress_label(const QString& msg); - void xml_saved(const QString& filename); - void progress(); - void finished(); -}; - -#endif // RUNNER_H diff --git a/GScribo/Rendering/graphicsview.cpp b/GScribo/Rendering/graphicsview.cpp deleted file mode 100644 index 336d5c2..0000000 --- a/GScribo/Rendering/graphicsview.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include "graphicsview.h" -#include <QDebug> - -GraphicsView::GraphicsView(QWidget *parent) : - QGraphicsView(parent) -{ - init(); -} - -GraphicsView::GraphicsView(QGraphicsScene *scene, QWidget *parent) : - QGraphicsView(scene, parent) -{ - init(); -} - -void GraphicsView::init() -{ - isRightClicking_ = false; - scaleRatio_ = QSizeF(1, 1); - setTransformationAnchor(GraphicsView::AnchorUnderMouse); - setBackgroundBrush(QBrush(Qt::lightGray)); - - // Important to hide scroll bars : when they appear, it triggers the resizeEvent. - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -} - -void GraphicsView::mousePressEvent(QMouseEvent *event) -{ - if(event->button() == Qt::RightButton) - { - emit beginDrag(); - setDragMode(QGraphicsView::ScrollHandDrag); - } - - QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseButtonPress, event->pos(), Qt::LeftButton, - Qt::LeftButton, Qt::MetaModifier); - event->ignore(); - QGraphicsView::mousePressEvent(mouseEvent); -} - -void GraphicsView::mouseReleaseEvent(QMouseEvent *event) -{ - if(event->button() == Qt::RightButton) - { - setDragMode(GraphicsView::NoDrag); - emit endDrag(); - } - - QGraphicsView::mouseReleaseEvent(event); -} - -void GraphicsView::wheelEvent(QWheelEvent *event) -{ - if(event->modifiers() & Qt::ControlModifier) - { - // Current wheel have an angle of 15 degrees by steps with a delta of + or - 120. A good scale is +- 0.1 in that case. - // So we have to adapt for wheel whith better precision. - qreal degrees = 1 + static_cast<qreal>(event->delta()) / 1200; - qreal nextScaleRatio = degrees * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(event->delta() > 0) - { - if(nextScaleRatio <= 20) - { - scaleRatio_ *= degrees; - scale(degrees, degrees); - } - } - else - { - if(nextScaleRatio >= 1.1) - { - scaleRatio_ *= degrees; - scale(degrees, degrees); - } - else if(isContainedInView_) - { - QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); - scaleRatio_ = QSizeF(1, 1); - } - } - } - else - QGraphicsView::wheelEvent(event); -} - -void GraphicsView::keyPressEvent(QKeyEvent* event) -{ - // Bitwise AND to check if at least CTRL is pushed. - if(event->modifiers() & Qt::ControlModifier) - { - qreal nextScaleRatio; - if(event->key() == Qt::Key_Plus) - { - nextScaleRatio = 1.2 * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(nextScaleRatio <= 19) - { - scaleRatio_ *= 1.2; - scale(1.2, 1.2); - } - } - else if(event->key() == Qt::Key_Minus) - { - nextScaleRatio = 0.8 * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(nextScaleRatio >= 1.2) - { - scaleRatio_ *= 0.8; - scale(0.8, 0.8); - } - else if(isContainedInView_) - { - QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); - scaleRatio_ = QSizeF(1, 1); - } - } - } - - QGraphicsView::keyPressEvent(event); -} - -void GraphicsView::fitInView(const QRectF& rect) -{ - setFocus(); - isWidthGreater_ = static_cast<qreal>(rect.width()) / static_cast<qreal>(rect.height()) > 1 ? true : - false; - qreal ratio = isWidthGreater_ ? static_cast<qreal>(width()) / static_cast<qreal>(rect.width()) : - static_cast<qreal>(height()) / static_cast<qreal>(rect.height()); - - isContainedInView_ = ratio < 1 ? true : false; - if(isContainedInView_) - { - scaleRatio_ = QSizeF(1, 1); - QGraphicsView::fitInView(rect, Qt::KeepAspectRatio); - } -} - -void GraphicsView::resizeEvent(QResizeEvent *event) -{ - if(scene()->items().count() > 1) - { - qreal ratio = isWidthGreater_ ? static_cast<qreal>(event->size().width()) / static_cast<qreal>(event->oldSize().width()) : - static_cast<qreal>(event->size().height()) / static_cast<qreal>(event->oldSize().height()); - scale(ratio, ratio); - } - - QGraphicsView::resizeEvent(event); -} diff --git a/GScribo/Rendering/graphicsview.h b/GScribo/Rendering/graphicsview.h deleted file mode 100644 index 285f4cd..0000000 --- a/GScribo/Rendering/graphicsview.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef GRAPHICSVIEW_H -#define GRAPHICSVIEW_H - -#include <QGraphicsView> -#include <QWheelEvent> -#include <QScrollBar> - -class GraphicsView : - public QGraphicsView -{ - Q_OBJECT - - public: - explicit GraphicsView(QWidget *parent = 0); - explicit GraphicsView(QGraphicsScene *scene, QWidget *parent = 0); - - protected: - void init(); - - void resizeEvent(QResizeEvent *event); - - void wheelEvent(QWheelEvent *event); - void keyPressEvent(QKeyEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - - private: - bool isWidthGreater_; - bool isContainedInView_; - QSizeF scaleRatio_; - - bool isRightClicking_; - QPointF prevMousePos_; - - public slots: - void fitInView(const QRectF& rect); - - signals: - void beginDrag(); - void endDrag(); -}; - -#endif // GRAPHICSVIEW_H diff --git a/GScribo/Rendering/regionitem.cpp b/GScribo/Rendering/regionitem.cpp deleted file mode 100644 index 77cbcb3..0000000 --- a/GScribo/Rendering/regionitem.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "regionitem.h" - -RegionItem::RegionItem(QGraphicsItem *parent, QGraphicsScene *scene) - : QGraphicsPolygonItem(parent, scene) -{ - init(); -} - -RegionItem::RegionItem(const QPolygonF& polygon, QGraphicsItem *parent, QGraphicsScene *scene): - QGraphicsPolygonItem(polygon, parent, scene) -{ - init(); -} - -void RegionItem::init() -{ - xmlItem_ = 0; - - selectedPen_.setStyle(Qt::SolidLine); - unselectedPen_.setStyle(Qt::SolidLine); - - selectedPen_.setWidthF(2); - unselectedPen_.setWidth(0); - - selectedPen_.setCapStyle(Qt::SquareCap); - unselectedPen_.setCapStyle(Qt::SquareCap); - - selectedBrush_.setStyle(Qt::SolidPattern); - unselectedBrush_.setStyle(Qt::SolidPattern); -} - -void RegionItem::setColor(const QColor& color) -{ - selectedPen_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 255)); - unselectedPen_.setColor(color); - - selectedBrush_.setColor(color); - unselectedBrush_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 40)); - - setPen(unselectedPen_); - setBrush(unselectedBrush_); -} - -void RegionItem::setSelected(bool isSelected) -{ - if(isSelected) - { - isSelected_ = true; - setPen(selectedPen_); - setBrush(selectedBrush_); - } - - else - { - isSelected_ = false; - setPen(unselectedPen_); - setBrush(unselectedBrush_); - } -} diff --git a/GScribo/Rendering/regionitem.h b/GScribo/Rendering/regionitem.h deleted file mode 100644 index 3e8eb11..0000000 --- a/GScribo/Rendering/regionitem.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef RegionITEM_H -#define RegionITEM_H - -#include <QGraphicsPolygonItem> -#include <QTreeWidgetItem> -#include <QPen> - -#include "variantpointer.h" -#include "region.h" - -class XmlItem; - -class RegionItem : - public QGraphicsPolygonItem -{ - public: - explicit RegionItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); - explicit RegionItem(const QPolygonF& path, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); - - void setColor(const QColor& color); - inline QColor color() const; - - inline void setXmlItem(XmlItem *xmlItem); - inline XmlItem *xmlItem() const; - - inline void loadData(const GraphicsRegion::Data& data); - inline int region() const; - - inline bool intersects(const QRectF& rect); - inline bool contains(const QPointF& point); - - void setSelected(bool isSelected); - inline bool isSelected(); - inline void unselect(); - inline void select(); - - private: - void init(); - - XmlItem *xmlItem_; - int region_; - bool isSelected_; - - QPen selectedPen_; - QPen unselectedPen_; - QBrush selectedBrush_; - QBrush unselectedBrush_; -}; - -inline void RegionItem::setXmlItem(XmlItem *xmlItem) -{ xmlItem_ = xmlItem; } - -inline XmlItem *RegionItem::xmlItem() const -{ return xmlItem_; } - -inline QColor RegionItem::color() const -{ return selectedBrush_.color(); } - -inline int RegionItem::region() const -{ return region_; } - -inline bool RegionItem::isSelected() -{ return isSelected_; } - -inline void RegionItem::select() -{ setSelected(true); } - -inline void RegionItem::unselect() -{ setSelected(false); } - -inline void RegionItem::loadData(const GraphicsRegion::Data& data) -{ region_ = data.region; setColor(data.color); setZValue(data.zValue); } - -inline bool RegionItem::contains(const QPointF& point) -{ return (boundingRect().width() * boundingRect().height() == 0 || boundingRect().contains(point)) && shape().contains(point); } - -inline bool RegionItem::intersects(const QRectF& rect) -{ return (boundingRect().width() * boundingRect().height() == 0 || boundingRect().intersects(rect)) && shape().intersects(rect); } - -#endif // RegionITEM_H diff --git a/GScribo/Rendering/rootgraphicsitem.h b/GScribo/Rendering/rootgraphicsitem.h deleted file mode 100644 index 2e95297..0000000 --- a/GScribo/Rendering/rootgraphicsitem.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef ROOTGRAPHICSITEM_H -#define ROOTGRAPHICSITEM_H - -#include <QGraphicsItem> - -#include "region.h" - -class RootGraphicsItem : - public QGraphicsPolygonItem -{ - public: - explicit RootGraphicsItem(int numberRegion) - { childsFromRegion_.fill(QList<QGraphicsItem *>(), numberRegion); } - ~RootGraphicsItem() - { foreach(QList<QGraphicsItem *> list, childsFromRegion_) { foreach(QGraphicsItem *child, list) delete child; } } - - inline void addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region); - inline QList<QGraphicsItem *> childsFrom(const GraphicsRegion::Id& region) const; - - private: - QVector<QList<QGraphicsItem *> > childsFromRegion_; -}; - -inline QList<QGraphicsItem *> RootGraphicsItem::childsFrom(const GraphicsRegion::Id& region) const -{ return childsFromRegion_[region]; } - -inline void RootGraphicsItem::addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region) -{ childsFromRegion_[region] << graphicalItem; } - -#endif // ROOTGRAPHICSITEM_H diff --git a/GScribo/Rendering/scene.cpp b/GScribo/Rendering/scene.cpp deleted file mode 100644 index 903bb97..0000000 --- a/GScribo/Rendering/scene.cpp +++ /dev/null @@ -1,273 +0,0 @@ -#include "scene.h" - -Scene::Scene(QObject *parent): - QGraphicsScene(parent) -{ - init(); -} - -Scene::Scene(const QRectF &sceneRect, QObject *parent): - QGraphicsScene(sceneRect, parent) -{ - init(); -} - -Scene::Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent): - QGraphicsScene(x, y, width, height, parent) -{ - init(); -} - -void Scene::init() -{ - isPressing_ = false; - isSelectionDisabled_ = false; - backgroundPixmap_ = 0; - root_ = 0; - - selection_.hide(); - addItem(&selection_); -} - -void Scene::clearAll() -{ - if(root_) - delete root_; - - if(backgroundPixmap_) - delete backgroundPixmap_; - - selectedRegions_.clear(); - backgroundPath_ = QString(); - backgroundPixmap_ = 0; - root_ = 0; -} - -void Scene::clearRegions() -{ - if(root_) - delete root_; - - selectedRegions_.clear(); - root_ = 0; -} - -void Scene::clearSelection() -{ - QGraphicsItem *child; - RegionItem *regionItem; - - // Unselect all items. - foreach(child, selectedRegions_) - { - regionItem = static_cast<RegionItem *>(child); - regionItem->unselect(); - } - - selectedRegions_.clear(); - emit selectionCleared(); -} - -void Scene::selectAll() -{ - RegionItem *item; - foreach(QGraphicsItem *child, root_->childItems()) - { - item = static_cast<RegionItem *>(child); - item->select(); - selectedRegions_ << item; - } -} - -void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if(!backgroundPath_.isEmpty() && event->button() == Qt::LeftButton && !isSelectionDisabled_) - { - isPressing_ = true; - - baseSelection_.clear(); - pressPos_ = event->scenePos(); - selection_.show(); - } -} - -void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if(isPressing_) - { - // Adapt if the selection rectangle has a negative size. - if(pressPos_.x() < event->scenePos().x()) - selection_.setRect(pressPos_.x(), 0, event->scenePos().x()-pressPos_.x(), 0); - else - selection_.setRect(event->scenePos().x(), 0, pressPos_.x()-event->scenePos().x(), 0); - - if(pressPos_.y() < event->scenePos().y()) - selection_.setRect(selection_.rect().x(), pressPos_.y(), selection_.rect().width(), event->scenePos().y()-pressPos_.y()); - else - selection_.setRect(selection_.rect().x(), event->scenePos().y(), selection_.rect().width(), pressPos_.y()-event->scenePos().y()); - } -} - -void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - if(event->button() == Qt::LeftButton) - { - isPressing_ = false; - - // Redraw all items in selection. - if(root_) - { - clearSelection(); - - // Check if it is a click. - if(selection_.rect().width() * selection_.rect().height() == 0) - select(event->scenePos()); - else - select(selection_.rect()); - - baseSelection_ = selectedRegions(); - emit newSelection(selectedRegions_); - } - - selection_.setRect(QRect()); - selection_.hide(); - } -} - -void Scene::select(QGraphicsItem *root, const QPointF& point, const QRectF& rect) -{ - QGraphicsItem *child; - RegionItem *regionItem; - - // Check if it is a click. - if(!point.isNull()) - { - foreach(child, root->childItems()) - { - regionItem = static_cast<RegionItem *>(child); - - if(regionItem->contains(point)) - { - regionItem->select(); - selectedRegions_ << regionItem; - } - } - } - else - { - foreach(child, root->childItems()) - { - regionItem = static_cast<RegionItem *>(child); - - if(regionItem->intersects(rect)) - { - regionItem->select(); - selectedRegions_ << regionItem; - } - } - } - - emit newSelection(); -} - -void Scene::select(const QList<RegionItem *>& selectedRegions) -{ - RegionItem *child; - foreach(child, selectedRegions) - { - if(!child->isSelected()) - { - child->select(); - selectedRegions_ << child; - } - } - - ensureVisible(selectedRegions_.last()); - emit newSelection(); -} - -void Scene::unselect(const QList<RegionItem *>& unselectedRegions) -{ - RegionItem *child; - foreach(child, unselectedRegions) - { - if(child->isSelected()) - { - child->unselect(); - selectedRegions_.removeOne(child); - } - } - - // Check if after the removal, the selected list isn't empty. - if(!selectedRegions_.isEmpty()) - ensureVisible(selectedRegions_.last()); - - emit newSelection(); -} - - -void Scene::ensureVisible(QGraphicsItem *graphicalItem) -{ - QGraphicsView *view; - foreach (view, views()) - view->ensureVisible(graphicalItem); -} - -void Scene::setVisible(const GraphicsRegion::Id& region, bool visible) -{ - if(root_) - { - QGraphicsItem *child; - - if(visible) - { - foreach(child, root_->childsFrom(region)) - child->setVisible(true); - } - - else - { - foreach(child, root_->childsFrom(region)) - child->setVisible(false); - } - } -} - -void Scene::setRoot(RootGraphicsItem *root) -{ - // Delete all items. - clearRegions(); - - root_ = root; - addItem(root); - - // Add typo lines separately because can't be selected. - QGraphicsItem *line; - foreach(line, root->childsFrom(GraphicsRegion::Baseline)) - addItem(line); - - foreach(line, root->childsFrom(GraphicsRegion::Meanline)) - addItem(line); -} - -void Scene::changeScene(const QString& filename, RootGraphicsItem *root) -{ - // Delete all items. - clearAll(); - backgroundPath_ = filename; - - if(!filename.isEmpty()) - { - QPixmap pixmap(filename); - setSceneRect(pixmap.rect()); - // Create the background item and dock it at the maximal depth of the scene. - backgroundPixmap_ = new QGraphicsPixmapItem(pixmap, 0, this); - backgroundPixmap_->setZValue(INT_MIN); - } - else - setSceneRect(QRectF()); - - // Add new items. - if(root) - setRoot(root); -} diff --git a/GScribo/Rendering/scene.h b/GScribo/Rendering/scene.h deleted file mode 100644 index 129359b..0000000 --- a/GScribo/Rendering/scene.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef SCENE_H -#define SCENE_H - -#include <QGraphicsSceneMouseEvent> -#include <QGraphicsView> -#include <QGraphicsScene> -#include <QFileDialog> -#include <climits> - -#include "rootgraphicsitem.h" -#include "regionitem.h" -#include "selection.h" - -class Scene : - public QGraphicsScene -{ - Q_OBJECT - - public: - explicit Scene(QObject *parent = 0); - explicit Scene(const QRectF &sceneRect, QObject *parent = 0); - explicit Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent = 0); - - inline QString backgroundPath() const; - inline QGraphicsPixmapItem *backgroundPixmap() const; - - inline QList<RegionItem *> selectedRegions() const; - - void setRoot(RootGraphicsItem *rootItem); - inline RootGraphicsItem *root() const; - - void select(const QRectF& rect); - void select(const QPointF& point); - void selectAll(); - - inline bool selectionEnable() const; - inline void setSelectionEnable(bool enable); - - void changeScene(const QString& filename, RootGraphicsItem *root = 0); - - protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - - private: - void init(); - void select(QGraphicsItem *root, const QPointF& point, const QRectF& rect); - - QGraphicsView *mainView_; - RootGraphicsItem *root_; - - QString backgroundPath_; - QGraphicsPixmapItem *backgroundPixmap_; - - Selection selection_; - QList<RegionItem *> selectedRegions_; - QList<RegionItem *> baseSelection_; - - QPointF pressPos_; - bool isPressing_; - bool isSelectionDisabled_; - - public slots: - void clearAll(); - void clearRegions(); - void clearSelection(); - - void select(const QList<RegionItem *>& selectedRegions); - inline void selectBase(); - void unselect(const QList<RegionItem *>& unselectedItems); - - void setVisible(const GraphicsRegion::Id& region, bool visible); - void ensureVisible(QGraphicsItem *graphicsItem); - - inline void disableSelection(); - inline void enableSelection(); - - signals: - void selectionCleared(); - void newSelection(); - void newSelection(const QList<RegionItem *>& selectedRegions); -}; - -inline QString Scene::backgroundPath() const -{ return backgroundPath_; } - -inline QGraphicsPixmapItem *Scene::backgroundPixmap() const -{ return backgroundPixmap_; } - -inline RootGraphicsItem *Scene::root() const -{ return root_; } - -inline QList<RegionItem *> Scene::selectedRegions() const -{ return selectedRegions_; } - -inline void Scene::selectBase() -{ select(baseSelection_); } - -inline void Scene::select(const QPointF& point) -{ select(root_, point, QRectF()); } - -inline void Scene::select(const QRectF& rect) -{ select(root_, QPointF(), rect); } - -inline void Scene::setSelectionEnable(bool enable) -{ isSelectionDisabled_ = !enable; } - -inline bool Scene::selectionEnable() const -{ return isSelectionDisabled_; } - -inline void Scene::disableSelection() -{ setSelectionEnable(false); } - -inline void Scene::enableSelection() -{ setSelectionEnable(true); } - -#endif // SCENE_H diff --git a/GScribo/Rendering/selection.cpp b/GScribo/Rendering/selection.cpp deleted file mode 100644 index f5c3f4a..0000000 --- a/GScribo/Rendering/selection.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "selection.h" - -Selection::Selection(QGraphicsScene *scene): - QGraphicsRectItem(0, scene) -{ - init(); -} - -Selection::Selection(const QRectF &rect, QGraphicsScene *scene): - QGraphicsRectItem(rect, 0, scene) -{ - init(); -} - -Selection::Selection(qreal x, qreal y, qreal width, qreal height, QGraphicsScene *scene): - QGraphicsRectItem(x, y, width, height, 0, scene) -{ - init(); -} - -void Selection::init() -{ - // Always drawn on top of the scene. - setZValue(INT_MAX); - - QPen pen; - pen.setStyle(Qt::SolidLine); - pen.setCapStyle(Qt::SquareCap); - pen.setCosmetic(true); - setPen(pen); - - QBrush brush; - brush.setStyle(Qt::SolidPattern); - brush.setColor(QColor::fromRgb(80, 200, 10, 60)); - setBrush(brush); -} diff --git a/GScribo/XmlWidget/attributesmodel.cpp b/GScribo/XmlWidget/attributesmodel.cpp deleted file mode 100644 index 783fafb..0000000 --- a/GScribo/XmlWidget/attributesmodel.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "attributesmodel.h" - -AttributesModel::AttributesModel(const XmlAttributes& attributes, QObject *parent) : - QAbstractItemModel(parent) -{ - attributes_ = attributes; -} - -AttributesModel::AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent) : - QAbstractItemModel(dd, parent) -{ - attributes_ = attributes; -} - -QVariant AttributesModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal && role == Qt::DisplayRole) - { - switch(section) - { - case 0: - return tr("Name"); - - case 1: - return tr("Value"); - - default: - return QVariant(); - } - } - - return QVariant(); -} - -QVariant AttributesModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - switch(role) - { - case Qt::UserRole: - return attributes_.names()[index.row()]; - - case Qt::UserRole+1: - return attributes_.values()[index.row()]; - - default: - return QVariant(); - } -} - -void AttributesModel::load(const XmlAttributes& attributes) -{ - beginResetModel(); - - attributes_ = attributes; - - endResetModel(); -} - -void AttributesModel::reset() -{ - beginResetModel(); - - attributes_ = XmlAttributes(); - - endResetModel(); -} diff --git a/GScribo/XmlWidget/attributesmodel.h b/GScribo/XmlWidget/attributesmodel.h deleted file mode 100644 index 1dd3289..0000000 --- a/GScribo/XmlWidget/attributesmodel.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef ATTRIBUTESMODEL_H -#define ATTRIBUTESMODEL_H - -#include <QAbstractItemModel> - -#include "xmlattributes.h" - -class AttributesModel : - public QAbstractItemModel -{ - Q_OBJECT - - public: - explicit AttributesModel(const XmlAttributes& attributes = XmlAttributes(), QObject *parent = 0); - explicit AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent = 0); - - inline int rowCount(const QModelIndex& parent) const; - inline int columnCount(const QModelIndex& parent) const; - - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QVariant data(const QModelIndex& index, int role) const; - - inline QModelIndex index(int row, int column, const QModelIndex &parent) const; - inline QModelIndex parent(const QModelIndex &child) const; - - public slots: - void reset(); - - private: - XmlAttributes attributes_; - - public slots: - void load(const XmlAttributes& attributes); -}; - -inline int AttributesModel::rowCount(const QModelIndex&) const -{ return attributes_.names().count(); } - -inline int AttributesModel::columnCount(const QModelIndex&) const -{ return 2; } - -inline QModelIndex AttributesModel::index(int row, int column, const QModelIndex& parent) const -{ if(!hasIndex(row, column, parent)) return QModelIndex(); return createIndex(row, column, 0); } - -inline QModelIndex AttributesModel::parent(const QModelIndex&) const -{ return QModelIndex(); } - -#endif // ATTRIBUTESMODEL_H diff --git a/GScribo/XmlWidget/selectionproxy.h b/GScribo/XmlWidget/selectionproxy.h deleted file mode 100644 index 604c46a..0000000 --- a/GScribo/XmlWidget/selectionproxy.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef SELECTIONPROXY_H -#define SELECTIONPROXY_H - -#include <QSortFilterProxyModel> -#include <QDebug> - -#include "xmlitem.h" - -class SelectionProxy : - public QSortFilterProxyModel -{ - public: - explicit SelectionProxy(QObject *parent = 0) : QSortFilterProxyModel(parent) { isAllDisplayed_ = true; } - - inline void displayAll(); - inline bool isAllDisplayed(); - - inline void beginResetModel(); - inline void endResetModel(); - inline void invalidateFilter(); - - protected: - inline bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const; - - private: - bool isAllDisplayed_; -}; - -inline bool SelectionProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const -{ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent) && (isAllDisplayed_ || sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+2).value<XmlItem *>()->isVisible()); } - -inline void SelectionProxy::beginResetModel() -{ isAllDisplayed_ = false; QSortFilterProxyModel::beginResetModel(); } - -inline void SelectionProxy::endResetModel() -{ QSortFilterProxyModel::endResetModel(); } - -inline void SelectionProxy::displayAll() -{ isAllDisplayed_ = true; } - -inline bool SelectionProxy::isAllDisplayed() -{ return isAllDisplayed_; } - -inline void SelectionProxy::invalidateFilter() -{ QSortFilterProxyModel::invalidateFilter(); } - -#endif // SELECTIONPROXY_H diff --git a/GScribo/XmlWidget/xmlattributes.cpp b/GScribo/XmlWidget/xmlattributes.cpp deleted file mode 100644 index 0c4221f..0000000 --- a/GScribo/XmlWidget/xmlattributes.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "xmlattributes.h" - -XmlAttributes::XmlAttributes() -{ -} - -XmlAttributes::XmlAttributes(const QDomNamedNodeMap& node) -{ - load(node); -} - -void XmlAttributes::load(const QDomNamedNodeMap& node) -{ - QDomAttr attr; - - for(int i = 0; i < node.count(); i++) - { - attr = node.item(i).toAttr(); - - names_ << attr.name(); - values_ << attr.value(); - } -} diff --git a/GScribo/XmlWidget/xmlattributes.h b/GScribo/XmlWidget/xmlattributes.h deleted file mode 100644 index 8dbf547..0000000 --- a/GScribo/XmlWidget/xmlattributes.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef XMLATTRIBUTES_H -#define XMLATTRIBUTES_H - -#include <QDomNamedNodeMap> -#include <QStringList> -#include <QVariant> - -class XmlAttributes -{ - public: - explicit XmlAttributes(); - explicit XmlAttributes(const QDomNamedNodeMap& node); - - void load(const QDomNamedNodeMap& node); - - inline QStringList names() const; - inline QStringList values() const; - - private: - QStringList names_; - QStringList values_; -}; - -inline QStringList XmlAttributes::names() const -{ return names_; } - -inline QStringList XmlAttributes::values() const -{ return values_; } - -Q_DECLARE_METATYPE(XmlAttributes) -Q_DECLARE_METATYPE(XmlAttributes *) - -#endif // XMLATTRIBUTES_H diff --git a/GScribo/XmlWidget/xmlitem.cpp b/GScribo/XmlWidget/xmlitem.cpp deleted file mode 100644 index 53d09aa..0000000 --- a/GScribo/XmlWidget/xmlitem.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "xmlitem.h" - -XmlItem::XmlItem(XmlItem *parent, XmlItem *precItem) -{ - init(parent, precItem); -} - -XmlItem::XmlItem(const QDomElement& node, XmlItem *parent, XmlItem *precItem) -{ - init(parent, precItem); - load(node); -} - -XmlItem::~XmlItem() -{ - // Delete all childs. - XmlItem *child; - foreach(child, childs_) - delete child; -} - -void XmlItem::init(XmlItem *parent, XmlItem *precItem) -{ - isVisible_ = false; - regionItem_ = 0; - parent_ = parent; - - if(parent) - parent->addChild(this); - - if(precItem) - row_ = precItem->row()+1; - else - row_ = 0; -} - -void XmlItem::load(const QDomElement& node) -{ - text_ = node.tagName(); - - // Load attributes. - attributes_.load(node.attributes()); -} diff --git a/GScribo/XmlWidget/xmlitem.h b/GScribo/XmlWidget/xmlitem.h deleted file mode 100644 index 5b14ba7..0000000 --- a/GScribo/XmlWidget/xmlitem.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef XMLITEM_H -#define XMLITEM_H - -#include <QDomElement> - -#include "xmlattributes.h" - -class RegionItem; - -class XmlItem -{ - public: - explicit XmlItem(XmlItem *parent = 0, XmlItem *precItem = 0); - explicit XmlItem(const QDomElement& node, XmlItem *parent = 0, XmlItem *precItem = 0); - ~XmlItem(); - - void load(const QDomElement& node); - - inline QList<XmlItem *> childs() const; - inline XmlItem *child(int i) const; - inline void addChild(XmlItem *child); - inline XmlItem *parent() const; - - inline RegionItem *regionItem(); - inline void setRegionItem(RegionItem *regionItem); - - inline bool isVisible() const; - inline void setVisible(bool visible); - inline void show(); - inline void hide(); - - inline QString text() const; - inline int row() const; - inline XmlAttributes attributes() const; - - private: - void init(XmlItem *parent = 0, XmlItem *precItem = 0); - - int row_; - bool isVisible_; - QList<XmlItem *> childs_; - XmlItem *parent_; - RegionItem *regionItem_; - QString text_; - XmlAttributes attributes_; -}; - -inline QList<XmlItem *> XmlItem::childs() const -{ return childs_; } - -inline XmlItem *XmlItem::child(int i) const -{ if(i > -1 && i < childs_.count()) return childs_[i]; return 0; } - -inline void XmlItem::addChild(XmlItem *child) -{ childs_ << child; } - -inline XmlItem *XmlItem::parent() const -{ return parent_; } - -inline RegionItem *XmlItem::regionItem() -{ return regionItem_; } - -inline void XmlItem::setRegionItem(RegionItem *regionItem) -{ regionItem_ = regionItem; } - -inline bool XmlItem::isVisible() const -{ return isVisible_; } - -inline void XmlItem::setVisible(bool visible) -{ isVisible_ = visible; } - -inline void XmlItem::show() -{ isVisible_ = true; } - -inline void XmlItem::hide() -{ isVisible_ = false; } - -inline QString XmlItem::text() const -{ return text_; } - -inline int XmlItem::row() const -{ return row_; } - -inline XmlAttributes XmlItem::attributes() const -{ return attributes_; } - -Q_DECLARE_METATYPE(XmlItem) -Q_DECLARE_METATYPE(XmlItem *) - -#endif // XMLITEM_H diff --git a/GScribo/XmlWidget/xmlmodel.cpp b/GScribo/XmlWidget/xmlmodel.cpp deleted file mode 100644 index 0f58075..0000000 --- a/GScribo/XmlWidget/xmlmodel.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "xmlmodel.h" - -XmlModel::XmlModel(XmlItem *rootItem, QObject *parent) : - QAbstractItemModel(parent) -{ - rootItem_ = rootItem; -} - -XmlModel::XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent) : - QAbstractItemModel(dd, parent) -{ - rootItem_ = rootItem; -} - -XmlModel::~XmlModel() -{ - if(rootItem_) - delete rootItem_; -} - -QVariant XmlModel::headerData(int, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal && role == Qt::DisplayRole) - return tr("Tree"); - - return QVariant(); -} - -QVariant XmlModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - switch(role) - { - case Qt::UserRole: - return static_cast<XmlItem *>(index.internalPointer())->text(); - - case Qt::UserRole+1: - return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())->attributes()); - - case Qt::UserRole+2: - return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())); - - default: - return QVariant(); - } -} - -QModelIndex XmlModel::index(int row, int column, const QModelIndex& parent) const -{ - if(!hasIndex(row, column, parent)) - return QModelIndex(); - - XmlItem *childItem = toXmlItem(parent)->child(row); - - // Create the model index from the child item. - if(childItem) - return createIndex(row, column, childItem); - else - return QModelIndex(); -} - -QModelIndex XmlModel::parent(const QModelIndex& child) const -{ - if(!child.isValid()) - return QModelIndex(); - - XmlItem *parentItem = static_cast<XmlItem *>(child.internalPointer())->parent(); - - if(!parentItem || parentItem == rootItem_) - return QModelIndex(); - - return createIndex(parentItem->row(), 0, parentItem); -} - -void XmlModel::load(XmlItem *rootItem) -{ - beginResetModel(); - - if(rootItem_) - delete rootItem_; - - rootItem_ = rootItem; - - endResetModel(); -} diff --git a/GScribo/XmlWidget/xmlmodel.h b/GScribo/XmlWidget/xmlmodel.h deleted file mode 100644 index 7e74e6f..0000000 --- a/GScribo/XmlWidget/xmlmodel.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef XMLMODEL_H -#define XMLMODEL_H - -#include <QAbstractItemModel> - -#include "variantpointer.h" -#include "xmlitem.h" - -class XmlModel : - public QAbstractItemModel -{ - public: - explicit XmlModel(XmlItem *rootItem = 0, QObject *parent = 0); - explicit XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent = 0); - ~XmlModel(); - - void load(XmlItem *rootItem); - - inline int rowCount(const QModelIndex& parent) const; - inline int columnCount(const QModelIndex& parent) const; - - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - - QVariant data(const QModelIndex& index, int role) const; - - QModelIndex index(int row, int column, const QModelIndex& parent) const; - QModelIndex parent(const QModelIndex& child) const; - - private: - inline XmlItem *toXmlItem(const QModelIndex& index) const; - - XmlItem *rootItem_; -}; - -inline XmlItem *XmlModel::toXmlItem(const QModelIndex& parent) const -{ return !parent.isValid() ? rootItem_ : static_cast<XmlItem *>(parent.internalPointer()); } - -inline int XmlModel::rowCount(const QModelIndex& parent) const -{ if(rootItem_) return toXmlItem(parent)->childs().count(); return 0; } - -inline int XmlModel::columnCount(const QModelIndex&) const -{ return 1; } - -#endif // XMLMODEL_H diff --git a/GScribo/XmlWidget/xmlview.cpp b/GScribo/XmlWidget/xmlview.cpp deleted file mode 100644 index 70a79b7..0000000 --- a/GScribo/XmlWidget/xmlview.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "xmlview.h" - -XmlView::XmlView(QWidget *parent) : - QTreeView(parent) -{ - proxy_.setFilterRole(Qt::UserRole); - proxy_.setDynamicSortFilter(true); - - setUniformRowHeights(true); - setItemDelegate(new XmlDelegate(Qt::UserRole)); - setSelectionMode(QAbstractItemView::ExtendedSelection); -} - -void XmlView::hideAll() -{ - proxy_.beginResetModel(); - - XmlItem *child; - foreach(child, displayedItems_) - child->hide(); - - displayedItems_.clear(); - emit resetProperty(); - - proxy_.endResetModel(); -} - -void XmlView::display(QList<XmlItem *> displayedItems, bool addToDisplayedList) -{ - proxy_.beginResetModel(); - - if(!addToDisplayedList) - hideAll(); - - XmlItem *child; - foreach(child, displayedItems) - { - child->show(); - displayedItems_ << child; - } - - proxy_.endResetModel(); - - expandAll(); -} - -QList<XmlItem *> XmlView::transform(const QModelIndexList& modelIndexList) const -{ - QList<XmlItem *> selectedItems; - QModelIndex index; - - foreach(index, modelIndexList) - selectedItems << index.data(Qt::UserRole+2).value<XmlItem *>(); - - return selectedItems; -} - -void XmlView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) -{ - QTreeView::selectionChanged(selected, deselected); - - if(selected.indexes() == selectedIndexes()) - emit resetSelection(); - - if(!selectedIndexes().isEmpty()) - { - QList<XmlItem *> xmlItems; - if(!selected.isEmpty()) - { - xmlItems = transform(selected.indexes()); - emit select(xmlItems); - } - else - { - xmlItems = transform(deselected.indexes()); - emit unselect(xmlItems); - } - - emit loadAttributes(xmlItems.last()->attributes()); - } - else - { - emit resetProperty(); - emit emptySelection(); - } - - emit newSelection(); -} diff --git a/GScribo/XmlWidget/xmlview.h b/GScribo/XmlWidget/xmlview.h deleted file mode 100644 index fef7386..0000000 --- a/GScribo/XmlWidget/xmlview.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef XMLVIEW_H -#define XMLVIEW_H - -#include <QGraphicsItem> -#include <QTreeView> - -#include "Rendering/regionitem.h" -#include "selectionproxy.h" -#include "xmldelegate.h" -#include "xmlitem.h" - -class XmlView : - public QTreeView -{ - Q_OBJECT - - public: - explicit XmlView(QWidget *parent = 0); - - inline QList<XmlItem *> displayedItems() const; - void hideAll(); - - inline QList<XmlItem *> selectedItems() const; - - inline void setModel(QAbstractItemModel *model); - - protected: - void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); - - private: - QList<XmlItem *> transform(const QModelIndexList& modelIndexList) const; - void display(QList<XmlItem *> displayedItems, bool addToDisplayedList); - - SelectionProxy proxy_; - QList<XmlItem *> displayedItems_; - - public slots: - inline void display(QList<XmlItem *> displayedItems); - inline void displayOnly(QList<XmlItem *> displayedItems); - - inline void displayAll(); - - inline void setFilterString(const QString& filterString); - - signals: - void loadAttributes(const XmlAttributes& xmlAttributes); - - void select(const QList<XmlItem *>& selectedItems); - void unselect(const QList<XmlItem *>& unselectedItems); - - void newSelection(); - void emptySelection(); - - void resetSelection(); - void resetProperty(); -}; - -inline QList<XmlItem *> XmlView::displayedItems() const -{ return displayedItems_; } - -inline void XmlView::display(QList<XmlItem *> displayedItems) -{ display(displayedItems, true); } - -inline void XmlView::displayOnly(QList<XmlItem *> displayedItems) -{ display(displayedItems, false); } - -inline void XmlView::displayAll() -{ hideAll(); proxy_.displayAll(); } - -inline QList<XmlItem *> XmlView::selectedItems() const -{ return transform(selectedIndexes()); } - -inline void XmlView::setFilterString(const QString& filterString) -{ proxy_.setFilterRegExp(QRegExp(filterString, Qt::CaseSensitive)); proxy_.invalidateFilter(); } - -inline void XmlView::setModel(QAbstractItemModel *model) -{ proxy_.setSourceModel(model); QTreeView::setModel(&proxy_); } - -#endif // XMLVIEW_H diff --git a/GScribo/XmlWidget/xmlwidget.cpp b/GScribo/XmlWidget/xmlwidget.cpp deleted file mode 100644 index dc24193..0000000 --- a/GScribo/XmlWidget/xmlwidget.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "xmlwidget.h" - -XmlWidget::XmlWidget(QWidget *parent) : - QSplitter(Qt::Horizontal, parent) -{ - proxy_.setFilterRegExp(QRegExp("(?:Page|.Region|Line)", Qt::CaseSensitive)); - proxy_.setDynamicSortFilter(true); - proxy_.setFilterRole(Qt::UserRole); - proxy_.setSourceModel(&model_); - - view_.setModel(&proxy_); - - attributes_.setModel(&attributesModel_); - attributes_.setSelectionMode(QAbstractItemView::NoSelection); - attributes_.setItemDelegateForColumn(0, new XmlDelegate(Qt::UserRole)); - attributes_.setItemDelegateForColumn(1, new XmlDelegate(Qt::UserRole+1)); - - addWidget(&view_); - addWidget(&attributes_); - - connect(&view_, SIGNAL(resetProperty()), &attributesModel_, SLOT(reset())); - connect(&view_, SIGNAL(clicked(QModelIndex)), this, SLOT(loadAttributes(QModelIndex))); - connect(&view_, SIGNAL(loadAttributes(XmlAttributes)), &attributesModel_, SLOT(load(XmlAttributes))); -} - -void XmlWidget::changeView(XmlItem *rootItem) -{ - attributesModel_.reset(); - - model_.load(rootItem); - - view_.displayAll(); - view_.expandAll(); -} diff --git a/GScribo/XmlWidget/xmlwidget.h b/GScribo/XmlWidget/xmlwidget.h deleted file mode 100644 index 32eca37..0000000 --- a/GScribo/XmlWidget/xmlwidget.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef XMLWIDGET_H -#define XMLWIDGET_H - -#include <QSortFilterProxyModel> -#include <QTableView> -#include <QTreeWidget> -#include <QSplitter> -#include <QDomElement> -#include <QWidget> - -#include "Rendering/scene.h" -#include "selectionproxy.h" -#include "attributesmodel.h" -#include "variantpointer.h" -#include "xmldelegate.h" -#include "xmlmodel.h" -#include "xmlview.h" - -class XmlWidget : - public QSplitter -{ - Q_OBJECT - - public: - explicit XmlWidget(QWidget *parent = 0); - - inline XmlView *view(); - inline QTableView *attributes(); - - void changeView(XmlItem *rootItem); - - private: - QSortFilterProxyModel proxy_; - - XmlModel model_; - AttributesModel attributesModel_; - - XmlView view_; - QTableView attributes_; - - private slots: - inline void loadAttributes(const QModelIndex& index); -}; - -inline XmlView * XmlWidget::view() -{ return &view_; } - -inline QTableView *XmlWidget::attributes() -{ return &attributes_; } - -inline void XmlWidget::loadAttributes(const QModelIndex& index) -{ attributesModel_.load(index.data(Qt::UserRole+2).value<XmlItem *>()->attributes()); } - -#endif // XMLWIDGET_H diff --git a/GScribo/aboutdialog.h b/GScribo/aboutdialog.h deleted file mode 100644 index fa91ada..0000000 --- a/GScribo/aboutdialog.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef ABOUTDIALOG_H -#define ABOUTDIALOG_H - -#include <QDialog> - -#include "ui_aboutdialog.h" - -namespace Ui -{ - class AboutDialog; -} - -class AboutDialog : - public QDialog -{ - public: - explicit AboutDialog(QWidget *parent = 0) : QDialog(parent, Qt::Dialog) - { ui = new Ui::AboutDialog; ui->setupUi(this); } - ~AboutDialog() { delete ui; } - - private: - Ui::AboutDialog *ui; -}; - -#endif // ABOUTDIALOG_H diff --git a/GScribo/aboutdialog.ui b/GScribo/aboutdialog.ui deleted file mode 100644 index d16b076..0000000 --- a/GScribo/aboutdialog.ui +++ /dev/null @@ -1,136 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AboutDialog</class> - <widget class="QDialog" name="AboutDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>557</width> - <height>390</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="windowTitle"> - <string>About</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap>:/icons/shared/icons/olena_smaller.jpg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This project is powered by </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Milena</span><span style=" font-family:'DejaVu Sans';">, a generic image processing library.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">It is part of </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Olena</span><span style=" font-family:'DejaVu Sans';">, an Image Processing Platform and its module </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Scribo</span><span style=" font-family:'DejaVu Sans';">, a set of tools for Document Image Analysis.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" font-family:'DejaVu Sans'; text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:8pt;">Thanks to Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, Jérôme Galtier, Florent d'Halluin, Alex Hamelin, Damien Lefortier, Vincent Ordy, Guillaume Sadegh and Warren Seine for their contribution.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:7pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">Copyright (C) 2012, 2013 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Ok</set> - </property> - <property name="centerButtons"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>AboutDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>281</x> - <y>391</y> - </hint> - <hint type="destinationlabel"> - <x>240</x> - <y>203</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/GScribo/configs.h b/GScribo/configs.h deleted file mode 100644 index c6aac68..0000000 --- a/GScribo/configs.h +++ /dev/null @@ -1,134 +0,0 @@ -#ifndef CONFIGS_H -#define CONFIGS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> -#include <QSettings> -#include <QDir> -#include <QDebug> - -#include "region.h" - -class Configs : - public QSettings -{ - public: - inline static Configs *getInstance(); - - inline bool preprocessingSubsample(); - inline void setPreprocessingSubsample(bool b); - - inline bool preprocessingRemoveBg(); - inline void setPreprocessingRemoveBg(bool b); - - inline bool preprocessingDeskew(); - inline void setPreprocessingDeskew(bool b); - - inline bool preprocessingRemoveNoise(); - inline void setPreprocessingRemoveNoise(bool b); - - inline int preprocessingBinAlgo(); - inline void setPreprocessingBinAlgo(int algo); - - inline int segmentationFindSeps(); - inline void setSegmentationFindSeps(int seps); - - inline bool ocrEnabled(); - inline void setOcrEnabled(bool b); - - inline QString ocrLanguage(); - inline void setOcrLanguage(const QString& lang); - - inline bool generalSaveXmlEnabled(); - inline void setGeneralSaveXmlEnabled(bool b); - - inline bool generalSaveXmlSameDir(); - inline void setGeneralSaveXmlSameDir(bool b); - - inline bool generalSaveXmlCustomDir(); - inline void setGeneralSaveXmlCustomDir(bool b); - - inline QString generalSaveXmlCustomDirPath(); - inline void setGeneralSaveXmlCustomDirPath(const QString& path); - - private: - explicit Configs() : QSettings("olena-scribo", "gui") { } -}; - -inline Configs *Configs::getInstance() -{ static Configs *conf = new Configs(); return conf; } - -inline bool Configs::preprocessingSubsample() -{ return value("preprocessing/subsample", false).toBool(); } - -inline void Configs::setPreprocessingSubsample(bool b) -{ setValue("preprocessing/subsample", b); } - -inline bool Configs::preprocessingRemoveBg() -{ return value("preprocessing/remove_bg", false).toBool(); } - -inline void Configs::setPreprocessingRemoveBg(bool b) -{ setValue("preprocessing/remove_bg", b); } - -inline bool Configs::preprocessingDeskew() -{ return value("preprocessing/deskew", false).toBool(); } - -inline void Configs::setPreprocessingDeskew(bool b) -{ setValue("preprocessing/deskew", b); } - -inline bool Configs::preprocessingRemoveNoise() -{ return value("preprocessing/remove_noise", true).toBool(); } - -inline void Configs::setPreprocessingRemoveNoise(bool b) -{ setValue("preprocessing/remove_noise", b); } - -inline int Configs::preprocessingBinAlgo() -{ return value("preprocessing/bin_algo", - scribo::toolchain::internal::SauvolaMs).toInt(); } - -inline void Configs::setPreprocessingBinAlgo(int algo) -{ setValue("preprocessing/bin_algo", algo); } - -inline int Configs::segmentationFindSeps() -{ return value("segmentation/find_seps", Separator::Both).toInt(); } - -inline void Configs::setSegmentationFindSeps(int seps) -{ setValue("segmentation/find_seps", seps); } - -inline bool Configs::ocrEnabled() -{ return value("ocr/enabled", true).toBool(); } - -inline void Configs::setOcrEnabled(bool b) -{ setValue("ocr/enabled", b); } - -inline QString Configs::ocrLanguage() -{ return value("ocr/language", 0).toString(); } - -inline void Configs::setOcrLanguage(const QString& lang) -{ setValue("ocr/language", lang); } - -inline bool Configs::generalSaveXmlEnabled() -{ return value("general/save_xml/enabled", true).toBool(); } - -inline void Configs::setGeneralSaveXmlEnabled(bool b) -{ setValue("general/save_xml/enabled", b); } - -inline bool Configs::generalSaveXmlSameDir() -{ return value("general/save_xml/same_dir", true).toBool(); } - -inline void Configs::setGeneralSaveXmlSameDir(bool b) -{ setValue("general/save_xml/same_dir", b); } - -inline bool Configs::generalSaveXmlCustomDir() -{ return value("general/save_xml/custom_dir", false).toBool(); } - -inline void Configs::setGeneralSaveXmlCustomDir(bool b) -{ setValue("general/save_xml/custom_dir", b); } - -inline QString Configs::generalSaveXmlCustomDirPath() -{ return value("general/save_xml/custom_dir_path", - QDir::tempPath()).toString(); } - -inline void Configs::setGeneralSaveXmlCustomDirPath(const QString& path) -{ setValue("general/save_xml/custom_dir_path", path); } - -#endif // CONFIGS_H diff --git a/GScribo/dockwidget.h b/GScribo/dockwidget.h deleted file mode 100644 index a1a2b40..0000000 --- a/GScribo/dockwidget.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DOCKWIDGET_H -#define DOCKWIDGET_H - -#include <QDockWidget> - -class DockWidget : - public QDockWidget -{ - Q_OBJECT - - public: - explicit DockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0) : QDockWidget(parent, flags) { } - explicit DockWidget(const QString& title, QWidget *parent = 0, Qt::WindowFlags flags = 0) : QDockWidget(title, parent, flags) { } - - public slots: - inline void switchVisibility(); -}; - -inline void DockWidget::switchVisibility() -{ setVisible(!isVisible()); } - -#endif // DOCKWIDGET_H diff --git a/GScribo/main.cpp b/GScribo/main.cpp deleted file mode 100644 index d47ec16..0000000 --- a/GScribo/main.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#undef MLN_WO_GLOBAL_VARS - -#include <scribo/make/debug_filename.hh> -#include <mln/labeling/colorize.hh> -#include <mln/io/magick/load.hh> -#include <mln/literal/colors.hh> -#include <mln/debug/filename.hh> -#include <QtGui/QApplication> -#include <mln/math/pi.hh> - -#include "mainwindow.h" - -int main(int argc, char *argv[]) -{ - Magick::InitializeMagick(*argv); - // On Linux, we NEED to use the raster graphics system. - // Linux don't really support openGL graphics system (the default one on Linux). - QApplication::setGraphicsSystem("raster"); - QApplication a(argc, argv); - MainWindow w; - w.show(); - return a.exec(); -} diff --git a/GScribo/mainwindow.cpp b/GScribo/mainwindow.cpp deleted file mode 100644 index 4bb5c74..0000000 --- a/GScribo/mainwindow.cpp +++ /dev/null @@ -1,415 +0,0 @@ -#include "mainwindow.h" -#include "ui_mainwindow.h" - -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) -{ - ui->setupUi(this); - - setWindowTitle(tr("GScribo")); - showMaximized(); - - initGraphicsRegion(); - initDialogsWidget(); - initXmlWidget(); - initRegionWidget(); - initPageWidget(); - initMenuBar(); - - // Told the left dock widget (here the pages widget and the region widget) to fill the bottom left corner. - setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); - // Merge the region and pages widget in one tab (pages widget over the region widget). - tabifyDockWidget(&dockRegion_, &dockPages_); - - connectWidgets(); -} - -MainWindow::~MainWindow() -{ - delete preferencesDialog_; - delete aboutDialog_; - delete progressDialog_; - delete ui; -} - -void MainWindow::changeEvent(QEvent *e) -{ - QMainWindow::changeEvent(e); - switch (e->type()) - { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -void MainWindow::initGraphicsRegion() -{ - graphicsView_.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); - graphicsView_.setScene(&scene_); - - setCentralWidget(&graphicsView_); -} - -void MainWindow::initDialogsWidget() -{ - preferencesDialog_ = new PreferencesDialog(this); - aboutDialog_ = new AboutDialog(this); - progressDialog_ = new ProgressDialog(this); -} - -void MainWindow::initPageWidget() -{ - dockPages_.setWindowTitle("Pages"); - dockPages_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockPages_.setWidget(&pagesWidget_); - dockPages_.setMinimumWidth(190); - - addDockWidget(Qt::LeftDockWidgetArea, &dockPages_); -} - -void MainWindow::initRegionWidget() -{ - dockRegion_.setWindowTitle("Regions"); - dockRegion_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockRegion_.setWidget(®ionWidget_); - - addDockWidget(Qt::LeftDockWidgetArea, &dockRegion_); -} - -void MainWindow::initXmlWidget() -{ - dockXml_.setWindowTitle("Xml"); - dockXml_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockXml_.setWidget(&xmlWidget_); - - addDockWidget(Qt::BottomDockWidgetArea, &dockXml_); - dockXml_.setVisible(false); -} - -void MainWindow::initMenuBar() -{ - QMenu *menuFile = ui->menuBar->addMenu(tr("File")); - - QAction *open = menuFile->addAction(tr("Open")); - connect(open, SIGNAL(triggered()), this, SLOT(onOpen())); - - segment_ = menuFile->addAction(tr("Segment")); - segment_->setEnabled(false); - connect(segment_, SIGNAL(triggered()), this, SLOT(onSegment())); - - menuFile->addSeparator(); - - previewPrinting_ = menuFile->addAction(tr("Preview Printing")); - previewPrinting_->setEnabled(false); - connect(previewPrinting_, SIGNAL(triggered()), this, SLOT(onPreviewPrint())); - - print_ = menuFile->addAction(tr("Print")); - print_->setEnabled(false); - connect(print_, SIGNAL(triggered()), this, SLOT(onPrint())); - - menuFile->addSeparator(); - - export_ = menuFile->addAction(tr("Exportation")); - export_->setEnabled(false); - connect(export_, SIGNAL(triggered()), this, SLOT(onExportation())); - - menuFile->addSeparator(); - - QAction *quit = menuFile->addAction(tr("Quit")); - connect(quit, SIGNAL(triggered()), this, SLOT(close())); - - QMenu *menuAreas = ui->menuBar->addMenu(tr("Areas")); - - QAction *page = menuAreas->addAction(tr("Page")); - page->setCheckable(true); - page->setChecked(true); - connect(page, SIGNAL(triggered()), &dockPages_, SLOT(switchVisibility())); - - QAction *region = menuAreas->addAction(tr("Region")); - region->setCheckable(true); - region->setChecked(true); - connect(region, SIGNAL(triggered()), &dockRegion_, SLOT(switchVisibility())); - - QAction *xml = menuAreas->addAction(tr("Xml")); - xml->setCheckable(true); - xml->setChecked(false); - connect(xml, SIGNAL(triggered()), &dockXml_, SLOT(switchVisibility())); - - QAction *preferences = ui->menuBar->addAction(tr("Preferences")); - connect(preferences, SIGNAL(triggered()), this, SLOT(onPreferences())); - - QAction *about = ui->menuBar->addAction(tr("About")); - connect(about, SIGNAL(triggered()), this, SLOT(onAbout())); -} - -void MainWindow::setActionsEnabled(bool isSegmented) -{ - segment_->setEnabled(!isSegmented); - print_->setEnabled(isSegmented); - previewPrinting_->setEnabled(isSegmented); -} - -void MainWindow::disableActions() -{ - segment_->setEnabled(false); - print_->setEnabled(false); - previewPrinting_->setEnabled(false); - export_->setEnabled(false); -} - -void MainWindow::connectWidgets() -{ - // Each time the scene rect change (when a new picture is loaded), we fit the scene background rectangle in the view. - connect(&scene_, SIGNAL(sceneRectChanged(QRectF)), &graphicsView_, SLOT(fitInView(QRectF))); - // When dragging with right click, disable selection. - connect(&graphicsView_, SIGNAL(beginDrag()), &scene_, SLOT(disableSelection())); - connect(&graphicsView_, SIGNAL(endDrag()), &scene_, SLOT(enableSelection())); - - // If double click on a picture of the page widget -> draw it on background scene. - connect(&pagesWidget_, SIGNAL(imageSelectionned(QString)), this, SLOT(onFileChanged(QString))); - - // Connect the scene to the xml widget and vice versa. - connect(&scene_, SIGNAL(newSelection(QList<RegionItem*>)), this, SLOT(onRegionSelection(QList<RegionItem*>))); - connect(xmlWidget_.view(), SIGNAL(select(QList<XmlItem*>)), this, SLOT(onXmlSelect(QList<XmlItem*>))); - connect(xmlWidget_.view(), SIGNAL(unselect(QList<XmlItem*>)), this, SLOT(onXmlUnselect(QList<XmlItem*>))); - connect(xmlWidget_.view(), SIGNAL(emptySelection()), &scene_, SLOT(selectBase())); - connect(xmlWidget_.view(), SIGNAL(resetSelection()), &scene_, SLOT(clearSelection())); - - // Connect the scene with the region widget. - connect(®ionWidget_, SIGNAL(checkStateChanged(GraphicsRegion::Id,bool)), &scene_, SLOT(setVisible(GraphicsRegion::Id,bool))); - - // Connect the xml widget with the region widget. - connect(®ionWidget_, SIGNAL(checkStateChanged(QString)), xmlWidget_.view(), SLOT(setFilterString(QString))); - - connect(&runner_, SIGNAL(progress()), progressDialog_, SLOT(run())); - connect(&runner_, SIGNAL(new_progress_max_value(int)), progressDialog_, SLOT(setMaximum(int))); - connect(&runner_, SIGNAL(new_progress_label(QString)), progressDialog_, SLOT(setLabelText(QString))); - connect(&runner_, SIGNAL(finished()), progressDialog_, SLOT(close())); - connect(&runner_, SIGNAL(xml_saved(QString)), this, SLOT(onXmlSaved(QString))); -} - -void MainWindow::onOpen() -{ - QStringList paths = QFileDialog::getOpenFileNames(this, "Open Image(s)", QDir::homePath(), - "Images (*.png *.jpg *.ppm *.bmp)"); - setWindowTitle(tr("GScribo")); - - if(paths.count() > 0) - { - QStringList filenames = pagesWidget_.filenames(); - QString path; - - int counter = 0; - bool isContained; - // Check for an image not already added to the page widget. - do - { - path = paths[counter]; - counter++; - isContained = filenames.contains(path); - } while(isContained && counter < paths.count()); - - if(!isContained) - { - pagesWidget_.addPicture(path, QPixmap(path)); - - // If more than one file, we store it in the page widget. - for(int i = counter; i < paths.count(); i++) - { - // Check if the page widget contains the image. - if(!filenames.contains(paths[i])) - { - path = paths[i]; - pagesWidget_.addPicture(path, QPixmap(path)); - } - } - - pagesWidget_.setCurrentRow(0); - pagesWidget_.scrollToTop(); - } - - // Change current scene. - onFileChanged(path); - } -} - -void MainWindow::onSegment() -{ - QStringList filenames; - - filenames << scene_.backgroundPath(); - - // Run segmentation of page(s). - progressDialog_->reset(); - runner_.start_demat(filenames); -} - -void MainWindow::onPreviewPrint() -{ - QPrinter printer(QPrinter::HighResolution); - printer.setPaperSize(QPrinter::A4); - printer.setResolution(300); - - QPrintPreviewDialog preview(&printer, this); - connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printScene(QPrinter*))); - - preview.exec(); -} - -void MainWindow::onPrint() -{ - QPrinter printer(QPrinter::HighResolution); - printer.setPaperSize(QPrinter::A4); - printer.setResolution(300); - - QPrintDialog dialog(&printer, this); - dialog.setWindowTitle("Print Document"); - - if(dialog.exec() != QDialog::Accepted) - return; - - printScene(&printer); -} - -void MainWindow::printScene(QPrinter *printer) -{ - QPainter painter(printer); - QStyleOptionGraphicsItem options; - - scene_.backgroundPixmap()->paint(&painter, &options, 0); - - // Paint backwards items first. - printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::TextRegion), &options); - printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::Image), &options); - - for(int i = GraphicsRegion::Line; i < GraphicsRegion::Image; i++) - printItems(&painter, scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), &options); - - for(int i = GraphicsRegion::Noise; i <= GraphicsRegion::Meanline; i++) - printItems(&painter, scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), &options); -} - -void MainWindow::printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options) -{ - foreach(QGraphicsItem *child, items) - { - if(child->isVisible()) - { - QRect viewport = scene_.backgroundPixmap()->mapRectFromItem(child, child->boundingRect()).toRect(); - painter->translate(abs(child->boundingRect().x() - viewport.x()), - abs(child->boundingRect().y() - viewport.y())); - child->paint(painter, options); - painter->resetTransform(); - } - } -} - -void MainWindow::onExportation() -{ - QMessageBox messageBox(this); - messageBox.setWindowTitle("Information"); - messageBox.setText("This feature is not available yet"); - messageBox.exec(); - return; - - QFileInfo fileInfo(scene_.backgroundPath()); - QString outputSuggestion = fileInfo.baseName() + ".pdf"; - QString output = QFileDialog::getSaveFileName(0, tr("Export Document As ..."), outputSuggestion, - tr("PDF (*.pdf);; HTML (*.html *.htm")); - - if(!output.isEmpty()) - { - progressDialog_->reset(); - runner_.start_export(scene_.backgroundPath(), xml_.filename(), output); - } -} - -void MainWindow::onXmlSaved(const QString& filename) -{ - xml_.load(filename); - xmlWidget_.changeView(xml_.xmlItem()); - scene_.setRoot(xml_.graphicsItem()); - - setActionsEnabled(true); - export_->setEnabled(xml_.recognized()); -} - -void MainWindow::onFileChanged(const QString& filename) -{ - // If it's not the current scene. - if(scene_.backgroundPath() != filename) - { - QString xmlPath = Xml::getPath(filename); - - if(filename.isEmpty()) - { - xmlPath = QString(); - disableActions(); - } - // Check if the xml file already exists. - else if(!QFile(xmlPath).exists()) - { - xmlPath = QString(); - setActionsEnabled(false); - } - else - setActionsEnabled(true); - - xml_.load(xmlPath); - scene_.changeScene(filename, xml_.graphicsItem()); - xmlWidget_.changeView(xml_.xmlItem()); - export_->setEnabled(xml_.recognized()); - } -} - -void MainWindow::onRegionSelection(QList<RegionItem *> regionItems) -{ - if(!regionItems.isEmpty()) - xmlWidget_.view()->displayOnly(toXmlItems(regionItems)); - else - { - xmlWidget_.view()->reset(); - xmlWidget_.view()->displayAll(); - xmlWidget_.view()->expandAll(); - } -} - -void MainWindow::onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select) -{ - QList<RegionItem *> regionItems = toRegionItems(xmlItems); - - if(!regionItems.isEmpty()) - { - if(select) - scene_.select(regionItems); - else - scene_.unselect(regionItems); - } -} - -QList<RegionItem *> MainWindow::toRegionItems(QList<XmlItem *> xmlItems) const -{ - QList<RegionItem *> regionItems; - XmlItem *child; - foreach(child, xmlItems) - { - if(child->regionItem()) - regionItems << child->regionItem(); - } - - return regionItems; -} - -QList<XmlItem *> MainWindow::toXmlItems(QList<RegionItem *> regionItems) const -{ - QList<XmlItem *> xmlItems; - RegionItem *child; - foreach(child, regionItems) - xmlItems << child->xmlItem(); - - return xmlItems; -} diff --git a/GScribo/mainwindow.h b/GScribo/mainwindow.h deleted file mode 100644 index 0637f44..0000000 --- a/GScribo/mainwindow.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QPrintPreviewDialog> -#include <QGraphicsView> -#include <QPrintDialog> -#include <QMainWindow> -#include <QHBoxLayout> -#include <QDockWidget> -#include <QFileDialog> -#include <QGroupBox> -#include <QPrinter> - -#include "Preferences/preferencesdialog.h" -#include "Processing/progressdialog.h" -#include "PagesWidget/pageswidget.h" -#include "Rendering/graphicsview.h" -#include "XmlWidget/xmlwidget.h" -#include "Processing/runner.h" -#include "Rendering/scene.h" -#include "regionwidget.h" -#include "aboutdialog.h" -#include "dockwidget.h" -#include "xml.h" - -namespace Ui -{ - class MainWindow; -} - -class MainWindow: - public QMainWindow -{ - Q_OBJECT - - public: - MainWindow(QWidget *parent = 0); - ~MainWindow(); - - protected: - void changeEvent(QEvent *e); - - private: - void initGraphicsRegion(); - void initDialogsWidget(); - void initPageWidget(); - void initRegionWidget(); - void initXmlWidget(); - void initMenuBar(); - void connectWidgets(); - - void setActionsEnabled(bool isSegmented); - void disableActions(); - - void printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options); - - Xml processTmpXml(const QString& filename) const; - QList<RegionItem *> toRegionItems(QList<XmlItem *> regionItems) const; - QList<XmlItem *> toXmlItems(QList<RegionItem *> xmlItems) const; - - Ui::MainWindow *ui; - - DockWidget dockRegion_; - DockWidget dockPages_; - DockWidget dockXml_; - - GraphicsView graphicsView_; - Scene scene_; - - PagesWidget pagesWidget_; - RegionWidget regionWidget_; - - AboutDialog *aboutDialog_; - ProgressDialog *progressDialog_; - PreferencesDialog *preferencesDialog_; - - XmlWidget xmlWidget_; - Xml xml_; - Runner runner_; - - QAction *segment_; - QAction *previewPrinting_; - QAction *print_; - QAction *export_; - - public slots: - void printScene(QPrinter *printer); - - private slots: - void onOpen(); - void onSegment(); - void onPreviewPrint(); - void onPrint(); - void onExportation(); - inline void onPreferences(); - inline void onAbout(); - - void onXmlSaved(const QString& filename); - void onFileChanged(const QString& filename); - - void onRegionSelection(QList<RegionItem *> regionItems); - - void onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select); - inline void onXmlSelect(QList<XmlItem *> xmlItems); - inline void onXmlUnselect(QList<XmlItem *> xmlItems); -}; - -inline void MainWindow::onPreferences() -{ preferencesDialog_->show(); } - -inline void MainWindow::onAbout() -{ aboutDialog_->show(); } - -inline void MainWindow::onXmlSelect(QList<XmlItem *> xmlItems) -{ onXmlChangeSelection(xmlItems, true); } - -inline void MainWindow::onXmlUnselect(QList<XmlItem *> xmlItems) -{ onXmlChangeSelection(xmlItems, false); } - -#endif // MAINWINDOW_H diff --git a/GScribo/region.h b/GScribo/region.h deleted file mode 100644 index ee8d836..0000000 --- a/GScribo/region.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef REGION_H -#define REGION_H - -#include <QColor> - -namespace GraphicsRegion -{ - // WARNING : The order is important. - enum Id - { - TextRegion, - Line, - - VerticalSeparator, - HorizontalSeparator, - WhiteSpaceSeparator, - - Image, - Noise, - Table, - Maths, - Graphic, - Chart, - - Baseline, - Meanline, - - Text, - Separators, - Miscellaneous, - Typology, - - None - }; - - struct Data - { - QColor color; - QString name; - GraphicsRegion::Id region; - GraphicsRegion::Id parent; - int zValue; - }; -} - -namespace Separator -{ - enum FindSeparator - { - Lines, - Whitespaces, - Both - }; -} - -#endif // REGION_H diff --git a/GScribo/regionwidget.cpp b/GScribo/regionwidget.cpp deleted file mode 100644 index 5d1a95e..0000000 --- a/GScribo/regionwidget.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "regionwidget.h" - -RegionWidget::RegionWidget(QWidget *parent) : - QTreeWidget(parent) -{ - setHeaderHidden(true); - setSelectionMode(QAbstractItemView::NoSelection); - - addTopLevelItem(createRoot("Text", GraphicsRegion::Text, GraphicsRegion::TextRegion, GraphicsRegion::Line)); - addTopLevelItem(createRoot("Typological Lines", GraphicsRegion::Typology, GraphicsRegion::Baseline, GraphicsRegion::Meanline)); - addTopLevelItem(createRoot("Separators", GraphicsRegion::Separators, GraphicsRegion::VerticalSeparator, GraphicsRegion::WhiteSpaceSeparator)); - addTopLevelItem(createRoot("Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::Image, GraphicsRegion::Chart)); - - expandAll(); - - connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(checkStateChanged(QTreeWidgetItem*))); -} - -QTreeWidgetItem *RegionWidget::createRoot(const QString& text, const GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const GraphicsRegion::Id& end) -{ - // Create root. - QTreeWidgetItem *rootItem = createItem(text, region); - - // Fill root with corresponding childs. - for(int region_ = begin; region_ <= end; region_++) - fillRoot(rootItem, static_cast<GraphicsRegion::Id>(region_)); - - return rootItem; -} - -QTreeWidgetItem *RegionWidget::createItem(const QString& text, const GraphicsRegion::Id& region, const QColor& color) -{ - QTreeWidgetItem *item = new QTreeWidgetItem; - item->setText(0, text); - item->setCheckState(0, Qt::Checked); - item->setBackgroundColor(0, color); - // Store graphical id in the object to recognize it afterward. - item->setData(0, Qt::UserRole, static_cast<int>(region)); - - return item; -} - -void RegionWidget::checkStateChanged(QTreeWidgetItem *item) -{ - // If it's a root item, go to childs. - if(item->childCount() != 0) - { - QTreeWidgetItem *child; - for(int i = 0; i < item->childCount(); i++) - { - child = item->child(i); - child->setCheckState(0, item->checkState(0)); - } - } - else - { - if(item->checkState(0) == Qt::Checked) - { - filterString_.append('|' + item->text(0)); - emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), true); - } - else - { - filterString_.remove('|' + item->text(0), Qt::CaseSensitive); - emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), false); - } - - //emit checkStateChanged(filterString_); - } -} diff --git a/GScribo/regionwidget.h b/GScribo/regionwidget.h deleted file mode 100644 index aaa6eda..0000000 --- a/GScribo/regionwidget.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef REGIONWIDGET_H -#define REGIONWIDGET_H - -#include <QTreeWidget> -#include <QLabel> - -#include "xml.h" - -class RegionWidget : - public QTreeWidget -{ - Q_OBJECT - - public: - explicit RegionWidget(QWidget *parent = 0); - - inline QString filterString() const; - - private: - QTreeWidgetItem *createRoot(const QString& text, const GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const GraphicsRegion::Id& end); - QTreeWidgetItem *createItem(const QString& text, const GraphicsRegion::Id& region, const QColor& color = QColor::fromRgb(255, 255, 255)); - inline void fillRoot(QTreeWidgetItem *rootItem, const GraphicsRegion::Id& region); - - QString filterString_; - - private slots: - void checkStateChanged(QTreeWidgetItem *item); - - signals: - void checkStateChanged(const GraphicsRegion::Id& region, bool checked); - void checkStateChanged(const QString& filterString); -}; - -inline void RegionWidget::fillRoot(QTreeWidgetItem *rootItem, const GraphicsRegion::Id& region) -{ GraphicsRegion::Data data = Xml::dataFromRegion(region); filterString_.append('|' + data.name); rootItem->addChild(createItem(data.name, region, data.color)); } - -inline QString RegionWidget::filterString() const -{ return filterString_.right(filterString_.count()-1); } - -#endif // REGIONWIDGET_H diff --git a/GScribo/variantpointer.h b/GScribo/variantpointer.h deleted file mode 100644 index a11072c..0000000 --- a/GScribo/variantpointer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef VARIANTPOINTER_H -#define VARIANTPOINTER_H - -#include <QVariant> - -template<typename T> class VariantPointer -{ - public: - static inline QVariant toQVariant(T *pointer) - { return QVariant::fromValue(static_cast<void *>(pointer)); } - - static inline T *fromQVariant(const QVariant& variant) - { return static_cast<T *>(variant.value<void *>()); } - - private: - VariantPointer() { } -}; - -#endif // VARIANTPOINTER_H diff --git a/GScribo/xml.cpp b/GScribo/xml.cpp deleted file mode 100644 index 9b0334d..0000000 --- a/GScribo/xml.cpp +++ /dev/null @@ -1,206 +0,0 @@ -#include "xml.h" - -Xml::Xml(const QString& filename) -{ - load(filename); -} - -QString Xml::getPath(const QString& filename) -{ - Configs *const configs = Configs::getInstance(); - - QString xmlPath = filename; - - // Get xml filename from image path. - xmlPath.remove(0, xmlPath.lastIndexOf('/')+1); - int pos = xmlPath.lastIndexOf('.'); - xmlPath.remove(pos, xmlPath.length()-pos); - xmlPath += "_gui.xml"; - - return configs->generalSaveXmlCustomDirPath() + "/" + xmlPath; -} - -void Xml::isRecognized(const QDomElement& textElement) -{ - QDomElement lineElement = textElement.firstChild().nextSiblingElement("Line"); - - // Check if the attributes "text" exists in the attributes of line in the xml file. - isRecognized_ = lineElement.attributeNode("text").isNull() ? false : true; -} - -void Xml::load(const QString& filename) -{ - if(filename.isEmpty()) - { - xmlItem_ = 0; - graphicsItem_ = 0; - filename_ = QString(); - isRecognized_ = false; - return; - } - - // Reset graphic and tree items; - xmlItem_ = new XmlItem; - graphicsItem_ = new RootGraphicsItem(13); - filename_ = getPath(filename); - - QFile xmlFile(filename); - xmlFile.open(QIODevice::ReadOnly); - - // Fill new xml tree. - xml_.clear(); - xml_.setContent(&xmlFile); - - xmlFile.close(); - - QDomElement root = xml_.documentElement(); - xmlItem_->load(root); - xmlItem_->show(); - - root = root.firstChild().toElement(); - XmlItem *parentTreeItem = init(root, xmlItem_); - - // Run through the xml file structure by structure. - root = root.nextSibling().firstChild().toElement(); - // Check if the xml file has been recognized by the ocr or not. - isRecognized(root); - - processNode(root, datas_[0], parentTreeItem); - for(int i = 2; i < 11; i++) - processNode(root.nextSiblingElement(datas_[i].name), datas_[i], parentTreeItem); -} - -XmlItem *Xml::init(const QDomElement& root, XmlItem *rootTreeItem) -{ - XmlItem *metadataItem = new XmlItem(root, rootTreeItem); - - XmlItem *contentItem = 0; - - // Run through "METADATA" node and subnodes. - QDomElement node = root.firstChild().toElement(); - while(!node.isNull()) - { - contentItem = new XmlItem(node, metadataItem, contentItem); - node = node.nextSibling().toElement(); - } - - // Add "PAGE" root node and return it. - metadataItem = new XmlItem(root.nextSibling().toElement(), rootTreeItem, metadataItem); - metadataItem->show(); - - return metadataItem; -} - -void Xml::processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *pageItem) -{ - if(!root.isNull()) - { - // Create corresponding tree item. - XmlItem *regionItem = new XmlItem(root, pageItem); - - QDomElement node = root.firstChild().toElement(); - XmlItem *coordsItem = new XmlItem(node, regionItem); - - QPolygon polygon; - XmlItem *pointItem = 0; - QString x, y; - - // Run through all points data. - node = node.firstChild().toElement(); - while(!node.isNull()) - { - x = node.attribute("x", "null"); - y = node.attribute("y", "null"); - - pointItem = new XmlItem(node, coordsItem, pointItem); - - polygon << QPoint(x.toInt(), y.toInt()); - node = node.nextSibling().toElement(); - } - - // Create the graphics item from data structure. - RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); - graphicsItem->loadData(data); - graphicsItem_->addItemFrom(graphicsItem, data.region); - - // Store xml item and graphics item in each object for selection. - regionItem->setRegionItem(graphicsItem); - graphicsItem->setXmlItem(regionItem); - - if(data.region == GraphicsRegion::TextRegion) - processLineNode(root.firstChild().nextSiblingElement("Line"), coordsItem); - - // Run through all nodes from the same data structure recursively. - processNode(root.nextSiblingElement(data.name), data, pageItem); - } -} - -void Xml::processLineNode(const QDomElement& root, XmlItem *precItem) -{ - if(!root.isNull()) - { - // Create corresponding tree item. - XmlItem *lineItem = new XmlItem(root, precItem->parent(), precItem); - - QDomElement node = root.firstChild().toElement(); - XmlItem *coordsItem = new XmlItem(node, lineItem); - - QPolygon polygon; - XmlItem *pointItem = 0; - - QString xs, ys; - int x, y; - - int xMin = INT_MAX; - int xMax = INT_MIN; - - // Run through all points data. - node = node.firstChild().toElement(); - while(!node.isNull()) - { - xs = node.attribute("x", "null"); - ys = node.attribute("y", "null"); - - pointItem = new XmlItem(node, coordsItem, pointItem); - - x = xs.toInt(); - y = ys.toInt(); - - // Get beginning and end of line. - if(xMin > x) - xMin = x; - if(xMax < x) - xMax = x; - - polygon << QPoint(x, y); - node = node.nextSibling().toElement(); - } - - // Create the graphics item from data structure. - RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); - graphicsItem->loadData(datas_[1]); - graphicsItem_->addItemFrom(graphicsItem, datas_[1].region); - - // Store xml item and graphics item in each object for selection. - lineItem->setRegionItem(graphicsItem); - graphicsItem->setXmlItem(lineItem); - - // Get meanline and baseline. - processTypoNode(root, QPoint(xMin, xMax)); - // Run through all line nodes recursively. - processLineNode(root.nextSiblingElement(datas_[1].name), lineItem); - } -} - -void Xml::processTypoNode(const QDomElement& root, const QPoint& xPoint) -{ - int yPos = root.attribute("baseline", "null").toInt(); - QGraphicsLineItem *baselineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); - baselineItem->setZValue(datas_[11].zValue); - graphicsItem_->addItemFrom(baselineItem, datas_[11].region); - - yPos = root.attribute("meanline", "null").toInt(); - QGraphicsLineItem *meanlineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); - meanlineItem->setZValue(datas_[12].zValue); - graphicsItem_->addItemFrom(meanlineItem, datas_[12].region); -} diff --git a/GScribo/xml.h b/GScribo/xml.h deleted file mode 100644 index f9274ed..0000000 --- a/GScribo/xml.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef XML_H -#define XML_H - -#include <QTreeWidgetItem> -#include <QGraphicsItem> -#include <QStringList> -#include <QDomElement> -#include <QDomAttr> -#include <climits> -#include <QFile> - -#include "Rendering/rootgraphicsitem.h" -#include "Rendering/regionitem.h" -#include "XmlWidget/xmlitem.h" -#include "variantpointer.h" -#include "configs.h" -#include "region.h" - -// WARNING : The order is VERY IMPORTANT (depending on the enum). -static const GraphicsRegion::Data datas_[] = -{ - /* COLOR | NAME | REGION | PARENT | Z */ - { QColor::fromRgb(0, 100, 0, 110), "TextRegion", GraphicsRegion::TextRegion, GraphicsRegion::Text, 1 }, - { QColor::fromRgb(255, 0, 0, 110), "Line", GraphicsRegion::Line, GraphicsRegion::Text, 2 }, - { QColor::fromRgb(0, 0, 255, 110), "VerticalSeparatorRegion", GraphicsRegion::VerticalSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(0, 0, 255, 110), "HorizontalSeparatorRegion", GraphicsRegion::HorizontalSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(0, 0, 128, 110), "WhitespaceSeparatorRegion", GraphicsRegion::WhiteSpaceSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(255, 120, 0, 110), "ImageRegion", GraphicsRegion::Image, GraphicsRegion::Miscellaneous, 1 }, - { QColor::fromRgb(43, 39, 128, 110), "NoiseRegion", GraphicsRegion::Noise, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(220, 246, 0, 110), "TableRegion", GraphicsRegion::Table, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(170, 0, 255, 110), "MathsRegion", GraphicsRegion::Maths, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(255, 0, 144, 110), "GraphicsRegion", GraphicsRegion::Graphic, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(0, 204, 255, 110), "ChartRegion", GraphicsRegion::Chart, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(128, 0, 255), "Baseline", GraphicsRegion::Baseline, GraphicsRegion::Typology, 3 }, - { QColor::fromRgb(128, 0, 255), "Meanline", GraphicsRegion::Meanline, GraphicsRegion::Typology, 3 }, - { QColor::fromRgb(255, 255, 255), "Text", GraphicsRegion::Text, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Separators", GraphicsRegion::Separators, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Typological Lines", GraphicsRegion::Typology, GraphicsRegion::None, 0 } -}; - -class Xml -{ - public: - explicit Xml(const QString& filename = QString()); - - inline XmlItem *xmlItem(); - inline RootGraphicsItem *graphicsItem(); - - inline QDomDocument document() const; - inline QString filename() const; - inline bool recognized() const; - - static QString getPath(const QString& filename); - - void load(const QString& filename); - inline static GraphicsRegion::Data dataFromRegion(GraphicsRegion::Id region); - - private: - XmlItem *init(const QDomElement& root, XmlItem *rootTreeItem); - void isRecognized(const QDomElement& element); - - void processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *rootTreeItem); - void processLineNode(const QDomElement& root, XmlItem *rootTreeItem); - void processTypoNode(const QDomElement& root, const QPoint& xPoint); - - RootGraphicsItem *graphicsItem_; - XmlItem *xmlItem_; - - QDomDocument xml_; - QString filename_; - bool isRecognized_; -}; - -inline XmlItem *Xml::xmlItem() -{ return xmlItem_; } - -inline RootGraphicsItem *Xml::graphicsItem() -{ return graphicsItem_; } - -inline QDomDocument Xml::document() const -{ return xml_; } - -inline QString Xml::filename() const -{ return filename_; } - -inline GraphicsRegion::Data Xml::dataFromRegion(GraphicsRegion::Id region) -{ return datas_[region]; } - -inline bool Xml::recognized() const -{ return isRecognized_; } - -#endif // XML_H diff --git a/scribo/ChangeLog b/scribo/ChangeLog index aff1b17..cbb30f7 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,3 +1,143 @@ +2013-02-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + Move new viewer to scribo/demo. + + * scribo/demo/viewer/BUGS, + * scribo/demo/viewer/GScribo.pro, + * scribo/demo/viewer/GScribo.pro.user, + * scribo/demo/viewer/GScribo.pro.user.1.3, + * scribo/demo/viewer/Makefile.am, + * scribo/demo/viewer/PagesWidget/pagesdelegate.cc, + * scribo/demo/viewer/PagesWidget/pagesdelegate.hh, + * scribo/demo/viewer/PagesWidget/pagesmodel.cc, + * scribo/demo/viewer/PagesWidget/pagesmodel.hh, + * scribo/demo/viewer/PagesWidget/pageswidget.cc, + * scribo/demo/viewer/PagesWidget/pageswidget.hh, + * scribo/demo/viewer/Preferences/generaloptions.cc, + * scribo/demo/viewer/Preferences/generaloptions.hh, + * scribo/demo/viewer/Preferences/generaloptions.ui, + * scribo/demo/viewer/Preferences/ocroptions.cc, + * scribo/demo/viewer/Preferences/ocroptions.hh, + * scribo/demo/viewer/Preferences/ocroptions.ui, + * scribo/demo/viewer/Preferences/optionwidget.hh, + * scribo/demo/viewer/Preferences/preferencesdialog.cc, + * scribo/demo/viewer/Preferences/preferencesdialog.hh, + * scribo/demo/viewer/Preferences/preferencesdialog.ui, + * scribo/demo/viewer/Preferences/preprocessingoptions.cc, + * scribo/demo/viewer/Preferences/preprocessingoptions.hh, + * scribo/demo/viewer/Preferences/preprocessingoptions.ui, + * scribo/demo/viewer/Preferences/segmentationoptions.cc, + * scribo/demo/viewer/Preferences/segmentationoptions.hh, + * scribo/demo/viewer/Preferences/segmentationoptions.ui, + * scribo/demo/viewer/Processing/preprocess.cc, + * scribo/demo/viewer/Processing/preprocess.hh, + * scribo/demo/viewer/Processing/process.cc, + * scribo/demo/viewer/Processing/process.hh, + * scribo/demo/viewer/Processing/progressdialog.cc, + * scribo/demo/viewer/Processing/progressdialog.hh, + * scribo/demo/viewer/Processing/runner.cc, + * scribo/demo/viewer/Processing/runner.hh, + * scribo/demo/viewer/Rendering/abstractregionitem.hh, + * scribo/demo/viewer/Rendering/backgroundtexture.hh, + * scribo/demo/viewer/Rendering/graphicsview.cc, + * scribo/demo/viewer/Rendering/graphicsview.hh, + * scribo/demo/viewer/Rendering/regionitem.cc, + * scribo/demo/viewer/Rendering/regionitem.hh, + * scribo/demo/viewer/Rendering/rootgraphicsitem.cc, + * scribo/demo/viewer/Rendering/rootgraphicsitem.hh, + * scribo/demo/viewer/Rendering/scene.cc, + * scribo/demo/viewer/Rendering/scene.hh, + * scribo/demo/viewer/Rendering/selection.cc, + * scribo/demo/viewer/Rendering/selection.hh, + * scribo/demo/viewer/TODO, + * scribo/demo/viewer/XmlWidget/attributesmodel.cc, + * scribo/demo/viewer/XmlWidget/attributesmodel.hh, + * scribo/demo/viewer/XmlWidget/selectionproxy.hh, + * scribo/demo/viewer/XmlWidget/xmlattributes.cc, + * scribo/demo/viewer/XmlWidget/xmlattributes.hh, + * scribo/demo/viewer/XmlWidget/xmldelegate.hh, + * scribo/demo/viewer/XmlWidget/xmlitem.cc, + * scribo/demo/viewer/XmlWidget/xmlitem.hh, + * scribo/demo/viewer/XmlWidget/xmlmodel.cc, + * scribo/demo/viewer/XmlWidget/xmlmodel.hh, + * scribo/demo/viewer/XmlWidget/xmlview.cc, + * scribo/demo/viewer/XmlWidget/xmlview.hh, + * scribo/demo/viewer/XmlWidget/xmlwidget.cc, + * scribo/demo/viewer/XmlWidget/xmlwidget.hh, + * scribo/demo/viewer/aboutdialog.cc, + * scribo/demo/viewer/aboutdialog.hh, + * scribo/demo/viewer/aboutdialog.ui, + * scribo/demo/viewer/config.cc, + * scribo/demo/viewer/configs.cc, + * scribo/demo/viewer/configs.hh, + * scribo/demo/viewer/defs.hh, + * scribo/demo/viewer/dir.hh, + * scribo/demo/viewer/dockwidget.cc, + * scribo/demo/viewer/dockwidget.hh, + * scribo/demo/viewer/general_options.hh, + * scribo/demo/viewer/help_dialog.hh, + * scribo/demo/viewer/image_scene.hh, + * scribo/demo/viewer/image_view.hh, + * scribo/demo/viewer/main.cc, + * scribo/demo/viewer/mainwindow.cc, + * scribo/demo/viewer/mainwindow.hh, + * scribo/demo/viewer/mainwindow.ui, + * scribo/demo/viewer/ocr_options.hh, + * scribo/demo/viewer/option_widget.cc, + * scribo/demo/viewer/option_widget.hh, + * scribo/demo/viewer/preprocess.cc, + * scribo/demo/viewer/preprocess.hh, + * scribo/demo/viewer/process.cc, + * scribo/demo/viewer/region.hh, + * scribo/demo/viewer/regionwidget.cc, + * scribo/demo/viewer/regionwidget.hh, + * scribo/demo/viewer/variantpointer.cc, + * scribo/demo/viewer/variantpointer.hh, + * scribo/demo/viewer/xml.cc, + * scribo/demo/viewer/xml.hh: New. + + * scribo/demo/viewer/README, + * scribo/demo/viewer/browser_widget.cc, + * scribo/demo/viewer/browser_widget.hh, + * scribo/demo/viewer/common.hh, + * scribo/demo/viewer/config.hh, + * scribo/demo/viewer/general_options.cc, + * scribo/demo/viewer/general_options.ui, + * scribo/demo/viewer/help_dialog.cc, + * scribo/demo/viewer/help_dialog.ui, + * scribo/demo/viewer/icons/olena_smaller.jpg, + * scribo/demo/viewer/image_region.cc, + * scribo/demo/viewer/image_region.hh, + * scribo/demo/viewer/image_region.hxx, + * scribo/demo/viewer/image_scene.cc, + * scribo/demo/viewer/image_view.cc, + * scribo/demo/viewer/image_widget.cc, + * scribo/demo/viewer/image_widget.hh, + * scribo/demo/viewer/key_widget.cc, + * scribo/demo/viewer/key_widget.hh, + * scribo/demo/viewer/ocr_options.cc, + * scribo/demo/viewer/ocr_options.ui, + * scribo/demo/viewer/preferences_dialog.cc, + * scribo/demo/viewer/preferences_dialog.hh, + * scribo/demo/viewer/preferences_dialog.ui, + * scribo/demo/viewer/preprocessing_options.cc, + * scribo/demo/viewer/preprocessing_options.hh, + * scribo/demo/viewer/preprocessing_options.ui, + * scribo/demo/viewer/process.hh, + * scribo/demo/viewer/runner.cc, + * scribo/demo/viewer/runner.hh, + * scribo/demo/viewer/segmentation_options.cc, + * scribo/demo/viewer/segmentation_options.hh, + * scribo/demo/viewer/segmentation_options.ui, + * scribo/demo/viewer/step_widget.cc, + * scribo/demo/viewer/step_widget.hh, + * scribo/demo/viewer/viewer.cc, + * scribo/demo/viewer/viewer.hh, + * scribo/demo/viewer/viewer.hxx, + * scribo/demo/viewer/viewer.qrc , + * scribo/demo/viewer/xml_widget.cc, + * scribo/demo/viewer/xml_widget.hh: Remove. + 2013-03-08 Guillaume Lazzara <z(a)lrde.epita.fr> * scribo/table/internal/align_lines.hh: Update use of math::round. diff --git a/GScribo/BUGS b/scribo/demo/viewer/BUGS similarity index 100% rename from GScribo/BUGS rename to scribo/demo/viewer/BUGS diff --git a/scribo/demo/viewer/GScribo.pro b/scribo/demo/viewer/GScribo.pro new file mode 100644 index 0000000..d607cc5 --- /dev/null +++ b/scribo/demo/viewer/GScribo.pro @@ -0,0 +1,83 @@ +# ------------------------------------------------- +# Project created by QtCreator 2013-01-21T09:20:54 +# ------------------------------------------------- +QT += xml +INCLUDEPATH += /lrde/home/stage/froger_a/olena/scribo/ \ + /lrde/home/stage/froger_a/olena/milena/ \ + /lrde/home/stage/froger_a/olena/_build/scribo/demo/ +QMAKE_CXXFLAGS += -DNDEBUG \ + -DMLN_WO_GLOBAL_VARS +LIBS += -I/usr/include/graphicsImage \ + -lGraphicsMagick++ \ + -ltesseract_full \ + -ltiff +TARGET = GScribo +TEMPLATE = app +SOURCES += regionwidget.cc \ + mainwindow.cc \ + main.cc \ + xml.cc \ + Rendering/scene.cc \ + Rendering/selection.cc \ + Rendering/regionitem.cc \ + Rendering/graphicsview.cc \ + PagesWidget/pageswidget.cc \ + PagesWidget/pagesmodel.cc \ + PagesWidget/pagesdelegate.cc \ + Preferences/segmentationoptions.cc \ + Preferences/preprocessingoptions.cc \ + Preferences/ocroptions.cc \ + Preferences/generaloptions.cc \ + Preferences/preferencesdialog.cc \ + Processing/progressdialog.cc \ + Processing/preprocess.cc \ + Processing/process.cc \ + Processing/runner.cc \ + XmlWidget/xmlwidget.cc \ + XmlWidget/xmlmodel.cc \ + XmlWidget/xmlitem.cc \ + XmlWidget/xmlattributes.cc \ + XmlWidget/attributesmodel.cc \ + XmlWidget/xmlview.cc +HEADERS += mainwindow.hh \ + variantpointer.hh \ + regionwidget.hh \ + aboutdialog.hh \ + configs.hh \ + region.hh \ + dir.hh \ + xml.hh \ + Rendering/scene.hh \ + Rendering/selection.hh \ + Rendering/regionitem.hh \ + Rendering/graphicsview.hh \ + PagesWidget/pageswidget.hh \ + PagesWidget/pagesmodel.hh \ + Processing/preprocess.hh \ + Processing/process.hh \ + Processing/runner.hh \ + Processing/progressdialog.hh \ + Preferences/segmentationoptions.hh \ + Preferences/preprocessingoptions.hh \ + Preferences/ocroptions.hh \ + Preferences/generaloptions.hh \ + Preferences/optionwidget.hh \ + Preferences/preferencesdialog.hh \ + XmlWidget/xmlwidget.hh \ + XmlWidget/xmlmodel.hh \ + XmlWidget/xmlitem.hh \ + XmlWidget/xmlattributes.hh \ + XmlWidget/selectionproxy.hh \ + XmlWidget/xmldelegate.hh \ + XmlWidget/attributesmodel.hh \ + PagesWidget/pagesdelegate.hh \ + Rendering/rootgraphicsitem.hh \ + XmlWidget/xmlview.hh \ + dockwidget.hh +FORMS += mainwindow.ui \ + aboutdialog.ui \ + Preferences/preferencesdialog.ui \ + Preferences/ocroptions.ui \ + Preferences/segmentationoptions.ui \ + Preferences/generaloptions.ui \ + Preferences/preprocessingoptions.ui diff --git a/GScribo/GScribo.pro.user b/scribo/demo/viewer/GScribo.pro.user similarity index 100% rename from GScribo/GScribo.pro.user rename to scribo/demo/viewer/GScribo.pro.user diff --git a/GScribo/GScribo.pro.user.1.3 b/scribo/demo/viewer/GScribo.pro.user.1.3 similarity index 100% rename from GScribo/GScribo.pro.user.1.3 rename to scribo/demo/viewer/GScribo.pro.user.1.3 diff --git a/scribo/demo/viewer/Makefile.am b/scribo/demo/viewer/Makefile.am index d79abcf..23c800b 100644 --- a/scribo/demo/viewer/Makefile.am +++ b/scribo/demo/viewer/Makefile.am @@ -19,96 +19,131 @@ include $(top_srcdir)/build-aux/autotroll.mk bin_PROGRAMS = scribo-viewer -scribo_viewer_SOURCES = viewer.cc \ +scribo_viewer_SOURCES = mainwindow.cc \ + aboutdialog.cc \ + configs.cc \ main.cc \ - image_widget.cc \ - xml_widget.cc \ - key_widget.cc \ - browser_widget.cc \ - image_scene.cc \ - image_view.cc \ - image_region.cc \ - help_dialog.cc \ - step_widget.cc \ - preprocessing_options.cc\ - segmentation_options.cc \ - ocr_options.cc \ - runner.cc \ - preprocess.cc \ - process.cc \ - general_options.cc \ - preferences_dialog.cc \ - option_widget.cc \ - config.cc + regionwidget.cc \ + xml.cc \ + dockwidget.cc \ + PagesWidget/pagesdelegate.cc \ + PagesWidget/pagesmodel.cc \ + PagesWidget/pageswidget.cc \ + Preferences/generaloptions.cc \ + Preferences/ocroptions.cc \ + Preferences/preferencesdialog.cc \ + Preferences/preprocessingoptions.cc \ + Preferences/segmentationoptions.cc \ + Processing/preprocess.cc \ + Processing/process.cc \ + Processing/progressdialog.cc \ + Processing/runner.cc \ + Rendering/graphicsview.cc \ + Rendering/regionitem.cc \ + Rendering/scene.cc \ + Rendering/selection.cc \ + Rendering/rootgraphicsitem.cc \ + XmlWidget/attributesmodel.cc \ + XmlWidget/xmlattributes.cc \ + XmlWidget/xmlitem.cc \ + XmlWidget/xmlmodel.cc \ + XmlWidget/xmlview.cc \ + XmlWidget/xmlwidget.cc + + nodist_scribo_viewer_SOURCES = $(BUILT_SOURCES) + + scribo_viewer_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS) -I$(srcdir) \ + -I$(builddir) \ -I$(top_srcdir)/milena \ -I$(top_srcdir)/scribo \ $(MAGICKXX_CPPFLAGS) \ $(TESSERACT_CPPFLAGS) \ $(TIFF_CPPFLAGS) \ -DNDEBUG -DMLN_WO_GLOBAL_VARS + + + scribo_viewer_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS) \ $(STRICT_ALIASING_CXXFLAGS) -O3 + + + scribo_viewer_LDFLAGS = $(QT_LDFLAGS) $(LDFLAGS) \ $(MAGICKXX_LDFLAGS) \ $(TESSERACT_LDFLAGS) \ $(TIFF_LDFLAGS) + + + scribo_viewer_LDADD = $(QT_LIBS) $(LDADD) -BUILT_SOURCES = viewer.moc.cc \ - image_widget.moc.cc \ - xml_widget.moc.cc \ - key_widget.moc.cc \ - browser_widget.moc.cc \ - image_scene.moc.cc \ - image_view.moc.cc \ - image_region.moc.cc \ - help_dialog.ui.h \ - step_widget.moc.cc \ - preprocessing_options.moc.cc \ - preprocessing_options.ui.h \ - segmentation_options.moc.cc \ - segmentation_options.ui.h \ - ocr_options.moc.cc \ - ocr_options.ui.h \ - runner.moc.cc \ - preprocess.moc.cc \ - process.moc.cc \ - preferences_dialog.moc.cc \ - preferences_dialog.ui.h \ - general_options.moc.cc \ - general_options.ui.h \ - demodir.hh \ - viewer.qrc.cc - - -noinst_HEADERS = viewer.hh \ - viewer.hxx \ - image_widget.hh \ - xml_widget.hh \ - key_widget.hh \ - browser_widget.hh \ - image_scene.hh \ - image_view.hh \ - image_region.hh \ - image_region.hxx \ - common.hh \ - help_dialog.hh \ - step_widget.hh \ - preprocessing_options.hh\ - segmentation_options.hh\ - ocr_options.hh \ - runner.hh \ - preprocess.hh \ - process.hh \ - general_options.hh \ - preferences_dialog.hh \ - option_widget.hh \ - config.hh \ - defs.hh + + +BUILT_SOURCES = demodir.hh \ + dockwidget.moc.cc \ + Rendering/graphicsview.moc.cc \ + mainwindow.moc.cc \ + Preferences/ocroptions.moc.cc \ + PagesWidget/pagesmodel.moc.cc \ + PagesWidget/pageswidget.moc.cc \ + Preferences/preferencesdialog.moc.cc \ + Processing/preprocess.moc.cc \ + Preferences/preprocessingoptions.moc.cc \ + Processing/process.moc.cc \ + Processing/progressdialog.moc.cc \ + regionwidget.moc.cc \ + Processing/runner.moc.cc \ + Rendering/scene.moc.cc \ + Preferences/segmentationoptions.moc.cc \ + XmlWidget/xmlview.moc.cc \ + XmlWidget/xmlwidget.moc.cc \ + aboutdialog.ui.h \ + Preferences/generaloptions.ui.h \ + mainwindow.ui.h \ + Preferences/generaloptions.moc.cc \ + Preferences/ocroptions.ui.h \ + Preferences/preferencesdialog.ui.h \ + Preferences/preprocessingoptions.ui.h \ + Preferences/segmentationoptions.ui.h \ + XmlWidget/attributesmodel.moc.cc + + +noinst_HEADERS = mainwindow.hh \ + aboutdialog.hh \ + regionwidget.hh \ + xml.hh \ + PagesWidget/pagesdelegate.hh \ + PagesWidget/pagesmodel.hh \ + PagesWidget/pageswidget.hh \ + Preferences/generaloptions.hh \ + Preferences/ocroptions.hh \ + Preferences/optionwidget.hh \ + Preferences/preferencesdialog.hh \ + Preferences/preprocessingoptions.hh \ + Preferences/segmentationoptions.hh \ + Processing/preprocess.hh \ + Processing/process.hh \ + Processing/progressdialog.hh \ + Processing/runner.hh \ + Rendering/graphicsview.hh \ + Rendering/regionitem.hh \ + Rendering/rootgraphicsitem.hh \ + Rendering/scene.hh \ + Rendering/selection.hh \ + XmlWidget/attributesmodel.hh \ + XmlWidget/selectionproxy.hh \ + XmlWidget/xmlattributes.hh \ + XmlWidget/xmldelegate.hh \ + XmlWidget/xmlitem.hh \ + XmlWidget/xmlmodel.hh \ + XmlWidget/xmlview.hh \ + XmlWidget/xmlwidget.hh + + # Generated files @@ -116,6 +151,8 @@ do_subst = sed \ -e 's|@libexecdir[@]|$(libexecdir)|g' \ -e 's|@abs_demodir[@]|$(abs_top_builddir)/scribo/demo|g' + + demodir.hh: $(srcdir)/demodir.hh.in Makefile rm -f $@ $@.tmp srcdir=''; \ @@ -124,17 +161,20 @@ demodir.hh: $(srcdir)/demodir.hh.in Makefile chmod a-w $@.tmp mv $@.tmp $@ + + CLEANFILES = $(BUILT_SOURCES) -EXTRA_DIST = \ - general_options.ui \ - preferences_dialog.ui \ - README \ - preprocessing_options.ui\ - segmentation_options.ui \ - ocr_options.ui \ - help_dialog.ui \ - demodir.hh.in \ - viewer.qrc \ - icons/olena_smaller.jpg + + +EXTRA_DIST = BUGS \ + README \ + aboutdialog.ui \ + mainwindow.ui \ + Preferences/generaloptions.ui \ + Preferences/ocroptions.ui \ + Preferences/preferencesdialog.ui \ + Preferences/preprocessingoptions.ui \ + Preferences/segmentationoptions.ui \ + demodir.hh.in diff --git a/scribo/demo/viewer/PagesWidget/pagesdelegate.cc b/scribo/demo/viewer/PagesWidget/pagesdelegate.cc new file mode 100644 index 0000000..f981e1f --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesdelegate.cc @@ -0,0 +1,38 @@ +// Copyright (C) 2013 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/
>. + +#include "pagesdelegate.hh" + +PagesDelegate::PagesDelegate(QObject *parent) : + QStyledItemDelegate(parent) +{ + pen_.setColor(QColor::fromRgb(255, 69, 0, 255)); + pen_.setWidth(2); +} + +void PagesDelegate::paint(QPainter *painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const +{ + QStyledItemDelegate::paint(painter, option, index); + + if(index.row() == index.data(Qt::UserRole+1).toInt()) + { + painter->setPen(pen_); + painter->drawRect(option.rect); + painter->fillRect(option.rect, QColor::fromRgb(255, 69, 0, 60)); + } +} diff --git a/scribo/demo/viewer/PagesWidget/pagesdelegate.hh b/scribo/demo/viewer/PagesWidget/pagesdelegate.hh new file mode 100644 index 0000000..02440f8 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesdelegate.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESDELEGATE_H +# define PAGESDELEGATE_H + +#include <QStyledItemDelegate> +#include <QPainter> + +class PagesDelegate : + public QStyledItemDelegate +{ + public: + explicit PagesDelegate(QObject *parent = 0); + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + + private: + QPen pen_; +}; + +#endif // PAGESDELEGATE_H diff --git a/scribo/demo/viewer/PagesWidget/pagesmodel.cc b/scribo/demo/viewer/PagesWidget/pagesmodel.cc new file mode 100644 index 0000000..6246f18 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesmodel.cc @@ -0,0 +1,91 @@ +// Copyright (C) 2013 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/
>. + +#include "pagesmodel.hh" + +PagesModel::PagesModel(QObject *parent): + QAbstractListModel(parent) +{ + currentRow_ = 0; +} + +QVariant PagesModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + if(role == Qt::DecorationRole) + return pixmaps_[index.row()]; + + if(role == Qt::UserRole) + return filenames_[index.row()]; + + if(role == Qt::UserRole+1) + return currentRow_; + + return QVariant(); +} + +void PagesModel::addPicture(const QString& filename, const QPixmap& pixmap) +{ + beginInsertRows(QModelIndex(), 0, 0); + + pixmaps_.prepend(pixmap.scaled(QSize(200, 200), + Qt::KeepAspectRatio, + Qt::SmoothTransformation)); + filenames_.prepend(filename); + + endInsertRows(); +} + +void PagesModel::removePixmap(const QModelIndex &parent) +{ + int row = parent.row(); + + beginRemoveRows(parent, row, row); + + pixmaps_.removeAt(row); + filenames_.removeAt(row); + + endRemoveRows(); +} + +void PagesModel::setCurrentRow(int currentRow) +{ + beginResetModel(); + + currentRow_ = currentRow; + + endResetModel(); +} + + +QStringList PagesModel::filenames() const +{ + return filenames_; +} + + +int PagesModel::rowCount(const QModelIndex&) const +{ + return filenames_.count(); +} + + +int PagesModel::currentRow() const +{ + return currentRow_; +} diff --git a/scribo/demo/viewer/PagesWidget/pagesmodel.hh b/scribo/demo/viewer/PagesWidget/pagesmodel.hh new file mode 100644 index 0000000..2a0ec4b --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesmodel.hh @@ -0,0 +1,51 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESMODEL_HH +# define PAGESMODEL_HH + +#include <QAbstractListModel> +#include <QIcon> +#include <QList> + +class PagesModel: + public QAbstractListModel +{ + Q_OBJECT + + public: + explicit PagesModel(QObject *parent = 0); + + QStringList filenames() const; + int rowCount(const QModelIndex& parent = QModelIndex()) const; + + int currentRow() const; + void setCurrentRow(int currentRow); + + QVariant data(const QModelIndex& index, int role = Qt::DecorationRole) const; + void addPicture(const QString& filename, const QPixmap& pixmap); + + private: + QStringList filenames_; + QList<QPixmap> pixmaps_; + int currentRow_; + + public slots: + void removePixmap(const QModelIndex& parent); +}; + + +#endif // PAGESMODEL_HH diff --git a/scribo/demo/viewer/PagesWidget/pageswidget.cc b/scribo/demo/viewer/PagesWidget/pageswidget.cc new file mode 100644 index 0000000..0355419 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pageswidget.cc @@ -0,0 +1,119 @@ +// Copyright (C) 2013 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/
>. + +#include <QDebug> +#include "pageswidget.hh" + +PagesWidget::PagesWidget(QWidget *parent): + QListView(parent) +{ + setUniformItemSizes(true); + setSelectionMode(QAbstractItemView::ExtendedSelection); + setViewMode(QListView::IconMode); + setIconSize(QSize(200, 200)); + setMovement(QListView::Static); + setResizeMode(QListView::Adjust); + setSpacing(10); + + setModel(&model_); + setItemDelegate(new PagesDelegate()); + + QShortcut *remove = new QShortcut(Qt::Key_Delete, this); + connect(remove, SIGNAL(activated()), this, SLOT(removeSelection())); + connect(this, SIGNAL(doubleClicked(QModelIndex)), + this, SLOT(getPicture(QModelIndex))); +} + +void PagesWidget::removeSelection() +{ + QModelIndexList indexes = selectionModel()->selectedIndexes(); + if(hasFocus() && indexes.count() > 0) + { + // Sort the list because after the first removal, the second row index may not be the good one. + qSort(indexes.begin(), indexes.end()); + + // From the highest row to the smallest to be sure to remove the good index. + for(int i = indexes.count()-1; i > -1; i--) + model_.removePixmap(indexes[i]); + + // Draw new image on the scene. + getPicture(model_.index(indexes[0].row())); + clearSelection(); + + model_.setCurrentRow(indexes[0].row()); + scrollTo(indexes[0]); + } +} + +void PagesWidget::getPicture(const QModelIndex& index) +{ + QString filename = index.data(Qt::UserRole).toString(); + model_.setCurrentRow(index.row()); + + emit imageSelected(filename); +} + +QStringList PagesWidget::filenames() const +{ + return model_.filenames(); +} + +int PagesWidget::currentRow() const +{ + return model_.currentRow(); +} + +void PagesWidget::setCurrentRow(int currentRow) +{ + model_.setCurrentRow(currentRow); +} + +void PagesWidget::addPicture(const QString& filename, + const QPixmap& pixmap) +{ + model_.addPicture(filename, pixmap); +} + +void PagesWidget::focusOutEvent(QFocusEvent *event) +{ + QListView::focusOutEvent(event); clearSelection(); +} + +bool PagesWidget::haveNextRow() const +{ + return currentRow() + 1 < model_.rowCount(); +} + +bool PagesWidget::havePreviousRow() const +{ + return currentRow() - 1 >= 0; +} + +void PagesWidget::selectNextRow() +{ + Q_ASSERT(haveNextRow()); + QModelIndex index = model_.index(currentRow() + 1); + getPicture(index); + scrollTo(index); +} + +void PagesWidget::selectPreviousRow() +{ + Q_ASSERT(havePreviousRow()); + QModelIndex index = model_.index(currentRow() - 1); + getPicture(index); + scrollTo(index); +} diff --git a/scribo/demo/viewer/PagesWidget/pageswidget.hh b/scribo/demo/viewer/PagesWidget/pageswidget.hh new file mode 100644 index 0000000..d159a8e --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pageswidget.hh @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESWIDGET_HH +# define PAGESWIDGET_HH + +#include <QListView> +#include <QShortcut> + +#include "pagesdelegate.hh" +#include "pagesmodel.hh" + +class PagesWidget : public QListView +{ + Q_OBJECT; + +public: + explicit PagesWidget(QWidget *parent = 0); + + QStringList filenames() const; + int currentRow() const; + void setCurrentRow(int currentRow); + + void addPicture(const QString& filename, const QPixmap& pixmap); + + bool haveNextRow() const; + bool havePreviousRow() const; + +protected: + void focusOutEvent(QFocusEvent *event); + +private: + PagesModel model_; + +public slots: + void removeSelection(); + void selectNextRow(); + void selectPreviousRow(); + +private slots: + void getPicture(const QModelIndex& index); + +signals: + void imageSelected(const QString& filename); +}; + + +#endif // PAGESWIDGET_HH diff --git a/scribo/demo/viewer/Preferences/generaloptions.cc b/scribo/demo/viewer/Preferences/generaloptions.cc new file mode 100644 index 0000000..d32ee40 --- /dev/null +++ b/scribo/demo/viewer/Preferences/generaloptions.cc @@ -0,0 +1,60 @@ +// Copyright (C) 2013 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/
>. + +#include "generaloptions.hh" +#include "Preferences/generaloptions.ui.h" + +GeneralOptions::GeneralOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::GeneralOptions) +{ + ui->setupUi(this); + loadConfig(); +} + +GeneralOptions::~GeneralOptions() +{ + delete ui; +} + +void GeneralOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->saveXml->setChecked(conf->generalSaveXmlEnabled()); + ui->sameDir->setChecked(conf->generalSaveXmlSameDir()); + ui->customDir->setChecked(conf->generalSaveXmlCustomDir()); + ui->customDirValue->setText(conf->generalSaveXmlCustomDirPath()); +} + + +void GeneralOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setGeneralSaveXmlEnabled(ui->saveXml->isChecked()); + conf->setGeneralSaveXmlSameDir(ui->sameDir->isChecked()); + conf->setGeneralSaveXmlCustomDir(ui->customDir->isChecked()); + conf->setGeneralSaveXmlCustomDirPath(ui->customDirValue->text()); +} + +void GeneralOptions::onCustomDirBrowseBtnClicked() +{ + QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); + + if (!dir.isEmpty()) + ui->customDirValue->setText(dir); +} diff --git a/scribo/demo/viewer/Preferences/generaloptions.hh b/scribo/demo/viewer/Preferences/generaloptions.hh new file mode 100644 index 0000000..1d31d18 --- /dev/null +++ b/scribo/demo/viewer/Preferences/generaloptions.hh @@ -0,0 +1,50 @@ +// Copyright (C) 2013 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/
>. + +#ifndef GENERALOPTIONS_HH +# define GENERALOPTIONS_HH + +#include <QFileDialog> + +#include "optionwidget.hh" +#include "configs.hh" + +namespace Ui +{ + class GeneralOptions; +} + +class GeneralOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit GeneralOptions(QWidget *parent = 0); + ~GeneralOptions(); + + virtual void loadConfig(); + virtual void saveConfig(); + + private: + Ui::GeneralOptions *ui; + + private slots: + void onCustomDirBrowseBtnClicked(); + +}; + +#endif // GENERAL_OPTIONS_HH diff --git a/GScribo/Preferences/generaloptions.ui b/scribo/demo/viewer/Preferences/generaloptions.ui similarity index 100% rename from GScribo/Preferences/generaloptions.ui rename to scribo/demo/viewer/Preferences/generaloptions.ui diff --git a/scribo/demo/viewer/Preferences/ocroptions.cc b/scribo/demo/viewer/Preferences/ocroptions.cc new file mode 100644 index 0000000..187a8d7 --- /dev/null +++ b/scribo/demo/viewer/Preferences/ocroptions.cc @@ -0,0 +1,69 @@ +// Copyright (C) 2013 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/
>. + +#include "ocroptions.hh" +#include "Preferences/ocroptions.ui.h" + +static const char *language[][2] = +{ + { "English", "eng" }, + { "French", "fra" }, + { 0, 0 } +}; + +OcrOptions::OcrOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::OcrOptions) +{ + ui->setupUi(this); + + for (unsigned i = 0; language[i][0]; ++i) + ui->ocr_language->insertItem(i, language[i][0]); + + loadConfig(); +} + +OcrOptions::~OcrOptions() +{ + delete ui; +} + +int OcrOptions::findIndex(const QString& lang) +{ + for (unsigned i = 0; language[i][0]; ++i) + if (lang == language[i][1]) + return i; + + return 0; +} + + +void OcrOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->enable_ocr->setChecked(conf->ocrEnabled()); + ui->ocr_language->setCurrentIndex(findIndex(conf->ocrLanguage())); +} + + +void OcrOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setOcrEnabled(ui->enable_ocr->isChecked()); + conf->setOcrLanguage(language[ui->ocr_language->currentIndex()][1]); +} diff --git a/scribo/demo/viewer/Preferences/ocroptions.hh b/scribo/demo/viewer/Preferences/ocroptions.hh new file mode 100644 index 0000000..8b5b209 --- /dev/null +++ b/scribo/demo/viewer/Preferences/ocroptions.hh @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#ifndef OCR_OPTIONS_HH +# define OCR_OPTIONS_HH + +//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> + +#include "optionwidget.hh" +#include "configs.hh" +#include "region.hh" + +namespace Ui +{ + class OcrOptions; +} + +class OcrOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit OcrOptions(QWidget *parent = 0); + ~OcrOptions(); + + void loadConfig(); + void saveConfig(); + + private: + int findIndex(const QString& lang); + + Ui::OcrOptions *ui; +}; + +#endif // OCR_OPTIONS_HH diff --git a/GScribo/Preferences/ocroptions.ui b/scribo/demo/viewer/Preferences/ocroptions.ui similarity index 100% rename from GScribo/Preferences/ocroptions.ui rename to scribo/demo/viewer/Preferences/ocroptions.ui diff --git a/GScribo/Preferences/optionwidget.h b/scribo/demo/viewer/Preferences/optionwidget.hh similarity index 100% rename from GScribo/Preferences/optionwidget.h rename to scribo/demo/viewer/Preferences/optionwidget.hh diff --git a/scribo/demo/viewer/Preferences/preferencesdialog.cc b/scribo/demo/viewer/Preferences/preferencesdialog.cc new file mode 100644 index 0000000..ee6feda --- /dev/null +++ b/scribo/demo/viewer/Preferences/preferencesdialog.cc @@ -0,0 +1,120 @@ +// Copyright (C) 2013 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/
>. + +#include "preferencesdialog.hh" +#include "Preferences/preferencesdialog.ui.h" + +PreferencesDialog::PreferencesDialog(QWidget *parent) : + QDialog(parent, Qt::Dialog), + ui(new Ui::PreferencesDialog) +{ + ui->setupUi(this); + + // We may want to remove this useless object in the ui file. + delete ui->widget; + + connect(ui->optionList, SIGNAL(currentRowChanged(int)), this, SLOT(onOptionListCurrentRowChanged(int))); + setAttribute(Qt::WA_DeleteOnClose); + + loadOptionList(); + ui->optionList->setCurrentRow(0); +} + +PreferencesDialog::~PreferencesDialog() +{ + delete ui; +} + +void PreferencesDialog::loadOptionList() +{ + static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; + + int i; + for (i = 0; options[i]; ++i) + ui->optionList->insertItem(i, options[i]); + + widgets.fill(0, i); +} + +void PreferencesDialog::selectOptionWidget(int row) +{ + if(!widgets[row]) + { + QWidget *widget = 0; + + switch(row) + { + case 0: + widget = new GeneralOptions(this); + break; + + case 1: + widget = new PreprocessingOptions(this); + break; + + case 2: + widget = new SegmentationOptions(this); + break; + + case 3: + widget = new OcrOptions(this); + break; + } + + if(widget) + widgets[row] = widget; + } + + if(ui->horizontalLayout_2->count() == 2) + { + QWidget *current_widget = ui->horizontalLayout_2->itemAt(1)->widget(); + ui->horizontalLayout_2->removeWidget(current_widget); + current_widget->hide(); + } + + ui->horizontalLayout_2->insertWidget(1, widgets[row]); + widgets[row]->show(); +} + + +void PreferencesDialog::accept() +{ + for (int i = 0; i < widgets.size(); ++i) + { + if (widgets[i]) + { + static_cast<OptionWidget *>(widgets[i])->saveConfig(); + delete widgets[i]; + } + } + + QDialog::accept(); +} + + +void PreferencesDialog::reject() +{ + for (int i = 0; i < widgets.size(); ++i) + delete widgets[i]; + + QDialog::reject(); +} + + +void PreferencesDialog::onOptionListCurrentRowChanged(int row) +{ + selectOptionWidget(row); +} diff --git a/scribo/demo/viewer/Preferences/preferencesdialog.hh b/scribo/demo/viewer/Preferences/preferencesdialog.hh new file mode 100644 index 0000000..f867b26 --- /dev/null +++ b/scribo/demo/viewer/Preferences/preferencesdialog.hh @@ -0,0 +1,55 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREFERENCESDIALOG_HH +# define PREFERENCESDIALOG_HH + +#include <QDialog> + +#include "preprocessingoptions.hh" +#include "segmentationoptions.hh" +#include "generaloptions.hh" +#include "ocroptions.hh" + +namespace Ui +{ + class PreferencesDialog; +} + +class PreferencesDialog : + public QDialog +{ + Q_OBJECT + + public: + explicit PreferencesDialog(QWidget *parent = 0); + ~PreferencesDialog(); + + private: + void loadOptionList(); + void selectOptionWidget(int row); + + Ui::PreferencesDialog *ui; + QVector<QWidget *> widgets; + + private slots: + void onOptionListCurrentRowChanged(int row); + virtual void accept(); + virtual void reject(); + +}; + +#endif // PREFERENCESDIALOG_HH diff --git a/GScribo/Preferences/preferencesdialog.ui b/scribo/demo/viewer/Preferences/preferencesdialog.ui similarity index 100% rename from GScribo/Preferences/preferencesdialog.ui rename to scribo/demo/viewer/Preferences/preferencesdialog.ui diff --git a/scribo/demo/viewer/Preferences/preprocessingoptions.cc b/scribo/demo/viewer/Preferences/preprocessingoptions.cc new file mode 100644 index 0000000..23d2538 --- /dev/null +++ b/scribo/demo/viewer/Preferences/preprocessingoptions.cc @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#include "preprocessingoptions.hh" +#include "Preferences/preprocessingoptions.ui.h" + +using namespace scribo::toolchain::internal; + +PreprocessingOptions::PreprocessingOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::PreprocessingOptions) +{ + ui->setupUi(this); + + ui->bin_algoCbox->insertItem(Convert, "Violent convert"); + ui->bin_algoCbox->insertItem(Sauvola, "Local threshold"); + ui->bin_algoCbox->insertItem(SauvolaMs, "Local threshold multiscale"); + + loadConfig(); +} + +PreprocessingOptions::~PreprocessingOptions() +{ + delete ui; +} + +void PreprocessingOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->subsampleCb->setChecked(conf->preprocessingSubsample()); + ui->remove_bgCb->setChecked(conf->preprocessingRemoveBg()); + ui->deskewCb->setChecked(conf->preprocessingDeskew()); + ui->remove_noiseCb->setChecked(conf->preprocessingRemoveNoise()); + ui->bin_algoCbox->setCurrentIndex(conf->preprocessingBinAlgo()); +} + + +void PreprocessingOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setPreprocessingSubsample(ui->subsampleCb->isChecked()); + conf->setPreprocessingRemoveBg(ui->remove_bgCb->isChecked()); + conf->setPreprocessingDeskew(ui->deskewCb->isChecked()); + conf->setPreprocessingRemoveNoise(ui->remove_noiseCb->isChecked()); + conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex()); +} diff --git a/scribo/demo/viewer/Preferences/preprocessingoptions.hh b/scribo/demo/viewer/Preferences/preprocessingoptions.hh new file mode 100644 index 0000000..38645fa --- /dev/null +++ b/scribo/demo/viewer/Preferences/preprocessingoptions.hh @@ -0,0 +1,48 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREPROCESSINGOPTIONS_HH +# define PREPROCESSINGOPTIONS_HH + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> + +#include "optionwidget.hh" +#include "region.hh" +#include "configs.hh" + +namespace Ui +{ + class PreprocessingOptions; +} + +class PreprocessingOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit PreprocessingOptions(QWidget *parent = 0); + ~PreprocessingOptions(); + + void loadConfig(); + void saveConfig(); + + private: + Ui::PreprocessingOptions *ui; + +}; + +#endif // PREPROCESSINGOPTIONS_HH diff --git a/GScribo/Preferences/preprocessingoptions.ui b/scribo/demo/viewer/Preferences/preprocessingoptions.ui similarity index 100% rename from GScribo/Preferences/preprocessingoptions.ui rename to scribo/demo/viewer/Preferences/preprocessingoptions.ui diff --git a/scribo/demo/viewer/Preferences/segmentationoptions.cc b/scribo/demo/viewer/Preferences/segmentationoptions.cc new file mode 100644 index 0000000..867aa9a --- /dev/null +++ b/scribo/demo/viewer/Preferences/segmentationoptions.cc @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#include "segmentationoptions.hh" +#include "Preferences/segmentationoptions.ui.h" + +SegmentationOptions::SegmentationOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::SegmentationOptions) +{ + ui->setupUi(this); + + ui->find_sepsCbox->insertItem(Separator::Lines, "Lines"); + ui->find_sepsCbox->insertItem(Separator::Whitespaces, "Whitespaces"); + ui->find_sepsCbox->insertItem(Separator::Both, "Lines and whitespaces"); + + loadConfig(); +} + +SegmentationOptions::~SegmentationOptions() +{ + delete ui; +} + +void SegmentationOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + ui->find_sepsCbox->setCurrentIndex(conf->segmentationFindSeps()); +} + + +void SegmentationOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + conf->setSegmentationFindSeps(ui->find_sepsCbox->currentIndex()); +} diff --git a/scribo/demo/viewer/Preferences/segmentationoptions.hh b/scribo/demo/viewer/Preferences/segmentationoptions.hh new file mode 100644 index 0000000..4ad282a --- /dev/null +++ b/scribo/demo/viewer/Preferences/segmentationoptions.hh @@ -0,0 +1,46 @@ +// Copyright (C) 2013 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/
>. + +#ifndef SEGMENTATIONOPTIONS_HH +# define SEGMENTATIONOPTIONS_HH + + +#include "optionwidget.hh" +#include "configs.hh" +#include "region.hh" + +namespace Ui +{ + class SegmentationOptions; +} + +class SegmentationOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit SegmentationOptions(QWidget *parent = 0); + ~SegmentationOptions(); + + void loadConfig(); + void saveConfig(); + + private: + Ui::SegmentationOptions *ui; +}; + +#endif // SEGMENTATIONOPTIONS_HH diff --git a/GScribo/Preferences/segmentationoptions.ui b/scribo/demo/viewer/Preferences/segmentationoptions.ui similarity index 100% rename from GScribo/Preferences/segmentationoptions.ui rename to scribo/demo/viewer/Preferences/segmentationoptions.ui diff --git a/scribo/demo/viewer/Processing/preprocess.cc b/scribo/demo/viewer/Processing/preprocess.cc new file mode 100644 index 0000000..c913c60 --- /dev/null +++ b/scribo/demo/viewer/Processing/preprocess.cc @@ -0,0 +1,27 @@ +// Copyright (C) 2013 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/
>. + +#include "preprocess.hh" + +void Preprocess::on_progress() +{ + emit progress(); +} + +void Preprocess::on_new_progress_label(const char *label) +{ + emit newProgressLabel(QString(label)); +} diff --git a/scribo/demo/viewer/Processing/preprocess.hh b/scribo/demo/viewer/Processing/preprocess.hh new file mode 100644 index 0000000..457efde --- /dev/null +++ b/scribo/demo/viewer/Processing/preprocess.hh @@ -0,0 +1,42 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREPROCESS_H +# define PREPROCESS_H + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> +#include <mln/core/image/image2d.hh> +#include <mln/value/rgb8.hh> +#include <QObject> + +using namespace scribo::toolchain::internal; + +class Preprocess : + public QObject, + public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > +{ + Q_OBJECT + + public: + virtual void on_progress(); + virtual void on_new_progress_label(const char *label); + + signals: + void newProgressLabel(const QString& label); + void progress(); +}; + +#endif // PREPROCESS_H diff --git a/scribo/demo/viewer/Processing/process.cc b/scribo/demo/viewer/Processing/process.cc new file mode 100644 index 0000000..0fb54a6 --- /dev/null +++ b/scribo/demo/viewer/Processing/process.cc @@ -0,0 +1,37 @@ +// Copyright (C) 2013 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/
>. + +#include "process.hh" + +Process::Process(const char *doc_filename) + : superT(doc_filename) +{ +} + +void Process::on_progress() +{ + emit progress(); +} + +void Process::on_new_progress_label(const char *label) +{ + emit newProgressLabel(QString(label)); +} + +void Process::on_xml_saved() +{ + emit xmlSaved(QString(output_file.c_str())); +} diff --git a/scribo/demo/viewer/Processing/process.hh b/scribo/demo/viewer/Processing/process.hh new file mode 100644 index 0000000..fc3809c --- /dev/null +++ b/scribo/demo/viewer/Processing/process.hh @@ -0,0 +1,45 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PROCESS_H +# define PROCESS_H + +#include <scribo/toolchain/internal/content_in_doc_functor.hh> +#include <mln/core/image/image2d.hh> +#include <QObject> + +using namespace scribo::toolchain::internal; + +struct Process : + public QObject, + public content_in_doc_functor<mln::image2d<bool> > +{ + Q_OBJECT + typedef content_in_doc_functor<mln::image2d<bool> > superT; + + public : + explicit Process(const char *docFilename); + virtual void on_progress(); + virtual void on_new_progress_label(const char *label); + virtual void on_xml_saved(); + + signals: + void newProgressLabel(const QString& label); + void progress(); + void xmlSaved(const QString& filename); +}; + +#endif // PROCESS_H diff --git a/scribo/demo/viewer/Processing/progressdialog.cc b/scribo/demo/viewer/Processing/progressdialog.cc new file mode 100644 index 0000000..beda013 --- /dev/null +++ b/scribo/demo/viewer/Processing/progressdialog.cc @@ -0,0 +1,37 @@ +// Copyright (C) 2013 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/
>. + +#include "progressdialog.hh" + +ProgressDialog::ProgressDialog(QWidget *parent): + QProgressDialog(parent, Qt::Dialog) +{ + setAutoClose(false); + setCancelButton(0); + hide(); +} + +void ProgressDialog::reset() +{ + setValue(0); + setLabelText("Initilization"); + show(); +} + +void ProgressDialog::run() +{ + setValue(value()+1); +} diff --git a/scribo/demo/viewer/Processing/progressdialog.hh b/scribo/demo/viewer/Processing/progressdialog.hh new file mode 100644 index 0000000..fe2ea0f --- /dev/null +++ b/scribo/demo/viewer/Processing/progressdialog.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PROGRESSDIALOG_H +#define PROGRESSDIALOG_H + +#include <QProgressDialog> + +class ProgressDialog : + public QProgressDialog +{ + Q_OBJECT + + public: + explicit ProgressDialog(QWidget *parent = 0); + void reset(); + + public slots: + void run(); +}; + + +#endif // PROGRESSDIALOG_H diff --git a/scribo/demo/viewer/Processing/runner.cc b/scribo/demo/viewer/Processing/runner.cc new file mode 100644 index 0000000..a52c6eb --- /dev/null +++ b/scribo/demo/viewer/Processing/runner.cc @@ -0,0 +1,199 @@ +// Copyright (C) 2013 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/
>. + +#include "runner.hh" + +using namespace mln; +using namespace scribo::toolchain::internal; + +static QString get_pathto(const QString& file, const QString localdirsuffix = QString()) +{ + QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); + if (f.exists()) + return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; + f.setFileName(SCRIBO_PREFIX_BINDIR "/" + file); + if (f.exists()) + return SCRIBO_PREFIX_BINDIR; + + return ""; +} + +Runner::Runner(QObject *parent) : + QThread(parent) +{ + moveToThread(this); +} + +void Runner::run() +{ + if(mode_ == Demat) + { + image2d<value::rgb8> ima; + for(int i = 0; i < args_.count(); i++) + { + io::magick::load(ima, args_.at(i).toUtf8().constData()); + image2d<bool> bin_ima = preprocess(ima); + process(ima, bin_ima, i); + } + } + + else if(mode_ == Export) + export_as(); + + emit finished(); +} + +void Runner::stop() +{ + terminate(); +} + +// Demat related stuff +void Runner::start_demat(const QStringList& filenames) +{ + args_.clear(); + args_ = filenames; + mode_ = Demat; + QThread::start(); +} + + +image2d<bool> Runner::preprocess(const image2d<value::rgb8>& ima) +{ + emit new_step("Preprocessing"); + Preprocess f; + + // Load config. + Configs *const conf = Configs::getInstance(); + + connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); + connect(&f, SIGNAL(newProgressLabel(QString)), + this, SIGNAL(new_progress_label(const QString&))); + + f.enable_subsample = conf->preprocessingSubsample(); + f.enable_fg_extraction = conf->preprocessingRemoveBg(); + f.enable_deskew = conf->preprocessingDeskew(); + f.enable_denoising = conf->preprocessingRemoveNoise(); + + f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessingBinAlgo()); + + emit new_progress_max_value(f.nsteps()); + + // Perform preprocessing. + f(ima); + + return f.output; +} + + +void Runner::process(const image2d<value::rgb8>& original_ima, + const image2d<bool>& processed_ima, int arg) +{ + emit new_step("Page segmentation"); + + Process f(args_.at(arg).toUtf8().constData()); + + connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); + connect(&f, SIGNAL(newProgressLabel(QString)), + this, SIGNAL(new_progress_label(QString))); + connect(&f, SIGNAL(xmlSaved(QString)), + this, SIGNAL(xml_saved(const QString&))); + + // Load config. + Configs *const conf = Configs::getInstance(); + + Separator::FindSeparator find_seps = static_cast<Separator::FindSeparator>(conf->segmentationFindSeps()); + f.enable_line_seps = (find_seps == Separator::Lines + || find_seps == Separator::Both); + f.enable_whitespace_seps = (find_seps == Separator::Whitespaces + || find_seps == Separator::Both); + f.enable_ocr = conf->ocrEnabled(); + f.ocr_language = conf->ocrLanguage().toAscii().data(); + f.xml_format = scribo::io::xml::PageExtended; + + + f.save_doc_as_xml = true; + QFileInfo file(args_.at(arg)); + QString output_dir = QDir::tempPath(); + if (conf->generalSaveXmlEnabled()) + { + if (conf->generalSaveXmlSameDir()) + output_dir = file.absolutePath(); + else if (conf->generalSaveXmlCustomDir()) + output_dir = conf->generalSaveXmlCustomDirPath(); + + QDir dir(output_dir); + if (!dir.exists() && !dir.mkpath(output_dir)) + output_dir = QDir::tempPath(); + } + QString filename = (output_dir + "/" + file.baseName() + "_gui.xml"); + f.output_file = filename.toUtf8().constData(); + emit new_progress_max_value(f.nsteps()); + + // Perform text detection. + f(original_ima, processed_ima); +} + +// Export related stuff +void Runner::start_export(const QString& imgfile, + const QString& xmlfile, const QString& outfile) +{ + args_.clear(); + args_ << imgfile << xmlfile << outfile; + mode_ = Export; + + QThread::start(); +} + +void Runner::export_as() +{ + emit new_step("Exporting document"); + emit new_progress_max_value(2); + + // Checking output format + QFileInfo f(args_.at(2)); + + QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); + + if (pathto_xml2doc.isEmpty()) + { + QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); + return; + } + + emit progress(); + + int rvalue = 0; + if (f.suffix() == "pdf") + { + emit new_step("Exporting as PDF"); + rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") + .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) + .arg(args_.at(2)).toAscii().constData()); + } + else if (f.suffix() == "html" || f.suffix() == "htm") + { + emit new_step("Exporting as HTML"); + rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") + .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) + .arg(args_.at(2)).toAscii().constData()); + } + else + QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); + + if (rvalue != 0) + QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); +} diff --git a/scribo/demo/viewer/Processing/runner.hh b/scribo/demo/viewer/Processing/runner.hh new file mode 100644 index 0000000..ab0fb79 --- /dev/null +++ b/scribo/demo/viewer/Processing/runner.hh @@ -0,0 +1,74 @@ +// Copyright (C) 2013 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/
>. + +#ifndef RUNNER_H +# define RUNNER_H + +#include <mln/core/image/image2d.hh> +#include <mln/io/magick/load.hh> +#include <mln/value/rgb8.hh> +#include <QStringList> +#include <QMessageBox> +#include <QThread> +#include <QFile> + +#include "preprocess.hh" +#include "process.hh" +#include "configs.hh" +#include "region.hh" +#include "dir.hh" + +using namespace mln; + +enum RunMode +{ + Demat, + Export +}; + +class Runner : + public QThread +{ + Q_OBJECT + + public: + explicit Runner(QObject *parent = 0); + void start_demat(const QStringList& filenames); + void start_export(const QString& imgfile, const QString& xmlfile, const QString& outfile); + + private: + image2d<bool> preprocess(const image2d<value::rgb8>& ima); + void process(const image2d<value::rgb8>& original_ima, const image2d<bool>& processed_ima, int arg); + void export_as(); + virtual void run(); + template <typename V> unsigned find_best_scale(const mln::image2d<V>& ima); + + QStringList args_; + RunMode mode_; + + public slots: + void stop(); + + signals: + void new_step(const QString& step_name); + void new_progress_max_value(int i); + void new_progress_label(const QString& msg); + void xml_saved(const QString& filename); + void progress(); + void finished(); +}; + +#endif // RUNNER_H diff --git a/scribo/demo/viewer/README b/scribo/demo/viewer/README deleted file mode 100644 index 31c66aa..0000000 --- a/scribo/demo/viewer/README +++ /dev/null @@ -1,32 +0,0 @@ -Copyright (C) 2010 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/>. - -__________________________________________________________________ - - -Document Layout Viewer - -Purpose: -- Display layout information about image documents. - -Usage: -- Get XML layout descriptions (PAGE format, ICDAR2009). -- Put XML and image files in the same directory, with the same name. -- Select an image within the application. -- Click on regions to display their attributes. - -Infos: -- Everything is read-only. diff --git a/GScribo/Rendering/abstractregionitem.h b/scribo/demo/viewer/Rendering/abstractregionitem.hh similarity index 100% rename from GScribo/Rendering/abstractregionitem.h rename to scribo/demo/viewer/Rendering/abstractregionitem.hh diff --git a/GScribo/Rendering/backgroundtexture.h b/scribo/demo/viewer/Rendering/backgroundtexture.hh similarity index 100% rename from GScribo/Rendering/backgroundtexture.h rename to scribo/demo/viewer/Rendering/backgroundtexture.hh diff --git a/scribo/demo/viewer/Rendering/graphicsview.cc b/scribo/demo/viewer/Rendering/graphicsview.cc new file mode 100644 index 0000000..10ac034 --- /dev/null +++ b/scribo/demo/viewer/Rendering/graphicsview.cc @@ -0,0 +1,165 @@ +// Copyright (C) 2013 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/
>. + +#include "graphicsview.hh" + +GraphicsView::GraphicsView(QWidget *parent) : + QGraphicsView(parent) +{ + init(); +} + +GraphicsView::GraphicsView(QGraphicsScene *scene, QWidget *parent) : + QGraphicsView(scene, parent) +{ + init(); +} + +void GraphicsView::init() +{ + isRightClicking_ = false; + scaleRatio_ = QSizeF(1, 1); + setTransformationAnchor(GraphicsView::AnchorUnderMouse); + setBackgroundBrush(QBrush(Qt::lightGray)); + + // Important to hide scroll bars : when they appear, it triggers the resizeEvent. + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +} + +void GraphicsView::mousePressEvent(QMouseEvent *event) +{ + if(event->button() == Qt::RightButton) + { + emit beginDrag(); + setDragMode(QGraphicsView::ScrollHandDrag); + } + + QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseButtonPress, event->pos(), Qt::LeftButton, + Qt::LeftButton, Qt::MetaModifier); + event->ignore(); + QGraphicsView::mousePressEvent(mouseEvent); +} + +void GraphicsView::mouseReleaseEvent(QMouseEvent *event) +{ + if(event->button() == Qt::RightButton) + { + setDragMode(GraphicsView::NoDrag); + emit endDrag(); + } + + QGraphicsView::mouseReleaseEvent(event); +} + +void GraphicsView::wheelEvent(QWheelEvent *event) +{ + if(event->modifiers() & Qt::ControlModifier) + { + // Current wheel have an angle of 15 degrees by steps with a delta of + or - 120. A good scale is +- 0.1 in that case. + // So we have to adapt for wheel whith better precision. + qreal degrees = 1 + static_cast<qreal>(event->delta()) / 1200; + qreal nextScaleRatio = degrees * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(event->delta() > 0) + { + if(nextScaleRatio <= 20) + { + scaleRatio_ *= degrees; + scale(degrees, degrees); + } + } + else + { + if(nextScaleRatio >= 1.1) + { + scaleRatio_ *= degrees; + scale(degrees, degrees); + } + else if(isContainedInView_) + { + QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); + scaleRatio_ = QSizeF(1, 1); + } + } + } + else + QGraphicsView::wheelEvent(event); +} + +void GraphicsView::keyPressEvent(QKeyEvent* event) +{ + // Bitwise AND to check if at least CTRL is pushed. + if(event->modifiers() & Qt::ControlModifier) + { + qreal nextScaleRatio; + if(event->key() == Qt::Key_Plus) + { + nextScaleRatio = 1.2 * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(nextScaleRatio <= 19) + { + scaleRatio_ *= 1.2; + scale(1.2, 1.2); + } + } + else if(event->key() == Qt::Key_Minus) + { + nextScaleRatio = 0.8 * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(nextScaleRatio >= 1.2) + { + scaleRatio_ *= 0.8; + scale(0.8, 0.8); + } + else if(isContainedInView_) + { + QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); + scaleRatio_ = QSizeF(1, 1); + } + } + } + + QGraphicsView::keyPressEvent(event); +} + +void GraphicsView::fitInView(const QRectF& rect) +{ + setFocus(); + isWidthGreater_ = static_cast<qreal>(rect.width()) / static_cast<qreal>(rect.height()) > 1 ? true : + false; + qreal ratio = isWidthGreater_ ? static_cast<qreal>(width()) / static_cast<qreal>(rect.width()) : + static_cast<qreal>(height()) / static_cast<qreal>(rect.height()); + + isContainedInView_ = ratio < 1 ? true : false; + if(isContainedInView_) + { + scaleRatio_ = QSizeF(1, 1); + QGraphicsView::fitInView(rect, Qt::KeepAspectRatio); + } +} + +void GraphicsView::resizeEvent(QResizeEvent *event) +{ + if(scene()->items().count() > 1) + { + qreal ratio = isWidthGreater_ ? static_cast<qreal>(event->size().width()) / static_cast<qreal>(event->oldSize().width()) : + static_cast<qreal>(event->size().height()) / static_cast<qreal>(event->oldSize().height()); + scale(ratio, ratio); + } + + QGraphicsView::resizeEvent(event); +} diff --git a/scribo/demo/viewer/Rendering/graphicsview.hh b/scribo/demo/viewer/Rendering/graphicsview.hh new file mode 100644 index 0000000..86e1786 --- /dev/null +++ b/scribo/demo/viewer/Rendering/graphicsview.hh @@ -0,0 +1,59 @@ +// Copyright (C) 2013 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/
>. + +#ifndef GRAPHICSVIEW_HH +# define GRAPHICSVIEW_HH + +#include <QGraphicsView> +#include <QWheelEvent> +#include <QScrollBar> + +class GraphicsView : + public QGraphicsView +{ + Q_OBJECT + + public: + explicit GraphicsView(QWidget *parent = 0); + explicit GraphicsView(QGraphicsScene *scene, QWidget *parent = 0); + + protected: + void init(); + + void resizeEvent(QResizeEvent *event); + + void wheelEvent(QWheelEvent *event); + void keyPressEvent(QKeyEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + + private: + bool isWidthGreater_; + bool isContainedInView_; + QSizeF scaleRatio_; + + bool isRightClicking_; + QPointF prevMousePos_; + + public slots: + void fitInView(const QRectF& rect); + + signals: + void beginDrag(); + void endDrag(); +}; + +#endif // GRAPHICSVIEW_HH diff --git a/scribo/demo/viewer/Rendering/regionitem.cc b/scribo/demo/viewer/Rendering/regionitem.cc new file mode 100644 index 0000000..d845413 --- /dev/null +++ b/scribo/demo/viewer/Rendering/regionitem.cc @@ -0,0 +1,130 @@ +// Copyright (C) 2013 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/
>. + +#include "Rendering/regionitem.hh" + +RegionItem::RegionItem(QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsPolygonItem(parent, scene) +{ + init(); +} + +RegionItem::RegionItem(const QPolygonF& polygon, QGraphicsItem *parent, QGraphicsScene *scene): + QGraphicsPolygonItem(polygon, parent, scene) +{ + init(); +} + +void RegionItem::init() +{ + xmlItem_ = 0; + + selectedPen_.setStyle(Qt::SolidLine); + unselectedPen_.setStyle(Qt::SolidLine); + + selectedPen_.setWidthF(2); + unselectedPen_.setWidth(0); + + selectedPen_.setCapStyle(Qt::SquareCap); + unselectedPen_.setCapStyle(Qt::SquareCap); + + selectedBrush_.setStyle(Qt::SolidPattern); + unselectedBrush_.setStyle(Qt::SolidPattern); +} + +void RegionItem::setColor(const QColor& color) +{ + selectedPen_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 255)); + unselectedPen_.setColor(color); + + selectedBrush_.setColor(color); + unselectedBrush_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 40)); + + setPen(unselectedPen_); + setBrush(unselectedBrush_); +} + +void RegionItem::setSelected(bool isSelected) +{ + if(isSelected) + { + isSelected_ = true; + setPen(selectedPen_); + setBrush(selectedBrush_); + } + + else + { + isSelected_ = false; + setPen(unselectedPen_); + setBrush(unselectedBrush_); + } +} + + +void RegionItem::setXmlItem(XmlItem *xmlItem) +{ + xmlItem_ = xmlItem; +} + +XmlItem *RegionItem::xmlItem() const +{ + return xmlItem_; +} + +QColor RegionItem::color() const +{ + return selectedBrush_.color(); +} + +int RegionItem::region() const +{ + return region_; +} + +bool RegionItem::isSelected() +{ + return isSelected_; +} + +void RegionItem::select() +{ + setSelected(true); +} + +void RegionItem::unselect() +{ + setSelected(false); +} + +void RegionItem::loadData(const GraphicsRegion::Data& data) +{ + region_ = data.region; setColor(data.color); setZValue(data.zValue); +} + +bool RegionItem::contains(const QPointF& point) +{ + return (boundingRect().width() * boundingRect().height() == 0 + || boundingRect().contains(point)) + && shape().contains(point); +} + +bool RegionItem::intersects(const QRectF& rect) +{ + return (boundingRect().width() * boundingRect().height() == 0 + || boundingRect().intersects(rect)) + && shape().intersects(rect); +} diff --git a/scribo/demo/viewer/Rendering/regionitem.hh b/scribo/demo/viewer/Rendering/regionitem.hh new file mode 100644 index 0000000..3fe03a7 --- /dev/null +++ b/scribo/demo/viewer/Rendering/regionitem.hh @@ -0,0 +1,66 @@ +// Copyright (C) 2013 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/
>. + +#ifndef RegionITEM_HH +# define RegionITEM_HH + +#include <QGraphicsPolygonItem> +#include <QTreeWidgetItem> +#include <QPen> + +#include "variantpointer.hh" +#include "region.hh" + +class XmlItem; + +class RegionItem : + public QGraphicsPolygonItem +{ + public: + explicit RegionItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + explicit RegionItem(const QPolygonF& path, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + void setColor(const QColor& color); + QColor color() const; + + void setXmlItem(XmlItem *xmlItem); + XmlItem *xmlItem() const; + + void loadData(const GraphicsRegion::Data& data); + int region() const; + + bool intersects(const QRectF& rect); + bool contains(const QPointF& point); + + void setSelected(bool isSelected); + bool isSelected(); + void unselect(); + void select(); + + private: + void init(); + + XmlItem *xmlItem_; + int region_; + bool isSelected_; + + QPen selectedPen_; + QPen unselectedPen_; + QBrush selectedBrush_; + QBrush unselectedBrush_; +}; + +#endif // RegionITEM_HH diff --git a/scribo/demo/viewer/Rendering/rootgraphicsitem.cc b/scribo/demo/viewer/Rendering/rootgraphicsitem.cc new file mode 100644 index 0000000..166a186 --- /dev/null +++ b/scribo/demo/viewer/Rendering/rootgraphicsitem.cc @@ -0,0 +1,46 @@ +// Copyright (C) 2013 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/
>. + +#include "Rendering/rootgraphicsitem.hh" + +RootGraphicsItem::RootGraphicsItem(int numberRegion) +{ + childsFromRegion_.fill(QList<QGraphicsItem *>(), numberRegion); +} + +RootGraphicsItem::~RootGraphicsItem() +{ + foreach(QList<QGraphicsItem *> list, childsFromRegion_) + { + foreach(QGraphicsItem *child, list) + { + delete child; + } + } +} + +QList<QGraphicsItem *> +RootGraphicsItem::childsFrom(const GraphicsRegion::Id& region) const +{ + return childsFromRegion_[region]; +} + +void +RootGraphicsItem::addItemFrom(QGraphicsItem *graphicalItem, + const GraphicsRegion::Id& region) +{ + childsFromRegion_[region] << graphicalItem; +} diff --git a/scribo/demo/viewer/Rendering/rootgraphicsitem.hh b/scribo/demo/viewer/Rendering/rootgraphicsitem.hh new file mode 100644 index 0000000..fe7f5a2 --- /dev/null +++ b/scribo/demo/viewer/Rendering/rootgraphicsitem.hh @@ -0,0 +1,39 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ROOTGRAPHICSITEM_HH +# define ROOTGRAPHICSITEM_HH + +#include <QGraphicsItem> + +#include "region.hh" + +class RootGraphicsItem : + public QGraphicsPolygonItem +{ +public: + explicit RootGraphicsItem(int numberRegion); + ~RootGraphicsItem(); + + + void addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region); + QList<QGraphicsItem *> childsFrom(const GraphicsRegion::Id& region) const; + +private: + QVector<QList<QGraphicsItem *> > childsFromRegion_; +}; + +#endif // ROOTGRAPHICSITEM_HH diff --git a/scribo/demo/viewer/Rendering/scene.cc b/scribo/demo/viewer/Rendering/scene.cc new file mode 100644 index 0000000..a036ed2 --- /dev/null +++ b/scribo/demo/viewer/Rendering/scene.cc @@ -0,0 +1,289 @@ +// Copyright (C) 2013 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/
>. + +#include "scene.hh" + +Scene::Scene(QObject *parent): + QGraphicsScene(parent) +{ + init(); +} + +Scene::Scene(const QRectF &sceneRect, QObject *parent): + QGraphicsScene(sceneRect, parent) +{ + init(); +} + +Scene::Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent): + QGraphicsScene(x, y, width, height, parent) +{ + init(); +} + +void Scene::init() +{ + isPressing_ = false; + isSelectionDisabled_ = false; + backgroundPixmap_ = 0; + root_ = 0; + + selection_.hide(); + addItem(&selection_); +} + +void Scene::clearAll() +{ + if(root_) + delete root_; + + if(backgroundPixmap_) + delete backgroundPixmap_; + + selectedRegions_.clear(); + backgroundPath_ = QString(); + backgroundPixmap_ = 0; + root_ = 0; +} + +void Scene::clearRegions() +{ + if(root_) + delete root_; + + selectedRegions_.clear(); + root_ = 0; +} + +void Scene::clearSelection() +{ + QGraphicsItem *child; + RegionItem *regionItem; + + // Unselect all items. + foreach(child, selectedRegions_) + { + regionItem = static_cast<RegionItem *>(child); + regionItem->unselect(); + } + + selectedRegions_.clear(); + emit selectionCleared(); +} + +void Scene::selectAll() +{ + RegionItem *item; + foreach(QGraphicsItem *child, root_->childItems()) + { + item = static_cast<RegionItem *>(child); + item->select(); + selectedRegions_ << item; + } +} + +void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if(!backgroundPath_.isEmpty() && event->button() == Qt::LeftButton && !isSelectionDisabled_) + { + isPressing_ = true; + + baseSelection_.clear(); + pressPos_ = event->scenePos(); + selection_.show(); + } +} + +void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if(isPressing_) + { + // Adapt if the selection rectangle has a negative size. + if(pressPos_.x() < event->scenePos().x()) + selection_.setRect(pressPos_.x(), 0, event->scenePos().x()-pressPos_.x(), 0); + else + selection_.setRect(event->scenePos().x(), 0, pressPos_.x()-event->scenePos().x(), 0); + + if(pressPos_.y() < event->scenePos().y()) + selection_.setRect(selection_.rect().x(), pressPos_.y(), selection_.rect().width(), event->scenePos().y()-pressPos_.y()); + else + selection_.setRect(selection_.rect().x(), event->scenePos().y(), selection_.rect().width(), pressPos_.y()-event->scenePos().y()); + } +} + +void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if(event->button() == Qt::LeftButton) + { + isPressing_ = false; + + // Redraw all items in selection. + if(root_) + { + clearSelection(); + + // Check if it is a click. + if(selection_.rect().width() * selection_.rect().height() == 0) + select(event->scenePos()); + else + select(selection_.rect()); + + baseSelection_ = selectedRegions(); + emit newSelection(selectedRegions_); + } + + selection_.setRect(QRect()); + selection_.hide(); + } +} + +void Scene::select(QGraphicsItem *root, const QPointF& point, const QRectF& rect) +{ + QGraphicsItem *child; + RegionItem *regionItem; + + // Check if it is a click. + if(!point.isNull()) + { + foreach(child, root->childItems()) + { + regionItem = static_cast<RegionItem *>(child); + + if(regionItem->contains(point)) + { + regionItem->select(); + selectedRegions_ << regionItem; + } + } + } + else + { + foreach(child, root->childItems()) + { + regionItem = static_cast<RegionItem *>(child); + + if(regionItem->intersects(rect)) + { + regionItem->select(); + selectedRegions_ << regionItem; + } + } + } + + emit newSelection(); +} + +void Scene::select(const QList<RegionItem *>& selectedRegions) +{ + RegionItem *child; + foreach(child, selectedRegions) + { + if(!child->isSelected()) + { + child->select(); + selectedRegions_ << child; + } + } + + ensureVisible(selectedRegions_.last()); + emit newSelection(); +} + +void Scene::unselect(const QList<RegionItem *>& unselectedRegions) +{ + RegionItem *child; + foreach(child, unselectedRegions) + { + if(child->isSelected()) + { + child->unselect(); + selectedRegions_.removeOne(child); + } + } + + // Check if after the removal, the selected list isn't empty. + if(!selectedRegions_.isEmpty()) + ensureVisible(selectedRegions_.last()); + + emit newSelection(); +} + + +void Scene::ensureVisible(QGraphicsItem *graphicalItem) +{ + QGraphicsView *view; + foreach (view, views()) + view->ensureVisible(graphicalItem); +} + +void Scene::setVisible(const GraphicsRegion::Id& region, bool visible) +{ + if(root_) + { + QGraphicsItem *child; + + if(visible) + { + foreach(child, root_->childsFrom(region)) + child->setVisible(true); + } + + else + { + foreach(child, root_->childsFrom(region)) + child->setVisible(false); + } + } +} + +void Scene::setRoot(RootGraphicsItem *root) +{ + // Delete all items. + clearRegions(); + + root_ = root; + addItem(root); + + // Add typo lines separately because can't be selected. + QGraphicsItem *line; + foreach(line, root->childsFrom(GraphicsRegion::Baseline)) + addItem(line); + + foreach(line, root->childsFrom(GraphicsRegion::Meanline)) + addItem(line); +} + +void Scene::changeScene(const QString& filename, RootGraphicsItem *root) +{ + // Delete all items. + clearAll(); + backgroundPath_ = filename; + + if(!filename.isEmpty()) + { + QPixmap pixmap(filename); + setSceneRect(pixmap.rect()); + // Create the background item and dock it at the maximal depth of the scene. + backgroundPixmap_ = new QGraphicsPixmapItem(pixmap, 0, this); + backgroundPixmap_->setZValue(INT_MIN); + } + else + setSceneRect(QRectF()); + + // Add new items. + if(root) + setRoot(root); +} diff --git a/scribo/demo/viewer/Rendering/scene.hh b/scribo/demo/viewer/Rendering/scene.hh new file mode 100644 index 0000000..7d2771d --- /dev/null +++ b/scribo/demo/viewer/Rendering/scene.hh @@ -0,0 +1,118 @@ +#ifndef SCENE_H +#define SCENE_H + +#include <QGraphicsSceneMouseEvent> +#include <QGraphicsView> +#include <QGraphicsScene> +#include <QFileDialog> +#include <climits> + +#include "rootgraphicsitem.hh" +#include "regionitem.hh" +#include "selection.hh" + +class Scene : + public QGraphicsScene +{ + Q_OBJECT + + public: + explicit Scene(QObject *parent = 0); + explicit Scene(const QRectF &sceneRect, QObject *parent = 0); + explicit Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent = 0); + + inline QString backgroundPath() const; + inline QGraphicsPixmapItem *backgroundPixmap() const; + + inline QList<RegionItem *> selectedRegions() const; + + void setRoot(RootGraphicsItem *rootItem); + inline RootGraphicsItem *root() const; + + void select(const QRectF& rect); + void select(const QPointF& point); + void selectAll(); + + inline bool selectionEnable() const; + inline void setSelectionEnable(bool enable); + + void changeScene(const QString& filename, RootGraphicsItem *root = 0); + + protected: + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + + private: + void init(); + void select(QGraphicsItem *root, const QPointF& point, const QRectF& rect); + + QGraphicsView *mainView_; + RootGraphicsItem *root_; + + QString backgroundPath_; + QGraphicsPixmapItem *backgroundPixmap_; + + Selection selection_; + QList<RegionItem *> selectedRegions_; + QList<RegionItem *> baseSelection_; + + QPointF pressPos_; + bool isPressing_; + bool isSelectionDisabled_; + + public slots: + void clearAll(); + void clearRegions(); + void clearSelection(); + + void select(const QList<RegionItem *>& selectedRegions); + inline void selectBase(); + void unselect(const QList<RegionItem *>& unselectedItems); + + void setVisible(const GraphicsRegion::Id& region, bool visible); + void ensureVisible(QGraphicsItem *graphicsItem); + + inline void disableSelection(); + inline void enableSelection(); + + signals: + void selectionCleared(); + void newSelection(); + void newSelection(const QList<RegionItem *>& selectedRegions); +}; + +inline QString Scene::backgroundPath() const +{ return backgroundPath_; } + +inline QGraphicsPixmapItem *Scene::backgroundPixmap() const +{ return backgroundPixmap_; } + +inline RootGraphicsItem *Scene::root() const +{ return root_; } + +inline QList<RegionItem *> Scene::selectedRegions() const +{ return selectedRegions_; } + +inline void Scene::selectBase() +{ select(baseSelection_); } + +inline void Scene::select(const QPointF& point) +{ select(root_, point, QRectF()); } + +inline void Scene::select(const QRectF& rect) +{ select(root_, QPointF(), rect); } + +inline void Scene::setSelectionEnable(bool enable) +{ isSelectionDisabled_ = !enable; } + +inline bool Scene::selectionEnable() const +{ return isSelectionDisabled_; } + +inline void Scene::disableSelection() +{ setSelectionEnable(false); } + +inline void Scene::enableSelection() +{ setSelectionEnable(true); } + +#endif // SCENE_H diff --git a/scribo/demo/viewer/Rendering/selection.cc b/scribo/demo/viewer/Rendering/selection.cc new file mode 100644 index 0000000..89d2349 --- /dev/null +++ b/scribo/demo/viewer/Rendering/selection.cc @@ -0,0 +1,52 @@ +// Copyright (C) 2013 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/
>. + +#include "selection.hh" + +Selection::Selection(QGraphicsScene *scene): + QGraphicsRectItem(0, scene) +{ + init(); +} + +Selection::Selection(const QRectF &rect, QGraphicsScene *scene): + QGraphicsRectItem(rect, 0, scene) +{ + init(); +} + +Selection::Selection(qreal x, qreal y, qreal width, qreal height, QGraphicsScene *scene): + QGraphicsRectItem(x, y, width, height, 0, scene) +{ + init(); +} + +void Selection::init() +{ + // Always drawn on top of the scene. + setZValue(INT_MAX); + + QPen pen; + pen.setStyle(Qt::SolidLine); + pen.setCapStyle(Qt::SquareCap); + pen.setCosmetic(true); + setPen(pen); + + QBrush brush; + brush.setStyle(Qt::SolidPattern); + brush.setColor(QColor::fromRgb(80, 200, 10, 60)); + setBrush(brush); +} diff --git a/GScribo/Rendering/selection.h b/scribo/demo/viewer/Rendering/selection.hh similarity index 100% rename from GScribo/Rendering/selection.h rename to scribo/demo/viewer/Rendering/selection.hh diff --git a/GScribo/TODO b/scribo/demo/viewer/TODO similarity index 100% rename from GScribo/TODO rename to scribo/demo/viewer/TODO diff --git a/scribo/demo/viewer/XmlWidget/attributesmodel.cc b/scribo/demo/viewer/XmlWidget/attributesmodel.cc new file mode 100644 index 0000000..d2e1cb0 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/attributesmodel.cc @@ -0,0 +1,108 @@ +// Copyright (C) 2013 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/
>. + +#include "attributesmodel.hh" + +AttributesModel::AttributesModel(const XmlAttributes& attributes, QObject *parent) : + QAbstractItemModel(parent) +{ + attributes_ = attributes; +} + +AttributesModel::AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent) : + QAbstractItemModel(dd, parent) +{ + attributes_ = attributes; +} + +QVariant AttributesModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + switch(section) + { + case 0: + return tr("Name"); + + case 1: + return tr("Value"); + + default: + return QVariant(); + } + } + + return QVariant(); +} + +QVariant AttributesModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + switch(role) + { + case Qt::UserRole: + return attributes_.names()[index.row()]; + + case Qt::UserRole+1: + return attributes_.values()[index.row()]; + + default: + return QVariant(); + } +} + +void AttributesModel::load(const XmlAttributes& attributes) +{ + beginResetModel(); + + attributes_ = attributes; + + endResetModel(); +} + +void AttributesModel::reset() +{ + beginResetModel(); + + attributes_ = XmlAttributes(); + + endResetModel(); +} + + +int AttributesModel::rowCount(const QModelIndex&) const +{ + return attributes_.names().count(); +} + +int AttributesModel::columnCount(const QModelIndex&) const +{ + return 2; +} + +QModelIndex AttributesModel::index(int row, int column, const QModelIndex& parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + return createIndex(row, column, 0); +} + +QModelIndex AttributesModel::parent(const QModelIndex&) const +{ + return QModelIndex(); +} diff --git a/scribo/demo/viewer/XmlWidget/attributesmodel.hh b/scribo/demo/viewer/XmlWidget/attributesmodel.hh new file mode 100644 index 0000000..c99c993 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/attributesmodel.hh @@ -0,0 +1,55 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ATTRIBUTESMODEL_HH +# define ATTRIBUTESMODEL_HH + +#include <QAbstractItemModel> + +#include "xmlattributes.hh" + +class AttributesModel : + public QAbstractItemModel +{ + Q_OBJECT + + public: + explicit AttributesModel(const XmlAttributes& attributes = XmlAttributes(), + QObject *parent = 0); + explicit AttributesModel(const XmlAttributes& attributes, + QAbstractItemModelPrivate& dd, + QObject *parent = 0); + + int rowCount(const QModelIndex& parent) const; + int columnCount(const QModelIndex& parent) const; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const; + QVariant data(const QModelIndex& index, int role) const; + + QModelIndex index(int row, int column, const QModelIndex &parent) const; + QModelIndex parent(const QModelIndex &child) const; + +public slots: + void reset(); + +private: + XmlAttributes attributes_; + +public slots: + void load(const XmlAttributes& attributes); +}; + +#endif // ATTRIBUTESMODEL_HH diff --git a/scribo/demo/viewer/XmlWidget/selectionproxy.hh b/scribo/demo/viewer/XmlWidget/selectionproxy.hh new file mode 100644 index 0000000..7817c72 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/selectionproxy.hh @@ -0,0 +1,47 @@ +#ifndef SELECTIONPROXY_H +#define SELECTIONPROXY_H + +#include <QSortFilterProxyModel> +#include <QDebug> + +#include "xmlitem.hh" + +class SelectionProxy : + public QSortFilterProxyModel +{ + public: + explicit SelectionProxy(QObject *parent = 0) : QSortFilterProxyModel(parent) { isAllDisplayed_ = true; } + + inline void displayAll(); + inline bool isAllDisplayed(); + + inline void beginResetModel(); + inline void endResetModel(); + inline void invalidateFilter(); + + protected: + inline bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const; + + private: + bool isAllDisplayed_; +}; + +inline bool SelectionProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const +{ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent) && (isAllDisplayed_ || sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+2).value<XmlItem *>()->isVisible()); } + +inline void SelectionProxy::beginResetModel() +{ isAllDisplayed_ = false; QSortFilterProxyModel::beginResetModel(); } + +inline void SelectionProxy::endResetModel() +{ QSortFilterProxyModel::endResetModel(); } + +inline void SelectionProxy::displayAll() +{ isAllDisplayed_ = true; } + +inline bool SelectionProxy::isAllDisplayed() +{ return isAllDisplayed_; } + +inline void SelectionProxy::invalidateFilter() +{ QSortFilterProxyModel::invalidateFilter(); } + +#endif // SELECTIONPROXY_H diff --git a/scribo/demo/viewer/XmlWidget/xmlattributes.cc b/scribo/demo/viewer/XmlWidget/xmlattributes.cc new file mode 100644 index 0000000..0a441c3 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlattributes.cc @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlattributes.hh" + +XmlAttributes::XmlAttributes() +{ +} + +XmlAttributes::XmlAttributes(const QDomNamedNodeMap& node) +{ + load(node); +} + +void XmlAttributes::load(const QDomNamedNodeMap& node) +{ + QDomAttr attr; + + for(int i = 0; i < node.count(); i++) + { + attr = node.item(i).toAttr(); + + names_ << attr.name(); + values_ << attr.value(); + } +} + +QStringList XmlAttributes::names() const +{ + return names_; +} + +QStringList XmlAttributes::values() const +{ + return values_; +} diff --git a/scribo/demo/viewer/XmlWidget/xmlattributes.hh b/scribo/demo/viewer/XmlWidget/xmlattributes.hh new file mode 100644 index 0000000..89c546e --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlattributes.hh @@ -0,0 +1,44 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLATTRIBUTES_H +# define XMLATTRIBUTES_H + +#include <QDomNamedNodeMap> +#include <QStringList> +#include <QVariant> + +class XmlAttributes +{ + public: + explicit XmlAttributes(); + explicit XmlAttributes(const QDomNamedNodeMap& node); + + void load(const QDomNamedNodeMap& node); + + QStringList names() const; + QStringList values() const; + + private: + QStringList names_; + QStringList values_; +}; + + +Q_DECLARE_METATYPE(XmlAttributes) +Q_DECLARE_METATYPE(XmlAttributes *) + +#endif // XMLATTRIBUTES_H diff --git a/GScribo/XmlWidget/xmldelegate.h b/scribo/demo/viewer/XmlWidget/xmldelegate.hh similarity index 100% rename from GScribo/XmlWidget/xmldelegate.h rename to scribo/demo/viewer/XmlWidget/xmldelegate.hh diff --git a/scribo/demo/viewer/XmlWidget/xmlitem.cc b/scribo/demo/viewer/XmlWidget/xmlitem.cc new file mode 100644 index 0000000..c12c819 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlitem.cc @@ -0,0 +1,59 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlitem.hh" + +XmlItem::XmlItem(XmlItem *parent, XmlItem *precItem) +{ + init(parent, precItem); +} + +XmlItem::XmlItem(const QDomElement& node, XmlItem *parent, XmlItem *precItem) +{ + init(parent, precItem); + load(node); +} + +XmlItem::~XmlItem() +{ + // Delete all childs. + XmlItem *child; + foreach(child, childs_) + delete child; +} + +void XmlItem::init(XmlItem *parent, XmlItem *precItem) +{ + isVisible_ = false; + regionItem_ = 0; + parent_ = parent; + + if(parent) + parent->addChild(this); + + if(precItem) + row_ = precItem->row()+1; + else + row_ = 0; +} + +void XmlItem::load(const QDomElement& node) +{ + text_ = node.tagName(); + + // Load attributes. + attributes_.load(node.attributes()); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlitem.hh b/scribo/demo/viewer/XmlWidget/xmlitem.hh new file mode 100644 index 0000000..a964ea7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlitem.hh @@ -0,0 +1,106 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLITEM_H +#define XMLITEM_H + +#include <QDomElement> + +#include "xmlattributes.hh" + +class RegionItem; + +class XmlItem +{ + public: + explicit XmlItem(XmlItem *parent = 0, XmlItem *precItem = 0); + explicit XmlItem(const QDomElement& node, XmlItem *parent = 0, XmlItem *precItem = 0); + ~XmlItem(); + + void load(const QDomElement& node); + + inline QList<XmlItem *> childs() const; + inline XmlItem *child(int i) const; + inline void addChild(XmlItem *child); + inline XmlItem *parent() const; + + inline RegionItem *regionItem(); + inline void setRegionItem(RegionItem *regionItem); + + inline bool isVisible() const; + inline void setVisible(bool visible); + inline void show(); + inline void hide(); + + inline QString text() const; + inline int row() const; + inline XmlAttributes attributes() const; + + private: + void init(XmlItem *parent = 0, XmlItem *precItem = 0); + + int row_; + bool isVisible_; + QList<XmlItem *> childs_; + XmlItem *parent_; + RegionItem *regionItem_; + QString text_; + XmlAttributes attributes_; +}; + +inline QList<XmlItem *> XmlItem::childs() const +{ return childs_; } + +inline XmlItem *XmlItem::child(int i) const +{ if(i > -1 && i < childs_.count()) return childs_[i]; return 0; } + +inline void XmlItem::addChild(XmlItem *child) +{ childs_ << child; } + +inline XmlItem *XmlItem::parent() const +{ return parent_; } + +inline RegionItem *XmlItem::regionItem() +{ return regionItem_; } + +inline void XmlItem::setRegionItem(RegionItem *regionItem) +{ regionItem_ = regionItem; } + +inline bool XmlItem::isVisible() const +{ return isVisible_; } + +inline void XmlItem::setVisible(bool visible) +{ isVisible_ = visible; } + +inline void XmlItem::show() +{ isVisible_ = true; } + +inline void XmlItem::hide() +{ isVisible_ = false; } + +inline QString XmlItem::text() const +{ return text_; } + +inline int XmlItem::row() const +{ return row_; } + +inline XmlAttributes XmlItem::attributes() const +{ return attributes_; } + +Q_DECLARE_METATYPE(XmlItem) +Q_DECLARE_METATYPE(XmlItem *) + +#endif // XMLITEM_H diff --git a/scribo/demo/viewer/XmlWidget/xmlmodel.cc b/scribo/demo/viewer/XmlWidget/xmlmodel.cc new file mode 100644 index 0000000..0f51eb7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlmodel.cc @@ -0,0 +1,123 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlmodel.hh" + +XmlModel::XmlModel(XmlItem *rootItem, QObject *parent) : + QAbstractItemModel(parent) +{ + rootItem_ = rootItem; +} + +XmlModel::XmlModel(XmlItem *rootItem, + QAbstractItemModelPrivate& dd, + QObject *parent) + : QAbstractItemModel(dd, parent) +{ + rootItem_ = rootItem; +} + +XmlModel::~XmlModel() +{ + if(rootItem_) + delete rootItem_; +} + +QVariant XmlModel::headerData(int, Qt::Orientation orientation, int role) const +{ + if(orientation == Qt::Horizontal && role == Qt::DisplayRole) + return tr("Tree"); + + return QVariant(); +} + +QVariant XmlModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + switch(role) + { + case Qt::UserRole: + return static_cast<XmlItem *>(index.internalPointer())->text(); + + case Qt::UserRole+1: + return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())->attributes()); + + case Qt::UserRole+2: + return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())); + + default: + return QVariant(); + } +} + +QModelIndex XmlModel::index(int row, int column, const QModelIndex& parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + + XmlItem *childItem = toXmlItem(parent)->child(row); + + // Create the model index from the child item. + if(childItem) + return createIndex(row, column, childItem); + else + return QModelIndex(); +} + +QModelIndex XmlModel::parent(const QModelIndex& child) const +{ + if(!child.isValid()) + return QModelIndex(); + + XmlItem *parentItem = static_cast<XmlItem *>(child.internalPointer())->parent(); + + if(!parentItem || parentItem == rootItem_) + return QModelIndex(); + + return createIndex(parentItem->row(), 0, parentItem); +} + +void XmlModel::load(XmlItem *rootItem) +{ + beginResetModel(); + + if(rootItem_) + delete rootItem_; + + rootItem_ = rootItem; + + endResetModel(); +} + + +inline XmlItem *XmlModel::toXmlItem(const QModelIndex& parent) const +{ + return !parent.isValid() ? rootItem_ : static_cast<XmlItem *>(parent.internalPointer()); +} + +inline int XmlModel::rowCount(const QModelIndex& parent) const +{ + if(rootItem_) + return toXmlItem(parent)->childs().count(); + return 0; +} + +inline int XmlModel::columnCount(const QModelIndex&) const +{ + return 1; +} diff --git a/scribo/demo/viewer/XmlWidget/xmlmodel.hh b/scribo/demo/viewer/XmlWidget/xmlmodel.hh new file mode 100644 index 0000000..a781ea7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlmodel.hh @@ -0,0 +1,51 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLMODEL_H +#define XMLMODEL_H + +#include <QAbstractItemModel> + +#include "variantpointer.hh" +#include "xmlitem.hh" + +class XmlModel : + public QAbstractItemModel +{ + public: + explicit XmlModel(XmlItem *rootItem = 0, QObject *parent = 0); + explicit XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent = 0); + ~XmlModel(); + + void load(XmlItem *rootItem); + + inline int rowCount(const QModelIndex& parent) const; + inline int columnCount(const QModelIndex& parent) const; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const; + + QVariant data(const QModelIndex& index, int role) const; + + QModelIndex index(int row, int column, const QModelIndex& parent) const; + QModelIndex parent(const QModelIndex& child) const; + + private: + inline XmlItem *toXmlItem(const QModelIndex& index) const; + + XmlItem *rootItem_; +}; + +#endif // XMLMODEL_H diff --git a/scribo/demo/viewer/XmlWidget/xmlview.cc b/scribo/demo/viewer/XmlWidget/xmlview.cc new file mode 100644 index 0000000..c943401 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlview.cc @@ -0,0 +1,104 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlview.hh" + +XmlView::XmlView(QWidget *parent) : + QTreeView(parent) +{ + proxy_.setFilterRole(Qt::UserRole); + proxy_.setDynamicSortFilter(true); + + setUniformRowHeights(true); + setItemDelegate(new XmlDelegate(Qt::UserRole)); + setSelectionMode(QAbstractItemView::ExtendedSelection); +} + +void XmlView::hideAll() +{ + proxy_.beginResetModel(); + + XmlItem *child; + foreach(child, displayedItems_) + child->hide(); + + displayedItems_.clear(); + emit resetProperty(); + + proxy_.endResetModel(); +} + +void XmlView::display(QList<XmlItem *> displayedItems, bool addToDisplayedList) +{ + proxy_.beginResetModel(); + + if(!addToDisplayedList) + hideAll(); + + XmlItem *child; + foreach(child, displayedItems) + { + child->show(); + displayedItems_ << child; + } + + proxy_.endResetModel(); + + expandAll(); +} + +QList<XmlItem *> XmlView::transform(const QModelIndexList& modelIndexList) const +{ + QList<XmlItem *> selectedItems; + QModelIndex index; + + foreach(index, modelIndexList) + selectedItems << index.data(Qt::UserRole+2).value<XmlItem *>(); + + return selectedItems; +} + +void XmlView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) +{ + QTreeView::selectionChanged(selected, deselected); + + if(selected.indexes() == selectedIndexes()) + emit resetSelection(); + + if(!selectedIndexes().isEmpty()) + { + QList<XmlItem *> xmlItems; + if(!selected.isEmpty()) + { + xmlItems = transform(selected.indexes()); + emit select(xmlItems); + } + else + { + xmlItems = transform(deselected.indexes()); + emit unselect(xmlItems); + } + + emit loadAttributes(xmlItems.last()->attributes()); + } + else + { + emit resetProperty(); + emit emptySelection(); + } + + emit newSelection(); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlview.hh b/scribo/demo/viewer/XmlWidget/xmlview.hh new file mode 100644 index 0000000..b9720dc --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlview.hh @@ -0,0 +1,95 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLVIEW_H +#define XMLVIEW_H + +#include <QGraphicsItem> +#include <QTreeView> + +#include "Rendering/regionitem.hh" +#include "selectionproxy.hh" +#include "xmldelegate.hh" +#include "xmlitem.hh" + +class XmlView : + public QTreeView +{ + Q_OBJECT + + public: + explicit XmlView(QWidget *parent = 0); + + inline QList<XmlItem *> displayedItems() const; + void hideAll(); + + inline QList<XmlItem *> selectedItems() const; + + inline void setModel(QAbstractItemModel *model); + + protected: + void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); + + private: + QList<XmlItem *> transform(const QModelIndexList& modelIndexList) const; + void display(QList<XmlItem *> displayedItems, bool addToDisplayedList); + + SelectionProxy proxy_; + QList<XmlItem *> displayedItems_; + + public slots: + inline void display(QList<XmlItem *> displayedItems); + inline void displayOnly(QList<XmlItem *> displayedItems); + + inline void displayAll(); + + inline void setFilterString(const QString& filterString); + + signals: + void loadAttributes(const XmlAttributes& xmlAttributes); + + void select(const QList<XmlItem *>& selectedItems); + void unselect(const QList<XmlItem *>& unselectedItems); + + void newSelection(); + void emptySelection(); + + void resetSelection(); + void resetProperty(); +}; + +inline QList<XmlItem *> XmlView::displayedItems() const +{ return displayedItems_; } + +inline void XmlView::display(QList<XmlItem *> displayedItems) +{ display(displayedItems, true); } + +inline void XmlView::displayOnly(QList<XmlItem *> displayedItems) +{ display(displayedItems, false); } + +inline void XmlView::displayAll() +{ hideAll(); proxy_.displayAll(); } + +inline QList<XmlItem *> XmlView::selectedItems() const +{ return transform(selectedIndexes()); } + +inline void XmlView::setFilterString(const QString& filterString) +{ proxy_.setFilterRegExp(QRegExp(filterString, Qt::CaseSensitive)); proxy_.invalidateFilter(); } + +inline void XmlView::setModel(QAbstractItemModel *model) +{ proxy_.setSourceModel(model); QTreeView::setModel(&proxy_); } + +#endif // XMLVIEW_H diff --git a/scribo/demo/viewer/XmlWidget/xmlwidget.cc b/scribo/demo/viewer/XmlWidget/xmlwidget.cc new file mode 100644 index 0000000..e6bfe2a --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlwidget.cc @@ -0,0 +1,66 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlwidget.hh" + +XmlWidget::XmlWidget(QWidget *parent) : + QSplitter(Qt::Horizontal, parent) +{ + proxy_.setFilterRegExp(QRegExp("(?:Page|.Region|Line)", Qt::CaseSensitive)); + proxy_.setDynamicSortFilter(true); + proxy_.setFilterRole(Qt::UserRole); + proxy_.setSourceModel(&model_); + + view_.setModel(&proxy_); + + attributes_.setModel(&attributesModel_); + attributes_.setSelectionMode(QAbstractItemView::NoSelection); + attributes_.setItemDelegateForColumn(0, new XmlDelegate(Qt::UserRole)); + attributes_.setItemDelegateForColumn(1, new XmlDelegate(Qt::UserRole+1)); + + addWidget(&view_); + addWidget(&attributes_); + + connect(&view_, SIGNAL(resetProperty()), &attributesModel_, SLOT(reset())); + connect(&view_, SIGNAL(clicked(QModelIndex)), this, SLOT(loadAttributes(QModelIndex))); + connect(&view_, SIGNAL(loadAttributes(XmlAttributes)), &attributesModel_, SLOT(load(XmlAttributes))); +} + +void XmlWidget::changeView(XmlItem *rootItem) +{ + attributesModel_.reset(); + + model_.load(rootItem); + + view_.displayAll(); + view_.expandAll(); +} + + +XmlView * XmlWidget::view() +{ + return &view_; +} + +QTableView *XmlWidget::attributes() +{ + return &attributes_; +} + +void XmlWidget::loadAttributes(const QModelIndex& index) +{ + attributesModel_.load(index.data(Qt::UserRole+2).value<XmlItem *>()->attributes()); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlwidget.hh b/scribo/demo/viewer/XmlWidget/xmlwidget.hh new file mode 100644 index 0000000..2662ae1 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlwidget.hh @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLWIDGET_H +# define XMLWIDGET_H + +#include <QSortFilterProxyModel> +#include <QTableView> +#include <QTreeWidget> +#include <QSplitter> +#include <QDomElement> +#include <QWidget> + +#include "Rendering/scene.hh" +#include "selectionproxy.hh" +#include "attributesmodel.hh" +#include "variantpointer.hh" +#include "xmldelegate.hh" +#include "xmlmodel.hh" +#include "xmlview.hh" + +class XmlWidget : + public QSplitter +{ + Q_OBJECT + + public: + explicit XmlWidget(QWidget *parent = 0); + + XmlView *view(); + QTableView *attributes(); + + void changeView(XmlItem *rootItem); + + private: + QSortFilterProxyModel proxy_; + + XmlModel model_; + AttributesModel attributesModel_; + + XmlView view_; + QTableView attributes_; + + private slots: + void loadAttributes(const QModelIndex& index); +}; + +#endif // XMLWIDGET_H diff --git a/scribo/demo/viewer/aboutdialog.cc b/scribo/demo/viewer/aboutdialog.cc new file mode 100644 index 0000000..c668d23 --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.cc @@ -0,0 +1,31 @@ +// Copyright (C) 2013 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/
>. + +#include <aboutdialog.hh> + + +AboutDialog::AboutDialog(QWidget *parent) + : QDialog(parent, Qt::Dialog) +{ + ui = new Ui::AboutDialog; + ui->setupUi(this); +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} + diff --git a/scribo/demo/viewer/aboutdialog.hh b/scribo/demo/viewer/aboutdialog.hh new file mode 100644 index 0000000..359489d --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.hh @@ -0,0 +1,40 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ABOUTDIALOG_HH +# define ABOUTDIALOG_HH + +#include <QDialog> + +#include "aboutdialog.ui.h" + +namespace Ui +{ + class AboutDialog; +} + +class AboutDialog : + public QDialog +{ +public: + explicit AboutDialog(QWidget *parent = 0); + ~AboutDialog(); + +private: + Ui::AboutDialog *ui; +}; + +#endif // ABOUTDIALOG_HH diff --git a/scribo/demo/viewer/aboutdialog.ui b/scribo/demo/viewer/aboutdialog.ui new file mode 100644 index 0000000..87bed94 --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.ui @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>AboutDialog</class> + <widget class="QDialog" name="AboutDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>557</width> + <height>390</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>557</width> + <height>390</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>557</width> + <height>390</height> + </size> + </property> + <property name="windowTitle"> + <string>About</string> + </property> + <property name="windowIcon"> + <iconset> + <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap>:/icons/shared/icons/olena_smaller.jpg</pixmap> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="1"> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This project is powered by </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Milena</span><span style=" font-family:'DejaVu Sans';">, a generic image processing library.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">It is part of </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Olena</span><span style=" font-family:'DejaVu Sans';">, an Image Processing Platform and its module </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Scribo</span><span style=" font-family:'DejaVu Sans';">, a set of tools for Document Image Analysis.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" font-family:'DejaVu Sans'; text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:8pt;">Thanks to Antoine Froger, Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, Jérôme Galtier, Florent d'Halluin, Alex Hamelin, Damien Lefortier, Vincent Ordy, Guillaume Sadegh and Warren Seine for their contribution.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:7pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">Copyright (C) 2012, 2013 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Ok</set> + </property> + <property name="centerButtons"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>AboutDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>281</x> + <y>391</y> + </hint> + <hint type="destinationlabel"> + <x>240</x> + <y>203</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc deleted file mode 100644 index 17e1c61..0000000 --- a/scribo/demo/viewer/browser_widget.cc +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "browser_widget.hh" - -BrowserWidget::BrowserWidget(QDirModel* files, QString dir) - : files_(files), - view_(new QListView()), - path_(new QLineEdit("")), - first_time_(true) -{ - QToolButton* next= new QToolButton(); - QToolButton* prev= new QToolButton(); - - prev->setIcon(style()->standardIcon(QStyle::SP_ArrowLeft)); - next->setIcon(style()->standardIcon(QStyle::SP_ArrowRight)); - next->setShortcut(QKeySequence("Ctrl+right")); - prev->setShortcut(QKeySequence("Ctrl+left")); - - QLabel* title = new QLabel(tr("Images")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - QHBoxLayout *hlayout = new QHBoxLayout; - - hlayout->addWidget(prev); - hlayout->addWidget(title); - hlayout->addWidget(next); - layout->addLayout(hlayout); - layout->addWidget(path_); - layout->addWidget(view_); - - //setLayout(hlayout); - setLayout(layout); - - view_->setModel(files); - files->setFilter(QDir::AllDirs | QDir::Files - | QDir::Readable | QDir::Drives); - - view_->setRootIndex(files->index(QDir::currentPath())); - - QDir d(dir); - if (d.isReadable()) - view_->setRootIndex(files->index(d.absolutePath())); - - view_->setRowHidden(0, true); - - path_->setText(files->filePath(view_->rootIndex())); - - connect(view_, SIGNAL(activated(const QModelIndex&)), - this, SLOT(activate(const QModelIndex&))); - connect(next, SIGNAL(released ()), - this, SLOT(next())); - connect(prev, SIGNAL(released ()), - this, SLOT(prev())); - connect(path_, SIGNAL(returnPressed()), - this, SLOT(path_return_pressed())); - - QStringList files_filters; - files_filters << "*.png" << "*.jpg" - << "*.tif" << "*.ppm" - << "*.pgm" << "*.pbm" - << "*.pnm" << "*.xmlc"; - - files->setNameFilters(files_filters); -} - -void -BrowserWidget::path_return_pressed() -{ - QString path = path_->text(); - QDir d(path); - - if (d.isReadable()) - activate(files_->index(QString(path)), false); -} - -void -BrowserWidget::activate(const QModelIndex& index, bool b) -{ - if (files_->isDir(index)) - { - view_->setRootIndex(index); - view_->setRowHidden(0, true); - path_->setText(files_->filePath(view_->rootIndex())); - first_time_ = true; - return; - } - - first_time_ = false; - - if (files_->filePath(index).endsWith(".xmlc")) - emit activated(files_->filePath(index), b, true); - else - emit activated(files_->filePath(index), b, false); -} - -void -BrowserWidget::change_pos(bool next) -{ - QModelIndex index = view_->currentIndex(); - - if(next) - index = files_->index(index.row() + 1, index.column(), index.parent()); - else - index = files_->index(index.row() - 1, index.column(), index.parent()); - - if (index.isValid()) - { - if (!files_->isDir(index)) - if (!first_time_) - activate(index, true); - view_->setCurrentIndex(index); - } -} - -BrowserWidget::~BrowserWidget() -{ -} - -QString -BrowserWidget::current() const -{ - return files_->filePath(view_->currentIndex()); -} diff --git a/scribo/demo/viewer/browser_widget.hh b/scribo/demo/viewer/browser_widget.hh deleted file mode 100644 index 9567c11..0000000 --- a/scribo/demo/viewer/browser_widget.hh +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH - -# include <QtGui> - -class BrowserWidget - : public QWidget -{ - Q_OBJECT - -public: - BrowserWidget(QDirModel* files, QString dir = QString()); - ~BrowserWidget(); - - QString current() const; - -public slots: - void activate(const QModelIndex& index, bool b = false); - void path_return_pressed(); - void next() { change_pos(true); } - void prev() { change_pos(false); } - -signals: - void activated(QString filename, bool b, bool x); - -private: - void change_pos(bool next); - QDirModel* files_; - QListView* view_; - QLineEdit* path_; - bool first_time_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH diff --git a/scribo/demo/viewer/common.hh b/scribo/demo/viewer/common.hh deleted file mode 100644 index 0072376..0000000 --- a/scribo/demo/viewer/common.hh +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_COMMON_HH -# define SCRIBO_DEMO_VIEWER_COMMON_HH - -namespace region -{ - typedef QVector<QPair<QString, QColor> > KeyMap; - - enum RegionId - { - // Text regions - // ------------- - - Text = 0, - - // Extension - Line, - - EndOfTextRegion, - - // Separators - // ---------- - - HorizontalSeparator, - VerticalSeparator, - - // Extension - WhitespaceSeparator, - - EndOfSepsRegion, - - // Misc regions. - // ------------- - Image, - Noise, - Table, - LineDrawing, - Graphic, - Chart, - Maths, - - EndOfMiscRegion, - - // Typographical lines - // ------------------- - - // Extension - Baseline, - Meanline, - - EndOfTypoRegion, - - RegionIdCount - }; -} - -#endif // ! SCRIBO_DEMO_VIEWER_COMMON_HH diff --git a/scribo/demo/viewer/config.cc b/scribo/demo/viewer/config.cc deleted file mode 100644 index 6bdcd35..0000000 --- a/scribo/demo/viewer/config.cc +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include <QDir> - -#include "config.hh" -#include "defs.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - - -config::config() - : QSettings("Olena-Scribo", "viewer") -{ - -} - -config* config::get_instance() -{ - static config * conf = new config(); - return conf; -} - - -// Preprocessing - -bool config::preprocessing_subsample() -{ - return value("preprocessing/subsample", false).toBool(); -} - -void config::set_preprocessing_subsample(bool b) -{ - setValue("preprocessing/subsample", b); -} - - -bool config::preprocessing_remove_bg() -{ - return value("preprocessing/remove_bg", false).toBool(); -} - -void config::set_preprocessing_remove_bg(bool b) -{ - setValue("preprocessing/remove_bg", b); -} - - -bool config::preprocessing_deskew() -{ - return value("preprocessing/deskew", false).toBool(); -} - -void config::set_preprocessing_deskew(bool b) -{ - setValue("preprocessing/deskew", b); -} - - -bool config::preprocessing_remove_noise() -{ - return value("preprocessing/remove_noise", true).toBool(); -} - -void config::set_preprocessing_remove_noise(bool b) -{ - setValue("preprocessing/remove_noise", b); -} - - -int config::preprocessing_bin_algo() -{ - return value("preprocessing/bin_algo", - scribo::toolchain::internal::SauvolaMs).toInt(); -} - -void config::set_preprocessing_bin_algo(int algo) -{ - setValue("preprocessing/bin_algo", algo); -} - - - -// Segmentation - -int config::segmentation_find_seps() -{ - return value("segmentation/find_seps", defs::LinesAndWhitespaces).toInt(); -} - -void config::set_segmentation_find_seps(int seps) -{ - setValue("segmentation/find_seps", seps); -} - - -// OCR - -bool config::ocr_enabled() -{ - return value("ocr/enabled", true).toBool(); -} - -void config::set_ocr_enabled(bool b) -{ - setValue("ocr/enabled", b); -} - - - -QString config::ocr_language() -{ - return value("ocr/language", 0).toString(); -} - -void config::set_ocr_language(const QString& lang) -{ - setValue("ocr/language", lang); -} - - - -// General options - -bool config::general_save_xml_enabled() -{ - return value("general/save_xml/enabled", true).toBool(); -} - -void config::set_general_save_xml_enabled(bool b) -{ - setValue("general/save_xml/enabled", b); -} - - -bool config::general_save_xml_same_dir() -{ - return value("general/save_xml/same_dir", true).toBool(); -} - -void config::set_general_save_xml_same_dir(bool b) -{ - setValue("general/save_xml/same_dir", b); -} - - -bool config::general_save_xml_custom_dir() -{ - return value("general/save_xml/custom_dir", false).toBool(); -} - -void config::set_general_save_xml_custom_dir(bool b) -{ - setValue("general/save_xml/custom_dir", b); -} - - -QString config::general_save_xml_custom_dir_path() -{ - return value("general/save_xml/custom_dir_path", QDir::tempPath()).toString(); -} - -void config::set_general_save_xml_custom_dir_path(const QString& path) -{ - setValue("general/save_xml/custom_dir_path", path); -} - diff --git a/scribo/demo/viewer/config.hh b/scribo/demo/viewer/config.hh deleted file mode 100644 index 74dab3b..0000000 --- a/scribo/demo/viewer/config.hh +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_CONFIG_HH -# define SCRIBO_DEMO_VIEWER_CONFIG_HH - -# include <QSettings> - -class config : public QSettings -{ -public: - - config(); - - static config* get_instance(); - - // Preprocessing - bool preprocessing_subsample(); - void set_preprocessing_subsample(bool b); - - bool preprocessing_remove_bg(); - void set_preprocessing_remove_bg(bool b); - - bool preprocessing_deskew(); - void set_preprocessing_deskew(bool b); - - bool preprocessing_remove_noise(); - void set_preprocessing_remove_noise(bool b); - - int preprocessing_bin_algo(); - void set_preprocessing_bin_algo(int algo); - - - // Segmentation - int segmentation_find_seps(); - void set_segmentation_find_seps(int seps); - - - // OCR - bool ocr_enabled(); - void set_ocr_enabled(bool b); - - QString ocr_language(); - void set_ocr_language(const QString& lang); - - - // General options - bool general_save_xml_enabled(); - void set_general_save_xml_enabled(bool b); - - bool general_save_xml_same_dir(); - void set_general_save_xml_same_dir(bool b); - - bool general_save_xml_custom_dir(); - void set_general_save_xml_custom_dir(bool b); - - QString general_save_xml_custom_dir_path(); - void set_general_save_xml_custom_dir_path(const QString& path); - - -}; - - -#endif // ! SCRIBO_DEMO_VIEWER_CONFIG_HH diff --git a/scribo/demo/viewer/configs.cc b/scribo/demo/viewer/configs.cc new file mode 100644 index 0000000..f832b5a --- /dev/null +++ b/scribo/demo/viewer/configs.cc @@ -0,0 +1,149 @@ +// Copyright (C) 2013 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/
>. + +#include "configs.hh" + +Configs::Configs() + : QSettings("olena-scribo", "gui") +{ +} + +Configs *Configs::getInstance() +{ + static Configs *conf = new Configs(); return conf; +} + +bool Configs::preprocessingSubsample() +{ + return value("preprocessing/subsample", false).toBool(); +} + +void Configs::setPreprocessingSubsample(bool b) +{ + setValue("preprocessing/subsample", b); +} + +bool Configs::preprocessingRemoveBg() +{ + return value("preprocessing/remove_bg", false).toBool(); +} + +void Configs::setPreprocessingRemoveBg(bool b) +{ + setValue("preprocessing/remove_bg", b); +} + +bool Configs::preprocessingDeskew() +{ + return value("preprocessing/deskew", false).toBool(); +} + +void Configs::setPreprocessingDeskew(bool b) +{ + setValue("preprocessing/deskew", b); +} + +bool Configs::preprocessingRemoveNoise() +{ + return value("preprocessing/remove_noise", true).toBool(); +} + +void Configs::setPreprocessingRemoveNoise(bool b) +{ + setValue("preprocessing/remove_noise", b); +} + +int Configs::preprocessingBinAlgo() +{ + return value("preprocessing/bin_algo", + scribo::toolchain::internal::SauvolaMs).toInt(); +} + +void Configs::setPreprocessingBinAlgo(int algo) +{ + setValue("preprocessing/bin_algo", algo); +} + +int Configs::segmentationFindSeps() +{ + return value("segmentation/find_seps", Separator::Both).toInt(); +} + +void Configs::setSegmentationFindSeps(int seps) +{ + setValue("segmentation/find_seps", seps); +} + +bool Configs::ocrEnabled() +{ + return value("ocr/enabled", true).toBool(); +} + +void Configs::setOcrEnabled(bool b) +{ + setValue("ocr/enabled", b); +} + +QString Configs::ocrLanguage() +{ + return value("ocr/language", 0).toString(); +} + +void Configs::setOcrLanguage(const QString& lang) +{ + setValue("ocr/language", lang); +} + +bool Configs::generalSaveXmlEnabled() +{ + return value("general/save_xml/enabled", true).toBool(); +} + +void Configs::setGeneralSaveXmlEnabled(bool b) +{ + setValue("general/save_xml/enabled", b); +} + +bool Configs::generalSaveXmlSameDir() +{ + return value("general/save_xml/same_dir", true).toBool(); +} + +void Configs::setGeneralSaveXmlSameDir(bool b) +{ + setValue("general/save_xml/same_dir", b); +} + +bool Configs::generalSaveXmlCustomDir() +{ + return value("general/save_xml/custom_dir", false).toBool(); +} + +void Configs::setGeneralSaveXmlCustomDir(bool b) +{ + setValue("general/save_xml/custom_dir", b); +} + +QString Configs::generalSaveXmlCustomDirPath() +{ + return value("general/save_xml/custom_dir_path", + QDir::tempPath()).toString(); +} + +void Configs::setGeneralSaveXmlCustomDirPath(const QString& path) +{ + setValue("general/save_xml/custom_dir_path", path); +} diff --git a/scribo/demo/viewer/configs.hh b/scribo/demo/viewer/configs.hh new file mode 100644 index 0000000..26de148 --- /dev/null +++ b/scribo/demo/viewer/configs.hh @@ -0,0 +1,74 @@ +// Copyright (C) 2013 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/
>. + +#ifndef CONFIGS_H +# define CONFIGS_H + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> +#include <QSettings> +#include <QDir> +#include <QDebug> + +#include "region.hh" + +class Configs : + public QSettings +{ +public: + static Configs *getInstance(); + + bool preprocessingSubsample(); + void setPreprocessingSubsample(bool b); + + bool preprocessingRemoveBg(); + void setPreprocessingRemoveBg(bool b); + + bool preprocessingDeskew(); + void setPreprocessingDeskew(bool b); + + bool preprocessingRemoveNoise(); + void setPreprocessingRemoveNoise(bool b); + + int preprocessingBinAlgo(); + void setPreprocessingBinAlgo(int algo); + + int segmentationFindSeps(); + void setSegmentationFindSeps(int seps); + + bool ocrEnabled(); + void setOcrEnabled(bool b); + + QString ocrLanguage(); + void setOcrLanguage(const QString& lang); + + bool generalSaveXmlEnabled(); + void setGeneralSaveXmlEnabled(bool b); + + bool generalSaveXmlSameDir(); + void setGeneralSaveXmlSameDir(bool b); + + bool generalSaveXmlCustomDir(); + void setGeneralSaveXmlCustomDir(bool b); + + QString generalSaveXmlCustomDirPath(); + void setGeneralSaveXmlCustomDirPath(const QString& path); + +private: + explicit Configs(); +}; + + +#endif // CONFIGS_H diff --git a/scribo/demo/viewer/defs.hh b/scribo/demo/viewer/defs.hh deleted file mode 100644 index ada4441..0000000 --- a/scribo/demo/viewer/defs.hh +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_DEFS_HH -# define SCRIBO_DEMO_VIEWER_DEFS_HH - -namespace defs -{ - enum FindSeparators - { - Lines, - Whitespaces, - LinesAndWhitespaces - }; - -} // end of namespace defs - -#endif // ! SCRIBO_DEMO_VIEWER_DEFS_HH diff --git a/GScribo/dir.h b/scribo/demo/viewer/dir.hh similarity index 100% rename from GScribo/dir.h rename to scribo/demo/viewer/dir.hh diff --git a/scribo/demo/viewer/dockwidget.cc b/scribo/demo/viewer/dockwidget.cc new file mode 100644 index 0000000..fc895b0 --- /dev/null +++ b/scribo/demo/viewer/dockwidget.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2013 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/
>. + +#include "dockwidget.hh" + +DockWidget::DockWidget(QWidget *parent, Qt::WindowFlags flags) + : QDockWidget(parent, flags) +{ +} + + +DockWidget::DockWidget(const QString& title, + QWidget *parent, Qt::WindowFlags flags) + : QDockWidget(title, parent, flags) +{ +} + +void DockWidget::switchVisibility() +{ + setVisible(!isVisible()); +} diff --git a/scribo/demo/viewer/dockwidget.hh b/scribo/demo/viewer/dockwidget.hh new file mode 100644 index 0000000..e6fb483 --- /dev/null +++ b/scribo/demo/viewer/dockwidget.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef DOCKWIDGET_H +# define DOCKWIDGET_H + +#include <QDockWidget> + +class DockWidget : + public QDockWidget +{ + Q_OBJECT + + public: + explicit DockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0); + explicit DockWidget(const QString& title, + QWidget *parent = 0, Qt::WindowFlags flags = 0); + +public slots: + void switchVisibility(); +}; + +#endif // DOCKWIDGET_H diff --git a/scribo/demo/viewer/general_options.cc b/scribo/demo/viewer/general_options.cc deleted file mode 100644 index 50201ff..0000000 --- a/scribo/demo/viewer/general_options.cc +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "general_options.hh" -#include "config.hh" - - -general_options::general_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - load_config(); -} - -general_options::~general_options() -{ -} - - -void general_options::load_config() -{ - config * const conf = config::get_instance(); - - saveXml->setChecked(conf->general_save_xml_enabled()); - sameDir->setChecked(conf->general_save_xml_same_dir()); - customDir->setChecked(conf->general_save_xml_custom_dir()); - customDirValue->setText(conf->general_save_xml_custom_dir_path()); -} - - -void general_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_general_save_xml_enabled(saveXml->isChecked()); - conf->set_general_save_xml_same_dir(sameDir->isChecked()); - conf->set_general_save_xml_custom_dir(customDir->isChecked()); - conf->set_general_save_xml_custom_dir_path(customDirValue->text()); -} - -void general_options::on_customDirBrowseBtn_clicked() -{ - QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); - if (!dir.isEmpty()) - customDirValue->setText(dir); -} diff --git a/scribo/demo/viewer/general_options.hh b/scribo/demo/viewer/general_options.hh deleted file mode 100644 index e2fcaae..0000000 --- a/scribo/demo/viewer/general_options.hh +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH - -# include <QtGui> -# include <general_options.ui.h> -# include "option_widget.hh" - -class general_options : public OptionWidget, private Ui::GeneralOptions -{ - Q_OBJECT; - -public: - general_options(QWidget *parent = 0); - ~general_options(); - - virtual void load_config(); - virtual void save_config(); - -private slots: - void on_customDirBrowseBtn_clicked(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH diff --git a/scribo/demo/viewer/general_options.ui b/scribo/demo/viewer/general_options.ui deleted file mode 100644 index 5839c27..0000000 --- a/scribo/demo/viewer/general_options.ui +++ /dev/null @@ -1,100 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>GeneralOptions</class> - <widget class="QWidget" name="GeneralOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QGroupBox" name="saveXml"> - <property name="title"> - <string>Save segmentation results</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QRadioButton" name="sameDir"> - <property name="text"> - <string>In the same directory as the input image</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QRadioButton" name="customDir"> - <property name="text"> - <string>In the following directory</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Maximum</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLineEdit" name="customDirValue"/> - </item> - <item> - <widget class="QPushButton" name="customDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/help_dialog.cc b/scribo/demo/viewer/help_dialog.cc deleted file mode 100644 index 2d5ce6c..0000000 --- a/scribo/demo/viewer/help_dialog.cc +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "help_dialog.hh" - -HelpDialog::HelpDialog() -{ - setupUi(this); -} diff --git a/scribo/demo/viewer/help_dialog.hh b/scribo/demo/viewer/help_dialog.hh deleted file mode 100644 index 9f179c6..0000000 --- a/scribo/demo/viewer/help_dialog.hh +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH -# define SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH - -# include <QtGui> -# include <help_dialog.ui.h> - -class HelpDialog : public QDialog, private Ui::HelpDialog -{ -public: - HelpDialog(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH diff --git a/scribo/demo/viewer/help_dialog.ui b/scribo/demo/viewer/help_dialog.ui deleted file mode 100644 index 9ab7e58..0000000 --- a/scribo/demo/viewer/help_dialog.ui +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>HelpDialog</class> - <widget class="QDialog" name="HelpDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>557</width> - <height>390</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="windowTitle"> - <string>About</string> - </property> - <property name="windowIcon"> - <iconset resource="viewer.qrc"> - <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="viewer.qrc">:/icons/shared/icons/olena_smaller.jpg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This project is powered by <span style=" font-weight:600; font-style:italic;">Milena</span>, a generic image processing library.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">It is part of <span style=" font-weight:600; font-style:italic;">Olena</span>, an Image Processing Platform and its module <span style=" font-weight:600; font-style:italic;">Scribo</span>, a set of tools for Document Image Analysis.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Thanks to Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, </span><span style=" font-size:8pt;">Jérôme Galtier,</span><span style=" font-size:8pt;"> </span><span style=" font-size:8pt;">Florent d'Halluin, </span><span style=" font-size:8pt;">Alex Hamelin, </span><span style=" font-size:8pt;">Damien Lefortier, </span><span style=" font-size:8pt;">Vincent Ordy, </span><span style=" font-size:8pt;">Guillaume Sadegh and</span><span style=" font-size:8pt;"> </span><span style=" font-size:8pt;">Warren Seine </span><span style=" font-size:8pt;">for their contribution.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:7pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:7pt;">Copyright (C) 2010, 2011 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Ok</set> - </property> - <property name="centerButtons"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources> - <include location="viewer.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>HelpDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>281</x> - <y>391</y> - </hint> - <hint type="destinationlabel"> - <x>240</x> - <y>203</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/scribo/demo/viewer/icons/olena_smaller.jpg b/scribo/demo/viewer/icons/olena_smaller.jpg deleted file mode 100644 index c6b9110..0000000 Binary files a/scribo/demo/viewer/icons/olena_smaller.jpg and /dev/null differ diff --git a/scribo/demo/viewer/image_region.cc b/scribo/demo/viewer/image_region.cc deleted file mode 100644 index 93d9d79..0000000 --- a/scribo/demo/viewer/image_region.cc +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "image_region.hh" - -ImageRegion::ImageRegion(region::RegionId id, - QString name, - QColor color, - QString attr_id, - const QVector<QPoint>& points, - bool outline, - bool fill, - bool precise, - bool draw) - : QGraphicsItem(0), - id_(id), - name_(name), - color_(color), - attr_id_(attr_id), - shape_(), - rect_(), - outline_(outline), - precise_(precise), - fill_(fill), - draw_(draw), - selected_(false), - alpha_(50) -{ - setCursor(Qt::ArrowCursor); - if (id_ == region::Line) - setZValue(3); - else - setZValue(1); - - if (points.size() == 0) - return; - - for (int i = 1; i < points.size(); ++i) - shape_.lineTo(points[i] - points[0]); - shape_.lineTo(QPoint(0, 0)); - - rect_ = shape_.boundingRect(); - setPos(points[0] + QPointF(0.5, 0.5)); - - prepareGeometryChange(); -} - -ImageRegion::~ImageRegion() -{ -} - -region::RegionId ImageRegion::id() -{ - return id_; -} - -void -ImageRegion::paint(QPainter* painter, - const QStyleOptionGraphicsItem*, - QWidget*) -{ - if (!draw_ && !selected_) - return; - - int width = 0; - if (precise_) - width = 1; - - if (outline_) - painter->setPen(QPen(QBrush(color_), width, Qt::SolidLine, - Qt::SquareCap, Qt::MiterJoin)); - else - painter->setPen(QColor(0, 0, 0, 0)); - - QColor brush = color_; - if (fill_) - brush.setAlpha(alpha_); - else - brush.setAlpha(0); - painter->setBrush(brush); - - painter->drawPath(shape_); - - if (selected_) - { - QPolygonF sceneRect = mapFromScene(scene()->sceneRect()); - QPainterPath path; - path.addPolygon(sceneRect); - QColor brush(255, 255, 255); - brush.setAlpha(120); - painter->setBrush(brush); - painter->setPen(QColor(0, 0, 0, 0)); - painter->drawPath(path.subtracted(shape_)); - } -} - -void -ImageRegion::select() -{ - if (!selected_) - { - selected_ = true; - setZValue(4); - prepareGeometryChange(); - scene()->invalidate(); - update(); - } -} - -void -ImageRegion::deselect() -{ - if (selected_) - { - selected_ = false; - if (id_ == region::Line) - setZValue(3); - else - setZValue(1); - prepareGeometryChange(); - scene()->invalidate(); - update(); - } -} diff --git a/scribo/demo/viewer/image_region.hh b/scribo/demo/viewer/image_region.hh deleted file mode 100644 index 41141f7..0000000 --- a/scribo/demo/viewer/image_region.hh +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH - -# include <QtGui> -# include "common.hh" - -class ImageRegion - : public QObject, public QGraphicsItem -{ - Q_OBJECT - -public: - ImageRegion(region::RegionId id, - QString name, - QColor color, - QString attr_id, - const QVector<QPoint>& points, - bool outline, - bool fill, - bool precise, - bool draw); - - ~ImageRegion(); - - region::RegionId id(); - void paint(QPainter* painter, - const QStyleOptionGraphicsItem* option, - QWidget* widget = 0); - - QRectF boundingRect() const; - QPainterPath shape() const; - QString name() { return name_; } - QRectF rect() { return rect_; } - QString attr_id() { return attr_id_; } - -public slots: - void setOutline(bool outline); - void setFill(bool fill); - void setFillAlpha(int alpha); - void setDraw(bool draw); - void setPrecise(bool precise); - void setDrawIfSameId(int id, bool draw); - void select(); - void deselect(); - -private: - region::RegionId id_; - QString name_; - QColor color_; - QString attr_id_; - QPainterPath shape_; - QRectF rect_; - bool outline_; - bool precise_; - bool fill_; - bool draw_; - bool selected_; - int alpha_; -}; - -#include "image_region.hxx" - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH diff --git a/scribo/demo/viewer/image_region.hxx b/scribo/demo/viewer/image_region.hxx deleted file mode 100644 index 5ddd7de..0000000 --- a/scribo/demo/viewer/image_region.hxx +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (C) 2009, 2010 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. - -#ifndef IMAGE_REGION_HXX_ -# define IMAGE_REGION_HXX_ - -# include "image_region.hh" - -inline -void -ImageRegion::setOutline(bool outline) -{ - outline_ = outline; - scene()->invalidate(); - update(); -} - -inline -void -ImageRegion::setPrecise(bool precise) -{ - precise_ = precise; - scene()->invalidate(); - update(); -} - -inline -void -ImageRegion::setFill(bool fill) -{ - fill_ = fill; - update(); -} - -inline -void -ImageRegion::setDraw(bool draw) -{ - draw_ = draw; - update(); -} - -inline -void -ImageRegion::setDrawIfSameId(int id, bool draw) -{ - if (id == id_) - { - draw_ = draw; - setVisible(draw); - if (scene()) - { - scene()->invalidate(); - update(); - } - } -} - -inline -void -ImageRegion::setFillAlpha(int alpha) -{ - alpha_ = alpha; - update(); -} - -inline -QRectF -ImageRegion::boundingRect() const -{ -// if (selected_) -// return mapFromScene(scene()->sceneRect()).boundingRect(); - return rect_; -} - -inline -QPainterPath -ImageRegion::shape() const -{ - return shape_; -} - -#endif /* !IMAGE_REGION_HXX_ */ diff --git a/scribo/demo/viewer/image_scene.cc b/scribo/demo/viewer/image_scene.cc deleted file mode 100644 index a800896..0000000 --- a/scribo/demo/viewer/image_scene.cc +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - - -#include "image_scene.hh" -#include "image_region.hh" - -ImageScene::ImageScene(QObject *parent) - : QGraphicsScene(parent), selected_(0) -{ -} - -void -ImageScene::clear() -{ - selected_ = 0; - QGraphicsScene::clear(); -} - -void -ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event) -{ - QGraphicsScene::mousePressEvent(event); - QList<QGraphicsItem *> items_list = items(event->scenePos()); // includes both ImageRegions and the picture. - - if (items_list.isEmpty()) - { - if (selected_) - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - - // Selection is under the mouse click (at event->pos()). - bool selection_is_clicked = items_list.contains(selected_); - - foreach(QGraphicsItem* elt, items_list) - { - ImageRegion* item = dynamic_cast<ImageRegion*>(elt); - if (item) - { - if (item != selected_) - { - if (selected_) - { - if ( (item->boundingRect().intersects(selected_->boundingRect()))) - { - int item_area = item->boundingRect().size().height() * item->boundingRect().size().width(); - int selected_area = selected_->boundingRect().size().height() * selected_->boundingRect().size().width(); - - if (selected_area < item_area && selection_is_clicked) - return; - else - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - else - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - selected_ = item; - item->select(); - emit selected(item->attr_id(), item->name()); - return; - } - } - else - { - if ( (selected_) - && (items_list.size() == 1) )// no ImageRegion, only the picture - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - } -} - -ImageScene::~ImageScene() -{ -} diff --git a/scribo/demo/viewer/image_scene.hh b/scribo/demo/viewer/image_scene.hh deleted file mode 100644 index b141478..0000000 --- a/scribo/demo/viewer/image_scene.hh +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH - -# include <QtGui> - -class ImageRegion; - -class ImageScene - : public QGraphicsScene -{ - Q_OBJECT - -public: - ImageScene(QObject *parent = 0); - ~ImageScene(); - - void mousePressEvent(QGraphicsSceneMouseEvent* event); - void clear(); - -signals: - void selected(QString, QString); - void deselected(); - -private: - ImageRegion* selected_; - QVector<ImageRegion*> region_vector_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH diff --git a/scribo/demo/viewer/image_view.cc b/scribo/demo/viewer/image_view.cc deleted file mode 100644 index 9190227..0000000 --- a/scribo/demo/viewer/image_view.cc +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (C) 2010, 2013 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/
>. - -#include "image_view.hh" - -ImageView::ImageView(QGraphicsScene* scene) - : QGraphicsView(scene) -{ -} - -void -ImageView::wheelEvent(QWheelEvent* event) -{ - // Basic zoom code (same as yavgui) - if (event->delta() != 0) - { - qreal degrees = ((qreal) event->delta()) / 8; - qreal sc; - if (degrees > 0) - sc = 1 + degrees / 100; - else - sc = 1 / (1 - degrees / 100); - - // QPointF center = mapToScene(width() / 2, height() / 2); - // QPointF mouse = mapToScene(event->pos()); - - // qreal dx = (mouse.x() - center.x()); - // qreal dy = (mouse.y() - center.y()); - // QPointF newCenter = QPointF (mouse.x() - dx / sc, - // mouse.y() - dy / sc); - scale(sc, sc); - scaleUpdate(); - } -} - -void -ImageView::keyPressEvent(QKeyEvent* event) -{ - if (event->key() == Qt::Key_PageUp) - scale(1.25, 1.25); - else if (event->key() == Qt::Key_PageDown) - scale(0.75, 0.75); - else if (event->key() == Qt::Key_Home) - resetMatrix(); - else if (event->key() == Qt::Key_End) - fitInView(sceneRect(), Qt::KeepAspectRatio); - else - { - QGraphicsView::keyPressEvent(event); - return; - } - scaleUpdate(); - event->accept(); -} - -void -ImageView::scaleUpdate() -{ - // Used to determine whether to change the main image cache mode. - QRect orig(0, 0, 10, 1); - QRectF scene = mapToScene(orig).boundingRect(); - emit scaleUpdated(10 / scene.width()); -} - -ImageView::~ImageView() -{ -} diff --git a/scribo/demo/viewer/image_view.hh b/scribo/demo/viewer/image_view.hh deleted file mode 100644 index 622999b..0000000 --- a/scribo/demo/viewer/image_view.hh +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH - -# include <QtGui> - -class ImageView - : public QGraphicsView -{ - Q_OBJECT - -public: - ImageView(QGraphicsScene* scene); - ~ImageView(); - - void wheelEvent(QWheelEvent* event); - void keyPressEvent(QKeyEvent *event); - - // Call after changing the scale. - void scaleUpdate(); - -signals: - // Scale is approximate. - void scaleUpdated(qreal scale); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH diff --git a/scribo/demo/viewer/image_widget.cc b/scribo/demo/viewer/image_widget.cc deleted file mode 100644 index f86ff1d..0000000 --- a/scribo/demo/viewer/image_widget.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "image_widget.hh" -#include "image_view.hh" - -ImageWidget::ImageWidget(QGraphicsScene* scene) - : view_ (new ImageView(scene)) -{ - scene->setParent(view_); - - QLabel* title = new QLabel(tr("Layout")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(title); - layout->addWidget(view_); - - view_->setDragMode(QGraphicsView::ScrollHandDrag); - view_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view_->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); - - connect(view_, SIGNAL(scaleUpdated(qreal)), - this, SIGNAL(scaleUpdated(qreal))); - - setLayout(layout); -} - - -ImageWidget::~ImageWidget() -{ -} - - -void -ImageWidget::update() -{ - view_->fitInView(view_->sceneRect(), Qt::KeepAspectRatio); - view_->scaleUpdate(); -} - -ImageView * -ImageWidget::view() const -{ - return view_; -} diff --git a/scribo/demo/viewer/image_widget.hh b/scribo/demo/viewer/image_widget.hh deleted file mode 100644 index 79dd672..0000000 --- a/scribo/demo/viewer/image_widget.hh +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH - -# include <QtGui> -# include "image_view.hh" - -class ImageView; - -class ImageWidget - : public QWidget -{ - Q_OBJECT - -public: - ImageWidget(QGraphicsScene* scene); - ~ImageWidget(); - - ImageView * view() const; - -public slots: - void update(); - -signals: - void scaleUpdated(qreal scale); - -private: - ImageView* view_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH diff --git a/scribo/demo/viewer/key_widget.cc b/scribo/demo/viewer/key_widget.cc deleted file mode 100644 index 3b07617..0000000 --- a/scribo/demo/viewer/key_widget.cc +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "key_widget.hh" -#include "common.hh" - -KeyWidget::KeyWidget(const region::KeyMap& key_map) - : items_(new QTreeWidget()) -{ - item_list_.append(new QTreeWidgetItem(QStringList("Text"))); - item_list_.append(new QTreeWidgetItem(QStringList("Separators"))); - item_list_.append(new QTreeWidgetItem(QStringList("Misc. Regions"))); - item_list_.append(new QTreeWidgetItem(QStringList("Typographical lines"))); - - QLabel* title = new QLabel(tr("Key")); - title->setAlignment(Qt::AlignHCenter); - - foreach(QTreeWidgetItem* item, item_list_) - { - items_->addTopLevelItem(item); - item->setCheckState(0, Qt::Checked); - item->setExpanded(true); - } - items_->setHeaderHidden(true); - - base_id_.append(0); - base_id_.append(region::EndOfTextRegion + 1); - base_id_.append(region::EndOfSepsRegion + 1); - base_id_.append(region::EndOfMiscRegion + 1); - base_id_.append(region::EndOfTypoRegion + 1); - - for (int j = 0; j < base_id_.size() - 1; ++j) - for (int i = base_id_.at(j); i < base_id_.at(j + 1) - 1; ++i) - add_item_(key_map.at(i).first, key_map.at(i).second, false, item_list_.at(j)); - - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(title); - layout->addWidget(items_); - - setLayout(layout); - - connect(items_, SIGNAL(itemChanged(QTreeWidgetItem*, int)), - this, SLOT(update(QTreeWidgetItem*))); -} - -void KeyWidget::update_all() -{ - foreach(QTreeWidgetItem* item, item_list_) - for (int i = 0; i < item->childCount(); ++i) - update(item->child(i)); -} - -void KeyWidget::setAll(bool b) -{ - Qt::CheckState state; - if (b) - state = Qt::Checked; - else - state = Qt::Unchecked; - - foreach(QTreeWidgetItem* item, item_list_) - item->setCheckState(0, state); -} - -void KeyWidget::setAllCheck(QTreeWidgetItem* parent) -{ - for (int i = 0; i < parent->childCount(); ++i) - { - if (parent->checkState(0) == Qt::Checked) - parent->child(i)->setCheckState(0, Qt::Checked); - else - parent->child(i)->setCheckState(0, Qt::Unchecked); - update(parent->child(i)); - } -} - -void -KeyWidget::change_mode(bool b) -{ - item_list_.at(0)->child(region::Line)->setHidden(!b); - // FIXME: we may like to hide also typographical objects. -} - -void -KeyWidget::add_item_(QString text, QColor color, bool b, QTreeWidgetItem* parent) -{ - QTreeWidgetItem* item = new QTreeWidgetItem(QStringList(text)); - QPixmap pixmap(10, 6); - - pixmap.fill(color); - item->setIcon(0, QIcon(pixmap)); - item->setCheckState(0, Qt::Checked); - parent->addChild(item); - item->setHidden(b); -} - -bool -KeyWidget::isChecked(region::RegionId id) -{ - QTreeWidgetItem* current_item = 0; - - foreach(QTreeWidgetItem* item, item_list_) - { - current_item = item->child(id); - if (item) - break; - else - current_item = 0; - } - - if (!current_item) - return false; - - return current_item->checkState(0) == Qt::Checked; -} - -void -KeyWidget::update(QTreeWidgetItem* item_up) -{ - int id = -1; - - foreach(QTreeWidgetItem* item, item_list_) - if (item_up == item) - { - setAllCheck(item); - return; - } - - - int i = 0; - foreach(QTreeWidgetItem* item, item_list_) - { - id = item->indexOfChild(item_up); - if (id != -1) - { - id += base_id_.at(i); - break; - } - ++i; - } - - emit updated(id, item_up->checkState(0) == Qt::Checked); -} - -KeyWidget::~KeyWidget() -{ -} - diff --git a/scribo/demo/viewer/key_widget.hh b/scribo/demo/viewer/key_widget.hh deleted file mode 100644 index 1a3518e..0000000 --- a/scribo/demo/viewer/key_widget.hh +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH - -# include <QtGui> -# include "common.hh" - -class KeyWidget - : public QWidget -{ - Q_OBJECT - -public: - KeyWidget(const region::KeyMap& key_map); - ~KeyWidget(); - - bool isChecked(region::RegionId id); - QTreeWidget* items() { return items_; }; - void update_all(); - -signals: - void updated(int key, bool checked); - -public slots: - void setAll(bool b); - -private slots: - void change_mode(bool b); - void update(QTreeWidgetItem* item); - void setAllCheck(QTreeWidgetItem* parent); - -private: - void add_item_(QString text, QColor color, bool b, QTreeWidgetItem* parent); - - QTreeWidget* items_; - QVector<QTreeWidgetItem*> item_list_; - QVector<int> base_id_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH diff --git a/scribo/demo/viewer/main.cc b/scribo/demo/viewer/main.cc index d14e36d..a460a1c 100644 --- a/scribo/demo/viewer/main.cc +++ b/scribo/demo/viewer/main.cc @@ -1,5 +1,4 @@ -// Copyright (C) 2010, 2011, 2013 EPITA Research and Development -// Laboratory (LRDE) +// Copyright (C) 2013 EPITA Research and Development Laboratory (LRDE) // // This file is part of Olena. // @@ -15,36 +14,29 @@ // You should have received a copy of the GNU General Public License // along with Olena. If not, see <
http://www.gnu.org/licenses/
>. -#include <QtGui> -#include <iostream> - #undef MLN_WO_GLOBAL_VARS -#include "viewer.hh" + +#include <QtGui/QApplication> + +#include <scribo/make/debug_filename.hh> #include <mln/labeling/colorize.hh> -#include <mln/math/pi.hh> #include <mln/io/magick/load.hh> #include <mln/debug/filename.hh> #include <mln/literal/colors.hh> -#include <scribo/make/debug_filename.hh> #include <scribo/binarization/sauvola_ms.hh> +#include <mln/math/pi.hh> -int main(int argc, char** argv) -{ - if (argc > 2 || - (argc == 2 && - (QString(argv[1]) == "--help" || QString(argv[1]) == "-h"))) - { - std::cout << "Usage:" << std::endl - << argv[0] << " <image dir>" << std::endl; - return 0; - } - - Magick::InitializeMagick(*argv); - - Viewer* viewer = Viewer::Instance(argc, argv); - if (!viewer) - return -1; +#include "mainwindow.hh" - return viewer->exec(); +int main(int argc, char *argv[]) +{ + Magick::InitializeMagick(*argv); + // On Linux, we NEED to use the raster graphics system. + // Linux don't really support openGL graphics system (the default one on Linux). + QApplication::setGraphicsSystem("raster"); + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); } diff --git a/scribo/demo/viewer/mainwindow.cc b/scribo/demo/viewer/mainwindow.cc new file mode 100644 index 0000000..97cda4e --- /dev/null +++ b/scribo/demo/viewer/mainwindow.cc @@ -0,0 +1,496 @@ +// Copyright (C) 2013 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/
>. + +#include "mainwindow.hh" +#include "mainwindow.ui.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + setWindowTitle(tr("GScribo")); + showMaximized(); + + initGraphicsRegion(); + initDialogsWidget(); + initXmlWidget(); + initRegionWidget(); + initPageWidget(); + initMenuBar(); + + // Told the left dock widget (here the pages widget and the region + // widget) to fill the bottom left corner. + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + // Merge the region and pages widget in one tab (pages widget over + // the region widget). + tabifyDockWidget(&dockRegion_, &dockPages_); + + connectWidgets(); +} + +MainWindow::~MainWindow() +{ + delete preferencesDialog_; + delete aboutDialog_; + delete progressDialog_; + delete ui; +} + +void MainWindow::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) + { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void MainWindow::initGraphicsRegion() +{ + graphicsView_.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); + graphicsView_.setScene(&scene_); + + setCentralWidget(&graphicsView_); +} + +void MainWindow::initDialogsWidget() +{ + preferencesDialog_ = new PreferencesDialog(this); + aboutDialog_ = new AboutDialog(this); + progressDialog_ = new ProgressDialog(this); +} + +void MainWindow::initPageWidget() +{ + dockPages_.setWindowTitle("Pages"); + dockPages_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockPages_.setWidget(&pagesWidget_); + dockPages_.setMinimumWidth(190); + + addDockWidget(Qt::LeftDockWidgetArea, &dockPages_); +} + +void MainWindow::initRegionWidget() +{ + dockRegion_.setWindowTitle("Regions"); + dockRegion_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockRegion_.setWidget(®ionWidget_); + + addDockWidget(Qt::LeftDockWidgetArea, &dockRegion_); +} + +void MainWindow::initXmlWidget() +{ + dockXml_.setWindowTitle("Xml"); + dockXml_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockXml_.setWidget(&xmlWidget_); + + addDockWidget(Qt::BottomDockWidgetArea, &dockXml_); + dockXml_.setVisible(false); +} + +void MainWindow::initMenuBar() +{ + QMenu *menuFile = ui->menuBar->addMenu(tr("File")); + + menuFile->addAction(tr("&Open"), this, SLOT(onOpen()), + QKeySequence(tr("Ctrl+O"))); + + segment_ = menuFile->addAction(tr("Segment"), this, SLOT(onSegment()), + QKeySequence(tr("Ctrl+S"))); + segment_->setEnabled(false); + + menuFile->addSeparator(); + + previewPrinting_ = menuFile->addAction(tr("Preview Printing"), + this, SLOT(onPreviewPrint()), + QKeySequence(tr("Shift+Ctrl+P"))); + previewPrinting_->setEnabled(false); + + print_ = menuFile->addAction(tr("Print"), this, SLOT(onPrint()), + QKeySequence(tr("Ctrl+P"))); + print_->setEnabled(false); + + menuFile->addSeparator(); + + export_ = menuFile->addAction(tr("&Exportation"), + this, SLOT(onExportation()), + QKeySequence(tr("Ctrl+E"))); + export_->setEnabled(false); + + menuFile->addSeparator(); + + menuFile->addAction(tr("Quit"), this, SLOT(close())); + + ui->menuBar->addAction(tr("Preferences"), + this, SLOT(onPreferences())); + + QMenu *menuAreas = ui->menuBar->addMenu(tr("Window")); + + next_ = menuAreas->addAction(tr("Next document"), + &pagesWidget_, SLOT(selectNextRow()), + QKeySequence(tr("Space"))); + next_->setEnabled(false); + + prev_ = menuAreas->addAction(tr("Previous document"), + &pagesWidget_, SLOT(selectPreviousRow()), + QKeySequence(tr("Backspace"))); + prev_->setEnabled(false); + + menuAreas->addSeparator(); + + QAction *page = menuAreas->addAction(tr("Page"), + &dockPages_, SLOT(switchVisibility())); + page->setCheckable(true); + page->setChecked(true); + + QAction *region = menuAreas->addAction(tr("Region"), + &dockRegion_, SLOT(switchVisibility())); + region->setCheckable(true); + region->setChecked(true); + + QAction *xml = menuAreas->addAction(tr("Xml"), + &dockXml_, SLOT(switchVisibility())); + xml->setCheckable(true); + xml->setChecked(false); + + ui->menuBar->addAction(tr("&About"), this, SLOT(onAbout())); +} + +void MainWindow::setActionsEnabled(bool isSegmented) +{ + segment_->setEnabled(!isSegmented); + print_->setEnabled(isSegmented); + previewPrinting_->setEnabled(isSegmented); +} + +void MainWindow::disableActions() +{ + segment_->setEnabled(false); + print_->setEnabled(false); + previewPrinting_->setEnabled(false); + export_->setEnabled(false); +} + +void MainWindow::connectWidgets() +{ + // Each time the scene rect change (when a new picture is loaded), we fit the scene background rectangle in the view. + connect(&scene_, SIGNAL(sceneRectChanged(QRectF)), + &graphicsView_, SLOT(fitInView(QRectF))); + // When dragging with right click, disable selection. + connect(&graphicsView_, SIGNAL(beginDrag()), + &scene_, SLOT(disableSelection())); + connect(&graphicsView_, SIGNAL(endDrag()), + &scene_, SLOT(enableSelection())); + + // If double click on a picture of the page widget -> draw it on background scene. + connect(&pagesWidget_, SIGNAL(imageSelected(QString)), + this, SLOT(onFileChanged(QString))); + + // Connect the scene to the xml widget and vice versa. + connect(&scene_, SIGNAL(newSelection(QList<RegionItem*>)), + this, SLOT(onRegionSelection(QList<RegionItem*>))); + connect(xmlWidget_.view(), SIGNAL(select(QList<XmlItem*>)), + this, SLOT(onXmlSelect(QList<XmlItem*>))); + connect(xmlWidget_.view(), SIGNAL(unselect(QList<XmlItem*>)), + this, SLOT(onXmlUnselect(QList<XmlItem*>))); + connect(xmlWidget_.view(), SIGNAL(emptySelection()), + &scene_, SLOT(selectBase())); + connect(xmlWidget_.view(), SIGNAL(resetSelection()), + &scene_, SLOT(clearSelection())); + + // Connect the scene with the region widget. + connect(®ionWidget_, SIGNAL(checkStateChanged(GraphicsRegion::Id,bool)), &scene_, SLOT(setVisible(GraphicsRegion::Id,bool))); + + // Connect the xml widget with the region widget. + connect(®ionWidget_, SIGNAL(checkStateChanged(QString)), xmlWidget_.view(), SLOT(setFilterString(QString))); + + connect(&runner_, SIGNAL(progress()), progressDialog_, SLOT(run())); + connect(&runner_, SIGNAL(new_progress_max_value(int)), + progressDialog_, SLOT(setMaximum(int))); + connect(&runner_, SIGNAL(new_progress_label(QString)), + progressDialog_, SLOT(setLabelText(QString))); + connect(&runner_, SIGNAL(finished()), progressDialog_, SLOT(close())); + connect(&runner_, SIGNAL(xml_saved(QString)), + this, SLOT(onXmlSaved(QString))); +} + +void MainWindow::onOpen() +{ + QStringList + paths = QFileDialog::getOpenFileNames(this, "Open Image(s)", + QDir::homePath(), + "Images (*.png *.jpg *.ppm *.bmp)"); + setWindowTitle(tr("GScribo")); + + if(paths.count() > 0) + { + QStringList filenames = pagesWidget_.filenames(); + QString path; + + int counter = 0; + bool isContained; + // Check for an image not already added to the page widget. + do + { + path = paths[counter]; + counter++; + isContained = filenames.contains(path); + } while(isContained && counter < paths.count()); + + if(!isContained) + { + pagesWidget_.addPicture(path, QPixmap(path)); + + // If more than one file, we store it in the page widget. + for(int i = counter; i < paths.count(); i++) + { + // Check if the page widget contains the image. + if(!filenames.contains(paths[i])) + { + path = paths[i]; + pagesWidget_.addPicture(path, QPixmap(path)); + } + } + + pagesWidget_.setCurrentRow(0); + pagesWidget_.scrollToTop(); + } + + // Change current scene. + onFileChanged(path); + } +} + +void MainWindow::onSegment() +{ + QStringList filenames; + + filenames << scene_.backgroundPath(); + + // Run segmentation of page(s). + progressDialog_->reset(); + runner_.start_demat(filenames); +} + +void MainWindow::onPreviewPrint() +{ + QPrinter printer(QPrinter::HighResolution); + printer.setPaperSize(QPrinter::A4); + printer.setResolution(300); + + QPrintPreviewDialog preview(&printer, this); + connect(&preview, SIGNAL(paintRequested(QPrinter*)), + this, SLOT(printScene(QPrinter*))); + + preview.exec(); +} + +void MainWindow::onPrint() +{ + QPrinter printer(QPrinter::HighResolution); + printer.setPaperSize(QPrinter::A4); + printer.setResolution(300); + + QPrintDialog dialog(&printer, this); + dialog.setWindowTitle("Print Document"); + + if(dialog.exec() != QDialog::Accepted) + return; + + printScene(&printer); +} + +void MainWindow::printScene(QPrinter *printer) +{ + QPainter painter(printer); + QStyleOptionGraphicsItem options; + + scene_.backgroundPixmap()->paint(&painter, &options, 0); + + // Paint backwards items first. + printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::TextRegion), + &options); + printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::Image), + &options); + + for(int i = GraphicsRegion::Line; i < GraphicsRegion::Image; i++) + printItems(&painter, + scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), + &options); + + for(int i = GraphicsRegion::Noise; i <= GraphicsRegion::Meanline; i++) + printItems(&painter, + scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), + &options); +} + +void MainWindow::printItems(QPainter *painter, + const QList<QGraphicsItem *>& items, + QStyleOptionGraphicsItem *options) +{ + foreach(QGraphicsItem *child, items) + { + if(child->isVisible()) + { + QRect + viewport = scene_.backgroundPixmap()->mapRectFromItem(child, child->boundingRect()).toRect(); + painter->translate(abs(child->boundingRect().x() - viewport.x()), + abs(child->boundingRect().y() - viewport.y())); + child->paint(painter, options); + painter->resetTransform(); + } + } +} + +void MainWindow::onExportation() +{ + QMessageBox messageBox(this); + messageBox.setWindowTitle("Information"); + messageBox.setText("This feature is not available yet"); + messageBox.exec(); + return; + + QFileInfo fileInfo(scene_.backgroundPath()); + QString outputSuggestion = fileInfo.baseName() + ".pdf"; + QString output = QFileDialog::getSaveFileName(0, tr("Export Document As ..."), outputSuggestion, + tr("PDF (*.pdf);; HTML (*.html *.htm")); + + if(!output.isEmpty()) + { + progressDialog_->reset(); + runner_.start_export(scene_.backgroundPath(), xml_.filename(), output); + } +} + +void MainWindow::onXmlSaved(const QString& filename) +{ + xml_.load(filename); + xmlWidget_.changeView(xml_.xmlItem()); + scene_.setRoot(xml_.graphicsItem()); + + setActionsEnabled(true); + export_->setEnabled(xml_.recognized()); +} + +void MainWindow::onFileChanged(const QString& filename) +{ + // If it's not the current scene. + if(scene_.backgroundPath() != filename) + { + QString xmlPath = Xml::getPath(filename); + + if(filename.isEmpty()) + { + xmlPath = QString(); + disableActions(); + } + // Check if the xml file already exists. + else if(!QFile(xmlPath).exists()) + { + xmlPath = QString(); + setActionsEnabled(false); + } + else + setActionsEnabled(true); + + xml_.load(xmlPath); + scene_.changeScene(filename, xml_.graphicsItem()); + xmlWidget_.changeView(xml_.xmlItem()); + export_->setEnabled(xml_.recognized()); + updatePageBrowsing(); + } +} + +void MainWindow::onRegionSelection(QList<RegionItem *> regionItems) +{ + if(!regionItems.isEmpty()) + xmlWidget_.view()->displayOnly(toXmlItems(regionItems)); + else + { + xmlWidget_.view()->reset(); + xmlWidget_.view()->displayAll(); + xmlWidget_.view()->expandAll(); + } +} + +void MainWindow::onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select) +{ + QList<RegionItem *> regionItems = toRegionItems(xmlItems); + + if(!regionItems.isEmpty()) + { + if(select) + scene_.select(regionItems); + else + scene_.unselect(regionItems); + } +} + +QList<RegionItem *> MainWindow::toRegionItems(QList<XmlItem *> xmlItems) const +{ + QList<RegionItem *> regionItems; + XmlItem *child; + foreach(child, xmlItems) + { + if(child->regionItem()) + regionItems << child->regionItem(); + } + + return regionItems; +} + +QList<XmlItem *> MainWindow::toXmlItems(QList<RegionItem *> regionItems) const +{ + QList<XmlItem *> xmlItems; + RegionItem *child; + foreach(child, regionItems) + xmlItems << child->xmlItem(); + + return xmlItems; +} + +void MainWindow::onPreferences() +{ + preferencesDialog_->show(); +} + +void MainWindow::onAbout() +{ + aboutDialog_->show(); +} + +void MainWindow::onXmlSelect(QList<XmlItem *> xmlItems) +{ + onXmlChangeSelection(xmlItems, true); +} + +void MainWindow::onXmlUnselect(QList<XmlItem *> xmlItems) +{ + onXmlChangeSelection(xmlItems, false); +} + +void MainWindow::updatePageBrowsing() +{ + next_->setEnabled(pagesWidget_.haveNextRow()); + prev_->setEnabled(pagesWidget_.havePreviousRow()); +} diff --git a/scribo/demo/viewer/mainwindow.hh b/scribo/demo/viewer/mainwindow.hh new file mode 100644 index 0000000..527b612 --- /dev/null +++ b/scribo/demo/viewer/mainwindow.hh @@ -0,0 +1,130 @@ +// Copyright (C) 2013 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/
>. + +#ifndef MAINWINDOW_HH +# define MAINWINDOW_HH + +#include <QPrintPreviewDialog> +#include <QGraphicsView> +#include <QPrintDialog> +#include <QMainWindow> +#include <QHBoxLayout> +#include <QDockWidget> +#include <QFileDialog> +#include <QGroupBox> +#include <QPrinter> + +#include "Preferences/preferencesdialog.hh" +#include "Processing/progressdialog.hh" +#include "PagesWidget/pageswidget.hh" +#include "Rendering/graphicsview.hh" +#include "XmlWidget/xmlwidget.hh" +#include "Processing/runner.hh" +#include "Rendering/scene.hh" +#include "regionwidget.hh" +#include "aboutdialog.hh" +#include "dockwidget.hh" +#include "xml.hh" + +namespace Ui +{ + class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT; + +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + +protected: + void changeEvent(QEvent *e); + +private: + void initGraphicsRegion(); + void initDialogsWidget(); + void initPageWidget(); + void initRegionWidget(); + void initXmlWidget(); + void initMenuBar(); + void connectWidgets(); + + void setActionsEnabled(bool isSegmented); + void disableActions(); + + void updatePageBrowsing(); + + void printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options); + + Xml processTmpXml(const QString& filename) const; + QList<RegionItem *> toRegionItems(QList<XmlItem *> regionItems) const; + QList<XmlItem *> toXmlItems(QList<RegionItem *> xmlItems) const; + + Ui::MainWindow *ui; + + DockWidget dockRegion_; + DockWidget dockPages_; + DockWidget dockXml_; + + GraphicsView graphicsView_; + Scene scene_; + + PagesWidget pagesWidget_; + RegionWidget regionWidget_; + + AboutDialog *aboutDialog_; + ProgressDialog *progressDialog_; + PreferencesDialog *preferencesDialog_; + + XmlWidget xmlWidget_; + Xml xml_; + Runner runner_; + + QAction *segment_; + QAction *previewPrinting_; + QAction *print_; + QAction *export_; + + // Browse among documents. + QAction *next_; + QAction *prev_; + +public slots: + void printScene(QPrinter *printer); + +private slots: + void onOpen(); + void onSegment(); + void onPreviewPrint(); + void onPrint(); + void onExportation(); + void onPreferences(); + void onAbout(); + + void onXmlSaved(const QString& filename); + void onFileChanged(const QString& filename); + + void onRegionSelection(QList<RegionItem *> regionItems); + + void onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select); + void onXmlSelect(QList<XmlItem *> xmlItems); + void onXmlUnselect(QList<XmlItem *> xmlItems); +}; + + +#endif // MAINWINDOW_HH diff --git a/GScribo/mainwindow.ui b/scribo/demo/viewer/mainwindow.ui similarity index 100% rename from GScribo/mainwindow.ui rename to scribo/demo/viewer/mainwindow.ui diff --git a/scribo/demo/viewer/ocr_options.cc b/scribo/demo/viewer/ocr_options.cc deleted file mode 100644 index 0ff09d9..0000000 --- a/scribo/demo/viewer/ocr_options.cc +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#include "defs.hh" -#include "ocr_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - - -static const char *language[][2] = { - { "English", "eng" }, - { "French", "fra" }, - { 0, 0 } -}; - - -ocr_options::ocr_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - for (unsigned i = 0; language[i][0]; ++i) - ocr_language->insertItem(i, language[i][0]); - - load_config(); -} - -ocr_options::~ocr_options() -{ -} - - -int ocr_options::find_index(const QString& lang) -{ - for (unsigned i = 0; language[i][0]; ++i) - if (lang == language[i][1]) - return i; - return 0; -} - - -void ocr_options::load_config() -{ - config * const conf = config::get_instance(); - - enable_ocr->setChecked(conf->ocr_enabled()); - ocr_language->setCurrentIndex(find_index(conf->ocr_language())); -} - - -void ocr_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_ocr_enabled(enable_ocr->isChecked()); - conf->set_ocr_language(language[ocr_language->currentIndex()][1]); -} diff --git a/scribo/demo/viewer/ocr_options.hh b/scribo/demo/viewer/ocr_options.hh deleted file mode 100644 index 67ab4ef..0000000 --- a/scribo/demo/viewer/ocr_options.hh +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH - -# include <QtGui> -# include <ocr_options.ui.h> -# include "option_widget.hh" - -class ocr_options : public OptionWidget, private Ui::OcrOptions -{ - Q_OBJECT; - -public: - ocr_options(QWidget *parent = 0); - ~ocr_options(); - - void load_config(); - void save_config(); - -private: - int find_index(const QString& lang); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH diff --git a/scribo/demo/viewer/ocr_options.ui b/scribo/demo/viewer/ocr_options.ui deleted file mode 100644 index d001c64..0000000 --- a/scribo/demo/viewer/ocr_options.ui +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>OcrOptions</class> - <widget class="QWidget" name="OcrOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>366</width> - <height>112</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QGroupBox" name="enable_ocr"> - <property name="title"> - <string>Enable OCR</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="flat"> - <bool>true</bool> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Language</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QComboBox" name="ocr_language"/> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/option_widget.cc b/scribo/demo/viewer/option_widget.cc deleted file mode 100644 index 4557749..0000000 --- a/scribo/demo/viewer/option_widget.cc +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2010 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/
>. - -# include "option_widget.hh" - -OptionWidget::OptionWidget(QWidget * parent) - : QWidget(parent) -{ -} - -void OptionWidget::save_config() -{ -} - -void OptionWidget::load_config() -{ -} diff --git a/scribo/demo/viewer/option_widget.hh b/scribo/demo/viewer/option_widget.hh deleted file mode 100644 index 6b24e90..0000000 --- a/scribo/demo/viewer/option_widget.hh +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH - -#include <QWidget> - -struct OptionWidget : public QWidget -{ - OptionWidget(QWidget * parent); - - virtual void load_config(); - virtual void save_config(); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH diff --git a/scribo/demo/viewer/preferences_dialog.cc b/scribo/demo/viewer/preferences_dialog.cc deleted file mode 100644 index 1eb80a7..0000000 --- a/scribo/demo/viewer/preferences_dialog.cc +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "preferences_dialog.hh" -#include "general_options.hh" -#include "ocr_options.hh" -#include "preprocessing_options.hh" -#include "segmentation_options.hh" - - - -preferences_dialog::preferences_dialog(QWidget *parent) - : QDialog(parent) -{ - setupUi(this); - - // We may want to remove this useless object in the ui file. - delete widget; - - setAttribute(Qt::WA_DeleteOnClose); - - load_option_list(); - optionList->setCurrentRow(0); -} - -preferences_dialog::~preferences_dialog() -{ -} - - -void preferences_dialog::load_option_list() -{ - static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; - - int i; - for (i = 0; options[i]; ++i) - optionList->insertItem(i, options[i]); - - widgets_.fill(0, i); -} - -void preferences_dialog::on_optionList_currentRowChanged(int row) -{ - select_option_widget(row); -} - - -void preferences_dialog::select_option_widget(int row) -{ - if (row >= widgets_.size()) - { - qDebug() << "select_option_widget - Hu? Something wrong... Invalid row"; - return; - } - - if (!widgets_[row]) - { - QWidget *widget = 0; - - switch (row) - { - case 0: - widget = new general_options(this); - break; - - case 1: - widget = new preprocessing_options(this); - break; - - case 2: - widget = new segmentation_options(this); - break; - - case 3: - widget = new ocr_options(this); - break; - - default: - qDebug() << "select_option_widget - Hu? Something wrong..."; - } - - if (widget) - widgets_[row] = widget; - } - - if (horizontalLayout_2->count() == 2) - { - QWidget *current_widget = horizontalLayout_2->itemAt(1)->widget(); - horizontalLayout_2->removeWidget(current_widget); - current_widget->hide(); - } - - horizontalLayout_2->insertWidget(1, widgets_[row]); - widgets_[row]->show(); -} - - -void preferences_dialog::accept() -{ - for (int i = 0; i < widgets_.size(); ++i) - if (widgets_[i]) - { - static_cast<OptionWidget *>(widgets_[i])->save_config(); - delete widgets_[i]; - } - QDialog::accept(); -} - - -void preferences_dialog::reject() -{ - for (int i = 0; i < widgets_.size(); ++i) - delete widgets_[i]; - QDialog::reject(); -} diff --git a/scribo/demo/viewer/preferences_dialog.hh b/scribo/demo/viewer/preferences_dialog.hh deleted file mode 100644 index 0368bbe..0000000 --- a/scribo/demo/viewer/preferences_dialog.hh +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH -# define SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH - -# include <QtGui> -# include <preferences_dialog.ui.h> - -class preferences_dialog : public QDialog, private Ui::PreferencesDialog -{ - Q_OBJECT; - -public: - preferences_dialog(QWidget *parent = 0); - ~preferences_dialog(); - -private slots: - void on_optionList_currentRowChanged(int row); - virtual void accept(); - virtual void reject(); - -private: // Methods - void load_option_list(); - void select_option_widget(int row); - -private: // Attributes - QVector<QWidget *> widgets_; - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH diff --git a/scribo/demo/viewer/preferences_dialog.ui b/scribo/demo/viewer/preferences_dialog.ui deleted file mode 100644 index 1d40563..0000000 --- a/scribo/demo/viewer/preferences_dialog.ui +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PreferencesDialog</class> - <widget class="QDialog" name="PreferencesDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>668</width> - <height>418</height> - </rect> - </property> - <property name="windowTitle"> - <string>Preferences</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Preferences</span></p></body></html></string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QListWidget" name="optionList"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>200</width> - <height>16777215</height> - </size> - </property> - <property name="baseSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="QWidget" name="widget" native="true"/> - </item> - </layout> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>PreferencesDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>PreferencesDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/scribo/demo/viewer/preprocess.cc b/scribo/demo/viewer/preprocess.cc deleted file mode 100644 index fd9a48b..0000000 --- a/scribo/demo/viewer/preprocess.cc +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "preprocess.hh" - -void preprocess::on_progress() -{ - emit progress(); -} - - -void preprocess::on_new_progress_label(const char *label) -{ - QString lbl(label); - emit new_progress_label(label); -} diff --git a/scribo/demo/viewer/preprocess.hh b/scribo/demo/viewer/preprocess.hh deleted file mode 100644 index 4562cfb..0000000 --- a/scribo/demo/viewer/preprocess.hh +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREPROCESS_HH -# define SCRIBO_DEMO_VIEWER_PREPROCESS_HH - -# include <QtCore/QObject> -# include <mln/core/image/image2d.hh> -# include <mln/value/rgb8.hh> -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -struct preprocess - : public QObject, - public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > -{ - Q_OBJECT; - - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - -signals: - void new_progress_label(const QString& label); - void progress(); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESS_HH diff --git a/scribo/demo/viewer/preprocessing_options.cc b/scribo/demo/viewer/preprocessing_options.cc deleted file mode 100644 index 2d55fea..0000000 --- a/scribo/demo/viewer/preprocessing_options.cc +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "defs.hh" -#include "preprocessing_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -preprocessing_options::preprocessing_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - bin_algoCbox->insertItem(Convert, "Violent convert"); - bin_algoCbox->insertItem(Sauvola, "Local threshold"); - bin_algoCbox->insertItem(SauvolaMs, - "Local threshold multiscale"); - - load_config(); -} - -preprocessing_options::~preprocessing_options() -{ -} - - -void preprocessing_options::load_config() -{ - config * const conf = config::get_instance(); - - subsampleCb->setChecked(conf->preprocessing_subsample()); - remove_bgCb->setChecked(conf->preprocessing_remove_bg()); - deskewCb->setChecked(conf->preprocessing_deskew()); - remove_noiseCb->setChecked(conf->preprocessing_remove_noise()); - bin_algoCbox->setCurrentIndex(conf->preprocessing_bin_algo()); -} - - -void preprocessing_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_preprocessing_subsample(subsampleCb->isChecked()); - conf->set_preprocessing_remove_bg(remove_bgCb->isChecked()); - conf->set_preprocessing_deskew(deskewCb->isChecked()); - conf->set_preprocessing_remove_noise(remove_noiseCb->isChecked()); - conf->set_preprocessing_bin_algo(bin_algoCbox->currentIndex()); -} diff --git a/scribo/demo/viewer/preprocessing_options.hh b/scribo/demo/viewer/preprocessing_options.hh deleted file mode 100644 index c676880..0000000 --- a/scribo/demo/viewer/preprocessing_options.hh +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH - -# include <QtGui> -# include <preprocessing_options.ui.h> -# include "option_widget.hh" - -class preprocessing_options : public OptionWidget, private Ui::PreprocessingOptions -{ - Q_OBJECT; - -public: - preprocessing_options(QWidget *parent = 0); - ~preprocessing_options(); - - void load_config(); - void save_config(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH diff --git a/scribo/demo/viewer/preprocessing_options.ui b/scribo/demo/viewer/preprocessing_options.ui deleted file mode 100644 index 962cf49..0000000 --- a/scribo/demo/viewer/preprocessing_options.ui +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PreprocessingOptions</class> - <widget class="QWidget" name="PreprocessingOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>466</width> - <height>198</height> - </rect> - </property> - <property name="windowTitle"> - <string>Configure toolchain</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Binarization method:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="bin_algoCbox"/> - </item> - </layout> - </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="subsampleCb"> - <property name="text"> - <string>Run on subsampled image</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="remove_bgCb"> - <property name="text"> - <string>Remove background (slow)</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QCheckBox" name="deskewCb"> - <property name="text"> - <string>Deskew</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QCheckBox" name="remove_noiseCb"> - <property name="text"> - <string>Remove noise</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>48</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/process.cc b/scribo/demo/viewer/process.cc deleted file mode 100644 index 8fa5b9f..0000000 --- a/scribo/demo/viewer/process.cc +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "process.hh" - -process::process(const char *doc_filename) - : super_t(doc_filename) -{ - -} - -void process::on_progress() -{ - emit progress(); -} - - -void process::on_new_progress_label(const char *label) -{ - QString lbl(label); - emit new_progress_label(label); -} - - -void process::on_xml_saved() -{ - QString filename(output_file.c_str()); - emit xml_saved(filename); -} diff --git a/scribo/demo/viewer/process.hh b/scribo/demo/viewer/process.hh deleted file mode 100644 index 09ace43..0000000 --- a/scribo/demo/viewer/process.hh +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PROCESS_HH -# define SCRIBO_DEMO_VIEWER_PROCESS_HH - -# include <QtCore/QObject> -# include <mln/core/image/image2d.hh> -# include <scribo/toolchain/internal/content_in_doc_functor.hh> - -using namespace scribo::toolchain::internal; - -struct process - : public QObject, - public content_in_doc_functor<mln::image2d<bool> > -{ - Q_OBJECT; - typedef content_in_doc_functor<mln::image2d<bool> > super_t; - -public: - process(const char *doc_filename); - - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - virtual void on_xml_saved(); - -signals: - void new_progress_label(const QString& label); - void progress(); - void xml_saved(const QString& filename); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PROCESS_HH diff --git a/scribo/demo/viewer/region.hh b/scribo/demo/viewer/region.hh new file mode 100644 index 0000000..806d8b4 --- /dev/null +++ b/scribo/demo/viewer/region.hh @@ -0,0 +1,72 @@ +// Copyright (C) 2013 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/
>. + +#ifndef REGION_HH +# define REGION_HH + +#include <QColor> + +namespace GraphicsRegion +{ + // WARNING : The order is important. + enum Id + { + TextRegion, + Line, + + VerticalSeparator, + HorizontalSeparator, + WhiteSpaceSeparator, + + Image, + Noise, + Table, + Maths, + Graphic, + Chart, + + Baseline, + Meanline, + + Text, + Separators, + Miscellaneous, + Typology, + + None + }; + + struct Data + { + QColor color; + QString name; + GraphicsRegion::Id region; + GraphicsRegion::Id parent; + int zValue; + }; +} + +namespace Separator +{ + enum FindSeparator + { + Lines, + Whitespaces, + Both + }; +} + +#endif // REGION_HH diff --git a/scribo/demo/viewer/regionwidget.cc b/scribo/demo/viewer/regionwidget.cc new file mode 100644 index 0000000..a9553ca --- /dev/null +++ b/scribo/demo/viewer/regionwidget.cc @@ -0,0 +1,114 @@ +// Copyright (C) 2013 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/
>. + +#include "regionwidget.hh" + +RegionWidget::RegionWidget(QWidget *parent) : + QTreeWidget(parent) +{ + setHeaderHidden(true); + setSelectionMode(QAbstractItemView::NoSelection); + + addTopLevelItem(createRoot("Text", GraphicsRegion::Text, + GraphicsRegion::TextRegion, + GraphicsRegion::Line)); + addTopLevelItem(createRoot("Typological Lines", GraphicsRegion::Typology, + GraphicsRegion::Baseline, + GraphicsRegion::Meanline)); + addTopLevelItem(createRoot("Separators", GraphicsRegion::Separators, + GraphicsRegion::VerticalSeparator, + GraphicsRegion::WhiteSpaceSeparator)); + addTopLevelItem(createRoot("Miscellaneous", GraphicsRegion::Miscellaneous, + GraphicsRegion::Image, GraphicsRegion::Chart)); + + expandAll(); + + connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), + this, SLOT(checkStateChanged(QTreeWidgetItem*))); +} + +QTreeWidgetItem *RegionWidget::createRoot(const QString& text, + const GraphicsRegion::Id& region, + const GraphicsRegion::Id& begin, + const GraphicsRegion::Id& end) +{ + // Create root. + QTreeWidgetItem *rootItem = createItem(text, region); + + // Fill root with corresponding childs. + for(int region_ = begin; region_ <= end; region_++) + fillRoot(rootItem, static_cast<GraphicsRegion::Id>(region_)); + + return rootItem; +} + +QTreeWidgetItem *RegionWidget::createItem(const QString& text, + const GraphicsRegion::Id& region, + const QColor& color) +{ + QTreeWidgetItem *item = new QTreeWidgetItem; + item->setText(0, text); + item->setCheckState(0, Qt::Checked); + item->setBackgroundColor(0, color); + // Store graphical id in the object to recognize it afterward. + item->setData(0, Qt::UserRole, static_cast<int>(region)); + + return item; +} + +void RegionWidget::checkStateChanged(QTreeWidgetItem *item) +{ + // If it's a root item, go to childs. + if(item->childCount() != 0) + { + QTreeWidgetItem *child; + for(int i = 0; i < item->childCount(); i++) + { + child = item->child(i); + child->setCheckState(0, item->checkState(0)); + } + } + else + { + if(item->checkState(0) == Qt::Checked) + { + filterString_.append('|' + item->text(0)); + emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), true); + } + else + { + filterString_.remove('|' + item->text(0), Qt::CaseSensitive); + emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), false); + } + + //emit checkStateChanged(filterString_); + } +} + + +inline void RegionWidget::fillRoot(QTreeWidgetItem *rootItem, + const GraphicsRegion::Id& region) +{ + GraphicsRegion::Data data = Xml::dataFromRegion(region); + filterString_.append('|' + data.name); + rootItem->addChild(createItem(data.name, region, data.color)); +} + + +inline QString RegionWidget::filterString() const +{ + return filterString_.right(filterString_.count()-1); +} diff --git a/scribo/demo/viewer/regionwidget.hh b/scribo/demo/viewer/regionwidget.hh new file mode 100644 index 0000000..3899ffc --- /dev/null +++ b/scribo/demo/viewer/regionwidget.hh @@ -0,0 +1,58 @@ +// Copyright (C) 2013 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/
>. + +#ifndef REGIONWIDGET_HH +# define REGIONWIDGET_HH + +#include <QTreeWidget> +#include <QLabel> + +#include "xml.hh" + +class RegionWidget : + public QTreeWidget +{ + Q_OBJECT; + +public: + explicit RegionWidget(QWidget *parent = 0); + + QString filterString() const; + +private: + QTreeWidgetItem *createRoot(const QString& text, + const GraphicsRegion::Id& region, + const GraphicsRegion::Id& begin, + const GraphicsRegion::Id& end); + QTreeWidgetItem *createItem(const QString& text, + const GraphicsRegion::Id& region, + const QColor& color = QColor::fromRgb(255, 255, 255)); + void fillRoot(QTreeWidgetItem *rootItem, + const GraphicsRegion::Id& region); + + QString filterString_; + +private slots: + void checkStateChanged(QTreeWidgetItem *item); + +signals: + void checkStateChanged(const GraphicsRegion::Id& region, + bool checked); + void checkStateChanged(const QString& filterString); +}; + + +#endif // REGIONWIDGET_HH diff --git a/scribo/demo/viewer/runner.cc b/scribo/demo/viewer/runner.cc deleted file mode 100644 index da2f3bf..0000000 --- a/scribo/demo/viewer/runner.cc +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "runner.hh" - -#include <mln/core/image/image2d.hh> -#include <mln/value/rgb8.hh> -#include <mln/io/magick/load.hh> - -#include "demodir.hh" - -#include "process.hh" -#include "preprocess.hh" -#include "config.hh" -#include "defs.hh" - - - -using namespace mln; -using namespace scribo::toolchain::internal; - -static -QString get_pathto(const QString& file, - const QString localdirsuffix = QString()) -{ - QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); - if (f.exists()) - return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; - - f.setFileName(SCRIBO_PREFIX_LIBEXECDIR "/" + file); - if (f.exists()) - return SCRIBO_PREFIX_LIBEXECDIR; - - qDebug() << "FATAL ERROR: Can't locate file: " + file; - - return ""; -} - - -runner::runner(QObject *parent) - : QThread(parent) -{ - moveToThread(this); -} - - -void runner::run() -{ - - switch(mode_) - { - default: - case Demat: - { - image2d<value::rgb8> ima; - io::magick::load(ima, args_.at(0).toUtf8().constData()); - - image2d<bool> bin_ima = preprocess(ima); - process(ima, bin_ima); - } - break; - - case Export: - export_as(); - break; - } - - emit finished(); - qDebug() << "Done."; -} - - -void runner::stop() -{ - terminate(); -} - - - -// Demat related stuff - -void runner::start_demat(const QString& filename) -{ - args_.clear(); - args_ << filename; - mode_ = Demat; - - QThread::start(); -} - - -image2d<bool> -runner::preprocess(const image2d<value::rgb8>& ima) -{ - emit new_step("Preprocessing"); - - ::preprocess f; - - // Load config. - config * const conf = config::get_instance(); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(new_progress_label(const QString&)), - this, SIGNAL(new_progress_label(const QString&))); - - f.enable_subsample = conf->preprocessing_subsample(); - f.enable_fg_extraction = conf->preprocessing_remove_bg(); - f.enable_deskew = conf->preprocessing_deskew(); - f.enable_denoising = conf->preprocessing_remove_noise(); - - f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessing_bin_algo()); - - emit new_progress_max_value(f.nsteps()); - - // Perform preprocessing. - f(ima); - - qDebug() << "Preprocess Done."; - return f.output; -} - - -void runner::process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima) -{ - emit new_step("Page segmentation"); - - ::process f(args_.at(0).toUtf8().constData()); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(new_progress_label(const QString&)), - this, SIGNAL(new_progress_label(const QString&))); - connect(&f, SIGNAL(xml_saved(const QString&)), - this, SIGNAL(xml_saved(const QString&))); - - // Load config. - config * const conf = config::get_instance(); - - defs::FindSeparators - find_seps = static_cast<defs::FindSeparators>(conf->segmentation_find_seps()); - f.enable_line_seps = (find_seps == defs::Lines - || find_seps == defs::LinesAndWhitespaces); - f.enable_whitespace_seps = (find_seps == defs::Whitespaces - || find_seps == defs::LinesAndWhitespaces); - f.enable_ocr = conf->ocr_enabled(); - f.ocr_language = conf->ocr_language().toAscii().data(); - f.xml_format = scribo::io::xml::PageExtended; - - - f.save_doc_as_xml = true; - QFileInfo file(args_.at(0)); - QString output_dir = QDir::tempPath(); - if (conf->general_save_xml_enabled()) - { - if (conf->general_save_xml_same_dir()) - output_dir = file.absolutePath(); - else if (conf->general_save_xml_custom_dir()) - output_dir = conf->general_save_xml_custom_dir_path(); - else - qDebug() << "runner::progress - Invalid xml saving option!"; - - QDir dir(output_dir); - if (!dir.exists() && !dir.mkpath(output_dir)) - output_dir = QDir::tempPath(); - } - f.output_file = (output_dir + "/" + file.baseName() + "_gui.xml").toUtf8().constData(); - - emit new_progress_max_value(f.nsteps()); - - // Perform text detection. - f(original_ima, processed_ima); - - qDebug() << "Process Done."; -} - - - -// Export related stuff - -void runner::start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile) -{ - args_.clear(); - args_ << imgfile << xmlfile << outfile; - mode_ = Export; - - QThread::start(); -} - - -void runner::export_as() -{ - emit new_step("Exporting document..."); - emit new_progress_max_value(2); - - // Checking output format - QFileInfo f(args_.at(2)); - - QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); - - if (pathto_xml2doc.isEmpty()) - { - QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); - return; - } - - emit progress(); - - int rvalue = 0; - if (f.suffix() == "pdf") - { - emit new_step("Exporting as PDF..."); - rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else if (f.suffix() == "html" || f.suffix() == "htm") - { - emit new_step("Exporting as HTML..."); - rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else - QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); - - if (rvalue != 0) - QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); -} diff --git a/scribo/demo/viewer/runner.hh b/scribo/demo/viewer/runner.hh deleted file mode 100644 index 176dcd8..0000000 --- a/scribo/demo/viewer/runner.hh +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_RUNNER_HH -# define SCRIBO_DEMO_VIEWER_RUNNER_HH - -# include <QtGui> - -# include <mln/core/image/image2d.hh> -# include <mln/value/rgb8.hh> - -using namespace mln; - -enum RunMode -{ - Demat, - Export -}; - -class runner : public QThread -{ - Q_OBJECT; - -public: - runner(QObject *parent = 0); - - void start_demat(const QString& filename); - void start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile); - -public slots: - void stop(); - -signals: - void new_step(const QString& step_name); - void new_progress_max_value(int i); - void new_progress_label(const QString& msg); - void xml_saved(const QString& filename); - void progress(); - void finished(); - -private: // members - image2d<bool> preprocess(const image2d<value::rgb8>& ima); - void process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima); - - void export_as(); - - virtual void run(); - - template <typename V> - unsigned find_best_scale(const mln::image2d<V>& ima); - -private: // attributes - QStringList args_; - RunMode mode_; -}; - - -#endif // ! SCRIBO_DEMO_VIEWER_RUNNER_HH diff --git a/scribo/demo/viewer/segmentation_options.cc b/scribo/demo/viewer/segmentation_options.cc deleted file mode 100644 index c120879..0000000 --- a/scribo/demo/viewer/segmentation_options.cc +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#include "defs.hh" -#include "segmentation_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -segmentation_options::segmentation_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - find_sepsCbox->insertItem(defs::Lines, "Lines"); - find_sepsCbox->insertItem(defs::Whitespaces, "Whitespaces"); - find_sepsCbox->insertItem(defs::LinesAndWhitespaces, "Lines and whitespaces"); - - load_config(); -} - -segmentation_options::~segmentation_options() -{ -} - - -void segmentation_options::load_config() -{ - config * const conf = config::get_instance(); - - find_sepsCbox->setCurrentIndex(conf->segmentation_find_seps()); -} - - -void segmentation_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_segmentation_find_seps(find_sepsCbox->currentIndex()); -} diff --git a/scribo/demo/viewer/segmentation_options.hh b/scribo/demo/viewer/segmentation_options.hh deleted file mode 100644 index bdf65f9..0000000 --- a/scribo/demo/viewer/segmentation_options.hh +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH - -# include <QtGui> -# include <segmentation_options.ui.h> -# include "option_widget.hh" - -class segmentation_options : public OptionWidget, private Ui::SegmentationOptions -{ - Q_OBJECT; - -public: - segmentation_options(QWidget *parent = 0); - ~segmentation_options(); - - void load_config(); - void save_config(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH diff --git a/scribo/demo/viewer/segmentation_options.ui b/scribo/demo/viewer/segmentation_options.ui deleted file mode 100644 index 485e448..0000000 --- a/scribo/demo/viewer/segmentation_options.ui +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>SegmentationOptions</class> - <widget class="QWidget" name="SegmentationOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Find separators</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="find_sepsCbox"> - <property name="editable"> - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </item> - <item row="1" column="0"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>258</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/step_widget.cc b/scribo/demo/viewer/step_widget.cc deleted file mode 100644 index 19b5d0f..0000000 --- a/scribo/demo/viewer/step_widget.cc +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright (C) 2010 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/
>. - -# include "step_widget.hh" -# include "config.hh" - -StepWidget::StepWidget() - : view_(new QListWidget()), - step_(QString::Null()) -{ - QLabel* title = new QLabel(tr("Steps")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - - layout->addWidget(title); - layout->addWidget(view_); - - view_->setSortingEnabled(true); - - setLayout(layout); - - connect(view_, SIGNAL(itemActivated(QListWidgetItem*)), - this, SLOT(activate(QListWidgetItem*))); - - connect(this, SIGNAL(activated(QListWidgetItem*)), - this, SLOT(activate(QListWidgetItem*))); - -} - -StepWidget::~StepWidget() -{ -} - - -void StepWidget::activate(QListWidgetItem* item) -{ - QString key, value; - - StepQMap::iterator iter = map_.find(item->text()); - - if (iter != map_.end()) - { - view_->setCurrentItem(item); - step_ = item->text(); - key = iter.key(); - value = iter.value(); - - qDebug() << "Loading " << value; - emit load_xml(value); - } - else - qDebug() << "Step not found!"; - - emit step_selected(view_->count()); -} - - -void StepWidget::fill_steps(QString file, bool step, bool container) -{ - view_->clear(); - map_.clear(); - - if (container) - { - emit change_base(true); - // emit load_image(file, true); - emit load_xml(file); - } - else - { - emit change_base(false); - // image is loaded once - emit load_image(file, false); - - - QFileInfo f(file); - file_with_no_ext_ = f.baseName(); - - QStringList dirlist; - dirlist << f.absolutePath() << QDir::tempPath(); - - // Set directories to look at according to settings. - config * const conf = config::get_instance(); - if (conf->general_save_xml_custom_dir()) - dirlist << conf->general_save_xml_custom_dir_path(); - - foreach(QString path, dirlist) - { - QDir dir(path); - - if (dir.isReadable()) - { - QStringList filter; - filter << "*.xml"; - QFileInfoList xml_list = dir.entryInfoList(filter); - for (int i = 0; i < xml_list.size(); ++i) - insert_new_entry(xml_list.at(i)); - } - } - - if ( (step && step_ != QString::Null())) - { - QList<QListWidgetItem*> list = view_->findItems(step_, Qt::MatchContains); - - if (!list.isEmpty()) - emit activated(list.first()); - } - else - { - step_ = QString::Null(); - if (view_->count()) - emit activated(view_->item(0)); - } - } -} - - -QListWidgetItem* StepWidget::insert_new_entry(const QFileInfo& file) -{ - QListWidgetItem *item = 0; - - if (file.fileName().startsWith(file_with_no_ext_)) - { - QString key = file.baseName(); - key.replace(file_with_no_ext_ + QString("_"), QString("")); - key.replace(QRegExp("^step([0-9])"), "Step \\1"); - key.replace(QRegExp("^Step ([0-9])_"), "Step \\1 : "); - key.replace("_", " "); - - bool exists = (map_.find(key) != map_.end()); - - map_.insertMulti(key, file.absoluteFilePath()); - - if (!exists) - { - item = new QListWidgetItem(key); - view_->addItem(item); - } - else - item = view_->findItems(key, Qt::MatchCaseSensitive).at(0); - } - - return item; -} - - -QListWidgetItem* StepWidget::add_element(const QString& element) -{ - QListWidgetItem *item = new QListWidgetItem(element); - view_->addItem(item); - - return item; -} - -QString StepWidget::current() const -{ - return map_.value(step_); -} - - - - - - diff --git a/scribo/demo/viewer/step_widget.hh b/scribo/demo/viewer/step_widget.hh deleted file mode 100644 index f648ede..0000000 --- a/scribo/demo/viewer/step_widget.hh +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2010 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/
>. - - -#ifndef SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ -# define SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ - -# include <QtGui> - -typedef QMap<QString, QString> StepQMap; - -class StepWidget - : public QWidget -{ - Q_OBJECT - -public: - StepWidget(); - ~StepWidget(); - QListWidgetItem* add_element(const QString& element); - - QString current() const; - -signals: - void load_image(QString, bool); - void load_xml(QString); - void activated(QListWidgetItem*); - void change_base(bool); - void step_selected(bool); - -public slots: - void fill_steps(QString file, bool step = false, bool container = false); - void activate(QListWidgetItem* item); - QListWidgetItem* insert_new_entry(const QFileInfo& file); - -private: - QListWidget* view_; - StepQMap map_; - QString step_; - QString file_with_no_ext_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ diff --git a/scribo/demo/viewer/variantpointer.cc b/scribo/demo/viewer/variantpointer.cc new file mode 100644 index 0000000..07213aa --- /dev/null +++ b/scribo/demo/viewer/variantpointer.cc @@ -0,0 +1,39 @@ +// Copyright (C) 2013 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/
>. + +# include <variantpointer.hh> + + +template<typename T> +VariantPointer<T>::VariantPointer() +{ +} + + +template<typename T> +QVariant +VariantPointer<T>::toQVariant(T *pointer) +{ + return QVariant::fromValue(static_cast<void *>(pointer)); +} + + +template<typename T> +T * +VariantPointer<T>::fromQVariant(const QVariant& variant) +{ + return static_cast<T *>(variant.value<void *>()); +} diff --git a/scribo/demo/viewer/variantpointer.hh b/scribo/demo/viewer/variantpointer.hh new file mode 100644 index 0000000..e8aab4b --- /dev/null +++ b/scribo/demo/viewer/variantpointer.hh @@ -0,0 +1,33 @@ +// Copyright (C) 2013 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/
>. + +#ifndef VARIANTPOINTER_HH +# define VARIANTPOINTER_HH + +#include <QVariant> + +template<typename T> +class VariantPointer +{ +public: + static QVariant toQVariant(T *pointer); + static T *fromQVariant(const QVariant& variant); + +private: + VariantPointer(); +}; + +#endif // VARIANTPOINTER_HH diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc deleted file mode 100644 index 866761d..0000000 --- a/scribo/demo/viewer/viewer.cc +++ /dev/null @@ -1,1021 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - - -#include <iostream> -#include <limits.h> - -#include "viewer.hh" -#include "key_widget.hh" -#include "browser_widget.hh" -#include "xml_widget.hh" -#include "step_widget.hh" -#include "image_scene.hh" -#include "image_view.hh" -#include "image_region.hh" -#include "help_dialog.hh" -#include "preferences_dialog.hh" -#include "runner.hh" -#include "config.hh" - -#include "common.hh" - -Viewer::Viewer(int &argc, char** argv) - : app_ (new QApplication(argc, argv)), - win_ (new QMainWindow()), - image_(0), - scene_(new ImageScene()), - files_(new QDirModel()), - doc_layout_(0), - key_map_(region::RegionIdCount), - no_cache_(false), - extended_mode_(false), - xml_file_(QString::Null()), - base64_(false), - text_(true), - use_image_(true), - pdialog_(win_) -{ - // Key map - // -------- - - key_map_[region::Text] = qMakePair(tr("Text Region"), QColor(0, 200, 0)); - - // Extension - key_map_[region::Line] = qMakePair(tr("Text line"), QColor(255, 0, 0)); - - key_map_[region::Image] = qMakePair(tr("Image"), QColor(255, 120, 0)); - key_map_[region::Noise] = qMakePair(tr("Noise"), QColor(43, 39, 128)); - key_map_[region::Table] = qMakePair(tr("Table"), QColor(220, 246, 0)); - key_map_[region::LineDrawing] = qMakePair(tr("LineDrawing"), - QColor(255, 198, 0)); - key_map_[region::Graphic] = qMakePair(tr("Graphic"), QColor(255, 0, 144)); - key_map_[region::Chart] = qMakePair(tr("Chart"), QColor(0, 204, 255)); - key_map_[region::Maths] = qMakePair(tr("Maths"), QColor(170, 0, 255)); - - // Extension - key_map_[region::HorizontalSeparator] = qMakePair(tr("HorizontalSeparator"), QColor(0, 0, 255)); - key_map_[region::VerticalSeparator] = qMakePair(tr("VerticalSeparator"), QColor(0, 0, 255)); - key_map_[region::WhitespaceSeparator] = qMakePair(tr("Whitespace Separator"), QColor(0, 0, 128)); - - // Extension - key_map_[region::Baseline] = qMakePair(tr("Baseline"), QColor(128, 0, 255)); - key_map_[region::Meanline] = qMakePair(tr("Meanline"), QColor(128, 0, 255)); - - - - // Region ids - // ---------- - - region_ids_["TextRegion"] = region::Text; - - // Extension - region_ids_["Line"] = region::Line; - - region_ids_["ImageRegion"] = region::Image; - region_ids_["NoiseRegion"] = region::Noise; - region_ids_["TableRegion"] = region::Table; - region_ids_["Line_drawingRegion"] = region::LineDrawing; - region_ids_["GraphicRegion"] = region::Graphic; - region_ids_["ChartRegion"] = region::Chart; - region_ids_["MathsRegion"] = region::Maths; - - // Extension - region_ids_["VerticalSeparatorRegion"] = region::VerticalSeparator; - region_ids_["HorizontalSeparatorRegion"] = region::HorizontalSeparator; - region_ids_["WhitespaceSeparatorRegion"] = region::WhitespaceSeparator; - - - - win_->resize(1152, 864); - win_->statusBar(); - - QMenu* file_menu = win_->menuBar()->addMenu(tr("File")); - QMenu* option_menu = win_->menuBar()->addMenu(tr("Options")); - QMenu* view_menu = win_->menuBar()->addMenu(tr("View")); - QMenu* help_menu = win_->menuBar()->addMenu(tr("Help")); - - - // File menu - - QAction *doc_seg_action = create_action("Segment document", file_menu, - "Segment document", "Ctrl+S"); - connect(doc_seg_action, SIGNAL(triggered()), - this, SLOT(run_process())); - file_menu->addAction(doc_seg_action); - - file_menu->addSeparator(); - - export_action_ = create_action("Export as...", file_menu, - "Export as...", "Shift+Ctrl+S"); - connect(export_action_, SIGNAL(triggered()), - this, SLOT(export_as())); - file_menu->addAction(export_action_); - export_action_->setEnabled(false); - - file_menu->addSeparator(); - - QAction *preview_print_action = create_action("Printing preview", file_menu, - "Printint preview", "Ctrl+P"); - connect(preview_print_action, SIGNAL(triggered()), - this, SLOT(preview_print())); - file_menu->addAction(preview_print_action); - preview_print_action->setEnabled(false); - - - QAction *print_action = create_action("Print", file_menu, - "Print", "Ctrl+P"); - connect(print_action, SIGNAL(triggered()), - this, SLOT(print())); - file_menu->addAction(print_action); - print_action->setEnabled(false); - - file_menu->addSeparator(); - - - QAction* quit_action = create_action("Quit", file_menu, - "Exit the program.", "Ctrl+q"); - connect(quit_action, SIGNAL(triggered()), - app_, SLOT(quit())); - file_menu->addAction(quit_action); - - // Option menu - - QAction* preferences_action_ = create_action("Preferences", option_menu, - "Preferences", "Ctrl+Alt+P"); - preferences_action_->setCheckable(false); - connect(preferences_action_, SIGNAL(triggered(bool)), - this, SLOT(on_preferences())); - option_menu->addAction(preferences_action_); - - - // View menu - - outline_action_ = create_action("Draw outline", view_menu, - "Draw region outlines.", "Ctrl+o"); - outline_action_->setCheckable(true); - outline_action_->setChecked(true); - connect(outline_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setOutline(bool))); - view_menu->addAction(outline_action_); - - precise_action_ = create_action("Precise outline", view_menu, - "1px outline relative to the image " - "(1px relative to the view if off).", - "Shift+Ctrl+p"); - precise_action_->setCheckable(true); - precise_action_->setChecked(false); - connect(precise_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setPrecise(bool))); - view_menu->addAction(precise_action_); - - fill_action_ = create_action("Fill regions", view_menu, - "Color the inside of regions.", "Ctrl+f"); - fill_action_->setCheckable(true); - fill_action_->setChecked(true); - connect(fill_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setFill(bool))); - view_menu->addAction(fill_action_); - - QAction* cache_action = create_action("Disable cache", view_menu, - "Disable the image cache (useful for" - " large images).", "Ctrl+c"); - cache_action->setCheckable(true); - cache_action->setChecked(false); - connect(cache_action, SIGNAL(toggled(bool)), - this, SLOT(useCache(bool))); - view_menu->addAction(cache_action); - - - QAction* extended_action = create_action("Extended mode", view_menu, - "If enabled, some features " - "not supported by ICDAR" - " are added such as text regions" - "or text lines", "Ctrl+e"); - extended_action->setCheckable(true); - extended_action->setChecked(false); - connect(extended_action, SIGNAL(toggled(bool)), - this, SLOT(useExtended(bool))); - view_menu->addAction(extended_action); - - QAction* show_image_action = create_action("Show pictures", view_menu, - "Display pictures on the scene or not", - "Ctrl+i"); - show_image_action->setCheckable(true); - show_image_action->setChecked(true); - connect(show_image_action, SIGNAL(toggled(bool)), - this, SLOT(useImage(bool))); - view_menu->addAction(show_image_action); - - QAction* show_text_action = create_action("Show text", view_menu, - "Show detected text inside boxes.", - "Ctrl+t"); - show_text_action->setCheckable(true); - show_text_action->setChecked(true); - connect(show_text_action, SIGNAL(toggled(bool)), - this, SLOT(useText(bool))); - view_menu->addAction(show_text_action); - - key_wgt_ = new KeyWidget(key_map_); - QAction *show_region_action = create_action("Show regions", view_menu, - "Display regions that are present in" - " the XML file.", - "Ctrl+r"); - show_region_action->setCheckable(true); - show_region_action->setChecked(true); - connect(show_region_action, SIGNAL(toggled(bool)), - key_wgt_, SLOT(setAll(bool))); - view_menu->addAction(show_region_action); - - // Help menu - - QAction* about_action = create_action("About", help_menu, - "About this program", - "Ctrl+h"); - connect(about_action, SIGNAL(triggered()), - this, SLOT(help())); - help_menu->addAction(about_action); - - // Layout - - QSplitter* h_splitter = new QSplitter(); - QSplitter* v_splitter = new QSplitter(Qt::Vertical); - QSplitter* v_splitter2 = new QSplitter(Qt::Vertical); - - step_widget_ = new StepWidget(); - XmlWidget* xml_wgt = new XmlWidget(); - browser_wgt_ = new BrowserWidget(files_, argc != 2 ? QString() : argv[1]); - image_wgt_ = new ImageWidget(scene_); - - connect(step_widget_, SIGNAL(step_selected(bool)), - export_action_, SLOT(setEnabled(bool))); - connect(step_widget_, SIGNAL(step_selected(bool)), - print_action, SLOT(setEnabled(bool))); - connect(step_widget_, SIGNAL(step_selected(bool)), - preview_print_action, SLOT(setEnabled(bool))); - - scene_->setBackgroundBrush(scene_->palette().window()); - - v_splitter->addWidget(step_widget_); - v_splitter->addWidget(key_wgt_); - v_splitter->addWidget(browser_wgt_); - - v_splitter2->addWidget(image_wgt_); - v_splitter2->addWidget(xml_wgt); - - h_splitter->addWidget(v_splitter); - h_splitter->addWidget(v_splitter2); - - win_->setCentralWidget(h_splitter); - - QList<int> v_sizes; - v_sizes << 200 << 250 << 350; - v_splitter->setSizes(v_sizes); - - QList<int> v_sizes2; - v_sizes2 << 725 << 175; - v_splitter2->setSizes(v_sizes2); - - QList<int> h_sizes; - h_sizes << 200 << 900; - h_splitter->setSizes(h_sizes); - - connect(browser_wgt_, SIGNAL(activated(QString, bool, bool)), - step_widget_, SLOT(fill_steps(QString, bool, bool))); - - connect(step_widget_, SIGNAL(change_base(bool)), - this, SLOT(change_base(bool))); - connect(step_widget_, SIGNAL(load_image(QString, bool)), - this, SLOT(load(QString, bool))); - connect(step_widget_, SIGNAL(load_xml(QString)), - this, SLOT(load_xml(QString))); - - connect(this, SIGNAL(mode_changed(bool)), - key_wgt_, SLOT(change_mode(bool))); - connect(this, SIGNAL(updated()), - image_wgt_, SLOT(update())); - connect(this, SIGNAL(fill_xml(QString)), - xml_wgt, SLOT(fill_widget(QString))); - - connect(key_wgt_, SIGNAL(updated(int, bool)), - this, SIGNAL(key_updated(int, bool))); - - connect(scene_, SIGNAL(selected(QString, QString)), - xml_wgt, SLOT(select(QString, QString))); - connect(scene_, SIGNAL(deselected()), - xml_wgt, SLOT(deselect())); - - connect(image_wgt_, SIGNAL(scaleUpdated(qreal)), - this, SLOT(maybeChangeCacheMode(qreal))); - - - // Progress dialog and process runner. - pdialog_.setModal(true); - pdialog_.setAutoClose(false); - pdialog_.setCancelButton(0); - connect(&runner_, SIGNAL(finished()), &pdialog_, SLOT(close())); - - connect(&runner_, SIGNAL(new_step(const QString&)), - &pdialog_, SLOT(setWindowTitle(const QString&))); - connect(&runner_, SIGNAL(new_progress_max_value(int)), - &pdialog_, SLOT(setMaximum(int))); - connect(&runner_, SIGNAL(new_progress_label(const QString&)), - &pdialog_, SLOT(setLabelText(const QString&))); - connect(&runner_, SIGNAL(progress()), - this, SLOT(run_progress())); - connect(&runner_, SIGNAL(xml_saved(const QString&)), - this, SLOT(on_xml_saved(const QString&))); - - extended_action->setChecked(true); -} - - -Viewer::~Viewer() -{ - // Remove temporary xml files. - foreach(QString file, tmp_files_to_remove_) - QFile::remove(file); -} - -void -Viewer::add_text(QDomNode line) -{ - - int a_height = line.toElement().attribute("aHeight", "0").toInt(); - int d_height = line.toElement().attribute("dHeight", "0").toInt(); - int x_height = line.toElement().attribute("xHeight", "0").toInt(); - - if (d_height < 0) - d_height = -d_height; - - if ( (a_height - x_height) < (d_height)) - a_height = x_height + d_height; - - if ( (a_height - x_height) > (d_height)) - d_height = a_height - x_height; - - QDomNode coords = line.firstChild(); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - { - qDebug() << "Warning : textline without coordinates..."; - return; - } - - QDomNode point = coords.firstChild(); - - int x_min = INT_MAX; - int y_min = INT_MAX; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - if (x < x_min) - x_min = x; - - if (y < y_min) - y_min = y; - - point = point.nextSibling(); - } - - QString text = line.toElement().attribute("text", ""); - QFont font("Times"); - font.setPixelSize(a_height + d_height); - QGraphicsTextItem* text_item = scene_->addText(text, font); - text_item->setPos(x_min, y_min); - text_item->setTextInteractionFlags(Qt::TextSelectableByMouse); - text_item->setZValue(5); - text_vector_ << text_item; - if (!text_) - scene_->removeItem(text_item); - -} - -void -Viewer::add_region(QDomNode father, QString attr_id) -{ - QDomNode coords = father.firstChild(); - QString name = father.toElement().tagName(); - region::RegionId id = static_cast<region::RegionId>(region_ids_[name]); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - { - qDebug() << "Warning : add_region - region without coordinates"; - return; - } - - QDomNode point = coords.firstChild(); - QVector<QPoint> points; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - points << QPoint(x, y); - point = point.nextSibling(); - } - - ImageRegion* r = new ImageRegion(id, - key_map_[id].first, - key_map_[id].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(id)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); -} - - -void -Viewer::add_typo_lines(QDomNode father, QString attr_id) -{ - // Retrieve typographical information - int baseline = father.toElement().attribute("baseline").toInt(); - int meanline = father.toElement().attribute("meanline").toInt(); - - QRect bbox; - - // Looking for bbox coordinates. - { - QDomNode coords = father.firstChild(); - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - return; - - - QDomNode point = coords.firstChild(); - QVector<QPoint> points; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - points << QPoint(x, y); - point = point.nextSibling(); - } - - QPolygon polygon(points); - bbox = polygon.boundingRect(); - } - - // Creating blocks - - // Baseline - { - QVector<QPoint> points; - points.append(QPoint(bbox.topLeft().x(), baseline)); - points.append(QPoint(bbox.topRight().x(), baseline)); - - ImageRegion* r = new ImageRegion(region::Baseline, - key_map_[region::Baseline].first, - key_map_[region::Baseline].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(region::Baseline)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); - } - - // Meanline - { - QVector<QPoint> points; - points.append(QPoint(bbox.topLeft().x(), meanline)); - points.append(QPoint(bbox.topRight().x(), meanline)); - - ImageRegion* r = new ImageRegion(region::Meanline, - key_map_[region::Meanline].first, - key_map_[region::Meanline].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(region::Meanline)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); - } -} - - -void -Viewer::load_xml(QString filename) -{ - app_->setOverrideCursor(QCursor(Qt::WaitCursor)); - emit fill_xml(filename); - - if (image_ && image_->scene() && image_->scene() == scene_) - scene_->removeItem(image_); - - text_vector_.clear(); - image_vector_.clear(); - scene_->clear(); - - if (!base64_ && use_image_ && image_) - scene_->addItem(image_); - - scene_->update(); - - xml_file_ = filename; - QFile f_in(xml_file_); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - QDomElement root = doc.documentElement(); - QDomNode page = root.firstChild(); - - while (!page.isNull() && !page.toElement().tagName().contains("Page")) - page = page.nextSibling(); - - if (page.isNull()) - return; - - int width = page.toElement().attribute("imageWidth", "none").toInt(); - int height = page.toElement().attribute("imageHeight", "none").toInt(); - - scene_->setSceneRect(0, 0, width, height); - - QDomNode region = page.firstChild(); - - while (!region.isNull()) - { - if (region.toElement().tagName().contains(QRegExp("(WhitespaceSeparator|Image|Graphic|Chart|Separator|Table|Text)Region"))) - { - QString attr_id = region.toElement().attribute("id", "none"); - add_region(region, attr_id); - - if ( base64_ && - region.toElement().tagName().contains(QRegExp("(Image|Graphic|Chart|Separator|Table)Region"))) - { - QDomNode container = region.firstChild(); - - while (!container.isNull() && !container.toElement().tagName().contains("container")) - container = container.nextSibling(); - - QDomNode coords = region.firstChild(); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (!container.isNull() && !coords.isNull()) - { - QDomNode child = container.firstChild(); - - while (!child.isNull() && !child.toElement().tagName().contains("data")) - child = child.nextSibling(); - - QPixmap pix; - QString data = child.toElement().text(); - QByteArray ba; - ba = ba.append(data); - QByteArray out_ba = QByteArray::fromBase64(ba); - pix.loadFromData(out_ba); - - QGraphicsPixmapItem* image = new QGraphicsPixmapItem(pix); - - QDomNode point = coords.firstChild(); - - int x_min = INT_MAX; - int y_min = INT_MAX; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - if (x < x_min) - x_min = x; - - if (y < y_min) - y_min = y; - - point = point.nextSibling(); - } - - image->setShapeMode(QGraphicsPixmapItem::BoundingRectShape); - image->setZValue(0); - image->setOffset(x_min, y_min); - if (use_image_) - scene_->addItem(image); - image_vector_ << image; - - if (no_cache_) - image->setCacheMode(QGraphicsItem::NoCache); - else - image->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - - child = child.nextSibling(); - } - } - - if (region.toElement().tagName().contains("TextRegion")) - { - QDomNode line = region.firstChild(); - - do - { - while (!line.isNull() && !line.toElement().tagName().contains("Line")) - line = line.nextSibling(); - - if (!line.isNull()) - { - if (extended_mode_) - { - QString line_id = line.toElement().attribute("id", "none"); - add_region(line, line_id); - add_typo_lines(line, line_id); - } - add_text(line); - } - } - while (!(line = line.nextSiblingElement("Line")).isNull()); - } - } - - region = region.nextSibling(); - } - - //emit updated(); - scene_->update(); - key_wgt_->update_all(); - - app_->restoreOverrideCursor(); -} - -void -Viewer::load(QString filename, bool b) -{ - app_->setOverrideCursor(QCursor(Qt::WaitCursor)); - - scene_->clear(); - text_vector_.clear(); - image_vector_.clear(); - scene_->update(); - image_ = 0; - xml_file_ = QString::Null(); - - // Load the image in a pixmap that is directly shown on screen. - // This is very slow when used with the normal rendering system. - // OpenGL might speed up things a bit. - if (b) - image_ = new QGraphicsPixmapItem(load_base64(filename)); - else - image_ = new QGraphicsPixmapItem(QPixmap(filename)); - - current_image_ = filename; - - image_->setShapeMode(QGraphicsPixmapItem::BoundingRectShape); - image_->setZValue(0); - if (use_image_) - scene_->addItem(image_); - - if (no_cache_) - image_->setCacheMode(QGraphicsItem::NoCache); - else - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - - app_->restoreOverrideCursor(); - emit updated(); - - app_->restoreOverrideCursor(); -} - -int -Viewer::exec() -{ - win_->show(); - return app_->exec(); -} - -void -Viewer::help() -{ - HelpDialog dlg; - dlg.exec(); -} - -void -Viewer::maybeChangeCacheMode(qreal scale) -{ - if (image_) - { - if (scale >= 0.7) - image_->setCacheMode(QGraphicsItem::NoCache); - else if (!no_cache_) - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - } -} - -void Viewer::useExtended(bool b) -{ - extended_mode_ = b; - key_wgt_->update_all(); - - if (xml_file_ != QString::Null()) - load_xml(xml_file_); - - emit mode_changed(b); -} - -void -Viewer::useCache(bool b) -{ - no_cache_ = b; - if (b) - { - if (image_) - image_->setCacheMode(QGraphicsItem::NoCache); - } - else - if (image_) - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); -} - -QPixmap Viewer::load_base64(QString xml) -{ - QPixmap pix; - QFile f_in(xml); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - QDomElement root = doc.documentElement(); - QDomNode child = root.firstChild(); - - while (!child.isNull() && !child.toElement().tagName().contains("Page")) - child = child.nextSibling(); - - child = child.firstChild(); - while (!child.isNull()) - { - if (child.toElement().tagName().contains(QRegExp("ImageRegion"))) - { - QDomNode node = child.firstChild(); - QString id = child.toElement().attribute("id", "none"); - - while (!node.isNull() && !node.toElement().tagName().contains("container")) - node = node.nextSibling(); - - if (!node.isNull()) - { - QString data = node.firstChildElement("data").text(); - QByteArray ba; - ba = ba.append(data); - QByteArray out_ba = QByteArray::fromBase64(ba); - pix.loadFromData(out_ba); - - return pix; - } - } - child = child.nextSibling(); - } - - return pix; -} - -void -Viewer::useText(bool b) -{ - text_ = b; - if (!b) - { - for (int i = 0; i < text_vector_.size(); ++i) - scene_->removeItem(text_vector_[i]); - } - else - { - for (int i = 0; i < text_vector_.size(); ++i) - scene_->addItem(text_vector_[i]); - } - - scene_->update(); -} - -void -Viewer::useImage(bool b) -{ - use_image_ = b; - if (!b) - { - if (image_ && image_->scene() && image_->scene() == scene_) - scene_->removeItem(image_); - - for (int i = 0; i < image_vector_.size(); ++i) - scene_->removeItem(image_vector_[i]); - } - else - { - if (image_ && image_->scene() == 0) - scene_->addItem(image_); - - for (int i = 0; i < image_vector_.size(); ++i) - scene_->addItem(image_vector_[i]); - } - - scene_->update(); -} - -void -Viewer::change_base(bool b) -{ - base64_ = b; -} - - -QAction -*Viewer::create_action(QString name, QMenu *menu, QString status, QString shortcut) -{ - QAction* action = new QAction(name, menu); - action->setStatusTip(status); - action->setShortcut(QKeySequence(shortcut)); - - return (action); -} - -void -Viewer::on_preferences() -{ - preferences_dialog *win = new preferences_dialog(win_); - win->show(); -} - - -void -Viewer::run_process() -{ - if (!current_image_.isEmpty()) - { - reset_progress_dialog(); - runner_.start_demat(current_image_); - } -} - - -void -Viewer::run_progress() -{ - pdialog_.setValue(pdialog_.value() + 1); -} - - -void -Viewer::on_xml_saved(const QString& filename) -{ - config * const conf = config::get_instance(); - - if (!conf->general_save_xml_enabled()) - tmp_files_to_remove_.insert(filename); - - QListWidgetItem *item = step_widget_->insert_new_entry(filename); - step_widget_->activate(item); -} - - -void -Viewer::export_as() -{ - QFileInfo f(browser_wgt_->current()); - QString output_suggestion = f.baseName() + ".pdf"; - QString output = QFileDialog::getSaveFileName(0, "Export document as...", output_suggestion, tr("PDF (*.pdf);; HTML (*.html *.htm)")); - - if (!output.isEmpty()) - { - reset_progress_dialog(); - runner_.start_export(browser_wgt_->current(), step_widget_->current(), output); - qDebug() << "Saving to " << output << " - " << browser_wgt_->current() << " - " << step_widget_->current(); - } -} - - -void -Viewer::reset_progress_dialog() -{ - pdialog_.setValue(0); - pdialog_.setLabelText(""); - pdialog_.show(); -} - - -void -Viewer::print() -{ - QPrinter printer(QPrinter::HighResolution); - configure_printer(printer); - - QPrintDialog dialog(&printer); - dialog.setWindowTitle(tr("Print Document")); - if (dialog.exec() != QDialog::Accepted) - return; - - do_print(&printer); -} - -void -Viewer::preview_print() -{ - QPrinter printer(QPrinter::HighResolution); - configure_printer(printer); - - QPrintPreviewDialog preview(&printer); - connect(&preview, SIGNAL(paintRequested(QPrinter *)), - this, SLOT(do_print(QPrinter *))); - - preview.exec(); -} - -void Viewer::do_print(QPrinter * printer) -{ - QList<QGraphicsItem *> items = image_wgt_->view()->items(); - - QPainter painter(printer); - - QGraphicsItem *item; - QStyleOptionGraphicsItem options; - - // Painting backward objects first. - for (int i = items.size() - 1; i >= 0; --i) - { - item = items.at(i); - - if (item != image_) - { - QRect vport = image_->mapRectFromItem(item, - item->boundingRect()).toRect(); - - painter.translate(std::abs(item->boundingRect().x() - vport.x()), - std::abs(item->boundingRect().y() - vport.y())); - } - - - item->paint(&painter, &options); - painter.resetTransform(); - } -} - -void -Viewer::configure_printer(QPrinter& printer) -{ - printer.setPageSize(QPrinter::A4); - printer.setResolution(300); -} diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh deleted file mode 100644 index c68dd02..0000000 --- a/scribo/demo/viewer/viewer.hh +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_VIEWER_HH -# define SCRIBO_DEMO_VIEWER_VIEWER_HH - -# include <QtGui> -# include <QDomNode> -# include "common.hh" -# include "runner.hh" -# include "image_widget.hh" - -class ImageScene; -class DomModel; -class KeyWidget; -class ImageRegion; -class StepWidget; -class BrowserWidget; - - -class Viewer - : public QObject -{ - Q_OBJECT - -public: - ~Viewer(); - - static Viewer* Instance(int &argc, char** argv); - - int exec(); - -public slots: - // Load the file as an image, load the layout if xml with the same - // name is found. - void load(QString filename, bool b); - void help(); - void load_xml(QString filename); - void maybeChangeCacheMode(qreal scale); - void useCache(bool b); - void useExtended(bool b); - void useText(bool b); - void useImage(bool b); - void change_base(bool b); - -private slots: - void on_preferences(); - void run_process(); - void run_progress(); - void on_xml_saved(const QString& filename); - void export_as(); - void print(); - void preview_print(); - void do_print(QPrinter * printer); - -signals: - void updated(); - void key_updated(int key, bool checked); - void setOutline(bool b); - void setPrecise(bool b); - void setFill(bool b); - void mode_changed(bool b); - void fill_xml(QString); - -private: - Viewer(int &argc, char** argv); - Viewer(); - - void xml_to_layout(); - QPixmap load_base64(QString xml); - void add_region(QDomNode father, QString attr_id); - void add_text(QDomNode line); - void add_typo_lines(QDomNode father, QString attr_id); - QAction *create_action(QString name, QMenu* menu, QString status, QString shortcut); - void reset_progress_dialog(); - void configure_printer(QPrinter& printer); - - QApplication* app_; - QMainWindow* win_; - StepWidget* step_widget_; - BrowserWidget* browser_wgt_; - - QGraphicsPixmapItem* image_; - - ImageScene* scene_; - ImageWidget* image_wgt_; - QDirModel* files_; - DomModel* doc_layout_; - - QAction* outline_action_; - QAction* fill_action_; - QAction* precise_action_; - QAction *export_action_; - - KeyWidget* key_wgt_; - - QMap<QString, int> region_ids_; - region::KeyMap key_map_; - - bool no_cache_; - bool extended_mode_; - QString xml_file_; - bool base64_; - bool text_; - bool use_image_; - QVector<QGraphicsTextItem *> text_vector_; - QVector<QGraphicsPixmapItem*> image_vector_; - QString current_image_; - - QProgressDialog pdialog_; - runner runner_; - - QSet<QString> tmp_files_to_remove_; -}; - -#include "viewer.hxx" - -#endif // ! SCRIBO_DEMO_VIEWER_VIEWER_HH diff --git a/scribo/demo/viewer/viewer.hxx b/scribo/demo/viewer/viewer.hxx deleted file mode 100644 index cba59f3..0000000 --- a/scribo/demo/viewer/viewer.hxx +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2010 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. - -#ifndef VIEWER_HXX_ -# define VIEWER_HXX_ - -# include "viewer.hh" - -inline Viewer* Viewer::Instance(int &argc, char** argv) -{ - static Viewer viewer(argc, argv); - - return &viewer; -} - -#endif /* !VIEWER_HXX_ */ diff --git a/scribo/demo/viewer/viewer.qrc b/scribo/demo/viewer/viewer.qrc deleted file mode 100644 index c64fdcc..0000000 --- a/scribo/demo/viewer/viewer.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="icons"> - <file>icons/olena_smaller.jpg</file> - </qresource> -</RCC> diff --git a/scribo/demo/viewer/xml.cc b/scribo/demo/viewer/xml.cc new file mode 100644 index 0000000..74c9112 --- /dev/null +++ b/scribo/demo/viewer/xml.cc @@ -0,0 +1,253 @@ +// Copyright (C) 2013 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/
>. + +#include "xml.hh" + +Xml::Xml(const QString& filename) +{ + load(filename); +} + +QString Xml::getPath(const QString& filename) +{ + Configs *const configs = Configs::getInstance(); + + QString xmlPath = filename; + + // Get xml filename from image path. + xmlPath.remove(0, xmlPath.lastIndexOf('/')+1); + int pos = xmlPath.lastIndexOf('.'); + xmlPath.remove(pos, xmlPath.length()-pos); + xmlPath += "_gui.xml"; + + return configs->generalSaveXmlCustomDirPath() + "/" + xmlPath; +} + +void Xml::isRecognized(const QDomElement& textElement) +{ + QDomElement lineElement = textElement.firstChild().nextSiblingElement("Line"); + + // Check if the attributes "text" exists in the attributes of line in the xml file. + isRecognized_ = lineElement.attributeNode("text").isNull() ? false : true; +} + +void Xml::load(const QString& filename) +{ + if(filename.isEmpty()) + { + xmlItem_ = 0; + graphicsItem_ = 0; + filename_ = QString(); + isRecognized_ = false; + return; + } + + // Reset graphic and tree items; + xmlItem_ = new XmlItem; + graphicsItem_ = new RootGraphicsItem(13); + filename_ = getPath(filename); + + QFile xmlFile(filename); + xmlFile.open(QIODevice::ReadOnly); + + // Fill new xml tree. + xml_.clear(); + xml_.setContent(&xmlFile); + + xmlFile.close(); + + QDomElement root = xml_.documentElement(); + xmlItem_->load(root); + xmlItem_->show(); + + root = root.firstChild().toElement(); + XmlItem *parentTreeItem = init(root, xmlItem_); + + // Run through the xml file structure by structure. + root = root.nextSibling().firstChild().toElement(); + // Check if the xml file has been recognized by the ocr or not. + isRecognized(root); + + processNode(root, datas_[0], parentTreeItem); + for(int i = 2; i < 11; i++) + processNode(root.nextSiblingElement(datas_[i].name), datas_[i], parentTreeItem); +} + +XmlItem *Xml::init(const QDomElement& root, XmlItem *rootTreeItem) +{ + XmlItem *metadataItem = new XmlItem(root, rootTreeItem); + + XmlItem *contentItem = 0; + + // Run through "METADATA" node and subnodes. + QDomElement node = root.firstChild().toElement(); + while(!node.isNull()) + { + contentItem = new XmlItem(node, metadataItem, contentItem); + node = node.nextSibling().toElement(); + } + + // Add "PAGE" root node and return it. + metadataItem = new XmlItem(root.nextSibling().toElement(), rootTreeItem, metadataItem); + metadataItem->show(); + + return metadataItem; +} + +void Xml::processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *pageItem) +{ + if(!root.isNull()) + { + // Create corresponding tree item. + XmlItem *regionItem = new XmlItem(root, pageItem); + + QDomElement node = root.firstChild().toElement(); + XmlItem *coordsItem = new XmlItem(node, regionItem); + + QPolygon polygon; + XmlItem *pointItem = 0; + QString x, y; + + // Run through all points data. + node = node.firstChild().toElement(); + while(!node.isNull()) + { + x = node.attribute("x", "null"); + y = node.attribute("y", "null"); + + pointItem = new XmlItem(node, coordsItem, pointItem); + + polygon << QPoint(x.toInt(), y.toInt()); + node = node.nextSibling().toElement(); + } + + // Create the graphics item from data structure. + RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); + graphicsItem->loadData(data); + graphicsItem_->addItemFrom(graphicsItem, data.region); + + // Store xml item and graphics item in each object for selection. + regionItem->setRegionItem(graphicsItem); + graphicsItem->setXmlItem(regionItem); + + if(data.region == GraphicsRegion::TextRegion) + processLineNode(root.firstChild().nextSiblingElement("Line"), coordsItem); + + // Run through all nodes from the same data structure recursively. + processNode(root.nextSiblingElement(data.name), data, pageItem); + } +} + +void Xml::processLineNode(const QDomElement& root, XmlItem *precItem) +{ + if(!root.isNull()) + { + // Create corresponding tree item. + XmlItem *lineItem = new XmlItem(root, precItem->parent(), precItem); + + QDomElement node = root.firstChild().toElement(); + XmlItem *coordsItem = new XmlItem(node, lineItem); + + QPolygon polygon; + XmlItem *pointItem = 0; + + QString xs, ys; + int x, y; + + int xMin = INT_MAX; + int xMax = INT_MIN; + + // Run through all points data. + node = node.firstChild().toElement(); + while(!node.isNull()) + { + xs = node.attribute("x", "null"); + ys = node.attribute("y", "null"); + + pointItem = new XmlItem(node, coordsItem, pointItem); + + x = xs.toInt(); + y = ys.toInt(); + + // Get beginning and end of line. + if(xMin > x) + xMin = x; + if(xMax < x) + xMax = x; + + polygon << QPoint(x, y); + node = node.nextSibling().toElement(); + } + + // Create the graphics item from data structure. + RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); + graphicsItem->loadData(datas_[1]); + graphicsItem_->addItemFrom(graphicsItem, datas_[1].region); + + // Store xml item and graphics item in each object for selection. + lineItem->setRegionItem(graphicsItem); + graphicsItem->setXmlItem(lineItem); + + // Get meanline and baseline. + processTypoNode(root, QPoint(xMin, xMax)); + // Run through all line nodes recursively. + processLineNode(root.nextSiblingElement(datas_[1].name), lineItem); + } +} + +void Xml::processTypoNode(const QDomElement& root, const QPoint& xPoint) +{ + int yPos = root.attribute("baseline", "null").toInt(); + QGraphicsLineItem *baselineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); + baselineItem->setZValue(datas_[11].zValue); + graphicsItem_->addItemFrom(baselineItem, datas_[11].region); + + yPos = root.attribute("meanline", "null").toInt(); + QGraphicsLineItem *meanlineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); + meanlineItem->setZValue(datas_[12].zValue); + graphicsItem_->addItemFrom(meanlineItem, datas_[12].region); +} + + +XmlItem *Xml::xmlItem() +{ + return xmlItem_; +} + +RootGraphicsItem *Xml::graphicsItem() +{ + return graphicsItem_; +} + +QDomDocument Xml::document() const +{ + return xml_; +} + +QString Xml::filename() const +{ + return filename_; +} + +GraphicsRegion::Data Xml::dataFromRegion(GraphicsRegion::Id region) +{ + return datas_[region]; +} + +bool Xml::recognized() const +{ + return isRecognized_; +} diff --git a/scribo/demo/viewer/xml.hh b/scribo/demo/viewer/xml.hh new file mode 100644 index 0000000..c5f59d4 --- /dev/null +++ b/scribo/demo/viewer/xml.hh @@ -0,0 +1,91 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XML_HH +# define XML_HH + +#include <QTreeWidgetItem> +#include <QGraphicsItem> +#include <QStringList> +#include <QDomElement> +#include <QDomAttr> +#include <climits> +#include <QFile> + +#include "Rendering/rootgraphicsitem.hh" +#include "Rendering/regionitem.hh" +#include "XmlWidget/xmlitem.hh" +#include "variantpointer.hh" +#include "configs.hh" +#include "region.hh" + +// WARNING : The order is VERY IMPORTANT (depending on the enum). +static const GraphicsRegion::Data datas_[] = +{ + /* COLOR | NAME | REGION | PARENT | Z */ + { QColor::fromRgb(0, 100, 0, 110), "TextRegion", GraphicsRegion::TextRegion, GraphicsRegion::Text, 1 }, + { QColor::fromRgb(255, 0, 0, 110), "Line", GraphicsRegion::Line, GraphicsRegion::Text, 2 }, + { QColor::fromRgb(0, 0, 255, 110), "VerticalSeparatorRegion", GraphicsRegion::VerticalSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(0, 0, 255, 110), "HorizontalSeparatorRegion", GraphicsRegion::HorizontalSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(0, 0, 128, 110), "WhitespaceSeparatorRegion", GraphicsRegion::WhiteSpaceSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(255, 120, 0, 110), "ImageRegion", GraphicsRegion::Image, GraphicsRegion::Miscellaneous, 1 }, + { QColor::fromRgb(43, 39, 128, 110), "NoiseRegion", GraphicsRegion::Noise, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(220, 246, 0, 110), "TableRegion", GraphicsRegion::Table, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(170, 0, 255, 110), "MathsRegion", GraphicsRegion::Maths, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(255, 0, 144, 110), "GraphicsRegion", GraphicsRegion::Graphic, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(0, 204, 255, 110), "ChartRegion", GraphicsRegion::Chart, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(128, 0, 255), "Baseline", GraphicsRegion::Baseline, GraphicsRegion::Typology, 3 }, + { QColor::fromRgb(128, 0, 255), "Meanline", GraphicsRegion::Meanline, GraphicsRegion::Typology, 3 }, + { QColor::fromRgb(255, 255, 255), "Text", GraphicsRegion::Text, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Separators", GraphicsRegion::Separators, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Typological Lines", GraphicsRegion::Typology, GraphicsRegion::None, 0 } +}; + +class Xml +{ +public: + explicit Xml(const QString& filename = QString()); + + XmlItem *xmlItem(); + RootGraphicsItem *graphicsItem(); + + QDomDocument document() const; + QString filename() const; + bool recognized() const; + + static QString getPath(const QString& filename); + + void load(const QString& filename); + static GraphicsRegion::Data dataFromRegion(GraphicsRegion::Id region); + +private: + XmlItem *init(const QDomElement& root, XmlItem *rootTreeItem); + void isRecognized(const QDomElement& element); + + void processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *rootTreeItem); + void processLineNode(const QDomElement& root, XmlItem *rootTreeItem); + void processTypoNode(const QDomElement& root, const QPoint& xPoint); + + RootGraphicsItem *graphicsItem_; + XmlItem *xmlItem_; + + QDomDocument xml_; + QString filename_; + bool isRecognized_; +}; + +#endif // XML_HH diff --git a/scribo/demo/viewer/xml_widget.cc b/scribo/demo/viewer/xml_widget.cc deleted file mode 100644 index 642cf9a..0000000 --- a/scribo/demo/viewer/xml_widget.cc +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "xml_widget.hh" - -XmlWidget::XmlWidget() - : tree_(new QTreeWidget()), - property_(new QTreeWidget()) -{ - QLabel* title = new QLabel(tr("XML")); - title->setAlignment(Qt::AlignHCenter); - - tree_->setHeaderHidden(true); - - QVBoxLayout* layout = new QVBoxLayout; - QHBoxLayout *hlayout = new QHBoxLayout; - - QStringList header_names; - header_names << tr("Name") << tr("Value"); - property_->setHeaderItem(new QTreeWidgetItem(header_names)); - - hlayout->addWidget(tree_); - hlayout->addWidget(property_); - - layout->addWidget(title); - layout->addLayout(hlayout); - - setLayout(layout); - - connect(tree_, SIGNAL(itemDoubleClicked (QTreeWidgetItem*, int)), - this, SLOT(check_item (QTreeWidgetItem*) ) ); -} - -void -XmlWidget::select(QString id, QString /*name*/) -{ - QDomNode n = node_map_[item_map_[id]]; - - if (!n.isNull()) - { - QTreeWidgetItem* item = node_map_.key(n); - - tree_->setCurrentItem(item, 0); - item->setExpanded(true); - check_item(item); - } -} - -void -XmlWidget::check_item (QTreeWidgetItem* item) -{ - QDomNode node = node_map_[item]; - - if (node.hasAttributes()) - { - property_->clear(); - QDomNamedNodeMap attributes = node.toElement().attributes(); - - for (int i = 0; i < attributes.count(); ++i) - { - QStringList values; - values << attributes.item(i).toAttr().name() << attributes.item(i).toAttr().value(); - property_->addTopLevelItem(new QTreeWidgetItem(values)); - } - } - - property_->resizeColumnToContents(0); -} - -void XmlWidget::NFS(QDomNode node, QTreeWidgetItem* item) -{ - if (!node.isNull()) - { - QString append; - if (node.toElement().tagName().contains("Point")) - { - QString x = node.toElement().attribute("x", "0"); - QString y = node.toElement().attribute("y", "0"); - append.append(" = (" + x + ", " + y + ")"); - } - - QTreeWidgetItem* child = - new QTreeWidgetItem(QStringList(node.toElement().tagName() + node.nodeValue() + append)); - - if (node.hasAttributes()) - { - QString id = node.toElement().attribute("id", "none"); - item_map_[id] = child; - } - - node_map_[child] = node; - item->addChild(child); - - QDomNode sibling = node.firstChild(); - while (!sibling.isNull()) - { - if (!sibling.toElement().tagName().contains("data")) - NFS(sibling, child); - else - { - QTreeWidgetItem* child_son = - new QTreeWidgetItem(QStringList("data = base64-encoded")); - - child->addChild(child_son); - } - sibling = sibling.nextSibling(); - } - } -} - -void XmlWidget::fill_widget(QString xml) -{ - node_map_.clear(); - item_map_.clear(); - - tree_->clear(); - property_->clear(); - QFile f_in(xml); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - int i = 0; - - QDomElement root = doc.documentElement(); - QTreeWidgetItem* root_item= - new QTreeWidgetItem(QStringList(root.tagName())); - - tree_->addTopLevelItem(root_item); - root = root.firstChild().toElement(); - - while (!root.isNull()) - { - ++i; - NFS(root, root_item); - root = root.nextSibling().toElement(); - } -} - -void -XmlWidget::deselect() -{ - property_->clear(); -} - -XmlWidget::~XmlWidget() -{ -} diff --git a/scribo/demo/viewer/xml_widget.hh b/scribo/demo/viewer/xml_widget.hh deleted file mode 100644 index b7cd868..0000000 --- a/scribo/demo/viewer/xml_widget.hh +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_XML_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_XML_WIDGET_HH - -# include <QtGui> -# include <QDomNode> - -class DomModel; - -class XmlWidget - : public QWidget -{ - Q_OBJECT - -public: - XmlWidget(); - ~XmlWidget(); - -public slots: - void select(QString id, QString name); - void deselect(); - void fill_widget(QString xml); - void check_item (QTreeWidgetItem* item); - -private: - void NFS(QDomNode node, QTreeWidgetItem* item); - QTreeWidget* tree_; - QTreeWidget* property_; - QMap<QString, QTreeWidgetItem*> item_map_; - QMap<QTreeWidgetItem*, QDomNode> node_map_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_XML_WIDGET_HH -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-225-g8dfa78a Move new viewer to scribo/demo.
by Guillaume Lazzara
* scribo/demo/viewer/BUGS, * scribo/demo/viewer/GScribo.pro, * scribo/demo/viewer/GScribo.pro.user, * scribo/demo/viewer/GScribo.pro.user.1.3, * scribo/demo/viewer/Makefile.am, * scribo/demo/viewer/PagesWidget/pagesdelegate.cc, * scribo/demo/viewer/PagesWidget/pagesdelegate.hh, * scribo/demo/viewer/PagesWidget/pagesmodel.cc, * scribo/demo/viewer/PagesWidget/pagesmodel.hh, * scribo/demo/viewer/PagesWidget/pageswidget.cc, * scribo/demo/viewer/PagesWidget/pageswidget.hh, * scribo/demo/viewer/Preferences/generaloptions.cc, * scribo/demo/viewer/Preferences/generaloptions.hh, * scribo/demo/viewer/Preferences/generaloptions.ui, * scribo/demo/viewer/Preferences/ocroptions.cc, * scribo/demo/viewer/Preferences/ocroptions.hh, * scribo/demo/viewer/Preferences/ocroptions.ui, * scribo/demo/viewer/Preferences/optionwidget.hh, * scribo/demo/viewer/Preferences/preferencesdialog.cc, * scribo/demo/viewer/Preferences/preferencesdialog.hh, * scribo/demo/viewer/Preferences/preferencesdialog.ui, * scribo/demo/viewer/Preferences/preprocessingoptions.cc, * scribo/demo/viewer/Preferences/preprocessingoptions.hh, * scribo/demo/viewer/Preferences/preprocessingoptions.ui, * scribo/demo/viewer/Preferences/segmentationoptions.cc, * scribo/demo/viewer/Preferences/segmentationoptions.hh, * scribo/demo/viewer/Preferences/segmentationoptions.ui, * scribo/demo/viewer/Processing/preprocess.cc, * scribo/demo/viewer/Processing/preprocess.hh, * scribo/demo/viewer/Processing/process.cc, * scribo/demo/viewer/Processing/process.hh, * scribo/demo/viewer/Processing/progressdialog.cc, * scribo/demo/viewer/Processing/progressdialog.hh, * scribo/demo/viewer/Processing/runner.cc, * scribo/demo/viewer/Processing/runner.hh, * scribo/demo/viewer/Rendering/abstractregionitem.hh, * scribo/demo/viewer/Rendering/backgroundtexture.hh, * scribo/demo/viewer/Rendering/graphicsview.cc, * scribo/demo/viewer/Rendering/graphicsview.hh, * scribo/demo/viewer/Rendering/regionitem.cc, * scribo/demo/viewer/Rendering/regionitem.hh, * scribo/demo/viewer/Rendering/rootgraphicsitem.cc, * scribo/demo/viewer/Rendering/rootgraphicsitem.hh, * scribo/demo/viewer/Rendering/scene.cc, * scribo/demo/viewer/Rendering/scene.hh, * scribo/demo/viewer/Rendering/selection.cc, * scribo/demo/viewer/Rendering/selection.hh, * scribo/demo/viewer/TODO, * scribo/demo/viewer/XmlWidget/attributesmodel.cc, * scribo/demo/viewer/XmlWidget/attributesmodel.hh, * scribo/demo/viewer/XmlWidget/selectionproxy.hh, * scribo/demo/viewer/XmlWidget/xmlattributes.cc, * scribo/demo/viewer/XmlWidget/xmlattributes.hh, * scribo/demo/viewer/XmlWidget/xmldelegate.hh, * scribo/demo/viewer/XmlWidget/xmlitem.cc, * scribo/demo/viewer/XmlWidget/xmlitem.hh, * scribo/demo/viewer/XmlWidget/xmlmodel.cc, * scribo/demo/viewer/XmlWidget/xmlmodel.hh, * scribo/demo/viewer/XmlWidget/xmlview.cc, * scribo/demo/viewer/XmlWidget/xmlview.hh, * scribo/demo/viewer/XmlWidget/xmlwidget.cc, * scribo/demo/viewer/XmlWidget/xmlwidget.hh, * scribo/demo/viewer/aboutdialog.cc, * scribo/demo/viewer/aboutdialog.hh, * scribo/demo/viewer/aboutdialog.ui, * scribo/demo/viewer/config.cc, * scribo/demo/viewer/configs.cc, * scribo/demo/viewer/configs.hh, * scribo/demo/viewer/defs.hh, * scribo/demo/viewer/dir.hh, * scribo/demo/viewer/dockwidget.cc, * scribo/demo/viewer/dockwidget.hh, * scribo/demo/viewer/general_options.hh, * scribo/demo/viewer/help_dialog.hh, * scribo/demo/viewer/image_scene.hh, * scribo/demo/viewer/image_view.hh, * scribo/demo/viewer/main.cc, * scribo/demo/viewer/mainwindow.cc, * scribo/demo/viewer/mainwindow.hh, * scribo/demo/viewer/mainwindow.ui, * scribo/demo/viewer/ocr_options.hh, * scribo/demo/viewer/option_widget.cc, * scribo/demo/viewer/option_widget.hh, * scribo/demo/viewer/preprocess.cc, * scribo/demo/viewer/preprocess.hh, * scribo/demo/viewer/process.cc, * scribo/demo/viewer/region.hh, * scribo/demo/viewer/regionwidget.cc, * scribo/demo/viewer/regionwidget.hh, * scribo/demo/viewer/variantpointer.cc, * scribo/demo/viewer/variantpointer.hh, * scribo/demo/viewer/xml.cc, * scribo/demo/viewer/xml.hh: New. * scribo/demo/viewer/README, * scribo/demo/viewer/browser_widget.cc, * scribo/demo/viewer/browser_widget.hh, * scribo/demo/viewer/common.hh, * scribo/demo/viewer/config.hh, * scribo/demo/viewer/general_options.cc, * scribo/demo/viewer/general_options.ui, * scribo/demo/viewer/help_dialog.cc, * scribo/demo/viewer/help_dialog.ui, * scribo/demo/viewer/icons/olena_smaller.jpg, * scribo/demo/viewer/image_region.cc, * scribo/demo/viewer/image_region.hh, * scribo/demo/viewer/image_region.hxx, * scribo/demo/viewer/image_scene.cc, * scribo/demo/viewer/image_view.cc, * scribo/demo/viewer/image_widget.cc, * scribo/demo/viewer/image_widget.hh, * scribo/demo/viewer/key_widget.cc, * scribo/demo/viewer/key_widget.hh, * scribo/demo/viewer/ocr_options.cc, * scribo/demo/viewer/ocr_options.ui, * scribo/demo/viewer/preferences_dialog.cc, * scribo/demo/viewer/preferences_dialog.hh, * scribo/demo/viewer/preferences_dialog.ui, * scribo/demo/viewer/preprocessing_options.cc, * scribo/demo/viewer/preprocessing_options.hh, * scribo/demo/viewer/preprocessing_options.ui, * scribo/demo/viewer/process.hh, * scribo/demo/viewer/runner.cc, * scribo/demo/viewer/runner.hh, * scribo/demo/viewer/segmentation_options.cc, * scribo/demo/viewer/segmentation_options.hh, * scribo/demo/viewer/segmentation_options.ui, * scribo/demo/viewer/step_widget.cc, * scribo/demo/viewer/step_widget.hh, * scribo/demo/viewer/viewer.cc, * scribo/demo/viewer/viewer.hh, * scribo/demo/viewer/viewer.hxx, * scribo/demo/viewer/viewer.qrc , * scribo/demo/viewer/xml_widget.cc, * scribo/demo/viewer/xml_widget.hh: Remove. --- ChangeLog | 80 ++ GScribo/GScribo.pro | 83 -- GScribo/PagesWidget/pagesdelegate.cpp | 20 - GScribo/PagesWidget/pagesdelegate.h | 18 - GScribo/PagesWidget/pagesmodel.cpp | 55 -- GScribo/PagesWidget/pagesmodel.h | 43 - GScribo/PagesWidget/pageswidget.cpp | 49 - GScribo/PagesWidget/pageswidget.h | 55 -- GScribo/Preferences/generaloptions.cpp | 44 - GScribo/Preferences/generaloptions.h | 34 - GScribo/Preferences/ocroptions.cpp | 53 - GScribo/Preferences/ocroptions.h | 33 - GScribo/Preferences/preferencesdialog.cpp | 98 -- GScribo/Preferences/preferencesdialog.h | 42 - GScribo/Preferences/preprocessingoptions.cpp | 45 - GScribo/Preferences/preprocessingoptions.h | 32 - GScribo/Preferences/segmentationoptions.cpp | 33 - GScribo/Preferences/segmentationoptions.h | 31 - GScribo/Processing/preprocess.cpp | 11 - GScribo/Processing/preprocess.h | 26 - GScribo/Processing/process.cpp | 21 - GScribo/Processing/process.h | 29 - GScribo/Processing/progressdialog.cpp | 16 - GScribo/Processing/progressdialog.h | 22 - GScribo/Processing/runner.cpp | 183 ---- GScribo/Processing/runner.h | 58 -- GScribo/Rendering/graphicsview.cpp | 150 --- GScribo/Rendering/graphicsview.h | 43 - GScribo/Rendering/regionitem.cpp | 59 -- GScribo/Rendering/regionitem.h | 80 -- GScribo/Rendering/rootgraphicsitem.h | 30 - GScribo/Rendering/scene.cpp | 273 ------ GScribo/Rendering/scene.h | 118 --- GScribo/Rendering/selection.cpp | 36 - GScribo/XmlWidget/attributesmodel.cpp | 69 -- GScribo/XmlWidget/attributesmodel.h | 48 - GScribo/XmlWidget/selectionproxy.h | 47 - GScribo/XmlWidget/xmlattributes.cpp | 23 - GScribo/XmlWidget/xmlattributes.h | 33 - GScribo/XmlWidget/xmlitem.cpp | 43 - GScribo/XmlWidget/xmlitem.h | 90 -- GScribo/XmlWidget/xmlmodel.cpp | 87 -- GScribo/XmlWidget/xmlmodel.h | 44 - GScribo/XmlWidget/xmlview.cpp | 88 -- GScribo/XmlWidget/xmlview.h | 79 -- GScribo/XmlWidget/xmlwidget.cpp | 34 - GScribo/XmlWidget/xmlwidget.h | 54 - GScribo/aboutdialog.h | 25 - GScribo/aboutdialog.ui | 136 --- GScribo/configs.h | 134 --- GScribo/dockwidget.h | 22 - GScribo/main.cpp | 23 - GScribo/mainwindow.cpp | 415 -------- GScribo/mainwindow.h | 120 --- GScribo/region.h | 56 -- GScribo/regionwidget.cpp | 70 -- GScribo/regionwidget.h | 40 - GScribo/variantpointer.h | 19 - GScribo/xml.cpp | 206 ---- GScribo/xml.h | 93 -- scribo/ChangeLog | 140 +++ {GScribo => scribo/demo/viewer}/BUGS | 0 scribo/demo/viewer/GScribo.pro | 83 ++ {GScribo => scribo/demo/viewer}/GScribo.pro.user | 0 .../demo/viewer}/GScribo.pro.user.1.3 | 0 scribo/demo/viewer/Makefile.am | 204 +++-- scribo/demo/viewer/PagesWidget/pagesdelegate.cc | 38 + scribo/demo/viewer/PagesWidget/pagesdelegate.hh | 36 + scribo/demo/viewer/PagesWidget/pagesmodel.cc | 91 ++ scribo/demo/viewer/PagesWidget/pagesmodel.hh | 51 + scribo/demo/viewer/PagesWidget/pageswidget.cc | 119 +++ scribo/demo/viewer/PagesWidget/pageswidget.hh | 61 ++ scribo/demo/viewer/Preferences/generaloptions.cc | 60 ++ scribo/demo/viewer/Preferences/generaloptions.hh | 50 + .../demo/viewer}/Preferences/generaloptions.ui | 0 scribo/demo/viewer/Preferences/ocroptions.cc | 69 ++ scribo/demo/viewer/Preferences/ocroptions.hh | 49 + .../demo/viewer}/Preferences/ocroptions.ui | 0 .../demo/viewer/Preferences/optionwidget.hh | 0 .../demo/viewer/Preferences/preferencesdialog.cc | 120 +++ .../demo/viewer/Preferences/preferencesdialog.hh | 55 ++ .../demo/viewer}/Preferences/preferencesdialog.ui | 0 .../viewer/Preferences/preprocessingoptions.cc | 61 ++ .../viewer/Preferences/preprocessingoptions.hh | 48 + .../viewer}/Preferences/preprocessingoptions.ui | 0 .../demo/viewer/Preferences/segmentationoptions.cc | 49 + .../demo/viewer/Preferences/segmentationoptions.hh | 46 + .../viewer}/Preferences/segmentationoptions.ui | 0 scribo/demo/viewer/Processing/preprocess.cc | 27 + scribo/demo/viewer/Processing/preprocess.hh | 42 + scribo/demo/viewer/Processing/process.cc | 37 + scribo/demo/viewer/Processing/process.hh | 45 + scribo/demo/viewer/Processing/progressdialog.cc | 37 + scribo/demo/viewer/Processing/progressdialog.hh | 36 + scribo/demo/viewer/Processing/runner.cc | 199 ++++ scribo/demo/viewer/Processing/runner.hh | 74 ++ scribo/demo/viewer/README | 32 - .../demo/viewer/Rendering/abstractregionitem.hh | 0 .../demo/viewer/Rendering/backgroundtexture.hh | 0 scribo/demo/viewer/Rendering/graphicsview.cc | 165 ++++ scribo/demo/viewer/Rendering/graphicsview.hh | 59 ++ scribo/demo/viewer/Rendering/regionitem.cc | 130 +++ scribo/demo/viewer/Rendering/regionitem.hh | 66 ++ scribo/demo/viewer/Rendering/rootgraphicsitem.cc | 46 + scribo/demo/viewer/Rendering/rootgraphicsitem.hh | 39 + scribo/demo/viewer/Rendering/scene.cc | 289 ++++++ scribo/demo/viewer/Rendering/scene.hh | 118 +++ scribo/demo/viewer/Rendering/selection.cc | 52 + .../demo/viewer/Rendering/selection.hh | 0 {GScribo => scribo/demo/viewer}/TODO | 0 scribo/demo/viewer/XmlWidget/attributesmodel.cc | 108 ++ scribo/demo/viewer/XmlWidget/attributesmodel.hh | 55 ++ scribo/demo/viewer/XmlWidget/selectionproxy.hh | 47 + scribo/demo/viewer/XmlWidget/xmlattributes.cc | 49 + scribo/demo/viewer/XmlWidget/xmlattributes.hh | 44 + .../demo/viewer/XmlWidget/xmldelegate.hh | 0 scribo/demo/viewer/XmlWidget/xmlitem.cc | 59 ++ scribo/demo/viewer/XmlWidget/xmlitem.hh | 106 ++ scribo/demo/viewer/XmlWidget/xmlmodel.cc | 123 +++ scribo/demo/viewer/XmlWidget/xmlmodel.hh | 51 + scribo/demo/viewer/XmlWidget/xmlview.cc | 104 ++ scribo/demo/viewer/XmlWidget/xmlview.hh | 95 ++ scribo/demo/viewer/XmlWidget/xmlwidget.cc | 66 ++ scribo/demo/viewer/XmlWidget/xmlwidget.hh | 61 ++ scribo/demo/viewer/aboutdialog.cc | 31 + scribo/demo/viewer/aboutdialog.hh | 40 + scribo/demo/viewer/aboutdialog.ui | 136 +++ scribo/demo/viewer/browser_widget.cc | 138 --- scribo/demo/viewer/browser_widget.hh | 50 - scribo/demo/viewer/common.hh | 73 -- scribo/demo/viewer/config.cc | 182 ---- scribo/demo/viewer/config.hh | 78 -- scribo/demo/viewer/configs.cc | 149 +++ scribo/demo/viewer/configs.hh | 74 ++ scribo/demo/viewer/defs.hh | 31 - GScribo/dir.h => scribo/demo/viewer/dir.hh | 0 scribo/demo/viewer/dockwidget.cc | 34 + scribo/demo/viewer/dockwidget.hh | 36 + scribo/demo/viewer/general_options.cc | 60 -- scribo/demo/viewer/general_options.hh | 40 - scribo/demo/viewer/general_options.ui | 100 -- scribo/demo/viewer/help_dialog.cc | 23 - scribo/demo/viewer/help_dialog.hh | 31 - scribo/demo/viewer/help_dialog.ui | 138 --- scribo/demo/viewer/icons/olena_smaller.jpg | Bin 8028 -> 0 bytes scribo/demo/viewer/image_region.cc | 138 --- scribo/demo/viewer/image_region.hh | 79 -- scribo/demo/viewer/image_region.hxx | 106 -- scribo/demo/viewer/image_scene.cc | 104 -- scribo/demo/viewer/image_scene.hh | 45 - scribo/demo/viewer/image_view.cc | 80 -- scribo/demo/viewer/image_view.hh | 42 - scribo/demo/viewer/image_widget.cc | 61 -- scribo/demo/viewer/image_widget.hh | 47 - scribo/demo/viewer/key_widget.cc | 162 --- scribo/demo/viewer/key_widget.hh | 55 -- scribo/demo/viewer/main.cc | 44 +- scribo/demo/viewer/mainwindow.cc | 496 ++++++++++ scribo/demo/viewer/mainwindow.hh | 130 +++ {GScribo => scribo/demo/viewer}/mainwindow.ui | 0 scribo/demo/viewer/ocr_options.cc | 74 -- scribo/demo/viewer/ocr_options.hh | 40 - scribo/demo/viewer/ocr_options.ui | 62 -- scribo/demo/viewer/option_widget.cc | 30 - scribo/demo/viewer/option_widget.hh | 30 - scribo/demo/viewer/preferences_dialog.cc | 129 --- scribo/demo/viewer/preferences_dialog.hh | 45 - scribo/demo/viewer/preferences_dialog.ui | 121 --- scribo/demo/viewer/preprocess.cc | 29 - scribo/demo/viewer/preprocess.hh | 41 - scribo/demo/viewer/preprocessing_options.cc | 66 -- scribo/demo/viewer/preprocessing_options.hh | 38 - scribo/demo/viewer/preprocessing_options.ui | 76 -- scribo/demo/viewer/process.cc | 42 - scribo/demo/viewer/process.hh | 46 - scribo/demo/viewer/region.hh | 72 ++ scribo/demo/viewer/regionwidget.cc | 114 +++ scribo/demo/viewer/regionwidget.hh | 58 ++ scribo/demo/viewer/runner.cc | 243 ----- scribo/demo/viewer/runner.hh | 73 -- scribo/demo/viewer/segmentation_options.cc | 56 -- scribo/demo/viewer/segmentation_options.hh | 37 - scribo/demo/viewer/segmentation_options.ui | 52 - scribo/demo/viewer/step_widget.cc | 178 ---- scribo/demo/viewer/step_widget.hh | 56 -- scribo/demo/viewer/variantpointer.cc | 39 + scribo/demo/viewer/variantpointer.hh | 33 + scribo/demo/viewer/viewer.cc | 1021 -------------------- scribo/demo/viewer/viewer.hh | 132 --- scribo/demo/viewer/viewer.hxx | 38 - scribo/demo/viewer/viewer.qrc | 5 - scribo/demo/viewer/xml.cc | 253 +++++ scribo/demo/viewer/xml.hh | 91 ++ scribo/demo/viewer/xml_widget.cc | 164 ---- scribo/demo/viewer/xml_widget.hh | 48 - 195 files changed, 5660 insertions(+), 8997 deletions(-) delete mode 100644 GScribo/GScribo.pro delete mode 100644 GScribo/PagesWidget/pagesdelegate.cpp delete mode 100644 GScribo/PagesWidget/pagesdelegate.h delete mode 100644 GScribo/PagesWidget/pagesmodel.cpp delete mode 100644 GScribo/PagesWidget/pagesmodel.h delete mode 100644 GScribo/PagesWidget/pageswidget.cpp delete mode 100644 GScribo/PagesWidget/pageswidget.h delete mode 100644 GScribo/Preferences/generaloptions.cpp delete mode 100644 GScribo/Preferences/generaloptions.h delete mode 100644 GScribo/Preferences/ocroptions.cpp delete mode 100644 GScribo/Preferences/ocroptions.h delete mode 100644 GScribo/Preferences/preferencesdialog.cpp delete mode 100644 GScribo/Preferences/preferencesdialog.h delete mode 100644 GScribo/Preferences/preprocessingoptions.cpp delete mode 100644 GScribo/Preferences/preprocessingoptions.h delete mode 100644 GScribo/Preferences/segmentationoptions.cpp delete mode 100644 GScribo/Preferences/segmentationoptions.h delete mode 100644 GScribo/Processing/preprocess.cpp delete mode 100644 GScribo/Processing/preprocess.h delete mode 100644 GScribo/Processing/process.cpp delete mode 100644 GScribo/Processing/process.h delete mode 100644 GScribo/Processing/progressdialog.cpp delete mode 100644 GScribo/Processing/progressdialog.h delete mode 100644 GScribo/Processing/runner.cpp delete mode 100644 GScribo/Processing/runner.h delete mode 100644 GScribo/Rendering/graphicsview.cpp delete mode 100644 GScribo/Rendering/graphicsview.h delete mode 100644 GScribo/Rendering/regionitem.cpp delete mode 100644 GScribo/Rendering/regionitem.h delete mode 100644 GScribo/Rendering/rootgraphicsitem.h delete mode 100644 GScribo/Rendering/scene.cpp delete mode 100644 GScribo/Rendering/scene.h delete mode 100644 GScribo/Rendering/selection.cpp delete mode 100644 GScribo/XmlWidget/attributesmodel.cpp delete mode 100644 GScribo/XmlWidget/attributesmodel.h delete mode 100644 GScribo/XmlWidget/selectionproxy.h delete mode 100644 GScribo/XmlWidget/xmlattributes.cpp delete mode 100644 GScribo/XmlWidget/xmlattributes.h delete mode 100644 GScribo/XmlWidget/xmlitem.cpp delete mode 100644 GScribo/XmlWidget/xmlitem.h delete mode 100644 GScribo/XmlWidget/xmlmodel.cpp delete mode 100644 GScribo/XmlWidget/xmlmodel.h delete mode 100644 GScribo/XmlWidget/xmlview.cpp delete mode 100644 GScribo/XmlWidget/xmlview.h delete mode 100644 GScribo/XmlWidget/xmlwidget.cpp delete mode 100644 GScribo/XmlWidget/xmlwidget.h delete mode 100644 GScribo/aboutdialog.h delete mode 100644 GScribo/aboutdialog.ui delete mode 100644 GScribo/configs.h delete mode 100644 GScribo/dockwidget.h delete mode 100644 GScribo/main.cpp delete mode 100644 GScribo/mainwindow.cpp delete mode 100644 GScribo/mainwindow.h delete mode 100644 GScribo/region.h delete mode 100644 GScribo/regionwidget.cpp delete mode 100644 GScribo/regionwidget.h delete mode 100644 GScribo/variantpointer.h delete mode 100644 GScribo/xml.cpp delete mode 100644 GScribo/xml.h rename {GScribo => scribo/demo/viewer}/BUGS (100%) create mode 100644 scribo/demo/viewer/GScribo.pro rename {GScribo => scribo/demo/viewer}/GScribo.pro.user (100%) rename {GScribo => scribo/demo/viewer}/GScribo.pro.user.1.3 (100%) create mode 100644 scribo/demo/viewer/PagesWidget/pagesdelegate.cc create mode 100644 scribo/demo/viewer/PagesWidget/pagesdelegate.hh create mode 100644 scribo/demo/viewer/PagesWidget/pagesmodel.cc create mode 100644 scribo/demo/viewer/PagesWidget/pagesmodel.hh create mode 100644 scribo/demo/viewer/PagesWidget/pageswidget.cc create mode 100644 scribo/demo/viewer/PagesWidget/pageswidget.hh create mode 100644 scribo/demo/viewer/Preferences/generaloptions.cc create mode 100644 scribo/demo/viewer/Preferences/generaloptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/generaloptions.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/ocroptions.cc create mode 100644 scribo/demo/viewer/Preferences/ocroptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/ocroptions.ui (100%) rename GScribo/Preferences/optionwidget.h => scribo/demo/viewer/Preferences/optionwidget.hh (100%) create mode 100644 scribo/demo/viewer/Preferences/preferencesdialog.cc create mode 100644 scribo/demo/viewer/Preferences/preferencesdialog.hh rename {GScribo => scribo/demo/viewer}/Preferences/preferencesdialog.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/preprocessingoptions.cc create mode 100644 scribo/demo/viewer/Preferences/preprocessingoptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/preprocessingoptions.ui (100%) create mode 100644 scribo/demo/viewer/Preferences/segmentationoptions.cc create mode 100644 scribo/demo/viewer/Preferences/segmentationoptions.hh rename {GScribo => scribo/demo/viewer}/Preferences/segmentationoptions.ui (100%) create mode 100644 scribo/demo/viewer/Processing/preprocess.cc create mode 100644 scribo/demo/viewer/Processing/preprocess.hh create mode 100644 scribo/demo/viewer/Processing/process.cc create mode 100644 scribo/demo/viewer/Processing/process.hh create mode 100644 scribo/demo/viewer/Processing/progressdialog.cc create mode 100644 scribo/demo/viewer/Processing/progressdialog.hh create mode 100644 scribo/demo/viewer/Processing/runner.cc create mode 100644 scribo/demo/viewer/Processing/runner.hh delete mode 100644 scribo/demo/viewer/README rename GScribo/Rendering/abstractregionitem.h => scribo/demo/viewer/Rendering/abstractregionitem.hh (100%) rename GScribo/Rendering/backgroundtexture.h => scribo/demo/viewer/Rendering/backgroundtexture.hh (100%) create mode 100644 scribo/demo/viewer/Rendering/graphicsview.cc create mode 100644 scribo/demo/viewer/Rendering/graphicsview.hh create mode 100644 scribo/demo/viewer/Rendering/regionitem.cc create mode 100644 scribo/demo/viewer/Rendering/regionitem.hh create mode 100644 scribo/demo/viewer/Rendering/rootgraphicsitem.cc create mode 100644 scribo/demo/viewer/Rendering/rootgraphicsitem.hh create mode 100644 scribo/demo/viewer/Rendering/scene.cc create mode 100644 scribo/demo/viewer/Rendering/scene.hh create mode 100644 scribo/demo/viewer/Rendering/selection.cc rename GScribo/Rendering/selection.h => scribo/demo/viewer/Rendering/selection.hh (100%) rename {GScribo => scribo/demo/viewer}/TODO (100%) create mode 100644 scribo/demo/viewer/XmlWidget/attributesmodel.cc create mode 100644 scribo/demo/viewer/XmlWidget/attributesmodel.hh create mode 100644 scribo/demo/viewer/XmlWidget/selectionproxy.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlattributes.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlattributes.hh rename GScribo/XmlWidget/xmldelegate.h => scribo/demo/viewer/XmlWidget/xmldelegate.hh (100%) create mode 100644 scribo/demo/viewer/XmlWidget/xmlitem.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlitem.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlmodel.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlmodel.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlview.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlview.hh create mode 100644 scribo/demo/viewer/XmlWidget/xmlwidget.cc create mode 100644 scribo/demo/viewer/XmlWidget/xmlwidget.hh create mode 100644 scribo/demo/viewer/aboutdialog.cc create mode 100644 scribo/demo/viewer/aboutdialog.hh create mode 100644 scribo/demo/viewer/aboutdialog.ui delete mode 100644 scribo/demo/viewer/browser_widget.cc delete mode 100644 scribo/demo/viewer/browser_widget.hh delete mode 100644 scribo/demo/viewer/common.hh delete mode 100644 scribo/demo/viewer/config.cc delete mode 100644 scribo/demo/viewer/config.hh create mode 100644 scribo/demo/viewer/configs.cc create mode 100644 scribo/demo/viewer/configs.hh delete mode 100644 scribo/demo/viewer/defs.hh rename GScribo/dir.h => scribo/demo/viewer/dir.hh (100%) create mode 100644 scribo/demo/viewer/dockwidget.cc create mode 100644 scribo/demo/viewer/dockwidget.hh delete mode 100644 scribo/demo/viewer/general_options.cc delete mode 100644 scribo/demo/viewer/general_options.hh delete mode 100644 scribo/demo/viewer/general_options.ui delete mode 100644 scribo/demo/viewer/help_dialog.cc delete mode 100644 scribo/demo/viewer/help_dialog.hh delete mode 100644 scribo/demo/viewer/help_dialog.ui delete mode 100644 scribo/demo/viewer/icons/olena_smaller.jpg delete mode 100644 scribo/demo/viewer/image_region.cc delete mode 100644 scribo/demo/viewer/image_region.hh delete mode 100644 scribo/demo/viewer/image_region.hxx delete mode 100644 scribo/demo/viewer/image_scene.cc delete mode 100644 scribo/demo/viewer/image_scene.hh delete mode 100644 scribo/demo/viewer/image_view.cc delete mode 100644 scribo/demo/viewer/image_view.hh delete mode 100644 scribo/demo/viewer/image_widget.cc delete mode 100644 scribo/demo/viewer/image_widget.hh delete mode 100644 scribo/demo/viewer/key_widget.cc delete mode 100644 scribo/demo/viewer/key_widget.hh create mode 100644 scribo/demo/viewer/mainwindow.cc create mode 100644 scribo/demo/viewer/mainwindow.hh rename {GScribo => scribo/demo/viewer}/mainwindow.ui (100%) delete mode 100644 scribo/demo/viewer/ocr_options.cc delete mode 100644 scribo/demo/viewer/ocr_options.hh delete mode 100644 scribo/demo/viewer/ocr_options.ui delete mode 100644 scribo/demo/viewer/option_widget.cc delete mode 100644 scribo/demo/viewer/option_widget.hh delete mode 100644 scribo/demo/viewer/preferences_dialog.cc delete mode 100644 scribo/demo/viewer/preferences_dialog.hh delete mode 100644 scribo/demo/viewer/preferences_dialog.ui delete mode 100644 scribo/demo/viewer/preprocess.cc delete mode 100644 scribo/demo/viewer/preprocess.hh delete mode 100644 scribo/demo/viewer/preprocessing_options.cc delete mode 100644 scribo/demo/viewer/preprocessing_options.hh delete mode 100644 scribo/demo/viewer/preprocessing_options.ui delete mode 100644 scribo/demo/viewer/process.cc delete mode 100644 scribo/demo/viewer/process.hh create mode 100644 scribo/demo/viewer/region.hh create mode 100644 scribo/demo/viewer/regionwidget.cc create mode 100644 scribo/demo/viewer/regionwidget.hh delete mode 100644 scribo/demo/viewer/runner.cc delete mode 100644 scribo/demo/viewer/runner.hh delete mode 100644 scribo/demo/viewer/segmentation_options.cc delete mode 100644 scribo/demo/viewer/segmentation_options.hh delete mode 100644 scribo/demo/viewer/segmentation_options.ui delete mode 100644 scribo/demo/viewer/step_widget.cc delete mode 100644 scribo/demo/viewer/step_widget.hh create mode 100644 scribo/demo/viewer/variantpointer.cc create mode 100644 scribo/demo/viewer/variantpointer.hh delete mode 100644 scribo/demo/viewer/viewer.cc delete mode 100644 scribo/demo/viewer/viewer.hh delete mode 100644 scribo/demo/viewer/viewer.hxx delete mode 100644 scribo/demo/viewer/viewer.qrc create mode 100644 scribo/demo/viewer/xml.cc create mode 100644 scribo/demo/viewer/xml.hh delete mode 100644 scribo/demo/viewer/xml_widget.cc delete mode 100644 scribo/demo/viewer/xml_widget.hh diff --git a/ChangeLog b/ChangeLog index 5faf2a3..50a9ad3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,83 @@ +2013-02-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + Move new viewer to scribo/demo. + + * GScribo/BUGS, + * GScribo/GScribo.pro, + * GScribo/GScribo.pro.user, + * GScribo/GScribo.pro.user.1.3, + * GScribo/PagesWidget/pagesdelegate.cpp, + * GScribo/PagesWidget/pagesdelegate.h, + * GScribo/PagesWidget/pagesmodel.cpp, + * GScribo/PagesWidget/pagesmodel.h, + * GScribo/PagesWidget/pageswidget.cpp, + * GScribo/PagesWidget/pageswidget.h, + * GScribo/Preferences/generaloptions.cpp, + * GScribo/Preferences/generaloptions.h, + * GScribo/Preferences/generaloptions.ui, + * GScribo/Preferences/ocroptions.cpp, + * GScribo/Preferences/ocroptions.h, + * GScribo/Preferences/ocroptions.ui, + * GScribo/Preferences/optionwidget.h, + * GScribo/Preferences/preferencesdialog.cpp, + * GScribo/Preferences/preferencesdialog.h, + * GScribo/Preferences/preferencesdialog.ui, + * GScribo/Preferences/preprocessingoptions.cpp, + * GScribo/Preferences/preprocessingoptions.h, + * GScribo/Preferences/preprocessingoptions.ui, + * GScribo/Preferences/segmentationoptions.cpp, + * GScribo/Preferences/segmentationoptions.h, + * GScribo/Preferences/segmentationoptions.ui, + * GScribo/Processing/preprocess.cpp, + * GScribo/Processing/preprocess.h, + * GScribo/Processing/process.cpp, + * GScribo/Processing/process.h, + * GScribo/Processing/progressdialog.cpp, + * GScribo/Processing/progressdialog.h, + * GScribo/Processing/runner.cpp, + * GScribo/Processing/runner.h, + * GScribo/Rendering/abstractregionitem.h, + * GScribo/Rendering/backgroundtexture.h, + * GScribo/Rendering/graphicsview.cpp, + * GScribo/Rendering/graphicsview.h, + * GScribo/Rendering/regionitem.cpp, + * GScribo/Rendering/regionitem.h, + * GScribo/Rendering/rootgraphicsitem.h, + * GScribo/Rendering/scene.cpp, + * GScribo/Rendering/scene.h, + * GScribo/Rendering/selection.cpp, + * GScribo/Rendering/selection.h, + * GScribo/TODO, + * GScribo/XmlWidget/attributesmodel.cpp, + * GScribo/XmlWidget/attributesmodel.h, + * GScribo/XmlWidget/selectionproxy.h, + * GScribo/XmlWidget/xmlattributes.cpp, + * GScribo/XmlWidget/xmlattributes.h, + * GScribo/XmlWidget/xmldelegate.h, + * GScribo/XmlWidget/xmlitem.cpp, + * GScribo/XmlWidget/xmlitem.h, + * GScribo/XmlWidget/xmlmodel.cpp, + * GScribo/XmlWidget/xmlmodel.h, + * GScribo/XmlWidget/xmlview.cpp, + * GScribo/XmlWidget/xmlview.h, + * GScribo/XmlWidget/xmlwidget.cpp, + * GScribo/XmlWidget/xmlwidget.h, + * GScribo/aboutdialog.h, + * GScribo/aboutdialog.ui, + * GScribo/configs.h, + * GScribo/dir.h, + * GScribo/dockwidget.h, + * GScribo/main.cpp, + * GScribo/mainwindow.cpp, + * GScribo/mainwindow.h, + * GScribo/mainwindow.ui, + * GScribo/region.h, + * GScribo/regionwidget.cpp, + * GScribo/regionwidget.h, + * GScribo/variantpointer.h, + * GScribo/xml.cpp, + * GScribo/xml.h: Move to scribo/demo. + 2011-11-16 Guillaume Lazzara <z(a)lrde.epita.fr> * configure.ac: Link to libGraphicsMagick++ if GraphicsMagick++ is diff --git a/GScribo/GScribo.pro b/GScribo/GScribo.pro deleted file mode 100644 index 1495495..0000000 --- a/GScribo/GScribo.pro +++ /dev/null @@ -1,83 +0,0 @@ -# ------------------------------------------------- -# Project created by QtCreator 2013-01-21T09:20:54 -# ------------------------------------------------- -QT += xml -INCLUDEPATH += /lrde/home/stage/froger_a/olena/scribo/ \ - /lrde/home/stage/froger_a/olena/milena/ \ - /lrde/home/stage/froger_a/olena/_build/scribo/demo/ -QMAKE_CXXFLAGS += -DNDEBUG \ - -DMLN_WO_GLOBAL_VARS -LIBS += -I/usr/include/graphicsImage \ - -lGraphicsMagick++ \ - -ltesseract_full \ - -ltiff -TARGET = GScribo -TEMPLATE = app -SOURCES += regionwidget.cpp \ - mainwindow.cpp \ - main.cpp \ - xml.cpp \ - Rendering/scene.cpp \ - Rendering/selection.cpp \ - Rendering/regionitem.cpp \ - Rendering/graphicsview.cpp \ - PagesWidget/pageswidget.cpp \ - PagesWidget/pagesmodel.cpp \ - PagesWidget/pagesdelegate.cpp \ - Preferences/segmentationoptions.cpp \ - Preferences/preprocessingoptions.cpp \ - Preferences/ocroptions.cpp \ - Preferences/generaloptions.cpp \ - Preferences/preferencesdialog.cpp \ - Processing/progressdialog.cpp \ - Processing/preprocess.cpp \ - Processing/process.cpp \ - Processing/runner.cpp \ - XmlWidget/xmlwidget.cpp \ - XmlWidget/xmlmodel.cpp \ - XmlWidget/xmlitem.cpp \ - XmlWidget/xmlattributes.cpp \ - XmlWidget/attributesmodel.cpp \ - XmlWidget/xmlview.cpp -HEADERS += mainwindow.h \ - variantpointer.h \ - regionwidget.h \ - aboutdialog.h \ - configs.h \ - region.h \ - dir.h \ - xml.h \ - Rendering/scene.h \ - Rendering/selection.h \ - Rendering/regionitem.h \ - Rendering/graphicsview.h \ - PagesWidget/pageswidget.h \ - PagesWidget/pagesmodel.h \ - Processing/preprocess.h \ - Processing/process.h \ - Processing/runner.h \ - Processing/progressdialog.h \ - Preferences/segmentationoptions.h \ - Preferences/preprocessingoptions.h \ - Preferences/ocroptions.h \ - Preferences/generaloptions.h \ - Preferences/optionwidget.h \ - Preferences/preferencesdialog.h \ - XmlWidget/xmlwidget.h \ - XmlWidget/xmlmodel.h \ - XmlWidget/xmlitem.h \ - XmlWidget/xmlattributes.h \ - XmlWidget/selectionproxy.h \ - XmlWidget/xmldelegate.h \ - XmlWidget/attributesmodel.h \ - PagesWidget/pagesdelegate.h \ - Rendering/rootgraphicsitem.h \ - XmlWidget/xmlview.h \ - dockwidget.h -FORMS += mainwindow.ui \ - aboutdialog.ui \ - Preferences/preferencesdialog.ui \ - Preferences/ocroptions.ui \ - Preferences/segmentationoptions.ui \ - Preferences/generaloptions.ui \ - Preferences/preprocessingoptions.ui diff --git a/GScribo/PagesWidget/pagesdelegate.cpp b/GScribo/PagesWidget/pagesdelegate.cpp deleted file mode 100644 index 19a34c2..0000000 --- a/GScribo/PagesWidget/pagesdelegate.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "pagesdelegate.h" - -PagesDelegate::PagesDelegate(QObject *parent) : - QStyledItemDelegate(parent) -{ - pen_.setColor(QColor::fromRgb(255, 69, 0, 255)); - pen_.setWidth(2); -} - -void PagesDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index) const -{ - QStyledItemDelegate::paint(painter, option, index); - - if(index.row() == index.data(Qt::UserRole+1).toInt()) - { - painter->setPen(pen_); - painter->drawRect(option.rect); - painter->fillRect(option.rect, QColor::fromRgb(255, 69, 0, 60)); - } -} diff --git a/GScribo/PagesWidget/pagesdelegate.h b/GScribo/PagesWidget/pagesdelegate.h deleted file mode 100644 index ff422ca..0000000 --- a/GScribo/PagesWidget/pagesdelegate.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PAGESDELEGATE_H -#define PAGESDELEGATE_H - -#include <QStyledItemDelegate> -#include <QPainter> - -class PagesDelegate : - public QStyledItemDelegate -{ - public: - explicit PagesDelegate(QObject *parent = 0); - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; - - private: - QPen pen_; -}; - -#endif // PAGESDELEGATE_H diff --git a/GScribo/PagesWidget/pagesmodel.cpp b/GScribo/PagesWidget/pagesmodel.cpp deleted file mode 100644 index faccb74..0000000 --- a/GScribo/PagesWidget/pagesmodel.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "pagesmodel.h" - -PagesModel::PagesModel(QObject *parent): - QAbstractListModel(parent) -{ - currentRow_ = 0; -} - -QVariant PagesModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - if(role == Qt::DecorationRole) - return pixmaps_[index.row()]; - - if(role == Qt::UserRole) - return filenames_[index.row()]; - - if(role == Qt::UserRole+1) - return currentRow_; - - return QVariant(); -} - -void PagesModel::addPicture(const QString& filename, const QPixmap& pixmap) -{ - beginInsertRows(QModelIndex(), 0, 0); - - pixmaps_.prepend(pixmap.scaled(QSize(200, 200), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - filenames_.prepend(filename); - - endInsertRows(); -} - -void PagesModel::removePixmap(const QModelIndex &parent) -{ - int row = parent.row(); - - beginRemoveRows(parent, row, row); - - pixmaps_.removeAt(row); - filenames_.removeAt(row); - - endRemoveRows(); -} - -void PagesModel::setCurrentRow(int currentRow) -{ - beginResetModel(); - - currentRow_ = currentRow; - - endResetModel(); -} diff --git a/GScribo/PagesWidget/pagesmodel.h b/GScribo/PagesWidget/pagesmodel.h deleted file mode 100644 index 4c18842..0000000 --- a/GScribo/PagesWidget/pagesmodel.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef PAGESMODEL_H -#define PAGESMODEL_H - -#include <QAbstractListModel> -#include <QIcon> -#include <QList> - -class PagesModel: - public QAbstractListModel -{ - Q_OBJECT - - public: - explicit PagesModel(QObject *parent = 0); - - inline QStringList filenames() const; - inline int rowCount(const QModelIndex& parent = QModelIndex()) const; - - inline int currentRow() const; - void setCurrentRow(int currentRow); - - QVariant data(const QModelIndex& index, int role = Qt::DecorationRole) const; - void addPicture(const QString& filename, const QPixmap& pixmap); - - private: - QStringList filenames_; - QList<QPixmap> pixmaps_; - int currentRow_; - - public slots: - void removePixmap(const QModelIndex& parent); -}; - -inline QStringList PagesModel::filenames() const -{ return filenames_; } - -inline int PagesModel::rowCount(const QModelIndex&) const -{ return filenames_.count(); } - -inline int PagesModel::currentRow() const -{ return currentRow_; } - -#endif // PAGESMODEL_H diff --git a/GScribo/PagesWidget/pageswidget.cpp b/GScribo/PagesWidget/pageswidget.cpp deleted file mode 100644 index 400046a..0000000 --- a/GScribo/PagesWidget/pageswidget.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "pageswidget.h" - -PagesWidget::PagesWidget(QWidget *parent): - QListView(parent) -{ - setUniformItemSizes(true); - setSelectionMode(QAbstractItemView::ExtendedSelection); - setViewMode(QListView::IconMode); - setIconSize(QSize(200, 200)); - setMovement(QListView::Static); - setResizeMode(QListView::Adjust); - setSpacing(10); - - setModel(&model_); - setItemDelegate(new PagesDelegate()); - - QShortcut *remove = new QShortcut(Qt::Key_Delete, this); - connect(remove, SIGNAL(activated()), this, SLOT(removeSelection())); - connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(getPicture(QModelIndex))); -} - -void PagesWidget::removeSelection() -{ - QModelIndexList indexes = selectionModel()->selectedIndexes(); - if(hasFocus() && indexes.count() > 0) - { - // Sort the list because after the first removal, the second row index may not be the good one. - qSort(indexes.begin(), indexes.end()); - - // From the highest row to the smallest to be sure to remove the good index. - for(int i = indexes.count()-1; i > -1; i--) - model_.removePixmap(indexes[i]); - - // Draw new image on the scene. - getPicture(model_.index(indexes[0].row())); - clearSelection(); - - model_.setCurrentRow(indexes[0].row()); - scrollTo(indexes[0]); - } -} - -void PagesWidget::getPicture(const QModelIndex& index) -{ - QString filename = index.data(Qt::UserRole).toString(); - model_.setCurrentRow(index.row()); - - emit imageSelectionned(filename); -} diff --git a/GScribo/PagesWidget/pageswidget.h b/GScribo/PagesWidget/pageswidget.h deleted file mode 100644 index eb6488c..0000000 --- a/GScribo/PagesWidget/pageswidget.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef PAGESWIDGET_H -#define PAGESWIDGET_H - -#include <QListView> -#include <QShortcut> - -#include "pagesdelegate.h" -#include "pagesmodel.h" - -class PagesWidget: - public QListView -{ - Q_OBJECT - - public: - explicit PagesWidget(QWidget *parent = 0); - - inline QStringList filenames() const; - inline int currentRow() const; - inline void setCurrentRow(int currentRow); - - inline void addPicture(const QString& filename, const QPixmap& pixmap); - - protected: - inline void focusOutEvent(QFocusEvent *event); - - private: - PagesModel model_; - - public slots: - void removeSelection(); - - private slots: - void getPicture(const QModelIndex& index); - - signals: - void imageSelectionned(const QString& filename); -}; - -inline QStringList PagesWidget::filenames() const -{ return model_.filenames(); } - -inline int PagesWidget::currentRow() const -{ return model_.currentRow(); } - -inline void PagesWidget::setCurrentRow(int currentRow) -{ model_.setCurrentRow(currentRow); } - -inline void PagesWidget::addPicture(const QString& filename, const QPixmap& pixmap) -{ model_.addPicture(filename, pixmap); } - -inline void PagesWidget::focusOutEvent(QFocusEvent *event) -{ QListView::focusOutEvent(event); clearSelection(); } - -#endif // PAGESWIDGET_H diff --git a/GScribo/Preferences/generaloptions.cpp b/GScribo/Preferences/generaloptions.cpp deleted file mode 100644 index 620a8fd..0000000 --- a/GScribo/Preferences/generaloptions.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "generaloptions.h" -#include "ui_generaloptions.h" - -GeneralOptions::GeneralOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::GeneralOptions) -{ - ui->setupUi(this); - loadConfig(); -} - -GeneralOptions::~GeneralOptions() -{ - delete ui; -} - -void GeneralOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->saveXml->setChecked(conf->generalSaveXmlEnabled()); - ui->sameDir->setChecked(conf->generalSaveXmlSameDir()); - ui->customDir->setChecked(conf->generalSaveXmlCustomDir()); - ui->customDirValue->setText(conf->generalSaveXmlCustomDirPath()); -} - - -void GeneralOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setGeneralSaveXmlEnabled(ui->saveXml->isChecked()); - conf->setGeneralSaveXmlSameDir(ui->sameDir->isChecked()); - conf->setGeneralSaveXmlCustomDir(ui->customDir->isChecked()); - conf->setGeneralSaveXmlCustomDirPath(ui->customDirValue->text()); -} - -void GeneralOptions::onCustomDirBrowseBtnClicked() -{ - QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); - - if (!dir.isEmpty()) - ui->customDirValue->setText(dir); -} diff --git a/GScribo/Preferences/generaloptions.h b/GScribo/Preferences/generaloptions.h deleted file mode 100644 index 0c07129..0000000 --- a/GScribo/Preferences/generaloptions.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef GENERALOPTIONS_H -#define GENERALOPTIONS_H - -#include <QFileDialog> - -#include "optionwidget.h" -#include "configs.h" - -namespace Ui -{ - class GeneralOptions; -} - -class GeneralOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit GeneralOptions(QWidget *parent = 0); - ~GeneralOptions(); - - virtual void loadConfig(); - virtual void saveConfig(); - - private: - Ui::GeneralOptions *ui; - - private slots: - void onCustomDirBrowseBtnClicked(); - -}; - -#endif // GENERAL_OPTIONS_H diff --git a/GScribo/Preferences/ocroptions.cpp b/GScribo/Preferences/ocroptions.cpp deleted file mode 100644 index fff05b2..0000000 --- a/GScribo/Preferences/ocroptions.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "ocroptions.h" -#include "ui_ocroptions.h" - -static const char *language[][2] = -{ - { "English", "eng" }, - { "French", "fra" }, - { 0, 0 } -}; - -OcrOptions::OcrOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::OcrOptions) -{ - ui->setupUi(this); - - for (unsigned i = 0; language[i][0]; ++i) - ui->ocr_language->insertItem(i, language[i][0]); - - loadConfig(); -} - -OcrOptions::~OcrOptions() -{ - delete ui; -} - -int OcrOptions::findIndex(const QString& lang) -{ - for (unsigned i = 0; language[i][0]; ++i) - if (lang == language[i][1]) - return i; - - return 0; -} - - -void OcrOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->enable_ocr->setChecked(conf->ocrEnabled()); - ui->ocr_language->setCurrentIndex(findIndex(conf->ocrLanguage())); -} - - -void OcrOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setOcrEnabled(ui->enable_ocr->isChecked()); - conf->setOcrLanguage(language[ui->ocr_language->currentIndex()][1]); -} diff --git a/GScribo/Preferences/ocroptions.h b/GScribo/Preferences/ocroptions.h deleted file mode 100644 index 9ba8d53..0000000 --- a/GScribo/Preferences/ocroptions.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef OCR_OPTIONS_H -#define OCR_OPTIONS_H - -//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "configs.h" -#include "region.h" - -namespace Ui -{ - class OcrOptions; -} - -class OcrOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit OcrOptions(QWidget *parent = 0); - ~OcrOptions(); - - void loadConfig(); - void saveConfig(); - - private: - int findIndex(const QString& lang); - - Ui::OcrOptions *ui; -}; - -#endif // OCR_OPTIONS_H diff --git a/GScribo/Preferences/preferencesdialog.cpp b/GScribo/Preferences/preferencesdialog.cpp deleted file mode 100644 index 23a0dd6..0000000 --- a/GScribo/Preferences/preferencesdialog.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include "preferencesdialog.h" -#include "ui_preferencesdialog.h" - -PreferencesDialog::PreferencesDialog(QWidget *parent) : - QDialog(parent, Qt::Dialog), - ui(new Ui::PreferencesDialog) -{ - ui->setupUi(this); - - // We may want to remove this useless object in the ui file. - delete ui->widget; - - connect(ui->optionList, SIGNAL(currentRowChanged(int)), this, SLOT(onOptionListCurrentRowChanged(int))); - setAttribute(Qt::WA_DeleteOnClose); - - loadOptionList(); - ui->optionList->setCurrentRow(0); -} - -PreferencesDialog::~PreferencesDialog() -{ - delete ui; -} - -void PreferencesDialog::loadOptionList() -{ - static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; - - int i; - for (i = 0; options[i]; ++i) - ui->optionList->insertItem(i, options[i]); - - widgets.fill(0, i); -} - -void PreferencesDialog::selectOptionWidget(int row) -{ - if(!widgets[row]) - { - QWidget *widget = 0; - - switch(row) - { - case 0: - widget = new GeneralOptions(this); - break; - - case 1: - widget = new PreprocessingOptions(this); - break; - - case 2: - widget = new SegmentationOptions(this); - break; - - case 3: - widget = new OcrOptions(this); - break; - } - - if(widget) - widgets[row] = widget; - } - - if(ui->horizontalLayout_2->count() == 2) - { - QWidget *current_widget = ui->horizontalLayout_2->itemAt(1)->widget(); - ui->horizontalLayout_2->removeWidget(current_widget); - current_widget->hide(); - } - - ui->horizontalLayout_2->insertWidget(1, widgets[row]); - widgets[row]->show(); -} - - -void PreferencesDialog::accept() -{ - for (int i = 0; i < widgets.size(); ++i) - { - if (widgets[i]) - { - static_cast<OptionWidget *>(widgets[i])->saveConfig(); - delete widgets[i]; - } - } - - QDialog::accept(); -} - - -void PreferencesDialog::reject() -{ - for (int i = 0; i < widgets.size(); ++i) - delete widgets[i]; - - QDialog::reject(); -} diff --git a/GScribo/Preferences/preferencesdialog.h b/GScribo/Preferences/preferencesdialog.h deleted file mode 100644 index b0b9b61..0000000 --- a/GScribo/Preferences/preferencesdialog.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef PREFERENCESDIALOG_H -#define PREFERENCESDIALOG_H - -#include <QDialog> - -#include "preprocessingoptions.h" -#include "segmentationoptions.h" -#include "generaloptions.h" -#include "ocroptions.h" - -namespace Ui -{ - class PreferencesDialog; -} - -class PreferencesDialog : - public QDialog -{ - Q_OBJECT - - public: - explicit PreferencesDialog(QWidget *parent = 0); - ~PreferencesDialog(); - - private: - void loadOptionList(); - void selectOptionWidget(int row); - - Ui::PreferencesDialog *ui; - QVector<QWidget *> widgets; - - private slots: - inline void onOptionListCurrentRowChanged(int row); - virtual void accept(); - virtual void reject(); - -}; - -inline void PreferencesDialog::onOptionListCurrentRowChanged(int row) -{ selectOptionWidget(row); } - -#endif // PREFERENCESDIALOG_H diff --git a/GScribo/Preferences/preprocessingoptions.cpp b/GScribo/Preferences/preprocessingoptions.cpp deleted file mode 100644 index 6639bae..0000000 --- a/GScribo/Preferences/preprocessingoptions.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "preprocessingoptions.h" -#include "ui_preprocessingoptions.h" - -using namespace scribo::toolchain::internal; - -PreprocessingOptions::PreprocessingOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::PreprocessingOptions) -{ - ui->setupUi(this); - - ui->bin_algoCbox->insertItem(Convert, "Violent convert"); - ui->bin_algoCbox->insertItem(Sauvola, "Local threshold"); - ui->bin_algoCbox->insertItem(SauvolaMs, "Local threshold multiscale"); - - loadConfig(); -} - -PreprocessingOptions::~PreprocessingOptions() -{ - delete ui; -} - -void PreprocessingOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - - ui->subsampleCb->setChecked(conf->preprocessingSubsample()); - ui->remove_bgCb->setChecked(conf->preprocessingRemoveBg()); - ui->deskewCb->setChecked(conf->preprocessingDeskew()); - ui->remove_noiseCb->setChecked(conf->preprocessingRemoveNoise()); - ui->bin_algoCbox->setCurrentIndex(conf->preprocessingBinAlgo()); -} - - -void PreprocessingOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - - conf->setPreprocessingSubsample(ui->subsampleCb->isChecked()); - conf->setPreprocessingRemoveBg(ui->remove_bgCb->isChecked()); - conf->setPreprocessingDeskew(ui->deskewCb->isChecked()); - conf->setPreprocessingRemoveNoise(ui->remove_noiseCb->isChecked()); - conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex()); -} diff --git a/GScribo/Preferences/preprocessingoptions.h b/GScribo/Preferences/preprocessingoptions.h deleted file mode 100644 index 6cc0081..0000000 --- a/GScribo/Preferences/preprocessingoptions.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PREPROCESSINGOPTIONS_H -#define PREPROCESSINGOPTIONS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "region.h" -#include "configs.h" - -namespace Ui -{ - class PreprocessingOptions; -} - -class PreprocessingOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit PreprocessingOptions(QWidget *parent = 0); - ~PreprocessingOptions(); - - void loadConfig(); - void saveConfig(); - - private: - Ui::PreprocessingOptions *ui; - -}; - -#endif // PREPROCESSINGOPTIONS_H diff --git a/GScribo/Preferences/segmentationoptions.cpp b/GScribo/Preferences/segmentationoptions.cpp deleted file mode 100644 index d35209f..0000000 --- a/GScribo/Preferences/segmentationoptions.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "segmentationoptions.h" -#include "ui_segmentationoptions.h" - -SegmentationOptions::SegmentationOptions(QWidget *parent) : - OptionWidget(parent), - ui(new Ui::SegmentationOptions) -{ - ui->setupUi(this); - - ui->find_sepsCbox->insertItem(Separator::Lines, "Lines"); - ui->find_sepsCbox->insertItem(Separator::Whitespaces, "Whitespaces"); - ui->find_sepsCbox->insertItem(Separator::Both, "Lines and whitespaces"); - - loadConfig(); -} - -SegmentationOptions::~SegmentationOptions() -{ - delete ui; -} - -void SegmentationOptions::loadConfig() -{ - Configs *const conf = Configs::getInstance(); - ui->find_sepsCbox->setCurrentIndex(conf->segmentationFindSeps()); -} - - -void SegmentationOptions::saveConfig() -{ - Configs *const conf = Configs::getInstance(); - conf->setSegmentationFindSeps(ui->find_sepsCbox->currentIndex()); -} diff --git a/GScribo/Preferences/segmentationoptions.h b/GScribo/Preferences/segmentationoptions.h deleted file mode 100644 index 1506bfa..0000000 --- a/GScribo/Preferences/segmentationoptions.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SEGMENTATIONOPTIONS_H -#define SEGMENTATIONOPTIONS_H - -//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -#include "optionwidget.h" -#include "configs.h" -#include "region.h" - -namespace Ui -{ - class SegmentationOptions; -} - -class SegmentationOptions : - public OptionWidget -{ - Q_OBJECT - - public: - explicit SegmentationOptions(QWidget *parent = 0); - ~SegmentationOptions(); - - void loadConfig(); - void saveConfig(); - - private: - Ui::SegmentationOptions *ui; -}; - -#endif // SEGMENTATIONOPTIONS_H diff --git a/GScribo/Processing/preprocess.cpp b/GScribo/Processing/preprocess.cpp deleted file mode 100644 index f012d88..0000000 --- a/GScribo/Processing/preprocess.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "preprocess.h" - -void Preprocess::on_progress() -{ - emit progress(); -} - -void Preprocess::on_new_progress_label(const char *label) -{ - emit newProgressLabel(QString(label)); -} diff --git a/GScribo/Processing/preprocess.h b/GScribo/Processing/preprocess.h deleted file mode 100644 index d65357f..0000000 --- a/GScribo/Processing/preprocess.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef PREPROCESS_H -#define PREPROCESS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> -#include <mln/core/image/image2d.hh> -#include <mln/value/rgb8.hh> -#include <QObject> - -using namespace scribo::toolchain::internal; - -class Preprocess : - public QObject, - public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > -{ - Q_OBJECT - - public: - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - - signals: - void newProgressLabel(const QString& label); - void progress(); -}; - -#endif // PREPROCESS_H diff --git a/GScribo/Processing/process.cpp b/GScribo/Processing/process.cpp deleted file mode 100644 index bd37480..0000000 --- a/GScribo/Processing/process.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "process.h" - -Process::Process(const char *doc_filename) - : superT(doc_filename) -{ -} - -void Process::on_progress() -{ - emit progress(); -} - -void Process::on_new_progress_label(const char *label) -{ - emit newProgressLabel(QString(label)); -} - -void Process::on_xml_saved() -{ - emit xmlSaved(QString(output_file.c_str())); -} diff --git a/GScribo/Processing/process.h b/GScribo/Processing/process.h deleted file mode 100644 index 579a988..0000000 --- a/GScribo/Processing/process.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef PROCESS_H -#define PROCESS_H - -#include <scribo/toolchain/internal/content_in_doc_functor.hh> -#include <mln/core/image/image2d.hh> -#include <QObject> - -using namespace scribo::toolchain::internal; - -struct Process : - public QObject, - public content_in_doc_functor<mln::image2d<bool> > -{ - Q_OBJECT - typedef content_in_doc_functor<mln::image2d<bool> > superT; - - public : - explicit Process(const char *docFilename); - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - virtual void on_xml_saved(); - - signals: - void newProgressLabel(const QString& label); - void progress(); - void xmlSaved(const QString& filename); -}; - -#endif // PROCESS_H diff --git a/GScribo/Processing/progressdialog.cpp b/GScribo/Processing/progressdialog.cpp deleted file mode 100644 index 7f9d833..0000000 --- a/GScribo/Processing/progressdialog.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "progressdialog.h" - -ProgressDialog::ProgressDialog(QWidget *parent): - QProgressDialog(parent, Qt::Dialog) -{ - setAutoClose(false); - setCancelButton(0); - hide(); -} - -void ProgressDialog::reset() -{ - setValue(0); - setLabelText("Initilization"); - show(); -} diff --git a/GScribo/Processing/progressdialog.h b/GScribo/Processing/progressdialog.h deleted file mode 100644 index 822d9ba..0000000 --- a/GScribo/Processing/progressdialog.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef PROGRESSDIALOG_H -#define PROGRESSDIALOG_H - -#include <QProgressDialog> - -class ProgressDialog : - public QProgressDialog -{ - Q_OBJECT - - public: - explicit ProgressDialog(QWidget *parent = 0); - void reset(); - - public slots: - inline void run(); -}; - -void ProgressDialog::run() -{ setValue(value()+1); } - -#endif // PROGRESSDIALOG_H diff --git a/GScribo/Processing/runner.cpp b/GScribo/Processing/runner.cpp deleted file mode 100644 index c02223c..0000000 --- a/GScribo/Processing/runner.cpp +++ /dev/null @@ -1,183 +0,0 @@ -#include "runner.h" - -using namespace mln; -using namespace scribo::toolchain::internal; - -static QString get_pathto(const QString& file, const QString localdirsuffix = QString()) -{ - QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); - if (f.exists()) - return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; - f.setFileName(SCRIBO_PREFIX_BINDIR "/" + file); - if (f.exists()) - return SCRIBO_PREFIX_BINDIR; - - return ""; -} - -Runner::Runner(QObject *parent) : - QThread(parent) -{ - moveToThread(this); -} - -void Runner::run() -{ - if(mode_ == Demat) - { - image2d<value::rgb8> ima; - for(int i = 0; i < args_.count(); i++) - { - io::magick::load(ima, args_.at(i).toUtf8().constData()); - image2d<bool> bin_ima = preprocess(ima); - process(ima, bin_ima, i); - } - } - - else if(mode_ == Export) - export_as(); - - emit finished(); -} - -void Runner::stop() -{ - terminate(); -} - -// Demat related stuff -void Runner::start_demat(const QStringList& filenames) -{ - args_.clear(); - args_ = filenames; - mode_ = Demat; - QThread::start(); -} - - -image2d<bool> Runner::preprocess(const image2d<value::rgb8>& ima) -{ - emit new_step("Preprocessing"); - Preprocess f; - - // Load config. - Configs *const conf = Configs::getInstance(); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(newProgressLabel(QString)), - this, SIGNAL(new_progress_label(const QString&))); - - f.enable_subsample = conf->preprocessingSubsample(); - f.enable_fg_extraction = conf->preprocessingRemoveBg(); - f.enable_deskew = conf->preprocessingDeskew(); - f.enable_denoising = conf->preprocessingRemoveNoise(); - - f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessingBinAlgo()); - - emit new_progress_max_value(f.nsteps()); - - // Perform preprocessing. - f(ima); - - return f.output; -} - - -void Runner::process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima, int arg) -{ - emit new_step("Page segmentation"); - - Process f(args_.at(arg).toUtf8().constData()); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(newProgressLabel(QString)), - this, SIGNAL(new_progress_label(QString))); - connect(&f, SIGNAL(xmlSaved(QString)), - this, SIGNAL(xml_saved(const QString&))); - - // Load config. - Configs *const conf = Configs::getInstance(); - - Separator::FindSeparator find_seps = static_cast<Separator::FindSeparator>(conf->segmentationFindSeps()); - f.enable_line_seps = (find_seps == Separator::Lines - || find_seps == Separator::Both); - f.enable_whitespace_seps = (find_seps == Separator::Whitespaces - || find_seps == Separator::Both); - f.enable_ocr = conf->ocrEnabled(); - f.ocr_language = conf->ocrLanguage().toAscii().data(); - f.xml_format = scribo::io::xml::PageExtended; - - - f.save_doc_as_xml = true; - QFileInfo file(args_.at(arg)); - QString output_dir = QDir::tempPath(); - if (conf->generalSaveXmlEnabled()) - { - if (conf->generalSaveXmlSameDir()) - output_dir = file.absolutePath(); - else if (conf->generalSaveXmlCustomDir()) - output_dir = conf->generalSaveXmlCustomDirPath(); - - QDir dir(output_dir); - if (!dir.exists() && !dir.mkpath(output_dir)) - output_dir = QDir::tempPath(); - } - QString filename = (output_dir + "/" + file.baseName() + "_gui.xml"); - f.output_file = filename.toUtf8().constData(); - emit new_progress_max_value(f.nsteps()); - - // Perform text detection. - f(original_ima, processed_ima); -} - -// Export related stuff -void Runner::start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile) -{ - args_.clear(); - args_ << imgfile << xmlfile << outfile; - mode_ = Export; - - QThread::start(); -} - -void Runner::export_as() -{ - emit new_step("Exporting document"); - emit new_progress_max_value(2); - - // Checking output format - QFileInfo f(args_.at(2)); - - QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); - - if (pathto_xml2doc.isEmpty()) - { - QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); - return; - } - - emit progress(); - - int rvalue = 0; - if (f.suffix() == "pdf") - { - emit new_step("Exporting as PDF"); - rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else if (f.suffix() == "html" || f.suffix() == "htm") - { - emit new_step("Exporting as HTML"); - rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else - QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); - - if (rvalue != 0) - QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); -} diff --git a/GScribo/Processing/runner.h b/GScribo/Processing/runner.h deleted file mode 100644 index 721086a..0000000 --- a/GScribo/Processing/runner.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef RUNNER_H -#define RUNNER_H - -#include <mln/core/image/image2d.hh> -#include <mln/io/magick/load.hh> -#include <mln/value/rgb8.hh> -#include <QStringList> -#include <QMessageBox> -#include <QThread> -#include <QFile> - -#include "preprocess.h" -#include "process.h" -#include "configs.h" -#include "region.h" -#include "dir.h" - -using namespace mln; - -enum RunMode -{ - Demat, - Export -}; - -class Runner : - public QThread -{ - Q_OBJECT - - public: - explicit Runner(QObject *parent = 0); - void start_demat(const QStringList& filenames); - void start_export(const QString& imgfile, const QString& xmlfile, const QString& outfile); - - private: - image2d<bool> preprocess(const image2d<value::rgb8>& ima); - void process(const image2d<value::rgb8>& original_ima, const image2d<bool>& processed_ima, int arg); - void export_as(); - virtual void run(); - template <typename V> unsigned find_best_scale(const mln::image2d<V>& ima); - - QStringList args_; - RunMode mode_; - - public slots: - void stop(); - - signals: - void new_step(const QString& step_name); - void new_progress_max_value(int i); - void new_progress_label(const QString& msg); - void xml_saved(const QString& filename); - void progress(); - void finished(); -}; - -#endif // RUNNER_H diff --git a/GScribo/Rendering/graphicsview.cpp b/GScribo/Rendering/graphicsview.cpp deleted file mode 100644 index 336d5c2..0000000 --- a/GScribo/Rendering/graphicsview.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include "graphicsview.h" -#include <QDebug> - -GraphicsView::GraphicsView(QWidget *parent) : - QGraphicsView(parent) -{ - init(); -} - -GraphicsView::GraphicsView(QGraphicsScene *scene, QWidget *parent) : - QGraphicsView(scene, parent) -{ - init(); -} - -void GraphicsView::init() -{ - isRightClicking_ = false; - scaleRatio_ = QSizeF(1, 1); - setTransformationAnchor(GraphicsView::AnchorUnderMouse); - setBackgroundBrush(QBrush(Qt::lightGray)); - - // Important to hide scroll bars : when they appear, it triggers the resizeEvent. - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -} - -void GraphicsView::mousePressEvent(QMouseEvent *event) -{ - if(event->button() == Qt::RightButton) - { - emit beginDrag(); - setDragMode(QGraphicsView::ScrollHandDrag); - } - - QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseButtonPress, event->pos(), Qt::LeftButton, - Qt::LeftButton, Qt::MetaModifier); - event->ignore(); - QGraphicsView::mousePressEvent(mouseEvent); -} - -void GraphicsView::mouseReleaseEvent(QMouseEvent *event) -{ - if(event->button() == Qt::RightButton) - { - setDragMode(GraphicsView::NoDrag); - emit endDrag(); - } - - QGraphicsView::mouseReleaseEvent(event); -} - -void GraphicsView::wheelEvent(QWheelEvent *event) -{ - if(event->modifiers() & Qt::ControlModifier) - { - // Current wheel have an angle of 15 degrees by steps with a delta of + or - 120. A good scale is +- 0.1 in that case. - // So we have to adapt for wheel whith better precision. - qreal degrees = 1 + static_cast<qreal>(event->delta()) / 1200; - qreal nextScaleRatio = degrees * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(event->delta() > 0) - { - if(nextScaleRatio <= 20) - { - scaleRatio_ *= degrees; - scale(degrees, degrees); - } - } - else - { - if(nextScaleRatio >= 1.1) - { - scaleRatio_ *= degrees; - scale(degrees, degrees); - } - else if(isContainedInView_) - { - QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); - scaleRatio_ = QSizeF(1, 1); - } - } - } - else - QGraphicsView::wheelEvent(event); -} - -void GraphicsView::keyPressEvent(QKeyEvent* event) -{ - // Bitwise AND to check if at least CTRL is pushed. - if(event->modifiers() & Qt::ControlModifier) - { - qreal nextScaleRatio; - if(event->key() == Qt::Key_Plus) - { - nextScaleRatio = 1.2 * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(nextScaleRatio <= 19) - { - scaleRatio_ *= 1.2; - scale(1.2, 1.2); - } - } - else if(event->key() == Qt::Key_Minus) - { - nextScaleRatio = 0.8 * isWidthGreater_ ? scaleRatio_.width() : - scaleRatio_.height(); - if(nextScaleRatio >= 1.2) - { - scaleRatio_ *= 0.8; - scale(0.8, 0.8); - } - else if(isContainedInView_) - { - QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); - scaleRatio_ = QSizeF(1, 1); - } - } - } - - QGraphicsView::keyPressEvent(event); -} - -void GraphicsView::fitInView(const QRectF& rect) -{ - setFocus(); - isWidthGreater_ = static_cast<qreal>(rect.width()) / static_cast<qreal>(rect.height()) > 1 ? true : - false; - qreal ratio = isWidthGreater_ ? static_cast<qreal>(width()) / static_cast<qreal>(rect.width()) : - static_cast<qreal>(height()) / static_cast<qreal>(rect.height()); - - isContainedInView_ = ratio < 1 ? true : false; - if(isContainedInView_) - { - scaleRatio_ = QSizeF(1, 1); - QGraphicsView::fitInView(rect, Qt::KeepAspectRatio); - } -} - -void GraphicsView::resizeEvent(QResizeEvent *event) -{ - if(scene()->items().count() > 1) - { - qreal ratio = isWidthGreater_ ? static_cast<qreal>(event->size().width()) / static_cast<qreal>(event->oldSize().width()) : - static_cast<qreal>(event->size().height()) / static_cast<qreal>(event->oldSize().height()); - scale(ratio, ratio); - } - - QGraphicsView::resizeEvent(event); -} diff --git a/GScribo/Rendering/graphicsview.h b/GScribo/Rendering/graphicsview.h deleted file mode 100644 index 285f4cd..0000000 --- a/GScribo/Rendering/graphicsview.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef GRAPHICSVIEW_H -#define GRAPHICSVIEW_H - -#include <QGraphicsView> -#include <QWheelEvent> -#include <QScrollBar> - -class GraphicsView : - public QGraphicsView -{ - Q_OBJECT - - public: - explicit GraphicsView(QWidget *parent = 0); - explicit GraphicsView(QGraphicsScene *scene, QWidget *parent = 0); - - protected: - void init(); - - void resizeEvent(QResizeEvent *event); - - void wheelEvent(QWheelEvent *event); - void keyPressEvent(QKeyEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - - private: - bool isWidthGreater_; - bool isContainedInView_; - QSizeF scaleRatio_; - - bool isRightClicking_; - QPointF prevMousePos_; - - public slots: - void fitInView(const QRectF& rect); - - signals: - void beginDrag(); - void endDrag(); -}; - -#endif // GRAPHICSVIEW_H diff --git a/GScribo/Rendering/regionitem.cpp b/GScribo/Rendering/regionitem.cpp deleted file mode 100644 index 77cbcb3..0000000 --- a/GScribo/Rendering/regionitem.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "regionitem.h" - -RegionItem::RegionItem(QGraphicsItem *parent, QGraphicsScene *scene) - : QGraphicsPolygonItem(parent, scene) -{ - init(); -} - -RegionItem::RegionItem(const QPolygonF& polygon, QGraphicsItem *parent, QGraphicsScene *scene): - QGraphicsPolygonItem(polygon, parent, scene) -{ - init(); -} - -void RegionItem::init() -{ - xmlItem_ = 0; - - selectedPen_.setStyle(Qt::SolidLine); - unselectedPen_.setStyle(Qt::SolidLine); - - selectedPen_.setWidthF(2); - unselectedPen_.setWidth(0); - - selectedPen_.setCapStyle(Qt::SquareCap); - unselectedPen_.setCapStyle(Qt::SquareCap); - - selectedBrush_.setStyle(Qt::SolidPattern); - unselectedBrush_.setStyle(Qt::SolidPattern); -} - -void RegionItem::setColor(const QColor& color) -{ - selectedPen_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 255)); - unselectedPen_.setColor(color); - - selectedBrush_.setColor(color); - unselectedBrush_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 40)); - - setPen(unselectedPen_); - setBrush(unselectedBrush_); -} - -void RegionItem::setSelected(bool isSelected) -{ - if(isSelected) - { - isSelected_ = true; - setPen(selectedPen_); - setBrush(selectedBrush_); - } - - else - { - isSelected_ = false; - setPen(unselectedPen_); - setBrush(unselectedBrush_); - } -} diff --git a/GScribo/Rendering/regionitem.h b/GScribo/Rendering/regionitem.h deleted file mode 100644 index 3e8eb11..0000000 --- a/GScribo/Rendering/regionitem.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef RegionITEM_H -#define RegionITEM_H - -#include <QGraphicsPolygonItem> -#include <QTreeWidgetItem> -#include <QPen> - -#include "variantpointer.h" -#include "region.h" - -class XmlItem; - -class RegionItem : - public QGraphicsPolygonItem -{ - public: - explicit RegionItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); - explicit RegionItem(const QPolygonF& path, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); - - void setColor(const QColor& color); - inline QColor color() const; - - inline void setXmlItem(XmlItem *xmlItem); - inline XmlItem *xmlItem() const; - - inline void loadData(const GraphicsRegion::Data& data); - inline int region() const; - - inline bool intersects(const QRectF& rect); - inline bool contains(const QPointF& point); - - void setSelected(bool isSelected); - inline bool isSelected(); - inline void unselect(); - inline void select(); - - private: - void init(); - - XmlItem *xmlItem_; - int region_; - bool isSelected_; - - QPen selectedPen_; - QPen unselectedPen_; - QBrush selectedBrush_; - QBrush unselectedBrush_; -}; - -inline void RegionItem::setXmlItem(XmlItem *xmlItem) -{ xmlItem_ = xmlItem; } - -inline XmlItem *RegionItem::xmlItem() const -{ return xmlItem_; } - -inline QColor RegionItem::color() const -{ return selectedBrush_.color(); } - -inline int RegionItem::region() const -{ return region_; } - -inline bool RegionItem::isSelected() -{ return isSelected_; } - -inline void RegionItem::select() -{ setSelected(true); } - -inline void RegionItem::unselect() -{ setSelected(false); } - -inline void RegionItem::loadData(const GraphicsRegion::Data& data) -{ region_ = data.region; setColor(data.color); setZValue(data.zValue); } - -inline bool RegionItem::contains(const QPointF& point) -{ return (boundingRect().width() * boundingRect().height() == 0 || boundingRect().contains(point)) && shape().contains(point); } - -inline bool RegionItem::intersects(const QRectF& rect) -{ return (boundingRect().width() * boundingRect().height() == 0 || boundingRect().intersects(rect)) && shape().intersects(rect); } - -#endif // RegionITEM_H diff --git a/GScribo/Rendering/rootgraphicsitem.h b/GScribo/Rendering/rootgraphicsitem.h deleted file mode 100644 index 2e95297..0000000 --- a/GScribo/Rendering/rootgraphicsitem.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef ROOTGRAPHICSITEM_H -#define ROOTGRAPHICSITEM_H - -#include <QGraphicsItem> - -#include "region.h" - -class RootGraphicsItem : - public QGraphicsPolygonItem -{ - public: - explicit RootGraphicsItem(int numberRegion) - { childsFromRegion_.fill(QList<QGraphicsItem *>(), numberRegion); } - ~RootGraphicsItem() - { foreach(QList<QGraphicsItem *> list, childsFromRegion_) { foreach(QGraphicsItem *child, list) delete child; } } - - inline void addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region); - inline QList<QGraphicsItem *> childsFrom(const GraphicsRegion::Id& region) const; - - private: - QVector<QList<QGraphicsItem *> > childsFromRegion_; -}; - -inline QList<QGraphicsItem *> RootGraphicsItem::childsFrom(const GraphicsRegion::Id& region) const -{ return childsFromRegion_[region]; } - -inline void RootGraphicsItem::addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region) -{ childsFromRegion_[region] << graphicalItem; } - -#endif // ROOTGRAPHICSITEM_H diff --git a/GScribo/Rendering/scene.cpp b/GScribo/Rendering/scene.cpp deleted file mode 100644 index 903bb97..0000000 --- a/GScribo/Rendering/scene.cpp +++ /dev/null @@ -1,273 +0,0 @@ -#include "scene.h" - -Scene::Scene(QObject *parent): - QGraphicsScene(parent) -{ - init(); -} - -Scene::Scene(const QRectF &sceneRect, QObject *parent): - QGraphicsScene(sceneRect, parent) -{ - init(); -} - -Scene::Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent): - QGraphicsScene(x, y, width, height, parent) -{ - init(); -} - -void Scene::init() -{ - isPressing_ = false; - isSelectionDisabled_ = false; - backgroundPixmap_ = 0; - root_ = 0; - - selection_.hide(); - addItem(&selection_); -} - -void Scene::clearAll() -{ - if(root_) - delete root_; - - if(backgroundPixmap_) - delete backgroundPixmap_; - - selectedRegions_.clear(); - backgroundPath_ = QString(); - backgroundPixmap_ = 0; - root_ = 0; -} - -void Scene::clearRegions() -{ - if(root_) - delete root_; - - selectedRegions_.clear(); - root_ = 0; -} - -void Scene::clearSelection() -{ - QGraphicsItem *child; - RegionItem *regionItem; - - // Unselect all items. - foreach(child, selectedRegions_) - { - regionItem = static_cast<RegionItem *>(child); - regionItem->unselect(); - } - - selectedRegions_.clear(); - emit selectionCleared(); -} - -void Scene::selectAll() -{ - RegionItem *item; - foreach(QGraphicsItem *child, root_->childItems()) - { - item = static_cast<RegionItem *>(child); - item->select(); - selectedRegions_ << item; - } -} - -void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if(!backgroundPath_.isEmpty() && event->button() == Qt::LeftButton && !isSelectionDisabled_) - { - isPressing_ = true; - - baseSelection_.clear(); - pressPos_ = event->scenePos(); - selection_.show(); - } -} - -void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if(isPressing_) - { - // Adapt if the selection rectangle has a negative size. - if(pressPos_.x() < event->scenePos().x()) - selection_.setRect(pressPos_.x(), 0, event->scenePos().x()-pressPos_.x(), 0); - else - selection_.setRect(event->scenePos().x(), 0, pressPos_.x()-event->scenePos().x(), 0); - - if(pressPos_.y() < event->scenePos().y()) - selection_.setRect(selection_.rect().x(), pressPos_.y(), selection_.rect().width(), event->scenePos().y()-pressPos_.y()); - else - selection_.setRect(selection_.rect().x(), event->scenePos().y(), selection_.rect().width(), pressPos_.y()-event->scenePos().y()); - } -} - -void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - if(event->button() == Qt::LeftButton) - { - isPressing_ = false; - - // Redraw all items in selection. - if(root_) - { - clearSelection(); - - // Check if it is a click. - if(selection_.rect().width() * selection_.rect().height() == 0) - select(event->scenePos()); - else - select(selection_.rect()); - - baseSelection_ = selectedRegions(); - emit newSelection(selectedRegions_); - } - - selection_.setRect(QRect()); - selection_.hide(); - } -} - -void Scene::select(QGraphicsItem *root, const QPointF& point, const QRectF& rect) -{ - QGraphicsItem *child; - RegionItem *regionItem; - - // Check if it is a click. - if(!point.isNull()) - { - foreach(child, root->childItems()) - { - regionItem = static_cast<RegionItem *>(child); - - if(regionItem->contains(point)) - { - regionItem->select(); - selectedRegions_ << regionItem; - } - } - } - else - { - foreach(child, root->childItems()) - { - regionItem = static_cast<RegionItem *>(child); - - if(regionItem->intersects(rect)) - { - regionItem->select(); - selectedRegions_ << regionItem; - } - } - } - - emit newSelection(); -} - -void Scene::select(const QList<RegionItem *>& selectedRegions) -{ - RegionItem *child; - foreach(child, selectedRegions) - { - if(!child->isSelected()) - { - child->select(); - selectedRegions_ << child; - } - } - - ensureVisible(selectedRegions_.last()); - emit newSelection(); -} - -void Scene::unselect(const QList<RegionItem *>& unselectedRegions) -{ - RegionItem *child; - foreach(child, unselectedRegions) - { - if(child->isSelected()) - { - child->unselect(); - selectedRegions_.removeOne(child); - } - } - - // Check if after the removal, the selected list isn't empty. - if(!selectedRegions_.isEmpty()) - ensureVisible(selectedRegions_.last()); - - emit newSelection(); -} - - -void Scene::ensureVisible(QGraphicsItem *graphicalItem) -{ - QGraphicsView *view; - foreach (view, views()) - view->ensureVisible(graphicalItem); -} - -void Scene::setVisible(const GraphicsRegion::Id& region, bool visible) -{ - if(root_) - { - QGraphicsItem *child; - - if(visible) - { - foreach(child, root_->childsFrom(region)) - child->setVisible(true); - } - - else - { - foreach(child, root_->childsFrom(region)) - child->setVisible(false); - } - } -} - -void Scene::setRoot(RootGraphicsItem *root) -{ - // Delete all items. - clearRegions(); - - root_ = root; - addItem(root); - - // Add typo lines separately because can't be selected. - QGraphicsItem *line; - foreach(line, root->childsFrom(GraphicsRegion::Baseline)) - addItem(line); - - foreach(line, root->childsFrom(GraphicsRegion::Meanline)) - addItem(line); -} - -void Scene::changeScene(const QString& filename, RootGraphicsItem *root) -{ - // Delete all items. - clearAll(); - backgroundPath_ = filename; - - if(!filename.isEmpty()) - { - QPixmap pixmap(filename); - setSceneRect(pixmap.rect()); - // Create the background item and dock it at the maximal depth of the scene. - backgroundPixmap_ = new QGraphicsPixmapItem(pixmap, 0, this); - backgroundPixmap_->setZValue(INT_MIN); - } - else - setSceneRect(QRectF()); - - // Add new items. - if(root) - setRoot(root); -} diff --git a/GScribo/Rendering/scene.h b/GScribo/Rendering/scene.h deleted file mode 100644 index 129359b..0000000 --- a/GScribo/Rendering/scene.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef SCENE_H -#define SCENE_H - -#include <QGraphicsSceneMouseEvent> -#include <QGraphicsView> -#include <QGraphicsScene> -#include <QFileDialog> -#include <climits> - -#include "rootgraphicsitem.h" -#include "regionitem.h" -#include "selection.h" - -class Scene : - public QGraphicsScene -{ - Q_OBJECT - - public: - explicit Scene(QObject *parent = 0); - explicit Scene(const QRectF &sceneRect, QObject *parent = 0); - explicit Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent = 0); - - inline QString backgroundPath() const; - inline QGraphicsPixmapItem *backgroundPixmap() const; - - inline QList<RegionItem *> selectedRegions() const; - - void setRoot(RootGraphicsItem *rootItem); - inline RootGraphicsItem *root() const; - - void select(const QRectF& rect); - void select(const QPointF& point); - void selectAll(); - - inline bool selectionEnable() const; - inline void setSelectionEnable(bool enable); - - void changeScene(const QString& filename, RootGraphicsItem *root = 0); - - protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - - private: - void init(); - void select(QGraphicsItem *root, const QPointF& point, const QRectF& rect); - - QGraphicsView *mainView_; - RootGraphicsItem *root_; - - QString backgroundPath_; - QGraphicsPixmapItem *backgroundPixmap_; - - Selection selection_; - QList<RegionItem *> selectedRegions_; - QList<RegionItem *> baseSelection_; - - QPointF pressPos_; - bool isPressing_; - bool isSelectionDisabled_; - - public slots: - void clearAll(); - void clearRegions(); - void clearSelection(); - - void select(const QList<RegionItem *>& selectedRegions); - inline void selectBase(); - void unselect(const QList<RegionItem *>& unselectedItems); - - void setVisible(const GraphicsRegion::Id& region, bool visible); - void ensureVisible(QGraphicsItem *graphicsItem); - - inline void disableSelection(); - inline void enableSelection(); - - signals: - void selectionCleared(); - void newSelection(); - void newSelection(const QList<RegionItem *>& selectedRegions); -}; - -inline QString Scene::backgroundPath() const -{ return backgroundPath_; } - -inline QGraphicsPixmapItem *Scene::backgroundPixmap() const -{ return backgroundPixmap_; } - -inline RootGraphicsItem *Scene::root() const -{ return root_; } - -inline QList<RegionItem *> Scene::selectedRegions() const -{ return selectedRegions_; } - -inline void Scene::selectBase() -{ select(baseSelection_); } - -inline void Scene::select(const QPointF& point) -{ select(root_, point, QRectF()); } - -inline void Scene::select(const QRectF& rect) -{ select(root_, QPointF(), rect); } - -inline void Scene::setSelectionEnable(bool enable) -{ isSelectionDisabled_ = !enable; } - -inline bool Scene::selectionEnable() const -{ return isSelectionDisabled_; } - -inline void Scene::disableSelection() -{ setSelectionEnable(false); } - -inline void Scene::enableSelection() -{ setSelectionEnable(true); } - -#endif // SCENE_H diff --git a/GScribo/Rendering/selection.cpp b/GScribo/Rendering/selection.cpp deleted file mode 100644 index f5c3f4a..0000000 --- a/GScribo/Rendering/selection.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "selection.h" - -Selection::Selection(QGraphicsScene *scene): - QGraphicsRectItem(0, scene) -{ - init(); -} - -Selection::Selection(const QRectF &rect, QGraphicsScene *scene): - QGraphicsRectItem(rect, 0, scene) -{ - init(); -} - -Selection::Selection(qreal x, qreal y, qreal width, qreal height, QGraphicsScene *scene): - QGraphicsRectItem(x, y, width, height, 0, scene) -{ - init(); -} - -void Selection::init() -{ - // Always drawn on top of the scene. - setZValue(INT_MAX); - - QPen pen; - pen.setStyle(Qt::SolidLine); - pen.setCapStyle(Qt::SquareCap); - pen.setCosmetic(true); - setPen(pen); - - QBrush brush; - brush.setStyle(Qt::SolidPattern); - brush.setColor(QColor::fromRgb(80, 200, 10, 60)); - setBrush(brush); -} diff --git a/GScribo/XmlWidget/attributesmodel.cpp b/GScribo/XmlWidget/attributesmodel.cpp deleted file mode 100644 index 783fafb..0000000 --- a/GScribo/XmlWidget/attributesmodel.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "attributesmodel.h" - -AttributesModel::AttributesModel(const XmlAttributes& attributes, QObject *parent) : - QAbstractItemModel(parent) -{ - attributes_ = attributes; -} - -AttributesModel::AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent) : - QAbstractItemModel(dd, parent) -{ - attributes_ = attributes; -} - -QVariant AttributesModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal && role == Qt::DisplayRole) - { - switch(section) - { - case 0: - return tr("Name"); - - case 1: - return tr("Value"); - - default: - return QVariant(); - } - } - - return QVariant(); -} - -QVariant AttributesModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - switch(role) - { - case Qt::UserRole: - return attributes_.names()[index.row()]; - - case Qt::UserRole+1: - return attributes_.values()[index.row()]; - - default: - return QVariant(); - } -} - -void AttributesModel::load(const XmlAttributes& attributes) -{ - beginResetModel(); - - attributes_ = attributes; - - endResetModel(); -} - -void AttributesModel::reset() -{ - beginResetModel(); - - attributes_ = XmlAttributes(); - - endResetModel(); -} diff --git a/GScribo/XmlWidget/attributesmodel.h b/GScribo/XmlWidget/attributesmodel.h deleted file mode 100644 index 1dd3289..0000000 --- a/GScribo/XmlWidget/attributesmodel.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef ATTRIBUTESMODEL_H -#define ATTRIBUTESMODEL_H - -#include <QAbstractItemModel> - -#include "xmlattributes.h" - -class AttributesModel : - public QAbstractItemModel -{ - Q_OBJECT - - public: - explicit AttributesModel(const XmlAttributes& attributes = XmlAttributes(), QObject *parent = 0); - explicit AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent = 0); - - inline int rowCount(const QModelIndex& parent) const; - inline int columnCount(const QModelIndex& parent) const; - - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QVariant data(const QModelIndex& index, int role) const; - - inline QModelIndex index(int row, int column, const QModelIndex &parent) const; - inline QModelIndex parent(const QModelIndex &child) const; - - public slots: - void reset(); - - private: - XmlAttributes attributes_; - - public slots: - void load(const XmlAttributes& attributes); -}; - -inline int AttributesModel::rowCount(const QModelIndex&) const -{ return attributes_.names().count(); } - -inline int AttributesModel::columnCount(const QModelIndex&) const -{ return 2; } - -inline QModelIndex AttributesModel::index(int row, int column, const QModelIndex& parent) const -{ if(!hasIndex(row, column, parent)) return QModelIndex(); return createIndex(row, column, 0); } - -inline QModelIndex AttributesModel::parent(const QModelIndex&) const -{ return QModelIndex(); } - -#endif // ATTRIBUTESMODEL_H diff --git a/GScribo/XmlWidget/selectionproxy.h b/GScribo/XmlWidget/selectionproxy.h deleted file mode 100644 index 604c46a..0000000 --- a/GScribo/XmlWidget/selectionproxy.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef SELECTIONPROXY_H -#define SELECTIONPROXY_H - -#include <QSortFilterProxyModel> -#include <QDebug> - -#include "xmlitem.h" - -class SelectionProxy : - public QSortFilterProxyModel -{ - public: - explicit SelectionProxy(QObject *parent = 0) : QSortFilterProxyModel(parent) { isAllDisplayed_ = true; } - - inline void displayAll(); - inline bool isAllDisplayed(); - - inline void beginResetModel(); - inline void endResetModel(); - inline void invalidateFilter(); - - protected: - inline bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const; - - private: - bool isAllDisplayed_; -}; - -inline bool SelectionProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const -{ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent) && (isAllDisplayed_ || sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+2).value<XmlItem *>()->isVisible()); } - -inline void SelectionProxy::beginResetModel() -{ isAllDisplayed_ = false; QSortFilterProxyModel::beginResetModel(); } - -inline void SelectionProxy::endResetModel() -{ QSortFilterProxyModel::endResetModel(); } - -inline void SelectionProxy::displayAll() -{ isAllDisplayed_ = true; } - -inline bool SelectionProxy::isAllDisplayed() -{ return isAllDisplayed_; } - -inline void SelectionProxy::invalidateFilter() -{ QSortFilterProxyModel::invalidateFilter(); } - -#endif // SELECTIONPROXY_H diff --git a/GScribo/XmlWidget/xmlattributes.cpp b/GScribo/XmlWidget/xmlattributes.cpp deleted file mode 100644 index 0c4221f..0000000 --- a/GScribo/XmlWidget/xmlattributes.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "xmlattributes.h" - -XmlAttributes::XmlAttributes() -{ -} - -XmlAttributes::XmlAttributes(const QDomNamedNodeMap& node) -{ - load(node); -} - -void XmlAttributes::load(const QDomNamedNodeMap& node) -{ - QDomAttr attr; - - for(int i = 0; i < node.count(); i++) - { - attr = node.item(i).toAttr(); - - names_ << attr.name(); - values_ << attr.value(); - } -} diff --git a/GScribo/XmlWidget/xmlattributes.h b/GScribo/XmlWidget/xmlattributes.h deleted file mode 100644 index 8dbf547..0000000 --- a/GScribo/XmlWidget/xmlattributes.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef XMLATTRIBUTES_H -#define XMLATTRIBUTES_H - -#include <QDomNamedNodeMap> -#include <QStringList> -#include <QVariant> - -class XmlAttributes -{ - public: - explicit XmlAttributes(); - explicit XmlAttributes(const QDomNamedNodeMap& node); - - void load(const QDomNamedNodeMap& node); - - inline QStringList names() const; - inline QStringList values() const; - - private: - QStringList names_; - QStringList values_; -}; - -inline QStringList XmlAttributes::names() const -{ return names_; } - -inline QStringList XmlAttributes::values() const -{ return values_; } - -Q_DECLARE_METATYPE(XmlAttributes) -Q_DECLARE_METATYPE(XmlAttributes *) - -#endif // XMLATTRIBUTES_H diff --git a/GScribo/XmlWidget/xmlitem.cpp b/GScribo/XmlWidget/xmlitem.cpp deleted file mode 100644 index 53d09aa..0000000 --- a/GScribo/XmlWidget/xmlitem.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "xmlitem.h" - -XmlItem::XmlItem(XmlItem *parent, XmlItem *precItem) -{ - init(parent, precItem); -} - -XmlItem::XmlItem(const QDomElement& node, XmlItem *parent, XmlItem *precItem) -{ - init(parent, precItem); - load(node); -} - -XmlItem::~XmlItem() -{ - // Delete all childs. - XmlItem *child; - foreach(child, childs_) - delete child; -} - -void XmlItem::init(XmlItem *parent, XmlItem *precItem) -{ - isVisible_ = false; - regionItem_ = 0; - parent_ = parent; - - if(parent) - parent->addChild(this); - - if(precItem) - row_ = precItem->row()+1; - else - row_ = 0; -} - -void XmlItem::load(const QDomElement& node) -{ - text_ = node.tagName(); - - // Load attributes. - attributes_.load(node.attributes()); -} diff --git a/GScribo/XmlWidget/xmlitem.h b/GScribo/XmlWidget/xmlitem.h deleted file mode 100644 index 5b14ba7..0000000 --- a/GScribo/XmlWidget/xmlitem.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef XMLITEM_H -#define XMLITEM_H - -#include <QDomElement> - -#include "xmlattributes.h" - -class RegionItem; - -class XmlItem -{ - public: - explicit XmlItem(XmlItem *parent = 0, XmlItem *precItem = 0); - explicit XmlItem(const QDomElement& node, XmlItem *parent = 0, XmlItem *precItem = 0); - ~XmlItem(); - - void load(const QDomElement& node); - - inline QList<XmlItem *> childs() const; - inline XmlItem *child(int i) const; - inline void addChild(XmlItem *child); - inline XmlItem *parent() const; - - inline RegionItem *regionItem(); - inline void setRegionItem(RegionItem *regionItem); - - inline bool isVisible() const; - inline void setVisible(bool visible); - inline void show(); - inline void hide(); - - inline QString text() const; - inline int row() const; - inline XmlAttributes attributes() const; - - private: - void init(XmlItem *parent = 0, XmlItem *precItem = 0); - - int row_; - bool isVisible_; - QList<XmlItem *> childs_; - XmlItem *parent_; - RegionItem *regionItem_; - QString text_; - XmlAttributes attributes_; -}; - -inline QList<XmlItem *> XmlItem::childs() const -{ return childs_; } - -inline XmlItem *XmlItem::child(int i) const -{ if(i > -1 && i < childs_.count()) return childs_[i]; return 0; } - -inline void XmlItem::addChild(XmlItem *child) -{ childs_ << child; } - -inline XmlItem *XmlItem::parent() const -{ return parent_; } - -inline RegionItem *XmlItem::regionItem() -{ return regionItem_; } - -inline void XmlItem::setRegionItem(RegionItem *regionItem) -{ regionItem_ = regionItem; } - -inline bool XmlItem::isVisible() const -{ return isVisible_; } - -inline void XmlItem::setVisible(bool visible) -{ isVisible_ = visible; } - -inline void XmlItem::show() -{ isVisible_ = true; } - -inline void XmlItem::hide() -{ isVisible_ = false; } - -inline QString XmlItem::text() const -{ return text_; } - -inline int XmlItem::row() const -{ return row_; } - -inline XmlAttributes XmlItem::attributes() const -{ return attributes_; } - -Q_DECLARE_METATYPE(XmlItem) -Q_DECLARE_METATYPE(XmlItem *) - -#endif // XMLITEM_H diff --git a/GScribo/XmlWidget/xmlmodel.cpp b/GScribo/XmlWidget/xmlmodel.cpp deleted file mode 100644 index 0f58075..0000000 --- a/GScribo/XmlWidget/xmlmodel.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "xmlmodel.h" - -XmlModel::XmlModel(XmlItem *rootItem, QObject *parent) : - QAbstractItemModel(parent) -{ - rootItem_ = rootItem; -} - -XmlModel::XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent) : - QAbstractItemModel(dd, parent) -{ - rootItem_ = rootItem; -} - -XmlModel::~XmlModel() -{ - if(rootItem_) - delete rootItem_; -} - -QVariant XmlModel::headerData(int, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal && role == Qt::DisplayRole) - return tr("Tree"); - - return QVariant(); -} - -QVariant XmlModel::data(const QModelIndex& index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - switch(role) - { - case Qt::UserRole: - return static_cast<XmlItem *>(index.internalPointer())->text(); - - case Qt::UserRole+1: - return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())->attributes()); - - case Qt::UserRole+2: - return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())); - - default: - return QVariant(); - } -} - -QModelIndex XmlModel::index(int row, int column, const QModelIndex& parent) const -{ - if(!hasIndex(row, column, parent)) - return QModelIndex(); - - XmlItem *childItem = toXmlItem(parent)->child(row); - - // Create the model index from the child item. - if(childItem) - return createIndex(row, column, childItem); - else - return QModelIndex(); -} - -QModelIndex XmlModel::parent(const QModelIndex& child) const -{ - if(!child.isValid()) - return QModelIndex(); - - XmlItem *parentItem = static_cast<XmlItem *>(child.internalPointer())->parent(); - - if(!parentItem || parentItem == rootItem_) - return QModelIndex(); - - return createIndex(parentItem->row(), 0, parentItem); -} - -void XmlModel::load(XmlItem *rootItem) -{ - beginResetModel(); - - if(rootItem_) - delete rootItem_; - - rootItem_ = rootItem; - - endResetModel(); -} diff --git a/GScribo/XmlWidget/xmlmodel.h b/GScribo/XmlWidget/xmlmodel.h deleted file mode 100644 index 7e74e6f..0000000 --- a/GScribo/XmlWidget/xmlmodel.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef XMLMODEL_H -#define XMLMODEL_H - -#include <QAbstractItemModel> - -#include "variantpointer.h" -#include "xmlitem.h" - -class XmlModel : - public QAbstractItemModel -{ - public: - explicit XmlModel(XmlItem *rootItem = 0, QObject *parent = 0); - explicit XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent = 0); - ~XmlModel(); - - void load(XmlItem *rootItem); - - inline int rowCount(const QModelIndex& parent) const; - inline int columnCount(const QModelIndex& parent) const; - - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - - QVariant data(const QModelIndex& index, int role) const; - - QModelIndex index(int row, int column, const QModelIndex& parent) const; - QModelIndex parent(const QModelIndex& child) const; - - private: - inline XmlItem *toXmlItem(const QModelIndex& index) const; - - XmlItem *rootItem_; -}; - -inline XmlItem *XmlModel::toXmlItem(const QModelIndex& parent) const -{ return !parent.isValid() ? rootItem_ : static_cast<XmlItem *>(parent.internalPointer()); } - -inline int XmlModel::rowCount(const QModelIndex& parent) const -{ if(rootItem_) return toXmlItem(parent)->childs().count(); return 0; } - -inline int XmlModel::columnCount(const QModelIndex&) const -{ return 1; } - -#endif // XMLMODEL_H diff --git a/GScribo/XmlWidget/xmlview.cpp b/GScribo/XmlWidget/xmlview.cpp deleted file mode 100644 index 70a79b7..0000000 --- a/GScribo/XmlWidget/xmlview.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "xmlview.h" - -XmlView::XmlView(QWidget *parent) : - QTreeView(parent) -{ - proxy_.setFilterRole(Qt::UserRole); - proxy_.setDynamicSortFilter(true); - - setUniformRowHeights(true); - setItemDelegate(new XmlDelegate(Qt::UserRole)); - setSelectionMode(QAbstractItemView::ExtendedSelection); -} - -void XmlView::hideAll() -{ - proxy_.beginResetModel(); - - XmlItem *child; - foreach(child, displayedItems_) - child->hide(); - - displayedItems_.clear(); - emit resetProperty(); - - proxy_.endResetModel(); -} - -void XmlView::display(QList<XmlItem *> displayedItems, bool addToDisplayedList) -{ - proxy_.beginResetModel(); - - if(!addToDisplayedList) - hideAll(); - - XmlItem *child; - foreach(child, displayedItems) - { - child->show(); - displayedItems_ << child; - } - - proxy_.endResetModel(); - - expandAll(); -} - -QList<XmlItem *> XmlView::transform(const QModelIndexList& modelIndexList) const -{ - QList<XmlItem *> selectedItems; - QModelIndex index; - - foreach(index, modelIndexList) - selectedItems << index.data(Qt::UserRole+2).value<XmlItem *>(); - - return selectedItems; -} - -void XmlView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) -{ - QTreeView::selectionChanged(selected, deselected); - - if(selected.indexes() == selectedIndexes()) - emit resetSelection(); - - if(!selectedIndexes().isEmpty()) - { - QList<XmlItem *> xmlItems; - if(!selected.isEmpty()) - { - xmlItems = transform(selected.indexes()); - emit select(xmlItems); - } - else - { - xmlItems = transform(deselected.indexes()); - emit unselect(xmlItems); - } - - emit loadAttributes(xmlItems.last()->attributes()); - } - else - { - emit resetProperty(); - emit emptySelection(); - } - - emit newSelection(); -} diff --git a/GScribo/XmlWidget/xmlview.h b/GScribo/XmlWidget/xmlview.h deleted file mode 100644 index fef7386..0000000 --- a/GScribo/XmlWidget/xmlview.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef XMLVIEW_H -#define XMLVIEW_H - -#include <QGraphicsItem> -#include <QTreeView> - -#include "Rendering/regionitem.h" -#include "selectionproxy.h" -#include "xmldelegate.h" -#include "xmlitem.h" - -class XmlView : - public QTreeView -{ - Q_OBJECT - - public: - explicit XmlView(QWidget *parent = 0); - - inline QList<XmlItem *> displayedItems() const; - void hideAll(); - - inline QList<XmlItem *> selectedItems() const; - - inline void setModel(QAbstractItemModel *model); - - protected: - void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); - - private: - QList<XmlItem *> transform(const QModelIndexList& modelIndexList) const; - void display(QList<XmlItem *> displayedItems, bool addToDisplayedList); - - SelectionProxy proxy_; - QList<XmlItem *> displayedItems_; - - public slots: - inline void display(QList<XmlItem *> displayedItems); - inline void displayOnly(QList<XmlItem *> displayedItems); - - inline void displayAll(); - - inline void setFilterString(const QString& filterString); - - signals: - void loadAttributes(const XmlAttributes& xmlAttributes); - - void select(const QList<XmlItem *>& selectedItems); - void unselect(const QList<XmlItem *>& unselectedItems); - - void newSelection(); - void emptySelection(); - - void resetSelection(); - void resetProperty(); -}; - -inline QList<XmlItem *> XmlView::displayedItems() const -{ return displayedItems_; } - -inline void XmlView::display(QList<XmlItem *> displayedItems) -{ display(displayedItems, true); } - -inline void XmlView::displayOnly(QList<XmlItem *> displayedItems) -{ display(displayedItems, false); } - -inline void XmlView::displayAll() -{ hideAll(); proxy_.displayAll(); } - -inline QList<XmlItem *> XmlView::selectedItems() const -{ return transform(selectedIndexes()); } - -inline void XmlView::setFilterString(const QString& filterString) -{ proxy_.setFilterRegExp(QRegExp(filterString, Qt::CaseSensitive)); proxy_.invalidateFilter(); } - -inline void XmlView::setModel(QAbstractItemModel *model) -{ proxy_.setSourceModel(model); QTreeView::setModel(&proxy_); } - -#endif // XMLVIEW_H diff --git a/GScribo/XmlWidget/xmlwidget.cpp b/GScribo/XmlWidget/xmlwidget.cpp deleted file mode 100644 index dc24193..0000000 --- a/GScribo/XmlWidget/xmlwidget.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "xmlwidget.h" - -XmlWidget::XmlWidget(QWidget *parent) : - QSplitter(Qt::Horizontal, parent) -{ - proxy_.setFilterRegExp(QRegExp("(?:Page|.Region|Line)", Qt::CaseSensitive)); - proxy_.setDynamicSortFilter(true); - proxy_.setFilterRole(Qt::UserRole); - proxy_.setSourceModel(&model_); - - view_.setModel(&proxy_); - - attributes_.setModel(&attributesModel_); - attributes_.setSelectionMode(QAbstractItemView::NoSelection); - attributes_.setItemDelegateForColumn(0, new XmlDelegate(Qt::UserRole)); - attributes_.setItemDelegateForColumn(1, new XmlDelegate(Qt::UserRole+1)); - - addWidget(&view_); - addWidget(&attributes_); - - connect(&view_, SIGNAL(resetProperty()), &attributesModel_, SLOT(reset())); - connect(&view_, SIGNAL(clicked(QModelIndex)), this, SLOT(loadAttributes(QModelIndex))); - connect(&view_, SIGNAL(loadAttributes(XmlAttributes)), &attributesModel_, SLOT(load(XmlAttributes))); -} - -void XmlWidget::changeView(XmlItem *rootItem) -{ - attributesModel_.reset(); - - model_.load(rootItem); - - view_.displayAll(); - view_.expandAll(); -} diff --git a/GScribo/XmlWidget/xmlwidget.h b/GScribo/XmlWidget/xmlwidget.h deleted file mode 100644 index 32eca37..0000000 --- a/GScribo/XmlWidget/xmlwidget.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef XMLWIDGET_H -#define XMLWIDGET_H - -#include <QSortFilterProxyModel> -#include <QTableView> -#include <QTreeWidget> -#include <QSplitter> -#include <QDomElement> -#include <QWidget> - -#include "Rendering/scene.h" -#include "selectionproxy.h" -#include "attributesmodel.h" -#include "variantpointer.h" -#include "xmldelegate.h" -#include "xmlmodel.h" -#include "xmlview.h" - -class XmlWidget : - public QSplitter -{ - Q_OBJECT - - public: - explicit XmlWidget(QWidget *parent = 0); - - inline XmlView *view(); - inline QTableView *attributes(); - - void changeView(XmlItem *rootItem); - - private: - QSortFilterProxyModel proxy_; - - XmlModel model_; - AttributesModel attributesModel_; - - XmlView view_; - QTableView attributes_; - - private slots: - inline void loadAttributes(const QModelIndex& index); -}; - -inline XmlView * XmlWidget::view() -{ return &view_; } - -inline QTableView *XmlWidget::attributes() -{ return &attributes_; } - -inline void XmlWidget::loadAttributes(const QModelIndex& index) -{ attributesModel_.load(index.data(Qt::UserRole+2).value<XmlItem *>()->attributes()); } - -#endif // XMLWIDGET_H diff --git a/GScribo/aboutdialog.h b/GScribo/aboutdialog.h deleted file mode 100644 index fa91ada..0000000 --- a/GScribo/aboutdialog.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef ABOUTDIALOG_H -#define ABOUTDIALOG_H - -#include <QDialog> - -#include "ui_aboutdialog.h" - -namespace Ui -{ - class AboutDialog; -} - -class AboutDialog : - public QDialog -{ - public: - explicit AboutDialog(QWidget *parent = 0) : QDialog(parent, Qt::Dialog) - { ui = new Ui::AboutDialog; ui->setupUi(this); } - ~AboutDialog() { delete ui; } - - private: - Ui::AboutDialog *ui; -}; - -#endif // ABOUTDIALOG_H diff --git a/GScribo/aboutdialog.ui b/GScribo/aboutdialog.ui deleted file mode 100644 index d16b076..0000000 --- a/GScribo/aboutdialog.ui +++ /dev/null @@ -1,136 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>AboutDialog</class> - <widget class="QDialog" name="AboutDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>557</width> - <height>390</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="windowTitle"> - <string>About</string> - </property> - <property name="windowIcon"> - <iconset> - <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap>:/icons/shared/icons/olena_smaller.jpg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This project is powered by </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Milena</span><span style=" font-family:'DejaVu Sans';">, a generic image processing library.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">It is part of </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Olena</span><span style=" font-family:'DejaVu Sans';">, an Image Processing Platform and its module </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Scribo</span><span style=" font-family:'DejaVu Sans';">, a set of tools for Document Image Analysis.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" font-family:'DejaVu Sans'; text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:8pt;">Thanks to Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, Jérôme Galtier, Florent d'Halluin, Alex Hamelin, Damien Lefortier, Vincent Ordy, Guillaume Sadegh and Warren Seine for their contribution.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:7pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">Copyright (C) 2012, 2013 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Ok</set> - </property> - <property name="centerButtons"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>AboutDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>281</x> - <y>391</y> - </hint> - <hint type="destinationlabel"> - <x>240</x> - <y>203</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/GScribo/configs.h b/GScribo/configs.h deleted file mode 100644 index c6aac68..0000000 --- a/GScribo/configs.h +++ /dev/null @@ -1,134 +0,0 @@ -#ifndef CONFIGS_H -#define CONFIGS_H - -#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> -#include <QSettings> -#include <QDir> -#include <QDebug> - -#include "region.h" - -class Configs : - public QSettings -{ - public: - inline static Configs *getInstance(); - - inline bool preprocessingSubsample(); - inline void setPreprocessingSubsample(bool b); - - inline bool preprocessingRemoveBg(); - inline void setPreprocessingRemoveBg(bool b); - - inline bool preprocessingDeskew(); - inline void setPreprocessingDeskew(bool b); - - inline bool preprocessingRemoveNoise(); - inline void setPreprocessingRemoveNoise(bool b); - - inline int preprocessingBinAlgo(); - inline void setPreprocessingBinAlgo(int algo); - - inline int segmentationFindSeps(); - inline void setSegmentationFindSeps(int seps); - - inline bool ocrEnabled(); - inline void setOcrEnabled(bool b); - - inline QString ocrLanguage(); - inline void setOcrLanguage(const QString& lang); - - inline bool generalSaveXmlEnabled(); - inline void setGeneralSaveXmlEnabled(bool b); - - inline bool generalSaveXmlSameDir(); - inline void setGeneralSaveXmlSameDir(bool b); - - inline bool generalSaveXmlCustomDir(); - inline void setGeneralSaveXmlCustomDir(bool b); - - inline QString generalSaveXmlCustomDirPath(); - inline void setGeneralSaveXmlCustomDirPath(const QString& path); - - private: - explicit Configs() : QSettings("olena-scribo", "gui") { } -}; - -inline Configs *Configs::getInstance() -{ static Configs *conf = new Configs(); return conf; } - -inline bool Configs::preprocessingSubsample() -{ return value("preprocessing/subsample", false).toBool(); } - -inline void Configs::setPreprocessingSubsample(bool b) -{ setValue("preprocessing/subsample", b); } - -inline bool Configs::preprocessingRemoveBg() -{ return value("preprocessing/remove_bg", false).toBool(); } - -inline void Configs::setPreprocessingRemoveBg(bool b) -{ setValue("preprocessing/remove_bg", b); } - -inline bool Configs::preprocessingDeskew() -{ return value("preprocessing/deskew", false).toBool(); } - -inline void Configs::setPreprocessingDeskew(bool b) -{ setValue("preprocessing/deskew", b); } - -inline bool Configs::preprocessingRemoveNoise() -{ return value("preprocessing/remove_noise", true).toBool(); } - -inline void Configs::setPreprocessingRemoveNoise(bool b) -{ setValue("preprocessing/remove_noise", b); } - -inline int Configs::preprocessingBinAlgo() -{ return value("preprocessing/bin_algo", - scribo::toolchain::internal::SauvolaMs).toInt(); } - -inline void Configs::setPreprocessingBinAlgo(int algo) -{ setValue("preprocessing/bin_algo", algo); } - -inline int Configs::segmentationFindSeps() -{ return value("segmentation/find_seps", Separator::Both).toInt(); } - -inline void Configs::setSegmentationFindSeps(int seps) -{ setValue("segmentation/find_seps", seps); } - -inline bool Configs::ocrEnabled() -{ return value("ocr/enabled", true).toBool(); } - -inline void Configs::setOcrEnabled(bool b) -{ setValue("ocr/enabled", b); } - -inline QString Configs::ocrLanguage() -{ return value("ocr/language", 0).toString(); } - -inline void Configs::setOcrLanguage(const QString& lang) -{ setValue("ocr/language", lang); } - -inline bool Configs::generalSaveXmlEnabled() -{ return value("general/save_xml/enabled", true).toBool(); } - -inline void Configs::setGeneralSaveXmlEnabled(bool b) -{ setValue("general/save_xml/enabled", b); } - -inline bool Configs::generalSaveXmlSameDir() -{ return value("general/save_xml/same_dir", true).toBool(); } - -inline void Configs::setGeneralSaveXmlSameDir(bool b) -{ setValue("general/save_xml/same_dir", b); } - -inline bool Configs::generalSaveXmlCustomDir() -{ return value("general/save_xml/custom_dir", false).toBool(); } - -inline void Configs::setGeneralSaveXmlCustomDir(bool b) -{ setValue("general/save_xml/custom_dir", b); } - -inline QString Configs::generalSaveXmlCustomDirPath() -{ return value("general/save_xml/custom_dir_path", - QDir::tempPath()).toString(); } - -inline void Configs::setGeneralSaveXmlCustomDirPath(const QString& path) -{ setValue("general/save_xml/custom_dir_path", path); } - -#endif // CONFIGS_H diff --git a/GScribo/dockwidget.h b/GScribo/dockwidget.h deleted file mode 100644 index a1a2b40..0000000 --- a/GScribo/dockwidget.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef DOCKWIDGET_H -#define DOCKWIDGET_H - -#include <QDockWidget> - -class DockWidget : - public QDockWidget -{ - Q_OBJECT - - public: - explicit DockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0) : QDockWidget(parent, flags) { } - explicit DockWidget(const QString& title, QWidget *parent = 0, Qt::WindowFlags flags = 0) : QDockWidget(title, parent, flags) { } - - public slots: - inline void switchVisibility(); -}; - -inline void DockWidget::switchVisibility() -{ setVisible(!isVisible()); } - -#endif // DOCKWIDGET_H diff --git a/GScribo/main.cpp b/GScribo/main.cpp deleted file mode 100644 index d47ec16..0000000 --- a/GScribo/main.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#undef MLN_WO_GLOBAL_VARS - -#include <scribo/make/debug_filename.hh> -#include <mln/labeling/colorize.hh> -#include <mln/io/magick/load.hh> -#include <mln/literal/colors.hh> -#include <mln/debug/filename.hh> -#include <QtGui/QApplication> -#include <mln/math/pi.hh> - -#include "mainwindow.h" - -int main(int argc, char *argv[]) -{ - Magick::InitializeMagick(*argv); - // On Linux, we NEED to use the raster graphics system. - // Linux don't really support openGL graphics system (the default one on Linux). - QApplication::setGraphicsSystem("raster"); - QApplication a(argc, argv); - MainWindow w; - w.show(); - return a.exec(); -} diff --git a/GScribo/mainwindow.cpp b/GScribo/mainwindow.cpp deleted file mode 100644 index 4bb5c74..0000000 --- a/GScribo/mainwindow.cpp +++ /dev/null @@ -1,415 +0,0 @@ -#include "mainwindow.h" -#include "ui_mainwindow.h" - -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) -{ - ui->setupUi(this); - - setWindowTitle(tr("GScribo")); - showMaximized(); - - initGraphicsRegion(); - initDialogsWidget(); - initXmlWidget(); - initRegionWidget(); - initPageWidget(); - initMenuBar(); - - // Told the left dock widget (here the pages widget and the region widget) to fill the bottom left corner. - setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); - // Merge the region and pages widget in one tab (pages widget over the region widget). - tabifyDockWidget(&dockRegion_, &dockPages_); - - connectWidgets(); -} - -MainWindow::~MainWindow() -{ - delete preferencesDialog_; - delete aboutDialog_; - delete progressDialog_; - delete ui; -} - -void MainWindow::changeEvent(QEvent *e) -{ - QMainWindow::changeEvent(e); - switch (e->type()) - { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -void MainWindow::initGraphicsRegion() -{ - graphicsView_.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); - graphicsView_.setScene(&scene_); - - setCentralWidget(&graphicsView_); -} - -void MainWindow::initDialogsWidget() -{ - preferencesDialog_ = new PreferencesDialog(this); - aboutDialog_ = new AboutDialog(this); - progressDialog_ = new ProgressDialog(this); -} - -void MainWindow::initPageWidget() -{ - dockPages_.setWindowTitle("Pages"); - dockPages_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockPages_.setWidget(&pagesWidget_); - dockPages_.setMinimumWidth(190); - - addDockWidget(Qt::LeftDockWidgetArea, &dockPages_); -} - -void MainWindow::initRegionWidget() -{ - dockRegion_.setWindowTitle("Regions"); - dockRegion_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockRegion_.setWidget(®ionWidget_); - - addDockWidget(Qt::LeftDockWidgetArea, &dockRegion_); -} - -void MainWindow::initXmlWidget() -{ - dockXml_.setWindowTitle("Xml"); - dockXml_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); - dockXml_.setWidget(&xmlWidget_); - - addDockWidget(Qt::BottomDockWidgetArea, &dockXml_); - dockXml_.setVisible(false); -} - -void MainWindow::initMenuBar() -{ - QMenu *menuFile = ui->menuBar->addMenu(tr("File")); - - QAction *open = menuFile->addAction(tr("Open")); - connect(open, SIGNAL(triggered()), this, SLOT(onOpen())); - - segment_ = menuFile->addAction(tr("Segment")); - segment_->setEnabled(false); - connect(segment_, SIGNAL(triggered()), this, SLOT(onSegment())); - - menuFile->addSeparator(); - - previewPrinting_ = menuFile->addAction(tr("Preview Printing")); - previewPrinting_->setEnabled(false); - connect(previewPrinting_, SIGNAL(triggered()), this, SLOT(onPreviewPrint())); - - print_ = menuFile->addAction(tr("Print")); - print_->setEnabled(false); - connect(print_, SIGNAL(triggered()), this, SLOT(onPrint())); - - menuFile->addSeparator(); - - export_ = menuFile->addAction(tr("Exportation")); - export_->setEnabled(false); - connect(export_, SIGNAL(triggered()), this, SLOT(onExportation())); - - menuFile->addSeparator(); - - QAction *quit = menuFile->addAction(tr("Quit")); - connect(quit, SIGNAL(triggered()), this, SLOT(close())); - - QMenu *menuAreas = ui->menuBar->addMenu(tr("Areas")); - - QAction *page = menuAreas->addAction(tr("Page")); - page->setCheckable(true); - page->setChecked(true); - connect(page, SIGNAL(triggered()), &dockPages_, SLOT(switchVisibility())); - - QAction *region = menuAreas->addAction(tr("Region")); - region->setCheckable(true); - region->setChecked(true); - connect(region, SIGNAL(triggered()), &dockRegion_, SLOT(switchVisibility())); - - QAction *xml = menuAreas->addAction(tr("Xml")); - xml->setCheckable(true); - xml->setChecked(false); - connect(xml, SIGNAL(triggered()), &dockXml_, SLOT(switchVisibility())); - - QAction *preferences = ui->menuBar->addAction(tr("Preferences")); - connect(preferences, SIGNAL(triggered()), this, SLOT(onPreferences())); - - QAction *about = ui->menuBar->addAction(tr("About")); - connect(about, SIGNAL(triggered()), this, SLOT(onAbout())); -} - -void MainWindow::setActionsEnabled(bool isSegmented) -{ - segment_->setEnabled(!isSegmented); - print_->setEnabled(isSegmented); - previewPrinting_->setEnabled(isSegmented); -} - -void MainWindow::disableActions() -{ - segment_->setEnabled(false); - print_->setEnabled(false); - previewPrinting_->setEnabled(false); - export_->setEnabled(false); -} - -void MainWindow::connectWidgets() -{ - // Each time the scene rect change (when a new picture is loaded), we fit the scene background rectangle in the view. - connect(&scene_, SIGNAL(sceneRectChanged(QRectF)), &graphicsView_, SLOT(fitInView(QRectF))); - // When dragging with right click, disable selection. - connect(&graphicsView_, SIGNAL(beginDrag()), &scene_, SLOT(disableSelection())); - connect(&graphicsView_, SIGNAL(endDrag()), &scene_, SLOT(enableSelection())); - - // If double click on a picture of the page widget -> draw it on background scene. - connect(&pagesWidget_, SIGNAL(imageSelectionned(QString)), this, SLOT(onFileChanged(QString))); - - // Connect the scene to the xml widget and vice versa. - connect(&scene_, SIGNAL(newSelection(QList<RegionItem*>)), this, SLOT(onRegionSelection(QList<RegionItem*>))); - connect(xmlWidget_.view(), SIGNAL(select(QList<XmlItem*>)), this, SLOT(onXmlSelect(QList<XmlItem*>))); - connect(xmlWidget_.view(), SIGNAL(unselect(QList<XmlItem*>)), this, SLOT(onXmlUnselect(QList<XmlItem*>))); - connect(xmlWidget_.view(), SIGNAL(emptySelection()), &scene_, SLOT(selectBase())); - connect(xmlWidget_.view(), SIGNAL(resetSelection()), &scene_, SLOT(clearSelection())); - - // Connect the scene with the region widget. - connect(®ionWidget_, SIGNAL(checkStateChanged(GraphicsRegion::Id,bool)), &scene_, SLOT(setVisible(GraphicsRegion::Id,bool))); - - // Connect the xml widget with the region widget. - connect(®ionWidget_, SIGNAL(checkStateChanged(QString)), xmlWidget_.view(), SLOT(setFilterString(QString))); - - connect(&runner_, SIGNAL(progress()), progressDialog_, SLOT(run())); - connect(&runner_, SIGNAL(new_progress_max_value(int)), progressDialog_, SLOT(setMaximum(int))); - connect(&runner_, SIGNAL(new_progress_label(QString)), progressDialog_, SLOT(setLabelText(QString))); - connect(&runner_, SIGNAL(finished()), progressDialog_, SLOT(close())); - connect(&runner_, SIGNAL(xml_saved(QString)), this, SLOT(onXmlSaved(QString))); -} - -void MainWindow::onOpen() -{ - QStringList paths = QFileDialog::getOpenFileNames(this, "Open Image(s)", QDir::homePath(), - "Images (*.png *.jpg *.ppm *.bmp)"); - setWindowTitle(tr("GScribo")); - - if(paths.count() > 0) - { - QStringList filenames = pagesWidget_.filenames(); - QString path; - - int counter = 0; - bool isContained; - // Check for an image not already added to the page widget. - do - { - path = paths[counter]; - counter++; - isContained = filenames.contains(path); - } while(isContained && counter < paths.count()); - - if(!isContained) - { - pagesWidget_.addPicture(path, QPixmap(path)); - - // If more than one file, we store it in the page widget. - for(int i = counter; i < paths.count(); i++) - { - // Check if the page widget contains the image. - if(!filenames.contains(paths[i])) - { - path = paths[i]; - pagesWidget_.addPicture(path, QPixmap(path)); - } - } - - pagesWidget_.setCurrentRow(0); - pagesWidget_.scrollToTop(); - } - - // Change current scene. - onFileChanged(path); - } -} - -void MainWindow::onSegment() -{ - QStringList filenames; - - filenames << scene_.backgroundPath(); - - // Run segmentation of page(s). - progressDialog_->reset(); - runner_.start_demat(filenames); -} - -void MainWindow::onPreviewPrint() -{ - QPrinter printer(QPrinter::HighResolution); - printer.setPaperSize(QPrinter::A4); - printer.setResolution(300); - - QPrintPreviewDialog preview(&printer, this); - connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printScene(QPrinter*))); - - preview.exec(); -} - -void MainWindow::onPrint() -{ - QPrinter printer(QPrinter::HighResolution); - printer.setPaperSize(QPrinter::A4); - printer.setResolution(300); - - QPrintDialog dialog(&printer, this); - dialog.setWindowTitle("Print Document"); - - if(dialog.exec() != QDialog::Accepted) - return; - - printScene(&printer); -} - -void MainWindow::printScene(QPrinter *printer) -{ - QPainter painter(printer); - QStyleOptionGraphicsItem options; - - scene_.backgroundPixmap()->paint(&painter, &options, 0); - - // Paint backwards items first. - printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::TextRegion), &options); - printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::Image), &options); - - for(int i = GraphicsRegion::Line; i < GraphicsRegion::Image; i++) - printItems(&painter, scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), &options); - - for(int i = GraphicsRegion::Noise; i <= GraphicsRegion::Meanline; i++) - printItems(&painter, scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), &options); -} - -void MainWindow::printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options) -{ - foreach(QGraphicsItem *child, items) - { - if(child->isVisible()) - { - QRect viewport = scene_.backgroundPixmap()->mapRectFromItem(child, child->boundingRect()).toRect(); - painter->translate(abs(child->boundingRect().x() - viewport.x()), - abs(child->boundingRect().y() - viewport.y())); - child->paint(painter, options); - painter->resetTransform(); - } - } -} - -void MainWindow::onExportation() -{ - QMessageBox messageBox(this); - messageBox.setWindowTitle("Information"); - messageBox.setText("This feature is not available yet"); - messageBox.exec(); - return; - - QFileInfo fileInfo(scene_.backgroundPath()); - QString outputSuggestion = fileInfo.baseName() + ".pdf"; - QString output = QFileDialog::getSaveFileName(0, tr("Export Document As ..."), outputSuggestion, - tr("PDF (*.pdf);; HTML (*.html *.htm")); - - if(!output.isEmpty()) - { - progressDialog_->reset(); - runner_.start_export(scene_.backgroundPath(), xml_.filename(), output); - } -} - -void MainWindow::onXmlSaved(const QString& filename) -{ - xml_.load(filename); - xmlWidget_.changeView(xml_.xmlItem()); - scene_.setRoot(xml_.graphicsItem()); - - setActionsEnabled(true); - export_->setEnabled(xml_.recognized()); -} - -void MainWindow::onFileChanged(const QString& filename) -{ - // If it's not the current scene. - if(scene_.backgroundPath() != filename) - { - QString xmlPath = Xml::getPath(filename); - - if(filename.isEmpty()) - { - xmlPath = QString(); - disableActions(); - } - // Check if the xml file already exists. - else if(!QFile(xmlPath).exists()) - { - xmlPath = QString(); - setActionsEnabled(false); - } - else - setActionsEnabled(true); - - xml_.load(xmlPath); - scene_.changeScene(filename, xml_.graphicsItem()); - xmlWidget_.changeView(xml_.xmlItem()); - export_->setEnabled(xml_.recognized()); - } -} - -void MainWindow::onRegionSelection(QList<RegionItem *> regionItems) -{ - if(!regionItems.isEmpty()) - xmlWidget_.view()->displayOnly(toXmlItems(regionItems)); - else - { - xmlWidget_.view()->reset(); - xmlWidget_.view()->displayAll(); - xmlWidget_.view()->expandAll(); - } -} - -void MainWindow::onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select) -{ - QList<RegionItem *> regionItems = toRegionItems(xmlItems); - - if(!regionItems.isEmpty()) - { - if(select) - scene_.select(regionItems); - else - scene_.unselect(regionItems); - } -} - -QList<RegionItem *> MainWindow::toRegionItems(QList<XmlItem *> xmlItems) const -{ - QList<RegionItem *> regionItems; - XmlItem *child; - foreach(child, xmlItems) - { - if(child->regionItem()) - regionItems << child->regionItem(); - } - - return regionItems; -} - -QList<XmlItem *> MainWindow::toXmlItems(QList<RegionItem *> regionItems) const -{ - QList<XmlItem *> xmlItems; - RegionItem *child; - foreach(child, regionItems) - xmlItems << child->xmlItem(); - - return xmlItems; -} diff --git a/GScribo/mainwindow.h b/GScribo/mainwindow.h deleted file mode 100644 index 0637f44..0000000 --- a/GScribo/mainwindow.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QPrintPreviewDialog> -#include <QGraphicsView> -#include <QPrintDialog> -#include <QMainWindow> -#include <QHBoxLayout> -#include <QDockWidget> -#include <QFileDialog> -#include <QGroupBox> -#include <QPrinter> - -#include "Preferences/preferencesdialog.h" -#include "Processing/progressdialog.h" -#include "PagesWidget/pageswidget.h" -#include "Rendering/graphicsview.h" -#include "XmlWidget/xmlwidget.h" -#include "Processing/runner.h" -#include "Rendering/scene.h" -#include "regionwidget.h" -#include "aboutdialog.h" -#include "dockwidget.h" -#include "xml.h" - -namespace Ui -{ - class MainWindow; -} - -class MainWindow: - public QMainWindow -{ - Q_OBJECT - - public: - MainWindow(QWidget *parent = 0); - ~MainWindow(); - - protected: - void changeEvent(QEvent *e); - - private: - void initGraphicsRegion(); - void initDialogsWidget(); - void initPageWidget(); - void initRegionWidget(); - void initXmlWidget(); - void initMenuBar(); - void connectWidgets(); - - void setActionsEnabled(bool isSegmented); - void disableActions(); - - void printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options); - - Xml processTmpXml(const QString& filename) const; - QList<RegionItem *> toRegionItems(QList<XmlItem *> regionItems) const; - QList<XmlItem *> toXmlItems(QList<RegionItem *> xmlItems) const; - - Ui::MainWindow *ui; - - DockWidget dockRegion_; - DockWidget dockPages_; - DockWidget dockXml_; - - GraphicsView graphicsView_; - Scene scene_; - - PagesWidget pagesWidget_; - RegionWidget regionWidget_; - - AboutDialog *aboutDialog_; - ProgressDialog *progressDialog_; - PreferencesDialog *preferencesDialog_; - - XmlWidget xmlWidget_; - Xml xml_; - Runner runner_; - - QAction *segment_; - QAction *previewPrinting_; - QAction *print_; - QAction *export_; - - public slots: - void printScene(QPrinter *printer); - - private slots: - void onOpen(); - void onSegment(); - void onPreviewPrint(); - void onPrint(); - void onExportation(); - inline void onPreferences(); - inline void onAbout(); - - void onXmlSaved(const QString& filename); - void onFileChanged(const QString& filename); - - void onRegionSelection(QList<RegionItem *> regionItems); - - void onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select); - inline void onXmlSelect(QList<XmlItem *> xmlItems); - inline void onXmlUnselect(QList<XmlItem *> xmlItems); -}; - -inline void MainWindow::onPreferences() -{ preferencesDialog_->show(); } - -inline void MainWindow::onAbout() -{ aboutDialog_->show(); } - -inline void MainWindow::onXmlSelect(QList<XmlItem *> xmlItems) -{ onXmlChangeSelection(xmlItems, true); } - -inline void MainWindow::onXmlUnselect(QList<XmlItem *> xmlItems) -{ onXmlChangeSelection(xmlItems, false); } - -#endif // MAINWINDOW_H diff --git a/GScribo/region.h b/GScribo/region.h deleted file mode 100644 index ee8d836..0000000 --- a/GScribo/region.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef REGION_H -#define REGION_H - -#include <QColor> - -namespace GraphicsRegion -{ - // WARNING : The order is important. - enum Id - { - TextRegion, - Line, - - VerticalSeparator, - HorizontalSeparator, - WhiteSpaceSeparator, - - Image, - Noise, - Table, - Maths, - Graphic, - Chart, - - Baseline, - Meanline, - - Text, - Separators, - Miscellaneous, - Typology, - - None - }; - - struct Data - { - QColor color; - QString name; - GraphicsRegion::Id region; - GraphicsRegion::Id parent; - int zValue; - }; -} - -namespace Separator -{ - enum FindSeparator - { - Lines, - Whitespaces, - Both - }; -} - -#endif // REGION_H diff --git a/GScribo/regionwidget.cpp b/GScribo/regionwidget.cpp deleted file mode 100644 index 5d1a95e..0000000 --- a/GScribo/regionwidget.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "regionwidget.h" - -RegionWidget::RegionWidget(QWidget *parent) : - QTreeWidget(parent) -{ - setHeaderHidden(true); - setSelectionMode(QAbstractItemView::NoSelection); - - addTopLevelItem(createRoot("Text", GraphicsRegion::Text, GraphicsRegion::TextRegion, GraphicsRegion::Line)); - addTopLevelItem(createRoot("Typological Lines", GraphicsRegion::Typology, GraphicsRegion::Baseline, GraphicsRegion::Meanline)); - addTopLevelItem(createRoot("Separators", GraphicsRegion::Separators, GraphicsRegion::VerticalSeparator, GraphicsRegion::WhiteSpaceSeparator)); - addTopLevelItem(createRoot("Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::Image, GraphicsRegion::Chart)); - - expandAll(); - - connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(checkStateChanged(QTreeWidgetItem*))); -} - -QTreeWidgetItem *RegionWidget::createRoot(const QString& text, const GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const GraphicsRegion::Id& end) -{ - // Create root. - QTreeWidgetItem *rootItem = createItem(text, region); - - // Fill root with corresponding childs. - for(int region_ = begin; region_ <= end; region_++) - fillRoot(rootItem, static_cast<GraphicsRegion::Id>(region_)); - - return rootItem; -} - -QTreeWidgetItem *RegionWidget::createItem(const QString& text, const GraphicsRegion::Id& region, const QColor& color) -{ - QTreeWidgetItem *item = new QTreeWidgetItem; - item->setText(0, text); - item->setCheckState(0, Qt::Checked); - item->setBackgroundColor(0, color); - // Store graphical id in the object to recognize it afterward. - item->setData(0, Qt::UserRole, static_cast<int>(region)); - - return item; -} - -void RegionWidget::checkStateChanged(QTreeWidgetItem *item) -{ - // If it's a root item, go to childs. - if(item->childCount() != 0) - { - QTreeWidgetItem *child; - for(int i = 0; i < item->childCount(); i++) - { - child = item->child(i); - child->setCheckState(0, item->checkState(0)); - } - } - else - { - if(item->checkState(0) == Qt::Checked) - { - filterString_.append('|' + item->text(0)); - emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), true); - } - else - { - filterString_.remove('|' + item->text(0), Qt::CaseSensitive); - emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), false); - } - - //emit checkStateChanged(filterString_); - } -} diff --git a/GScribo/regionwidget.h b/GScribo/regionwidget.h deleted file mode 100644 index aaa6eda..0000000 --- a/GScribo/regionwidget.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef REGIONWIDGET_H -#define REGIONWIDGET_H - -#include <QTreeWidget> -#include <QLabel> - -#include "xml.h" - -class RegionWidget : - public QTreeWidget -{ - Q_OBJECT - - public: - explicit RegionWidget(QWidget *parent = 0); - - inline QString filterString() const; - - private: - QTreeWidgetItem *createRoot(const QString& text, const GraphicsRegion::Id& region, const GraphicsRegion::Id& begin, const GraphicsRegion::Id& end); - QTreeWidgetItem *createItem(const QString& text, const GraphicsRegion::Id& region, const QColor& color = QColor::fromRgb(255, 255, 255)); - inline void fillRoot(QTreeWidgetItem *rootItem, const GraphicsRegion::Id& region); - - QString filterString_; - - private slots: - void checkStateChanged(QTreeWidgetItem *item); - - signals: - void checkStateChanged(const GraphicsRegion::Id& region, bool checked); - void checkStateChanged(const QString& filterString); -}; - -inline void RegionWidget::fillRoot(QTreeWidgetItem *rootItem, const GraphicsRegion::Id& region) -{ GraphicsRegion::Data data = Xml::dataFromRegion(region); filterString_.append('|' + data.name); rootItem->addChild(createItem(data.name, region, data.color)); } - -inline QString RegionWidget::filterString() const -{ return filterString_.right(filterString_.count()-1); } - -#endif // REGIONWIDGET_H diff --git a/GScribo/variantpointer.h b/GScribo/variantpointer.h deleted file mode 100644 index a11072c..0000000 --- a/GScribo/variantpointer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef VARIANTPOINTER_H -#define VARIANTPOINTER_H - -#include <QVariant> - -template<typename T> class VariantPointer -{ - public: - static inline QVariant toQVariant(T *pointer) - { return QVariant::fromValue(static_cast<void *>(pointer)); } - - static inline T *fromQVariant(const QVariant& variant) - { return static_cast<T *>(variant.value<void *>()); } - - private: - VariantPointer() { } -}; - -#endif // VARIANTPOINTER_H diff --git a/GScribo/xml.cpp b/GScribo/xml.cpp deleted file mode 100644 index 9b0334d..0000000 --- a/GScribo/xml.cpp +++ /dev/null @@ -1,206 +0,0 @@ -#include "xml.h" - -Xml::Xml(const QString& filename) -{ - load(filename); -} - -QString Xml::getPath(const QString& filename) -{ - Configs *const configs = Configs::getInstance(); - - QString xmlPath = filename; - - // Get xml filename from image path. - xmlPath.remove(0, xmlPath.lastIndexOf('/')+1); - int pos = xmlPath.lastIndexOf('.'); - xmlPath.remove(pos, xmlPath.length()-pos); - xmlPath += "_gui.xml"; - - return configs->generalSaveXmlCustomDirPath() + "/" + xmlPath; -} - -void Xml::isRecognized(const QDomElement& textElement) -{ - QDomElement lineElement = textElement.firstChild().nextSiblingElement("Line"); - - // Check if the attributes "text" exists in the attributes of line in the xml file. - isRecognized_ = lineElement.attributeNode("text").isNull() ? false : true; -} - -void Xml::load(const QString& filename) -{ - if(filename.isEmpty()) - { - xmlItem_ = 0; - graphicsItem_ = 0; - filename_ = QString(); - isRecognized_ = false; - return; - } - - // Reset graphic and tree items; - xmlItem_ = new XmlItem; - graphicsItem_ = new RootGraphicsItem(13); - filename_ = getPath(filename); - - QFile xmlFile(filename); - xmlFile.open(QIODevice::ReadOnly); - - // Fill new xml tree. - xml_.clear(); - xml_.setContent(&xmlFile); - - xmlFile.close(); - - QDomElement root = xml_.documentElement(); - xmlItem_->load(root); - xmlItem_->show(); - - root = root.firstChild().toElement(); - XmlItem *parentTreeItem = init(root, xmlItem_); - - // Run through the xml file structure by structure. - root = root.nextSibling().firstChild().toElement(); - // Check if the xml file has been recognized by the ocr or not. - isRecognized(root); - - processNode(root, datas_[0], parentTreeItem); - for(int i = 2; i < 11; i++) - processNode(root.nextSiblingElement(datas_[i].name), datas_[i], parentTreeItem); -} - -XmlItem *Xml::init(const QDomElement& root, XmlItem *rootTreeItem) -{ - XmlItem *metadataItem = new XmlItem(root, rootTreeItem); - - XmlItem *contentItem = 0; - - // Run through "METADATA" node and subnodes. - QDomElement node = root.firstChild().toElement(); - while(!node.isNull()) - { - contentItem = new XmlItem(node, metadataItem, contentItem); - node = node.nextSibling().toElement(); - } - - // Add "PAGE" root node and return it. - metadataItem = new XmlItem(root.nextSibling().toElement(), rootTreeItem, metadataItem); - metadataItem->show(); - - return metadataItem; -} - -void Xml::processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *pageItem) -{ - if(!root.isNull()) - { - // Create corresponding tree item. - XmlItem *regionItem = new XmlItem(root, pageItem); - - QDomElement node = root.firstChild().toElement(); - XmlItem *coordsItem = new XmlItem(node, regionItem); - - QPolygon polygon; - XmlItem *pointItem = 0; - QString x, y; - - // Run through all points data. - node = node.firstChild().toElement(); - while(!node.isNull()) - { - x = node.attribute("x", "null"); - y = node.attribute("y", "null"); - - pointItem = new XmlItem(node, coordsItem, pointItem); - - polygon << QPoint(x.toInt(), y.toInt()); - node = node.nextSibling().toElement(); - } - - // Create the graphics item from data structure. - RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); - graphicsItem->loadData(data); - graphicsItem_->addItemFrom(graphicsItem, data.region); - - // Store xml item and graphics item in each object for selection. - regionItem->setRegionItem(graphicsItem); - graphicsItem->setXmlItem(regionItem); - - if(data.region == GraphicsRegion::TextRegion) - processLineNode(root.firstChild().nextSiblingElement("Line"), coordsItem); - - // Run through all nodes from the same data structure recursively. - processNode(root.nextSiblingElement(data.name), data, pageItem); - } -} - -void Xml::processLineNode(const QDomElement& root, XmlItem *precItem) -{ - if(!root.isNull()) - { - // Create corresponding tree item. - XmlItem *lineItem = new XmlItem(root, precItem->parent(), precItem); - - QDomElement node = root.firstChild().toElement(); - XmlItem *coordsItem = new XmlItem(node, lineItem); - - QPolygon polygon; - XmlItem *pointItem = 0; - - QString xs, ys; - int x, y; - - int xMin = INT_MAX; - int xMax = INT_MIN; - - // Run through all points data. - node = node.firstChild().toElement(); - while(!node.isNull()) - { - xs = node.attribute("x", "null"); - ys = node.attribute("y", "null"); - - pointItem = new XmlItem(node, coordsItem, pointItem); - - x = xs.toInt(); - y = ys.toInt(); - - // Get beginning and end of line. - if(xMin > x) - xMin = x; - if(xMax < x) - xMax = x; - - polygon << QPoint(x, y); - node = node.nextSibling().toElement(); - } - - // Create the graphics item from data structure. - RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); - graphicsItem->loadData(datas_[1]); - graphicsItem_->addItemFrom(graphicsItem, datas_[1].region); - - // Store xml item and graphics item in each object for selection. - lineItem->setRegionItem(graphicsItem); - graphicsItem->setXmlItem(lineItem); - - // Get meanline and baseline. - processTypoNode(root, QPoint(xMin, xMax)); - // Run through all line nodes recursively. - processLineNode(root.nextSiblingElement(datas_[1].name), lineItem); - } -} - -void Xml::processTypoNode(const QDomElement& root, const QPoint& xPoint) -{ - int yPos = root.attribute("baseline", "null").toInt(); - QGraphicsLineItem *baselineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); - baselineItem->setZValue(datas_[11].zValue); - graphicsItem_->addItemFrom(baselineItem, datas_[11].region); - - yPos = root.attribute("meanline", "null").toInt(); - QGraphicsLineItem *meanlineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); - meanlineItem->setZValue(datas_[12].zValue); - graphicsItem_->addItemFrom(meanlineItem, datas_[12].region); -} diff --git a/GScribo/xml.h b/GScribo/xml.h deleted file mode 100644 index f9274ed..0000000 --- a/GScribo/xml.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef XML_H -#define XML_H - -#include <QTreeWidgetItem> -#include <QGraphicsItem> -#include <QStringList> -#include <QDomElement> -#include <QDomAttr> -#include <climits> -#include <QFile> - -#include "Rendering/rootgraphicsitem.h" -#include "Rendering/regionitem.h" -#include "XmlWidget/xmlitem.h" -#include "variantpointer.h" -#include "configs.h" -#include "region.h" - -// WARNING : The order is VERY IMPORTANT (depending on the enum). -static const GraphicsRegion::Data datas_[] = -{ - /* COLOR | NAME | REGION | PARENT | Z */ - { QColor::fromRgb(0, 100, 0, 110), "TextRegion", GraphicsRegion::TextRegion, GraphicsRegion::Text, 1 }, - { QColor::fromRgb(255, 0, 0, 110), "Line", GraphicsRegion::Line, GraphicsRegion::Text, 2 }, - { QColor::fromRgb(0, 0, 255, 110), "VerticalSeparatorRegion", GraphicsRegion::VerticalSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(0, 0, 255, 110), "HorizontalSeparatorRegion", GraphicsRegion::HorizontalSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(0, 0, 128, 110), "WhitespaceSeparatorRegion", GraphicsRegion::WhiteSpaceSeparator, GraphicsRegion::Separators, 2 }, - { QColor::fromRgb(255, 120, 0, 110), "ImageRegion", GraphicsRegion::Image, GraphicsRegion::Miscellaneous, 1 }, - { QColor::fromRgb(43, 39, 128, 110), "NoiseRegion", GraphicsRegion::Noise, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(220, 246, 0, 110), "TableRegion", GraphicsRegion::Table, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(170, 0, 255, 110), "MathsRegion", GraphicsRegion::Maths, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(255, 0, 144, 110), "GraphicsRegion", GraphicsRegion::Graphic, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(0, 204, 255, 110), "ChartRegion", GraphicsRegion::Chart, GraphicsRegion::Miscellaneous, 2 }, - { QColor::fromRgb(128, 0, 255), "Baseline", GraphicsRegion::Baseline, GraphicsRegion::Typology, 3 }, - { QColor::fromRgb(128, 0, 255), "Meanline", GraphicsRegion::Meanline, GraphicsRegion::Typology, 3 }, - { QColor::fromRgb(255, 255, 255), "Text", GraphicsRegion::Text, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Separators", GraphicsRegion::Separators, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::None, 0 }, - { QColor::fromRgb(255, 255, 255), "Typological Lines", GraphicsRegion::Typology, GraphicsRegion::None, 0 } -}; - -class Xml -{ - public: - explicit Xml(const QString& filename = QString()); - - inline XmlItem *xmlItem(); - inline RootGraphicsItem *graphicsItem(); - - inline QDomDocument document() const; - inline QString filename() const; - inline bool recognized() const; - - static QString getPath(const QString& filename); - - void load(const QString& filename); - inline static GraphicsRegion::Data dataFromRegion(GraphicsRegion::Id region); - - private: - XmlItem *init(const QDomElement& root, XmlItem *rootTreeItem); - void isRecognized(const QDomElement& element); - - void processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *rootTreeItem); - void processLineNode(const QDomElement& root, XmlItem *rootTreeItem); - void processTypoNode(const QDomElement& root, const QPoint& xPoint); - - RootGraphicsItem *graphicsItem_; - XmlItem *xmlItem_; - - QDomDocument xml_; - QString filename_; - bool isRecognized_; -}; - -inline XmlItem *Xml::xmlItem() -{ return xmlItem_; } - -inline RootGraphicsItem *Xml::graphicsItem() -{ return graphicsItem_; } - -inline QDomDocument Xml::document() const -{ return xml_; } - -inline QString Xml::filename() const -{ return filename_; } - -inline GraphicsRegion::Data Xml::dataFromRegion(GraphicsRegion::Id region) -{ return datas_[region]; } - -inline bool Xml::recognized() const -{ return isRecognized_; } - -#endif // XML_H diff --git a/scribo/ChangeLog b/scribo/ChangeLog index c4bdcfc..529fdf5 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,3 +1,143 @@ +2013-02-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + Move new viewer to scribo/demo. + + * scribo/demo/viewer/BUGS, + * scribo/demo/viewer/GScribo.pro, + * scribo/demo/viewer/GScribo.pro.user, + * scribo/demo/viewer/GScribo.pro.user.1.3, + * scribo/demo/viewer/Makefile.am, + * scribo/demo/viewer/PagesWidget/pagesdelegate.cc, + * scribo/demo/viewer/PagesWidget/pagesdelegate.hh, + * scribo/demo/viewer/PagesWidget/pagesmodel.cc, + * scribo/demo/viewer/PagesWidget/pagesmodel.hh, + * scribo/demo/viewer/PagesWidget/pageswidget.cc, + * scribo/demo/viewer/PagesWidget/pageswidget.hh, + * scribo/demo/viewer/Preferences/generaloptions.cc, + * scribo/demo/viewer/Preferences/generaloptions.hh, + * scribo/demo/viewer/Preferences/generaloptions.ui, + * scribo/demo/viewer/Preferences/ocroptions.cc, + * scribo/demo/viewer/Preferences/ocroptions.hh, + * scribo/demo/viewer/Preferences/ocroptions.ui, + * scribo/demo/viewer/Preferences/optionwidget.hh, + * scribo/demo/viewer/Preferences/preferencesdialog.cc, + * scribo/demo/viewer/Preferences/preferencesdialog.hh, + * scribo/demo/viewer/Preferences/preferencesdialog.ui, + * scribo/demo/viewer/Preferences/preprocessingoptions.cc, + * scribo/demo/viewer/Preferences/preprocessingoptions.hh, + * scribo/demo/viewer/Preferences/preprocessingoptions.ui, + * scribo/demo/viewer/Preferences/segmentationoptions.cc, + * scribo/demo/viewer/Preferences/segmentationoptions.hh, + * scribo/demo/viewer/Preferences/segmentationoptions.ui, + * scribo/demo/viewer/Processing/preprocess.cc, + * scribo/demo/viewer/Processing/preprocess.hh, + * scribo/demo/viewer/Processing/process.cc, + * scribo/demo/viewer/Processing/process.hh, + * scribo/demo/viewer/Processing/progressdialog.cc, + * scribo/demo/viewer/Processing/progressdialog.hh, + * scribo/demo/viewer/Processing/runner.cc, + * scribo/demo/viewer/Processing/runner.hh, + * scribo/demo/viewer/Rendering/abstractregionitem.hh, + * scribo/demo/viewer/Rendering/backgroundtexture.hh, + * scribo/demo/viewer/Rendering/graphicsview.cc, + * scribo/demo/viewer/Rendering/graphicsview.hh, + * scribo/demo/viewer/Rendering/regionitem.cc, + * scribo/demo/viewer/Rendering/regionitem.hh, + * scribo/demo/viewer/Rendering/rootgraphicsitem.cc, + * scribo/demo/viewer/Rendering/rootgraphicsitem.hh, + * scribo/demo/viewer/Rendering/scene.cc, + * scribo/demo/viewer/Rendering/scene.hh, + * scribo/demo/viewer/Rendering/selection.cc, + * scribo/demo/viewer/Rendering/selection.hh, + * scribo/demo/viewer/TODO, + * scribo/demo/viewer/XmlWidget/attributesmodel.cc, + * scribo/demo/viewer/XmlWidget/attributesmodel.hh, + * scribo/demo/viewer/XmlWidget/selectionproxy.hh, + * scribo/demo/viewer/XmlWidget/xmlattributes.cc, + * scribo/demo/viewer/XmlWidget/xmlattributes.hh, + * scribo/demo/viewer/XmlWidget/xmldelegate.hh, + * scribo/demo/viewer/XmlWidget/xmlitem.cc, + * scribo/demo/viewer/XmlWidget/xmlitem.hh, + * scribo/demo/viewer/XmlWidget/xmlmodel.cc, + * scribo/demo/viewer/XmlWidget/xmlmodel.hh, + * scribo/demo/viewer/XmlWidget/xmlview.cc, + * scribo/demo/viewer/XmlWidget/xmlview.hh, + * scribo/demo/viewer/XmlWidget/xmlwidget.cc, + * scribo/demo/viewer/XmlWidget/xmlwidget.hh, + * scribo/demo/viewer/aboutdialog.cc, + * scribo/demo/viewer/aboutdialog.hh, + * scribo/demo/viewer/aboutdialog.ui, + * scribo/demo/viewer/config.cc, + * scribo/demo/viewer/configs.cc, + * scribo/demo/viewer/configs.hh, + * scribo/demo/viewer/defs.hh, + * scribo/demo/viewer/dir.hh, + * scribo/demo/viewer/dockwidget.cc, + * scribo/demo/viewer/dockwidget.hh, + * scribo/demo/viewer/general_options.hh, + * scribo/demo/viewer/help_dialog.hh, + * scribo/demo/viewer/image_scene.hh, + * scribo/demo/viewer/image_view.hh, + * scribo/demo/viewer/main.cc, + * scribo/demo/viewer/mainwindow.cc, + * scribo/demo/viewer/mainwindow.hh, + * scribo/demo/viewer/mainwindow.ui, + * scribo/demo/viewer/ocr_options.hh, + * scribo/demo/viewer/option_widget.cc, + * scribo/demo/viewer/option_widget.hh, + * scribo/demo/viewer/preprocess.cc, + * scribo/demo/viewer/preprocess.hh, + * scribo/demo/viewer/process.cc, + * scribo/demo/viewer/region.hh, + * scribo/demo/viewer/regionwidget.cc, + * scribo/demo/viewer/regionwidget.hh, + * scribo/demo/viewer/variantpointer.cc, + * scribo/demo/viewer/variantpointer.hh, + * scribo/demo/viewer/xml.cc, + * scribo/demo/viewer/xml.hh: New. + + * scribo/demo/viewer/README, + * scribo/demo/viewer/browser_widget.cc, + * scribo/demo/viewer/browser_widget.hh, + * scribo/demo/viewer/common.hh, + * scribo/demo/viewer/config.hh, + * scribo/demo/viewer/general_options.cc, + * scribo/demo/viewer/general_options.ui, + * scribo/demo/viewer/help_dialog.cc, + * scribo/demo/viewer/help_dialog.ui, + * scribo/demo/viewer/icons/olena_smaller.jpg, + * scribo/demo/viewer/image_region.cc, + * scribo/demo/viewer/image_region.hh, + * scribo/demo/viewer/image_region.hxx, + * scribo/demo/viewer/image_scene.cc, + * scribo/demo/viewer/image_view.cc, + * scribo/demo/viewer/image_widget.cc, + * scribo/demo/viewer/image_widget.hh, + * scribo/demo/viewer/key_widget.cc, + * scribo/demo/viewer/key_widget.hh, + * scribo/demo/viewer/ocr_options.cc, + * scribo/demo/viewer/ocr_options.ui, + * scribo/demo/viewer/preferences_dialog.cc, + * scribo/demo/viewer/preferences_dialog.hh, + * scribo/demo/viewer/preferences_dialog.ui, + * scribo/demo/viewer/preprocessing_options.cc, + * scribo/demo/viewer/preprocessing_options.hh, + * scribo/demo/viewer/preprocessing_options.ui, + * scribo/demo/viewer/process.hh, + * scribo/demo/viewer/runner.cc, + * scribo/demo/viewer/runner.hh, + * scribo/demo/viewer/segmentation_options.cc, + * scribo/demo/viewer/segmentation_options.hh, + * scribo/demo/viewer/segmentation_options.ui, + * scribo/demo/viewer/step_widget.cc, + * scribo/demo/viewer/step_widget.hh, + * scribo/demo/viewer/viewer.cc, + * scribo/demo/viewer/viewer.hh, + * scribo/demo/viewer/viewer.hxx, + * scribo/demo/viewer/viewer.qrc , + * scribo/demo/viewer/xml_widget.cc, + * scribo/demo/viewer/xml_widget.hh: Remove. + 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> * tests/unit_test/unit-tests.mk: Update. diff --git a/GScribo/BUGS b/scribo/demo/viewer/BUGS similarity index 100% rename from GScribo/BUGS rename to scribo/demo/viewer/BUGS diff --git a/scribo/demo/viewer/GScribo.pro b/scribo/demo/viewer/GScribo.pro new file mode 100644 index 0000000..d607cc5 --- /dev/null +++ b/scribo/demo/viewer/GScribo.pro @@ -0,0 +1,83 @@ +# ------------------------------------------------- +# Project created by QtCreator 2013-01-21T09:20:54 +# ------------------------------------------------- +QT += xml +INCLUDEPATH += /lrde/home/stage/froger_a/olena/scribo/ \ + /lrde/home/stage/froger_a/olena/milena/ \ + /lrde/home/stage/froger_a/olena/_build/scribo/demo/ +QMAKE_CXXFLAGS += -DNDEBUG \ + -DMLN_WO_GLOBAL_VARS +LIBS += -I/usr/include/graphicsImage \ + -lGraphicsMagick++ \ + -ltesseract_full \ + -ltiff +TARGET = GScribo +TEMPLATE = app +SOURCES += regionwidget.cc \ + mainwindow.cc \ + main.cc \ + xml.cc \ + Rendering/scene.cc \ + Rendering/selection.cc \ + Rendering/regionitem.cc \ + Rendering/graphicsview.cc \ + PagesWidget/pageswidget.cc \ + PagesWidget/pagesmodel.cc \ + PagesWidget/pagesdelegate.cc \ + Preferences/segmentationoptions.cc \ + Preferences/preprocessingoptions.cc \ + Preferences/ocroptions.cc \ + Preferences/generaloptions.cc \ + Preferences/preferencesdialog.cc \ + Processing/progressdialog.cc \ + Processing/preprocess.cc \ + Processing/process.cc \ + Processing/runner.cc \ + XmlWidget/xmlwidget.cc \ + XmlWidget/xmlmodel.cc \ + XmlWidget/xmlitem.cc \ + XmlWidget/xmlattributes.cc \ + XmlWidget/attributesmodel.cc \ + XmlWidget/xmlview.cc +HEADERS += mainwindow.hh \ + variantpointer.hh \ + regionwidget.hh \ + aboutdialog.hh \ + configs.hh \ + region.hh \ + dir.hh \ + xml.hh \ + Rendering/scene.hh \ + Rendering/selection.hh \ + Rendering/regionitem.hh \ + Rendering/graphicsview.hh \ + PagesWidget/pageswidget.hh \ + PagesWidget/pagesmodel.hh \ + Processing/preprocess.hh \ + Processing/process.hh \ + Processing/runner.hh \ + Processing/progressdialog.hh \ + Preferences/segmentationoptions.hh \ + Preferences/preprocessingoptions.hh \ + Preferences/ocroptions.hh \ + Preferences/generaloptions.hh \ + Preferences/optionwidget.hh \ + Preferences/preferencesdialog.hh \ + XmlWidget/xmlwidget.hh \ + XmlWidget/xmlmodel.hh \ + XmlWidget/xmlitem.hh \ + XmlWidget/xmlattributes.hh \ + XmlWidget/selectionproxy.hh \ + XmlWidget/xmldelegate.hh \ + XmlWidget/attributesmodel.hh \ + PagesWidget/pagesdelegate.hh \ + Rendering/rootgraphicsitem.hh \ + XmlWidget/xmlview.hh \ + dockwidget.hh +FORMS += mainwindow.ui \ + aboutdialog.ui \ + Preferences/preferencesdialog.ui \ + Preferences/ocroptions.ui \ + Preferences/segmentationoptions.ui \ + Preferences/generaloptions.ui \ + Preferences/preprocessingoptions.ui diff --git a/GScribo/GScribo.pro.user b/scribo/demo/viewer/GScribo.pro.user similarity index 100% rename from GScribo/GScribo.pro.user rename to scribo/demo/viewer/GScribo.pro.user diff --git a/GScribo/GScribo.pro.user.1.3 b/scribo/demo/viewer/GScribo.pro.user.1.3 similarity index 100% rename from GScribo/GScribo.pro.user.1.3 rename to scribo/demo/viewer/GScribo.pro.user.1.3 diff --git a/scribo/demo/viewer/Makefile.am b/scribo/demo/viewer/Makefile.am index d79abcf..23c800b 100644 --- a/scribo/demo/viewer/Makefile.am +++ b/scribo/demo/viewer/Makefile.am @@ -19,96 +19,131 @@ include $(top_srcdir)/build-aux/autotroll.mk bin_PROGRAMS = scribo-viewer -scribo_viewer_SOURCES = viewer.cc \ +scribo_viewer_SOURCES = mainwindow.cc \ + aboutdialog.cc \ + configs.cc \ main.cc \ - image_widget.cc \ - xml_widget.cc \ - key_widget.cc \ - browser_widget.cc \ - image_scene.cc \ - image_view.cc \ - image_region.cc \ - help_dialog.cc \ - step_widget.cc \ - preprocessing_options.cc\ - segmentation_options.cc \ - ocr_options.cc \ - runner.cc \ - preprocess.cc \ - process.cc \ - general_options.cc \ - preferences_dialog.cc \ - option_widget.cc \ - config.cc + regionwidget.cc \ + xml.cc \ + dockwidget.cc \ + PagesWidget/pagesdelegate.cc \ + PagesWidget/pagesmodel.cc \ + PagesWidget/pageswidget.cc \ + Preferences/generaloptions.cc \ + Preferences/ocroptions.cc \ + Preferences/preferencesdialog.cc \ + Preferences/preprocessingoptions.cc \ + Preferences/segmentationoptions.cc \ + Processing/preprocess.cc \ + Processing/process.cc \ + Processing/progressdialog.cc \ + Processing/runner.cc \ + Rendering/graphicsview.cc \ + Rendering/regionitem.cc \ + Rendering/scene.cc \ + Rendering/selection.cc \ + Rendering/rootgraphicsitem.cc \ + XmlWidget/attributesmodel.cc \ + XmlWidget/xmlattributes.cc \ + XmlWidget/xmlitem.cc \ + XmlWidget/xmlmodel.cc \ + XmlWidget/xmlview.cc \ + XmlWidget/xmlwidget.cc + + nodist_scribo_viewer_SOURCES = $(BUILT_SOURCES) + + scribo_viewer_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS) -I$(srcdir) \ + -I$(builddir) \ -I$(top_srcdir)/milena \ -I$(top_srcdir)/scribo \ $(MAGICKXX_CPPFLAGS) \ $(TESSERACT_CPPFLAGS) \ $(TIFF_CPPFLAGS) \ -DNDEBUG -DMLN_WO_GLOBAL_VARS + + + scribo_viewer_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS) \ $(STRICT_ALIASING_CXXFLAGS) -O3 + + + scribo_viewer_LDFLAGS = $(QT_LDFLAGS) $(LDFLAGS) \ $(MAGICKXX_LDFLAGS) \ $(TESSERACT_LDFLAGS) \ $(TIFF_LDFLAGS) + + + scribo_viewer_LDADD = $(QT_LIBS) $(LDADD) -BUILT_SOURCES = viewer.moc.cc \ - image_widget.moc.cc \ - xml_widget.moc.cc \ - key_widget.moc.cc \ - browser_widget.moc.cc \ - image_scene.moc.cc \ - image_view.moc.cc \ - image_region.moc.cc \ - help_dialog.ui.h \ - step_widget.moc.cc \ - preprocessing_options.moc.cc \ - preprocessing_options.ui.h \ - segmentation_options.moc.cc \ - segmentation_options.ui.h \ - ocr_options.moc.cc \ - ocr_options.ui.h \ - runner.moc.cc \ - preprocess.moc.cc \ - process.moc.cc \ - preferences_dialog.moc.cc \ - preferences_dialog.ui.h \ - general_options.moc.cc \ - general_options.ui.h \ - demodir.hh \ - viewer.qrc.cc - - -noinst_HEADERS = viewer.hh \ - viewer.hxx \ - image_widget.hh \ - xml_widget.hh \ - key_widget.hh \ - browser_widget.hh \ - image_scene.hh \ - image_view.hh \ - image_region.hh \ - image_region.hxx \ - common.hh \ - help_dialog.hh \ - step_widget.hh \ - preprocessing_options.hh\ - segmentation_options.hh\ - ocr_options.hh \ - runner.hh \ - preprocess.hh \ - process.hh \ - general_options.hh \ - preferences_dialog.hh \ - option_widget.hh \ - config.hh \ - defs.hh + + +BUILT_SOURCES = demodir.hh \ + dockwidget.moc.cc \ + Rendering/graphicsview.moc.cc \ + mainwindow.moc.cc \ + Preferences/ocroptions.moc.cc \ + PagesWidget/pagesmodel.moc.cc \ + PagesWidget/pageswidget.moc.cc \ + Preferences/preferencesdialog.moc.cc \ + Processing/preprocess.moc.cc \ + Preferences/preprocessingoptions.moc.cc \ + Processing/process.moc.cc \ + Processing/progressdialog.moc.cc \ + regionwidget.moc.cc \ + Processing/runner.moc.cc \ + Rendering/scene.moc.cc \ + Preferences/segmentationoptions.moc.cc \ + XmlWidget/xmlview.moc.cc \ + XmlWidget/xmlwidget.moc.cc \ + aboutdialog.ui.h \ + Preferences/generaloptions.ui.h \ + mainwindow.ui.h \ + Preferences/generaloptions.moc.cc \ + Preferences/ocroptions.ui.h \ + Preferences/preferencesdialog.ui.h \ + Preferences/preprocessingoptions.ui.h \ + Preferences/segmentationoptions.ui.h \ + XmlWidget/attributesmodel.moc.cc + + +noinst_HEADERS = mainwindow.hh \ + aboutdialog.hh \ + regionwidget.hh \ + xml.hh \ + PagesWidget/pagesdelegate.hh \ + PagesWidget/pagesmodel.hh \ + PagesWidget/pageswidget.hh \ + Preferences/generaloptions.hh \ + Preferences/ocroptions.hh \ + Preferences/optionwidget.hh \ + Preferences/preferencesdialog.hh \ + Preferences/preprocessingoptions.hh \ + Preferences/segmentationoptions.hh \ + Processing/preprocess.hh \ + Processing/process.hh \ + Processing/progressdialog.hh \ + Processing/runner.hh \ + Rendering/graphicsview.hh \ + Rendering/regionitem.hh \ + Rendering/rootgraphicsitem.hh \ + Rendering/scene.hh \ + Rendering/selection.hh \ + XmlWidget/attributesmodel.hh \ + XmlWidget/selectionproxy.hh \ + XmlWidget/xmlattributes.hh \ + XmlWidget/xmldelegate.hh \ + XmlWidget/xmlitem.hh \ + XmlWidget/xmlmodel.hh \ + XmlWidget/xmlview.hh \ + XmlWidget/xmlwidget.hh + + # Generated files @@ -116,6 +151,8 @@ do_subst = sed \ -e 's|@libexecdir[@]|$(libexecdir)|g' \ -e 's|@abs_demodir[@]|$(abs_top_builddir)/scribo/demo|g' + + demodir.hh: $(srcdir)/demodir.hh.in Makefile rm -f $@ $@.tmp srcdir=''; \ @@ -124,17 +161,20 @@ demodir.hh: $(srcdir)/demodir.hh.in Makefile chmod a-w $@.tmp mv $@.tmp $@ + + CLEANFILES = $(BUILT_SOURCES) -EXTRA_DIST = \ - general_options.ui \ - preferences_dialog.ui \ - README \ - preprocessing_options.ui\ - segmentation_options.ui \ - ocr_options.ui \ - help_dialog.ui \ - demodir.hh.in \ - viewer.qrc \ - icons/olena_smaller.jpg + + +EXTRA_DIST = BUGS \ + README \ + aboutdialog.ui \ + mainwindow.ui \ + Preferences/generaloptions.ui \ + Preferences/ocroptions.ui \ + Preferences/preferencesdialog.ui \ + Preferences/preprocessingoptions.ui \ + Preferences/segmentationoptions.ui \ + demodir.hh.in diff --git a/scribo/demo/viewer/PagesWidget/pagesdelegate.cc b/scribo/demo/viewer/PagesWidget/pagesdelegate.cc new file mode 100644 index 0000000..f981e1f --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesdelegate.cc @@ -0,0 +1,38 @@ +// Copyright (C) 2013 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/
>. + +#include "pagesdelegate.hh" + +PagesDelegate::PagesDelegate(QObject *parent) : + QStyledItemDelegate(parent) +{ + pen_.setColor(QColor::fromRgb(255, 69, 0, 255)); + pen_.setWidth(2); +} + +void PagesDelegate::paint(QPainter *painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const +{ + QStyledItemDelegate::paint(painter, option, index); + + if(index.row() == index.data(Qt::UserRole+1).toInt()) + { + painter->setPen(pen_); + painter->drawRect(option.rect); + painter->fillRect(option.rect, QColor::fromRgb(255, 69, 0, 60)); + } +} diff --git a/scribo/demo/viewer/PagesWidget/pagesdelegate.hh b/scribo/demo/viewer/PagesWidget/pagesdelegate.hh new file mode 100644 index 0000000..02440f8 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesdelegate.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESDELEGATE_H +# define PAGESDELEGATE_H + +#include <QStyledItemDelegate> +#include <QPainter> + +class PagesDelegate : + public QStyledItemDelegate +{ + public: + explicit PagesDelegate(QObject *parent = 0); + void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + + private: + QPen pen_; +}; + +#endif // PAGESDELEGATE_H diff --git a/scribo/demo/viewer/PagesWidget/pagesmodel.cc b/scribo/demo/viewer/PagesWidget/pagesmodel.cc new file mode 100644 index 0000000..6246f18 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesmodel.cc @@ -0,0 +1,91 @@ +// Copyright (C) 2013 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/
>. + +#include "pagesmodel.hh" + +PagesModel::PagesModel(QObject *parent): + QAbstractListModel(parent) +{ + currentRow_ = 0; +} + +QVariant PagesModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + if(role == Qt::DecorationRole) + return pixmaps_[index.row()]; + + if(role == Qt::UserRole) + return filenames_[index.row()]; + + if(role == Qt::UserRole+1) + return currentRow_; + + return QVariant(); +} + +void PagesModel::addPicture(const QString& filename, const QPixmap& pixmap) +{ + beginInsertRows(QModelIndex(), 0, 0); + + pixmaps_.prepend(pixmap.scaled(QSize(200, 200), + Qt::KeepAspectRatio, + Qt::SmoothTransformation)); + filenames_.prepend(filename); + + endInsertRows(); +} + +void PagesModel::removePixmap(const QModelIndex &parent) +{ + int row = parent.row(); + + beginRemoveRows(parent, row, row); + + pixmaps_.removeAt(row); + filenames_.removeAt(row); + + endRemoveRows(); +} + +void PagesModel::setCurrentRow(int currentRow) +{ + beginResetModel(); + + currentRow_ = currentRow; + + endResetModel(); +} + + +QStringList PagesModel::filenames() const +{ + return filenames_; +} + + +int PagesModel::rowCount(const QModelIndex&) const +{ + return filenames_.count(); +} + + +int PagesModel::currentRow() const +{ + return currentRow_; +} diff --git a/scribo/demo/viewer/PagesWidget/pagesmodel.hh b/scribo/demo/viewer/PagesWidget/pagesmodel.hh new file mode 100644 index 0000000..2a0ec4b --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pagesmodel.hh @@ -0,0 +1,51 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESMODEL_HH +# define PAGESMODEL_HH + +#include <QAbstractListModel> +#include <QIcon> +#include <QList> + +class PagesModel: + public QAbstractListModel +{ + Q_OBJECT + + public: + explicit PagesModel(QObject *parent = 0); + + QStringList filenames() const; + int rowCount(const QModelIndex& parent = QModelIndex()) const; + + int currentRow() const; + void setCurrentRow(int currentRow); + + QVariant data(const QModelIndex& index, int role = Qt::DecorationRole) const; + void addPicture(const QString& filename, const QPixmap& pixmap); + + private: + QStringList filenames_; + QList<QPixmap> pixmaps_; + int currentRow_; + + public slots: + void removePixmap(const QModelIndex& parent); +}; + + +#endif // PAGESMODEL_HH diff --git a/scribo/demo/viewer/PagesWidget/pageswidget.cc b/scribo/demo/viewer/PagesWidget/pageswidget.cc new file mode 100644 index 0000000..0355419 --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pageswidget.cc @@ -0,0 +1,119 @@ +// Copyright (C) 2013 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/
>. + +#include <QDebug> +#include "pageswidget.hh" + +PagesWidget::PagesWidget(QWidget *parent): + QListView(parent) +{ + setUniformItemSizes(true); + setSelectionMode(QAbstractItemView::ExtendedSelection); + setViewMode(QListView::IconMode); + setIconSize(QSize(200, 200)); + setMovement(QListView::Static); + setResizeMode(QListView::Adjust); + setSpacing(10); + + setModel(&model_); + setItemDelegate(new PagesDelegate()); + + QShortcut *remove = new QShortcut(Qt::Key_Delete, this); + connect(remove, SIGNAL(activated()), this, SLOT(removeSelection())); + connect(this, SIGNAL(doubleClicked(QModelIndex)), + this, SLOT(getPicture(QModelIndex))); +} + +void PagesWidget::removeSelection() +{ + QModelIndexList indexes = selectionModel()->selectedIndexes(); + if(hasFocus() && indexes.count() > 0) + { + // Sort the list because after the first removal, the second row index may not be the good one. + qSort(indexes.begin(), indexes.end()); + + // From the highest row to the smallest to be sure to remove the good index. + for(int i = indexes.count()-1; i > -1; i--) + model_.removePixmap(indexes[i]); + + // Draw new image on the scene. + getPicture(model_.index(indexes[0].row())); + clearSelection(); + + model_.setCurrentRow(indexes[0].row()); + scrollTo(indexes[0]); + } +} + +void PagesWidget::getPicture(const QModelIndex& index) +{ + QString filename = index.data(Qt::UserRole).toString(); + model_.setCurrentRow(index.row()); + + emit imageSelected(filename); +} + +QStringList PagesWidget::filenames() const +{ + return model_.filenames(); +} + +int PagesWidget::currentRow() const +{ + return model_.currentRow(); +} + +void PagesWidget::setCurrentRow(int currentRow) +{ + model_.setCurrentRow(currentRow); +} + +void PagesWidget::addPicture(const QString& filename, + const QPixmap& pixmap) +{ + model_.addPicture(filename, pixmap); +} + +void PagesWidget::focusOutEvent(QFocusEvent *event) +{ + QListView::focusOutEvent(event); clearSelection(); +} + +bool PagesWidget::haveNextRow() const +{ + return currentRow() + 1 < model_.rowCount(); +} + +bool PagesWidget::havePreviousRow() const +{ + return currentRow() - 1 >= 0; +} + +void PagesWidget::selectNextRow() +{ + Q_ASSERT(haveNextRow()); + QModelIndex index = model_.index(currentRow() + 1); + getPicture(index); + scrollTo(index); +} + +void PagesWidget::selectPreviousRow() +{ + Q_ASSERT(havePreviousRow()); + QModelIndex index = model_.index(currentRow() - 1); + getPicture(index); + scrollTo(index); +} diff --git a/scribo/demo/viewer/PagesWidget/pageswidget.hh b/scribo/demo/viewer/PagesWidget/pageswidget.hh new file mode 100644 index 0000000..d159a8e --- /dev/null +++ b/scribo/demo/viewer/PagesWidget/pageswidget.hh @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PAGESWIDGET_HH +# define PAGESWIDGET_HH + +#include <QListView> +#include <QShortcut> + +#include "pagesdelegate.hh" +#include "pagesmodel.hh" + +class PagesWidget : public QListView +{ + Q_OBJECT; + +public: + explicit PagesWidget(QWidget *parent = 0); + + QStringList filenames() const; + int currentRow() const; + void setCurrentRow(int currentRow); + + void addPicture(const QString& filename, const QPixmap& pixmap); + + bool haveNextRow() const; + bool havePreviousRow() const; + +protected: + void focusOutEvent(QFocusEvent *event); + +private: + PagesModel model_; + +public slots: + void removeSelection(); + void selectNextRow(); + void selectPreviousRow(); + +private slots: + void getPicture(const QModelIndex& index); + +signals: + void imageSelected(const QString& filename); +}; + + +#endif // PAGESWIDGET_HH diff --git a/scribo/demo/viewer/Preferences/generaloptions.cc b/scribo/demo/viewer/Preferences/generaloptions.cc new file mode 100644 index 0000000..d32ee40 --- /dev/null +++ b/scribo/demo/viewer/Preferences/generaloptions.cc @@ -0,0 +1,60 @@ +// Copyright (C) 2013 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/
>. + +#include "generaloptions.hh" +#include "Preferences/generaloptions.ui.h" + +GeneralOptions::GeneralOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::GeneralOptions) +{ + ui->setupUi(this); + loadConfig(); +} + +GeneralOptions::~GeneralOptions() +{ + delete ui; +} + +void GeneralOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->saveXml->setChecked(conf->generalSaveXmlEnabled()); + ui->sameDir->setChecked(conf->generalSaveXmlSameDir()); + ui->customDir->setChecked(conf->generalSaveXmlCustomDir()); + ui->customDirValue->setText(conf->generalSaveXmlCustomDirPath()); +} + + +void GeneralOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setGeneralSaveXmlEnabled(ui->saveXml->isChecked()); + conf->setGeneralSaveXmlSameDir(ui->sameDir->isChecked()); + conf->setGeneralSaveXmlCustomDir(ui->customDir->isChecked()); + conf->setGeneralSaveXmlCustomDirPath(ui->customDirValue->text()); +} + +void GeneralOptions::onCustomDirBrowseBtnClicked() +{ + QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); + + if (!dir.isEmpty()) + ui->customDirValue->setText(dir); +} diff --git a/scribo/demo/viewer/Preferences/generaloptions.hh b/scribo/demo/viewer/Preferences/generaloptions.hh new file mode 100644 index 0000000..1d31d18 --- /dev/null +++ b/scribo/demo/viewer/Preferences/generaloptions.hh @@ -0,0 +1,50 @@ +// Copyright (C) 2013 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/
>. + +#ifndef GENERALOPTIONS_HH +# define GENERALOPTIONS_HH + +#include <QFileDialog> + +#include "optionwidget.hh" +#include "configs.hh" + +namespace Ui +{ + class GeneralOptions; +} + +class GeneralOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit GeneralOptions(QWidget *parent = 0); + ~GeneralOptions(); + + virtual void loadConfig(); + virtual void saveConfig(); + + private: + Ui::GeneralOptions *ui; + + private slots: + void onCustomDirBrowseBtnClicked(); + +}; + +#endif // GENERAL_OPTIONS_HH diff --git a/GScribo/Preferences/generaloptions.ui b/scribo/demo/viewer/Preferences/generaloptions.ui similarity index 100% rename from GScribo/Preferences/generaloptions.ui rename to scribo/demo/viewer/Preferences/generaloptions.ui diff --git a/scribo/demo/viewer/Preferences/ocroptions.cc b/scribo/demo/viewer/Preferences/ocroptions.cc new file mode 100644 index 0000000..187a8d7 --- /dev/null +++ b/scribo/demo/viewer/Preferences/ocroptions.cc @@ -0,0 +1,69 @@ +// Copyright (C) 2013 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/
>. + +#include "ocroptions.hh" +#include "Preferences/ocroptions.ui.h" + +static const char *language[][2] = +{ + { "English", "eng" }, + { "French", "fra" }, + { 0, 0 } +}; + +OcrOptions::OcrOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::OcrOptions) +{ + ui->setupUi(this); + + for (unsigned i = 0; language[i][0]; ++i) + ui->ocr_language->insertItem(i, language[i][0]); + + loadConfig(); +} + +OcrOptions::~OcrOptions() +{ + delete ui; +} + +int OcrOptions::findIndex(const QString& lang) +{ + for (unsigned i = 0; language[i][0]; ++i) + if (lang == language[i][1]) + return i; + + return 0; +} + + +void OcrOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->enable_ocr->setChecked(conf->ocrEnabled()); + ui->ocr_language->setCurrentIndex(findIndex(conf->ocrLanguage())); +} + + +void OcrOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setOcrEnabled(ui->enable_ocr->isChecked()); + conf->setOcrLanguage(language[ui->ocr_language->currentIndex()][1]); +} diff --git a/scribo/demo/viewer/Preferences/ocroptions.hh b/scribo/demo/viewer/Preferences/ocroptions.hh new file mode 100644 index 0000000..8b5b209 --- /dev/null +++ b/scribo/demo/viewer/Preferences/ocroptions.hh @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#ifndef OCR_OPTIONS_HH +# define OCR_OPTIONS_HH + +//#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> + +#include "optionwidget.hh" +#include "configs.hh" +#include "region.hh" + +namespace Ui +{ + class OcrOptions; +} + +class OcrOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit OcrOptions(QWidget *parent = 0); + ~OcrOptions(); + + void loadConfig(); + void saveConfig(); + + private: + int findIndex(const QString& lang); + + Ui::OcrOptions *ui; +}; + +#endif // OCR_OPTIONS_HH diff --git a/GScribo/Preferences/ocroptions.ui b/scribo/demo/viewer/Preferences/ocroptions.ui similarity index 100% rename from GScribo/Preferences/ocroptions.ui rename to scribo/demo/viewer/Preferences/ocroptions.ui diff --git a/GScribo/Preferences/optionwidget.h b/scribo/demo/viewer/Preferences/optionwidget.hh similarity index 100% rename from GScribo/Preferences/optionwidget.h rename to scribo/demo/viewer/Preferences/optionwidget.hh diff --git a/scribo/demo/viewer/Preferences/preferencesdialog.cc b/scribo/demo/viewer/Preferences/preferencesdialog.cc new file mode 100644 index 0000000..ee6feda --- /dev/null +++ b/scribo/demo/viewer/Preferences/preferencesdialog.cc @@ -0,0 +1,120 @@ +// Copyright (C) 2013 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/
>. + +#include "preferencesdialog.hh" +#include "Preferences/preferencesdialog.ui.h" + +PreferencesDialog::PreferencesDialog(QWidget *parent) : + QDialog(parent, Qt::Dialog), + ui(new Ui::PreferencesDialog) +{ + ui->setupUi(this); + + // We may want to remove this useless object in the ui file. + delete ui->widget; + + connect(ui->optionList, SIGNAL(currentRowChanged(int)), this, SLOT(onOptionListCurrentRowChanged(int))); + setAttribute(Qt::WA_DeleteOnClose); + + loadOptionList(); + ui->optionList->setCurrentRow(0); +} + +PreferencesDialog::~PreferencesDialog() +{ + delete ui; +} + +void PreferencesDialog::loadOptionList() +{ + static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; + + int i; + for (i = 0; options[i]; ++i) + ui->optionList->insertItem(i, options[i]); + + widgets.fill(0, i); +} + +void PreferencesDialog::selectOptionWidget(int row) +{ + if(!widgets[row]) + { + QWidget *widget = 0; + + switch(row) + { + case 0: + widget = new GeneralOptions(this); + break; + + case 1: + widget = new PreprocessingOptions(this); + break; + + case 2: + widget = new SegmentationOptions(this); + break; + + case 3: + widget = new OcrOptions(this); + break; + } + + if(widget) + widgets[row] = widget; + } + + if(ui->horizontalLayout_2->count() == 2) + { + QWidget *current_widget = ui->horizontalLayout_2->itemAt(1)->widget(); + ui->horizontalLayout_2->removeWidget(current_widget); + current_widget->hide(); + } + + ui->horizontalLayout_2->insertWidget(1, widgets[row]); + widgets[row]->show(); +} + + +void PreferencesDialog::accept() +{ + for (int i = 0; i < widgets.size(); ++i) + { + if (widgets[i]) + { + static_cast<OptionWidget *>(widgets[i])->saveConfig(); + delete widgets[i]; + } + } + + QDialog::accept(); +} + + +void PreferencesDialog::reject() +{ + for (int i = 0; i < widgets.size(); ++i) + delete widgets[i]; + + QDialog::reject(); +} + + +void PreferencesDialog::onOptionListCurrentRowChanged(int row) +{ + selectOptionWidget(row); +} diff --git a/scribo/demo/viewer/Preferences/preferencesdialog.hh b/scribo/demo/viewer/Preferences/preferencesdialog.hh new file mode 100644 index 0000000..f867b26 --- /dev/null +++ b/scribo/demo/viewer/Preferences/preferencesdialog.hh @@ -0,0 +1,55 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREFERENCESDIALOG_HH +# define PREFERENCESDIALOG_HH + +#include <QDialog> + +#include "preprocessingoptions.hh" +#include "segmentationoptions.hh" +#include "generaloptions.hh" +#include "ocroptions.hh" + +namespace Ui +{ + class PreferencesDialog; +} + +class PreferencesDialog : + public QDialog +{ + Q_OBJECT + + public: + explicit PreferencesDialog(QWidget *parent = 0); + ~PreferencesDialog(); + + private: + void loadOptionList(); + void selectOptionWidget(int row); + + Ui::PreferencesDialog *ui; + QVector<QWidget *> widgets; + + private slots: + void onOptionListCurrentRowChanged(int row); + virtual void accept(); + virtual void reject(); + +}; + +#endif // PREFERENCESDIALOG_HH diff --git a/GScribo/Preferences/preferencesdialog.ui b/scribo/demo/viewer/Preferences/preferencesdialog.ui similarity index 100% rename from GScribo/Preferences/preferencesdialog.ui rename to scribo/demo/viewer/Preferences/preferencesdialog.ui diff --git a/scribo/demo/viewer/Preferences/preprocessingoptions.cc b/scribo/demo/viewer/Preferences/preprocessingoptions.cc new file mode 100644 index 0000000..23d2538 --- /dev/null +++ b/scribo/demo/viewer/Preferences/preprocessingoptions.cc @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#include "preprocessingoptions.hh" +#include "Preferences/preprocessingoptions.ui.h" + +using namespace scribo::toolchain::internal; + +PreprocessingOptions::PreprocessingOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::PreprocessingOptions) +{ + ui->setupUi(this); + + ui->bin_algoCbox->insertItem(Convert, "Violent convert"); + ui->bin_algoCbox->insertItem(Sauvola, "Local threshold"); + ui->bin_algoCbox->insertItem(SauvolaMs, "Local threshold multiscale"); + + loadConfig(); +} + +PreprocessingOptions::~PreprocessingOptions() +{ + delete ui; +} + +void PreprocessingOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + + ui->subsampleCb->setChecked(conf->preprocessingSubsample()); + ui->remove_bgCb->setChecked(conf->preprocessingRemoveBg()); + ui->deskewCb->setChecked(conf->preprocessingDeskew()); + ui->remove_noiseCb->setChecked(conf->preprocessingRemoveNoise()); + ui->bin_algoCbox->setCurrentIndex(conf->preprocessingBinAlgo()); +} + + +void PreprocessingOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + + conf->setPreprocessingSubsample(ui->subsampleCb->isChecked()); + conf->setPreprocessingRemoveBg(ui->remove_bgCb->isChecked()); + conf->setPreprocessingDeskew(ui->deskewCb->isChecked()); + conf->setPreprocessingRemoveNoise(ui->remove_noiseCb->isChecked()); + conf->setPreprocessingBinAlgo(ui->bin_algoCbox->currentIndex()); +} diff --git a/scribo/demo/viewer/Preferences/preprocessingoptions.hh b/scribo/demo/viewer/Preferences/preprocessingoptions.hh new file mode 100644 index 0000000..38645fa --- /dev/null +++ b/scribo/demo/viewer/Preferences/preprocessingoptions.hh @@ -0,0 +1,48 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREPROCESSINGOPTIONS_HH +# define PREPROCESSINGOPTIONS_HH + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> + +#include "optionwidget.hh" +#include "region.hh" +#include "configs.hh" + +namespace Ui +{ + class PreprocessingOptions; +} + +class PreprocessingOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit PreprocessingOptions(QWidget *parent = 0); + ~PreprocessingOptions(); + + void loadConfig(); + void saveConfig(); + + private: + Ui::PreprocessingOptions *ui; + +}; + +#endif // PREPROCESSINGOPTIONS_HH diff --git a/GScribo/Preferences/preprocessingoptions.ui b/scribo/demo/viewer/Preferences/preprocessingoptions.ui similarity index 100% rename from GScribo/Preferences/preprocessingoptions.ui rename to scribo/demo/viewer/Preferences/preprocessingoptions.ui diff --git a/scribo/demo/viewer/Preferences/segmentationoptions.cc b/scribo/demo/viewer/Preferences/segmentationoptions.cc new file mode 100644 index 0000000..867aa9a --- /dev/null +++ b/scribo/demo/viewer/Preferences/segmentationoptions.cc @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#include "segmentationoptions.hh" +#include "Preferences/segmentationoptions.ui.h" + +SegmentationOptions::SegmentationOptions(QWidget *parent) : + OptionWidget(parent), + ui(new Ui::SegmentationOptions) +{ + ui->setupUi(this); + + ui->find_sepsCbox->insertItem(Separator::Lines, "Lines"); + ui->find_sepsCbox->insertItem(Separator::Whitespaces, "Whitespaces"); + ui->find_sepsCbox->insertItem(Separator::Both, "Lines and whitespaces"); + + loadConfig(); +} + +SegmentationOptions::~SegmentationOptions() +{ + delete ui; +} + +void SegmentationOptions::loadConfig() +{ + Configs *const conf = Configs::getInstance(); + ui->find_sepsCbox->setCurrentIndex(conf->segmentationFindSeps()); +} + + +void SegmentationOptions::saveConfig() +{ + Configs *const conf = Configs::getInstance(); + conf->setSegmentationFindSeps(ui->find_sepsCbox->currentIndex()); +} diff --git a/scribo/demo/viewer/Preferences/segmentationoptions.hh b/scribo/demo/viewer/Preferences/segmentationoptions.hh new file mode 100644 index 0000000..4ad282a --- /dev/null +++ b/scribo/demo/viewer/Preferences/segmentationoptions.hh @@ -0,0 +1,46 @@ +// Copyright (C) 2013 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/
>. + +#ifndef SEGMENTATIONOPTIONS_HH +# define SEGMENTATIONOPTIONS_HH + + +#include "optionwidget.hh" +#include "configs.hh" +#include "region.hh" + +namespace Ui +{ + class SegmentationOptions; +} + +class SegmentationOptions : + public OptionWidget +{ + Q_OBJECT + + public: + explicit SegmentationOptions(QWidget *parent = 0); + ~SegmentationOptions(); + + void loadConfig(); + void saveConfig(); + + private: + Ui::SegmentationOptions *ui; +}; + +#endif // SEGMENTATIONOPTIONS_HH diff --git a/GScribo/Preferences/segmentationoptions.ui b/scribo/demo/viewer/Preferences/segmentationoptions.ui similarity index 100% rename from GScribo/Preferences/segmentationoptions.ui rename to scribo/demo/viewer/Preferences/segmentationoptions.ui diff --git a/scribo/demo/viewer/Processing/preprocess.cc b/scribo/demo/viewer/Processing/preprocess.cc new file mode 100644 index 0000000..c913c60 --- /dev/null +++ b/scribo/demo/viewer/Processing/preprocess.cc @@ -0,0 +1,27 @@ +// Copyright (C) 2013 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/
>. + +#include "preprocess.hh" + +void Preprocess::on_progress() +{ + emit progress(); +} + +void Preprocess::on_new_progress_label(const char *label) +{ + emit newProgressLabel(QString(label)); +} diff --git a/scribo/demo/viewer/Processing/preprocess.hh b/scribo/demo/viewer/Processing/preprocess.hh new file mode 100644 index 0000000..457efde --- /dev/null +++ b/scribo/demo/viewer/Processing/preprocess.hh @@ -0,0 +1,42 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PREPROCESS_H +# define PREPROCESS_H + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> +#include <mln/core/image/image2d.hh> +#include <mln/value/rgb8.hh> +#include <QObject> + +using namespace scribo::toolchain::internal; + +class Preprocess : + public QObject, + public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > +{ + Q_OBJECT + + public: + virtual void on_progress(); + virtual void on_new_progress_label(const char *label); + + signals: + void newProgressLabel(const QString& label); + void progress(); +}; + +#endif // PREPROCESS_H diff --git a/scribo/demo/viewer/Processing/process.cc b/scribo/demo/viewer/Processing/process.cc new file mode 100644 index 0000000..0fb54a6 --- /dev/null +++ b/scribo/demo/viewer/Processing/process.cc @@ -0,0 +1,37 @@ +// Copyright (C) 2013 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/
>. + +#include "process.hh" + +Process::Process(const char *doc_filename) + : superT(doc_filename) +{ +} + +void Process::on_progress() +{ + emit progress(); +} + +void Process::on_new_progress_label(const char *label) +{ + emit newProgressLabel(QString(label)); +} + +void Process::on_xml_saved() +{ + emit xmlSaved(QString(output_file.c_str())); +} diff --git a/scribo/demo/viewer/Processing/process.hh b/scribo/demo/viewer/Processing/process.hh new file mode 100644 index 0000000..fc3809c --- /dev/null +++ b/scribo/demo/viewer/Processing/process.hh @@ -0,0 +1,45 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PROCESS_H +# define PROCESS_H + +#include <scribo/toolchain/internal/content_in_doc_functor.hh> +#include <mln/core/image/image2d.hh> +#include <QObject> + +using namespace scribo::toolchain::internal; + +struct Process : + public QObject, + public content_in_doc_functor<mln::image2d<bool> > +{ + Q_OBJECT + typedef content_in_doc_functor<mln::image2d<bool> > superT; + + public : + explicit Process(const char *docFilename); + virtual void on_progress(); + virtual void on_new_progress_label(const char *label); + virtual void on_xml_saved(); + + signals: + void newProgressLabel(const QString& label); + void progress(); + void xmlSaved(const QString& filename); +}; + +#endif // PROCESS_H diff --git a/scribo/demo/viewer/Processing/progressdialog.cc b/scribo/demo/viewer/Processing/progressdialog.cc new file mode 100644 index 0000000..beda013 --- /dev/null +++ b/scribo/demo/viewer/Processing/progressdialog.cc @@ -0,0 +1,37 @@ +// Copyright (C) 2013 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/
>. + +#include "progressdialog.hh" + +ProgressDialog::ProgressDialog(QWidget *parent): + QProgressDialog(parent, Qt::Dialog) +{ + setAutoClose(false); + setCancelButton(0); + hide(); +} + +void ProgressDialog::reset() +{ + setValue(0); + setLabelText("Initilization"); + show(); +} + +void ProgressDialog::run() +{ + setValue(value()+1); +} diff --git a/scribo/demo/viewer/Processing/progressdialog.hh b/scribo/demo/viewer/Processing/progressdialog.hh new file mode 100644 index 0000000..fe2ea0f --- /dev/null +++ b/scribo/demo/viewer/Processing/progressdialog.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef PROGRESSDIALOG_H +#define PROGRESSDIALOG_H + +#include <QProgressDialog> + +class ProgressDialog : + public QProgressDialog +{ + Q_OBJECT + + public: + explicit ProgressDialog(QWidget *parent = 0); + void reset(); + + public slots: + void run(); +}; + + +#endif // PROGRESSDIALOG_H diff --git a/scribo/demo/viewer/Processing/runner.cc b/scribo/demo/viewer/Processing/runner.cc new file mode 100644 index 0000000..a52c6eb --- /dev/null +++ b/scribo/demo/viewer/Processing/runner.cc @@ -0,0 +1,199 @@ +// Copyright (C) 2013 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/
>. + +#include "runner.hh" + +using namespace mln; +using namespace scribo::toolchain::internal; + +static QString get_pathto(const QString& file, const QString localdirsuffix = QString()) +{ + QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); + if (f.exists()) + return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; + f.setFileName(SCRIBO_PREFIX_BINDIR "/" + file); + if (f.exists()) + return SCRIBO_PREFIX_BINDIR; + + return ""; +} + +Runner::Runner(QObject *parent) : + QThread(parent) +{ + moveToThread(this); +} + +void Runner::run() +{ + if(mode_ == Demat) + { + image2d<value::rgb8> ima; + for(int i = 0; i < args_.count(); i++) + { + io::magick::load(ima, args_.at(i).toUtf8().constData()); + image2d<bool> bin_ima = preprocess(ima); + process(ima, bin_ima, i); + } + } + + else if(mode_ == Export) + export_as(); + + emit finished(); +} + +void Runner::stop() +{ + terminate(); +} + +// Demat related stuff +void Runner::start_demat(const QStringList& filenames) +{ + args_.clear(); + args_ = filenames; + mode_ = Demat; + QThread::start(); +} + + +image2d<bool> Runner::preprocess(const image2d<value::rgb8>& ima) +{ + emit new_step("Preprocessing"); + Preprocess f; + + // Load config. + Configs *const conf = Configs::getInstance(); + + connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); + connect(&f, SIGNAL(newProgressLabel(QString)), + this, SIGNAL(new_progress_label(const QString&))); + + f.enable_subsample = conf->preprocessingSubsample(); + f.enable_fg_extraction = conf->preprocessingRemoveBg(); + f.enable_deskew = conf->preprocessingDeskew(); + f.enable_denoising = conf->preprocessingRemoveNoise(); + + f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessingBinAlgo()); + + emit new_progress_max_value(f.nsteps()); + + // Perform preprocessing. + f(ima); + + return f.output; +} + + +void Runner::process(const image2d<value::rgb8>& original_ima, + const image2d<bool>& processed_ima, int arg) +{ + emit new_step("Page segmentation"); + + Process f(args_.at(arg).toUtf8().constData()); + + connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); + connect(&f, SIGNAL(newProgressLabel(QString)), + this, SIGNAL(new_progress_label(QString))); + connect(&f, SIGNAL(xmlSaved(QString)), + this, SIGNAL(xml_saved(const QString&))); + + // Load config. + Configs *const conf = Configs::getInstance(); + + Separator::FindSeparator find_seps = static_cast<Separator::FindSeparator>(conf->segmentationFindSeps()); + f.enable_line_seps = (find_seps == Separator::Lines + || find_seps == Separator::Both); + f.enable_whitespace_seps = (find_seps == Separator::Whitespaces + || find_seps == Separator::Both); + f.enable_ocr = conf->ocrEnabled(); + f.ocr_language = conf->ocrLanguage().toAscii().data(); + f.xml_format = scribo::io::xml::PageExtended; + + + f.save_doc_as_xml = true; + QFileInfo file(args_.at(arg)); + QString output_dir = QDir::tempPath(); + if (conf->generalSaveXmlEnabled()) + { + if (conf->generalSaveXmlSameDir()) + output_dir = file.absolutePath(); + else if (conf->generalSaveXmlCustomDir()) + output_dir = conf->generalSaveXmlCustomDirPath(); + + QDir dir(output_dir); + if (!dir.exists() && !dir.mkpath(output_dir)) + output_dir = QDir::tempPath(); + } + QString filename = (output_dir + "/" + file.baseName() + "_gui.xml"); + f.output_file = filename.toUtf8().constData(); + emit new_progress_max_value(f.nsteps()); + + // Perform text detection. + f(original_ima, processed_ima); +} + +// Export related stuff +void Runner::start_export(const QString& imgfile, + const QString& xmlfile, const QString& outfile) +{ + args_.clear(); + args_ << imgfile << xmlfile << outfile; + mode_ = Export; + + QThread::start(); +} + +void Runner::export_as() +{ + emit new_step("Exporting document"); + emit new_progress_max_value(2); + + // Checking output format + QFileInfo f(args_.at(2)); + + QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); + + if (pathto_xml2doc.isEmpty()) + { + QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); + return; + } + + emit progress(); + + int rvalue = 0; + if (f.suffix() == "pdf") + { + emit new_step("Exporting as PDF"); + rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") + .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) + .arg(args_.at(2)).toAscii().constData()); + } + else if (f.suffix() == "html" || f.suffix() == "htm") + { + emit new_step("Exporting as HTML"); + rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") + .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) + .arg(args_.at(2)).toAscii().constData()); + } + else + QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); + + if (rvalue != 0) + QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); +} diff --git a/scribo/demo/viewer/Processing/runner.hh b/scribo/demo/viewer/Processing/runner.hh new file mode 100644 index 0000000..ab0fb79 --- /dev/null +++ b/scribo/demo/viewer/Processing/runner.hh @@ -0,0 +1,74 @@ +// Copyright (C) 2013 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/
>. + +#ifndef RUNNER_H +# define RUNNER_H + +#include <mln/core/image/image2d.hh> +#include <mln/io/magick/load.hh> +#include <mln/value/rgb8.hh> +#include <QStringList> +#include <QMessageBox> +#include <QThread> +#include <QFile> + +#include "preprocess.hh" +#include "process.hh" +#include "configs.hh" +#include "region.hh" +#include "dir.hh" + +using namespace mln; + +enum RunMode +{ + Demat, + Export +}; + +class Runner : + public QThread +{ + Q_OBJECT + + public: + explicit Runner(QObject *parent = 0); + void start_demat(const QStringList& filenames); + void start_export(const QString& imgfile, const QString& xmlfile, const QString& outfile); + + private: + image2d<bool> preprocess(const image2d<value::rgb8>& ima); + void process(const image2d<value::rgb8>& original_ima, const image2d<bool>& processed_ima, int arg); + void export_as(); + virtual void run(); + template <typename V> unsigned find_best_scale(const mln::image2d<V>& ima); + + QStringList args_; + RunMode mode_; + + public slots: + void stop(); + + signals: + void new_step(const QString& step_name); + void new_progress_max_value(int i); + void new_progress_label(const QString& msg); + void xml_saved(const QString& filename); + void progress(); + void finished(); +}; + +#endif // RUNNER_H diff --git a/scribo/demo/viewer/README b/scribo/demo/viewer/README deleted file mode 100644 index 31c66aa..0000000 --- a/scribo/demo/viewer/README +++ /dev/null @@ -1,32 +0,0 @@ -Copyright (C) 2010 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/>. - -__________________________________________________________________ - - -Document Layout Viewer - -Purpose: -- Display layout information about image documents. - -Usage: -- Get XML layout descriptions (PAGE format, ICDAR2009). -- Put XML and image files in the same directory, with the same name. -- Select an image within the application. -- Click on regions to display their attributes. - -Infos: -- Everything is read-only. diff --git a/GScribo/Rendering/abstractregionitem.h b/scribo/demo/viewer/Rendering/abstractregionitem.hh similarity index 100% rename from GScribo/Rendering/abstractregionitem.h rename to scribo/demo/viewer/Rendering/abstractregionitem.hh diff --git a/GScribo/Rendering/backgroundtexture.h b/scribo/demo/viewer/Rendering/backgroundtexture.hh similarity index 100% rename from GScribo/Rendering/backgroundtexture.h rename to scribo/demo/viewer/Rendering/backgroundtexture.hh diff --git a/scribo/demo/viewer/Rendering/graphicsview.cc b/scribo/demo/viewer/Rendering/graphicsview.cc new file mode 100644 index 0000000..10ac034 --- /dev/null +++ b/scribo/demo/viewer/Rendering/graphicsview.cc @@ -0,0 +1,165 @@ +// Copyright (C) 2013 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/
>. + +#include "graphicsview.hh" + +GraphicsView::GraphicsView(QWidget *parent) : + QGraphicsView(parent) +{ + init(); +} + +GraphicsView::GraphicsView(QGraphicsScene *scene, QWidget *parent) : + QGraphicsView(scene, parent) +{ + init(); +} + +void GraphicsView::init() +{ + isRightClicking_ = false; + scaleRatio_ = QSizeF(1, 1); + setTransformationAnchor(GraphicsView::AnchorUnderMouse); + setBackgroundBrush(QBrush(Qt::lightGray)); + + // Important to hide scroll bars : when they appear, it triggers the resizeEvent. + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +} + +void GraphicsView::mousePressEvent(QMouseEvent *event) +{ + if(event->button() == Qt::RightButton) + { + emit beginDrag(); + setDragMode(QGraphicsView::ScrollHandDrag); + } + + QMouseEvent *mouseEvent = new QMouseEvent(QEvent::MouseButtonPress, event->pos(), Qt::LeftButton, + Qt::LeftButton, Qt::MetaModifier); + event->ignore(); + QGraphicsView::mousePressEvent(mouseEvent); +} + +void GraphicsView::mouseReleaseEvent(QMouseEvent *event) +{ + if(event->button() == Qt::RightButton) + { + setDragMode(GraphicsView::NoDrag); + emit endDrag(); + } + + QGraphicsView::mouseReleaseEvent(event); +} + +void GraphicsView::wheelEvent(QWheelEvent *event) +{ + if(event->modifiers() & Qt::ControlModifier) + { + // Current wheel have an angle of 15 degrees by steps with a delta of + or - 120. A good scale is +- 0.1 in that case. + // So we have to adapt for wheel whith better precision. + qreal degrees = 1 + static_cast<qreal>(event->delta()) / 1200; + qreal nextScaleRatio = degrees * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(event->delta() > 0) + { + if(nextScaleRatio <= 20) + { + scaleRatio_ *= degrees; + scale(degrees, degrees); + } + } + else + { + if(nextScaleRatio >= 1.1) + { + scaleRatio_ *= degrees; + scale(degrees, degrees); + } + else if(isContainedInView_) + { + QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); + scaleRatio_ = QSizeF(1, 1); + } + } + } + else + QGraphicsView::wheelEvent(event); +} + +void GraphicsView::keyPressEvent(QKeyEvent* event) +{ + // Bitwise AND to check if at least CTRL is pushed. + if(event->modifiers() & Qt::ControlModifier) + { + qreal nextScaleRatio; + if(event->key() == Qt::Key_Plus) + { + nextScaleRatio = 1.2 * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(nextScaleRatio <= 19) + { + scaleRatio_ *= 1.2; + scale(1.2, 1.2); + } + } + else if(event->key() == Qt::Key_Minus) + { + nextScaleRatio = 0.8 * isWidthGreater_ ? scaleRatio_.width() : + scaleRatio_.height(); + if(nextScaleRatio >= 1.2) + { + scaleRatio_ *= 0.8; + scale(0.8, 0.8); + } + else if(isContainedInView_) + { + QGraphicsView::fitInView(scene()->sceneRect(), Qt::KeepAspectRatio); + scaleRatio_ = QSizeF(1, 1); + } + } + } + + QGraphicsView::keyPressEvent(event); +} + +void GraphicsView::fitInView(const QRectF& rect) +{ + setFocus(); + isWidthGreater_ = static_cast<qreal>(rect.width()) / static_cast<qreal>(rect.height()) > 1 ? true : + false; + qreal ratio = isWidthGreater_ ? static_cast<qreal>(width()) / static_cast<qreal>(rect.width()) : + static_cast<qreal>(height()) / static_cast<qreal>(rect.height()); + + isContainedInView_ = ratio < 1 ? true : false; + if(isContainedInView_) + { + scaleRatio_ = QSizeF(1, 1); + QGraphicsView::fitInView(rect, Qt::KeepAspectRatio); + } +} + +void GraphicsView::resizeEvent(QResizeEvent *event) +{ + if(scene()->items().count() > 1) + { + qreal ratio = isWidthGreater_ ? static_cast<qreal>(event->size().width()) / static_cast<qreal>(event->oldSize().width()) : + static_cast<qreal>(event->size().height()) / static_cast<qreal>(event->oldSize().height()); + scale(ratio, ratio); + } + + QGraphicsView::resizeEvent(event); +} diff --git a/scribo/demo/viewer/Rendering/graphicsview.hh b/scribo/demo/viewer/Rendering/graphicsview.hh new file mode 100644 index 0000000..86e1786 --- /dev/null +++ b/scribo/demo/viewer/Rendering/graphicsview.hh @@ -0,0 +1,59 @@ +// Copyright (C) 2013 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/
>. + +#ifndef GRAPHICSVIEW_HH +# define GRAPHICSVIEW_HH + +#include <QGraphicsView> +#include <QWheelEvent> +#include <QScrollBar> + +class GraphicsView : + public QGraphicsView +{ + Q_OBJECT + + public: + explicit GraphicsView(QWidget *parent = 0); + explicit GraphicsView(QGraphicsScene *scene, QWidget *parent = 0); + + protected: + void init(); + + void resizeEvent(QResizeEvent *event); + + void wheelEvent(QWheelEvent *event); + void keyPressEvent(QKeyEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + + private: + bool isWidthGreater_; + bool isContainedInView_; + QSizeF scaleRatio_; + + bool isRightClicking_; + QPointF prevMousePos_; + + public slots: + void fitInView(const QRectF& rect); + + signals: + void beginDrag(); + void endDrag(); +}; + +#endif // GRAPHICSVIEW_HH diff --git a/scribo/demo/viewer/Rendering/regionitem.cc b/scribo/demo/viewer/Rendering/regionitem.cc new file mode 100644 index 0000000..d845413 --- /dev/null +++ b/scribo/demo/viewer/Rendering/regionitem.cc @@ -0,0 +1,130 @@ +// Copyright (C) 2013 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/
>. + +#include "Rendering/regionitem.hh" + +RegionItem::RegionItem(QGraphicsItem *parent, QGraphicsScene *scene) + : QGraphicsPolygonItem(parent, scene) +{ + init(); +} + +RegionItem::RegionItem(const QPolygonF& polygon, QGraphicsItem *parent, QGraphicsScene *scene): + QGraphicsPolygonItem(polygon, parent, scene) +{ + init(); +} + +void RegionItem::init() +{ + xmlItem_ = 0; + + selectedPen_.setStyle(Qt::SolidLine); + unselectedPen_.setStyle(Qt::SolidLine); + + selectedPen_.setWidthF(2); + unselectedPen_.setWidth(0); + + selectedPen_.setCapStyle(Qt::SquareCap); + unselectedPen_.setCapStyle(Qt::SquareCap); + + selectedBrush_.setStyle(Qt::SolidPattern); + unselectedBrush_.setStyle(Qt::SolidPattern); +} + +void RegionItem::setColor(const QColor& color) +{ + selectedPen_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 255)); + unselectedPen_.setColor(color); + + selectedBrush_.setColor(color); + unselectedBrush_.setColor(QColor::fromRgb(color.red(), color.green(), color.blue(), 40)); + + setPen(unselectedPen_); + setBrush(unselectedBrush_); +} + +void RegionItem::setSelected(bool isSelected) +{ + if(isSelected) + { + isSelected_ = true; + setPen(selectedPen_); + setBrush(selectedBrush_); + } + + else + { + isSelected_ = false; + setPen(unselectedPen_); + setBrush(unselectedBrush_); + } +} + + +void RegionItem::setXmlItem(XmlItem *xmlItem) +{ + xmlItem_ = xmlItem; +} + +XmlItem *RegionItem::xmlItem() const +{ + return xmlItem_; +} + +QColor RegionItem::color() const +{ + return selectedBrush_.color(); +} + +int RegionItem::region() const +{ + return region_; +} + +bool RegionItem::isSelected() +{ + return isSelected_; +} + +void RegionItem::select() +{ + setSelected(true); +} + +void RegionItem::unselect() +{ + setSelected(false); +} + +void RegionItem::loadData(const GraphicsRegion::Data& data) +{ + region_ = data.region; setColor(data.color); setZValue(data.zValue); +} + +bool RegionItem::contains(const QPointF& point) +{ + return (boundingRect().width() * boundingRect().height() == 0 + || boundingRect().contains(point)) + && shape().contains(point); +} + +bool RegionItem::intersects(const QRectF& rect) +{ + return (boundingRect().width() * boundingRect().height() == 0 + || boundingRect().intersects(rect)) + && shape().intersects(rect); +} diff --git a/scribo/demo/viewer/Rendering/regionitem.hh b/scribo/demo/viewer/Rendering/regionitem.hh new file mode 100644 index 0000000..3fe03a7 --- /dev/null +++ b/scribo/demo/viewer/Rendering/regionitem.hh @@ -0,0 +1,66 @@ +// Copyright (C) 2013 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/
>. + +#ifndef RegionITEM_HH +# define RegionITEM_HH + +#include <QGraphicsPolygonItem> +#include <QTreeWidgetItem> +#include <QPen> + +#include "variantpointer.hh" +#include "region.hh" + +class XmlItem; + +class RegionItem : + public QGraphicsPolygonItem +{ + public: + explicit RegionItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + explicit RegionItem(const QPolygonF& path, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0); + + void setColor(const QColor& color); + QColor color() const; + + void setXmlItem(XmlItem *xmlItem); + XmlItem *xmlItem() const; + + void loadData(const GraphicsRegion::Data& data); + int region() const; + + bool intersects(const QRectF& rect); + bool contains(const QPointF& point); + + void setSelected(bool isSelected); + bool isSelected(); + void unselect(); + void select(); + + private: + void init(); + + XmlItem *xmlItem_; + int region_; + bool isSelected_; + + QPen selectedPen_; + QPen unselectedPen_; + QBrush selectedBrush_; + QBrush unselectedBrush_; +}; + +#endif // RegionITEM_HH diff --git a/scribo/demo/viewer/Rendering/rootgraphicsitem.cc b/scribo/demo/viewer/Rendering/rootgraphicsitem.cc new file mode 100644 index 0000000..166a186 --- /dev/null +++ b/scribo/demo/viewer/Rendering/rootgraphicsitem.cc @@ -0,0 +1,46 @@ +// Copyright (C) 2013 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/
>. + +#include "Rendering/rootgraphicsitem.hh" + +RootGraphicsItem::RootGraphicsItem(int numberRegion) +{ + childsFromRegion_.fill(QList<QGraphicsItem *>(), numberRegion); +} + +RootGraphicsItem::~RootGraphicsItem() +{ + foreach(QList<QGraphicsItem *> list, childsFromRegion_) + { + foreach(QGraphicsItem *child, list) + { + delete child; + } + } +} + +QList<QGraphicsItem *> +RootGraphicsItem::childsFrom(const GraphicsRegion::Id& region) const +{ + return childsFromRegion_[region]; +} + +void +RootGraphicsItem::addItemFrom(QGraphicsItem *graphicalItem, + const GraphicsRegion::Id& region) +{ + childsFromRegion_[region] << graphicalItem; +} diff --git a/scribo/demo/viewer/Rendering/rootgraphicsitem.hh b/scribo/demo/viewer/Rendering/rootgraphicsitem.hh new file mode 100644 index 0000000..fe7f5a2 --- /dev/null +++ b/scribo/demo/viewer/Rendering/rootgraphicsitem.hh @@ -0,0 +1,39 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ROOTGRAPHICSITEM_HH +# define ROOTGRAPHICSITEM_HH + +#include <QGraphicsItem> + +#include "region.hh" + +class RootGraphicsItem : + public QGraphicsPolygonItem +{ +public: + explicit RootGraphicsItem(int numberRegion); + ~RootGraphicsItem(); + + + void addItemFrom(QGraphicsItem *graphicalItem, const GraphicsRegion::Id& region); + QList<QGraphicsItem *> childsFrom(const GraphicsRegion::Id& region) const; + +private: + QVector<QList<QGraphicsItem *> > childsFromRegion_; +}; + +#endif // ROOTGRAPHICSITEM_HH diff --git a/scribo/demo/viewer/Rendering/scene.cc b/scribo/demo/viewer/Rendering/scene.cc new file mode 100644 index 0000000..a036ed2 --- /dev/null +++ b/scribo/demo/viewer/Rendering/scene.cc @@ -0,0 +1,289 @@ +// Copyright (C) 2013 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/
>. + +#include "scene.hh" + +Scene::Scene(QObject *parent): + QGraphicsScene(parent) +{ + init(); +} + +Scene::Scene(const QRectF &sceneRect, QObject *parent): + QGraphicsScene(sceneRect, parent) +{ + init(); +} + +Scene::Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent): + QGraphicsScene(x, y, width, height, parent) +{ + init(); +} + +void Scene::init() +{ + isPressing_ = false; + isSelectionDisabled_ = false; + backgroundPixmap_ = 0; + root_ = 0; + + selection_.hide(); + addItem(&selection_); +} + +void Scene::clearAll() +{ + if(root_) + delete root_; + + if(backgroundPixmap_) + delete backgroundPixmap_; + + selectedRegions_.clear(); + backgroundPath_ = QString(); + backgroundPixmap_ = 0; + root_ = 0; +} + +void Scene::clearRegions() +{ + if(root_) + delete root_; + + selectedRegions_.clear(); + root_ = 0; +} + +void Scene::clearSelection() +{ + QGraphicsItem *child; + RegionItem *regionItem; + + // Unselect all items. + foreach(child, selectedRegions_) + { + regionItem = static_cast<RegionItem *>(child); + regionItem->unselect(); + } + + selectedRegions_.clear(); + emit selectionCleared(); +} + +void Scene::selectAll() +{ + RegionItem *item; + foreach(QGraphicsItem *child, root_->childItems()) + { + item = static_cast<RegionItem *>(child); + item->select(); + selectedRegions_ << item; + } +} + +void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + if(!backgroundPath_.isEmpty() && event->button() == Qt::LeftButton && !isSelectionDisabled_) + { + isPressing_ = true; + + baseSelection_.clear(); + pressPos_ = event->scenePos(); + selection_.show(); + } +} + +void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + if(isPressing_) + { + // Adapt if the selection rectangle has a negative size. + if(pressPos_.x() < event->scenePos().x()) + selection_.setRect(pressPos_.x(), 0, event->scenePos().x()-pressPos_.x(), 0); + else + selection_.setRect(event->scenePos().x(), 0, pressPos_.x()-event->scenePos().x(), 0); + + if(pressPos_.y() < event->scenePos().y()) + selection_.setRect(selection_.rect().x(), pressPos_.y(), selection_.rect().width(), event->scenePos().y()-pressPos_.y()); + else + selection_.setRect(selection_.rect().x(), event->scenePos().y(), selection_.rect().width(), pressPos_.y()-event->scenePos().y()); + } +} + +void Scene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + if(event->button() == Qt::LeftButton) + { + isPressing_ = false; + + // Redraw all items in selection. + if(root_) + { + clearSelection(); + + // Check if it is a click. + if(selection_.rect().width() * selection_.rect().height() == 0) + select(event->scenePos()); + else + select(selection_.rect()); + + baseSelection_ = selectedRegions(); + emit newSelection(selectedRegions_); + } + + selection_.setRect(QRect()); + selection_.hide(); + } +} + +void Scene::select(QGraphicsItem *root, const QPointF& point, const QRectF& rect) +{ + QGraphicsItem *child; + RegionItem *regionItem; + + // Check if it is a click. + if(!point.isNull()) + { + foreach(child, root->childItems()) + { + regionItem = static_cast<RegionItem *>(child); + + if(regionItem->contains(point)) + { + regionItem->select(); + selectedRegions_ << regionItem; + } + } + } + else + { + foreach(child, root->childItems()) + { + regionItem = static_cast<RegionItem *>(child); + + if(regionItem->intersects(rect)) + { + regionItem->select(); + selectedRegions_ << regionItem; + } + } + } + + emit newSelection(); +} + +void Scene::select(const QList<RegionItem *>& selectedRegions) +{ + RegionItem *child; + foreach(child, selectedRegions) + { + if(!child->isSelected()) + { + child->select(); + selectedRegions_ << child; + } + } + + ensureVisible(selectedRegions_.last()); + emit newSelection(); +} + +void Scene::unselect(const QList<RegionItem *>& unselectedRegions) +{ + RegionItem *child; + foreach(child, unselectedRegions) + { + if(child->isSelected()) + { + child->unselect(); + selectedRegions_.removeOne(child); + } + } + + // Check if after the removal, the selected list isn't empty. + if(!selectedRegions_.isEmpty()) + ensureVisible(selectedRegions_.last()); + + emit newSelection(); +} + + +void Scene::ensureVisible(QGraphicsItem *graphicalItem) +{ + QGraphicsView *view; + foreach (view, views()) + view->ensureVisible(graphicalItem); +} + +void Scene::setVisible(const GraphicsRegion::Id& region, bool visible) +{ + if(root_) + { + QGraphicsItem *child; + + if(visible) + { + foreach(child, root_->childsFrom(region)) + child->setVisible(true); + } + + else + { + foreach(child, root_->childsFrom(region)) + child->setVisible(false); + } + } +} + +void Scene::setRoot(RootGraphicsItem *root) +{ + // Delete all items. + clearRegions(); + + root_ = root; + addItem(root); + + // Add typo lines separately because can't be selected. + QGraphicsItem *line; + foreach(line, root->childsFrom(GraphicsRegion::Baseline)) + addItem(line); + + foreach(line, root->childsFrom(GraphicsRegion::Meanline)) + addItem(line); +} + +void Scene::changeScene(const QString& filename, RootGraphicsItem *root) +{ + // Delete all items. + clearAll(); + backgroundPath_ = filename; + + if(!filename.isEmpty()) + { + QPixmap pixmap(filename); + setSceneRect(pixmap.rect()); + // Create the background item and dock it at the maximal depth of the scene. + backgroundPixmap_ = new QGraphicsPixmapItem(pixmap, 0, this); + backgroundPixmap_->setZValue(INT_MIN); + } + else + setSceneRect(QRectF()); + + // Add new items. + if(root) + setRoot(root); +} diff --git a/scribo/demo/viewer/Rendering/scene.hh b/scribo/demo/viewer/Rendering/scene.hh new file mode 100644 index 0000000..7d2771d --- /dev/null +++ b/scribo/demo/viewer/Rendering/scene.hh @@ -0,0 +1,118 @@ +#ifndef SCENE_H +#define SCENE_H + +#include <QGraphicsSceneMouseEvent> +#include <QGraphicsView> +#include <QGraphicsScene> +#include <QFileDialog> +#include <climits> + +#include "rootgraphicsitem.hh" +#include "regionitem.hh" +#include "selection.hh" + +class Scene : + public QGraphicsScene +{ + Q_OBJECT + + public: + explicit Scene(QObject *parent = 0); + explicit Scene(const QRectF &sceneRect, QObject *parent = 0); + explicit Scene(qreal x, qreal y, qreal width, qreal height, QObject *parent = 0); + + inline QString backgroundPath() const; + inline QGraphicsPixmapItem *backgroundPixmap() const; + + inline QList<RegionItem *> selectedRegions() const; + + void setRoot(RootGraphicsItem *rootItem); + inline RootGraphicsItem *root() const; + + void select(const QRectF& rect); + void select(const QPointF& point); + void selectAll(); + + inline bool selectionEnable() const; + inline void setSelectionEnable(bool enable); + + void changeScene(const QString& filename, RootGraphicsItem *root = 0); + + protected: + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + + private: + void init(); + void select(QGraphicsItem *root, const QPointF& point, const QRectF& rect); + + QGraphicsView *mainView_; + RootGraphicsItem *root_; + + QString backgroundPath_; + QGraphicsPixmapItem *backgroundPixmap_; + + Selection selection_; + QList<RegionItem *> selectedRegions_; + QList<RegionItem *> baseSelection_; + + QPointF pressPos_; + bool isPressing_; + bool isSelectionDisabled_; + + public slots: + void clearAll(); + void clearRegions(); + void clearSelection(); + + void select(const QList<RegionItem *>& selectedRegions); + inline void selectBase(); + void unselect(const QList<RegionItem *>& unselectedItems); + + void setVisible(const GraphicsRegion::Id& region, bool visible); + void ensureVisible(QGraphicsItem *graphicsItem); + + inline void disableSelection(); + inline void enableSelection(); + + signals: + void selectionCleared(); + void newSelection(); + void newSelection(const QList<RegionItem *>& selectedRegions); +}; + +inline QString Scene::backgroundPath() const +{ return backgroundPath_; } + +inline QGraphicsPixmapItem *Scene::backgroundPixmap() const +{ return backgroundPixmap_; } + +inline RootGraphicsItem *Scene::root() const +{ return root_; } + +inline QList<RegionItem *> Scene::selectedRegions() const +{ return selectedRegions_; } + +inline void Scene::selectBase() +{ select(baseSelection_); } + +inline void Scene::select(const QPointF& point) +{ select(root_, point, QRectF()); } + +inline void Scene::select(const QRectF& rect) +{ select(root_, QPointF(), rect); } + +inline void Scene::setSelectionEnable(bool enable) +{ isSelectionDisabled_ = !enable; } + +inline bool Scene::selectionEnable() const +{ return isSelectionDisabled_; } + +inline void Scene::disableSelection() +{ setSelectionEnable(false); } + +inline void Scene::enableSelection() +{ setSelectionEnable(true); } + +#endif // SCENE_H diff --git a/scribo/demo/viewer/Rendering/selection.cc b/scribo/demo/viewer/Rendering/selection.cc new file mode 100644 index 0000000..89d2349 --- /dev/null +++ b/scribo/demo/viewer/Rendering/selection.cc @@ -0,0 +1,52 @@ +// Copyright (C) 2013 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/
>. + +#include "selection.hh" + +Selection::Selection(QGraphicsScene *scene): + QGraphicsRectItem(0, scene) +{ + init(); +} + +Selection::Selection(const QRectF &rect, QGraphicsScene *scene): + QGraphicsRectItem(rect, 0, scene) +{ + init(); +} + +Selection::Selection(qreal x, qreal y, qreal width, qreal height, QGraphicsScene *scene): + QGraphicsRectItem(x, y, width, height, 0, scene) +{ + init(); +} + +void Selection::init() +{ + // Always drawn on top of the scene. + setZValue(INT_MAX); + + QPen pen; + pen.setStyle(Qt::SolidLine); + pen.setCapStyle(Qt::SquareCap); + pen.setCosmetic(true); + setPen(pen); + + QBrush brush; + brush.setStyle(Qt::SolidPattern); + brush.setColor(QColor::fromRgb(80, 200, 10, 60)); + setBrush(brush); +} diff --git a/GScribo/Rendering/selection.h b/scribo/demo/viewer/Rendering/selection.hh similarity index 100% rename from GScribo/Rendering/selection.h rename to scribo/demo/viewer/Rendering/selection.hh diff --git a/GScribo/TODO b/scribo/demo/viewer/TODO similarity index 100% rename from GScribo/TODO rename to scribo/demo/viewer/TODO diff --git a/scribo/demo/viewer/XmlWidget/attributesmodel.cc b/scribo/demo/viewer/XmlWidget/attributesmodel.cc new file mode 100644 index 0000000..d2e1cb0 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/attributesmodel.cc @@ -0,0 +1,108 @@ +// Copyright (C) 2013 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/
>. + +#include "attributesmodel.hh" + +AttributesModel::AttributesModel(const XmlAttributes& attributes, QObject *parent) : + QAbstractItemModel(parent) +{ + attributes_ = attributes; +} + +AttributesModel::AttributesModel(const XmlAttributes& attributes, QAbstractItemModelPrivate& dd, QObject *parent) : + QAbstractItemModel(dd, parent) +{ + attributes_ = attributes; +} + +QVariant AttributesModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(orientation == Qt::Horizontal && role == Qt::DisplayRole) + { + switch(section) + { + case 0: + return tr("Name"); + + case 1: + return tr("Value"); + + default: + return QVariant(); + } + } + + return QVariant(); +} + +QVariant AttributesModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + switch(role) + { + case Qt::UserRole: + return attributes_.names()[index.row()]; + + case Qt::UserRole+1: + return attributes_.values()[index.row()]; + + default: + return QVariant(); + } +} + +void AttributesModel::load(const XmlAttributes& attributes) +{ + beginResetModel(); + + attributes_ = attributes; + + endResetModel(); +} + +void AttributesModel::reset() +{ + beginResetModel(); + + attributes_ = XmlAttributes(); + + endResetModel(); +} + + +int AttributesModel::rowCount(const QModelIndex&) const +{ + return attributes_.names().count(); +} + +int AttributesModel::columnCount(const QModelIndex&) const +{ + return 2; +} + +QModelIndex AttributesModel::index(int row, int column, const QModelIndex& parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + return createIndex(row, column, 0); +} + +QModelIndex AttributesModel::parent(const QModelIndex&) const +{ + return QModelIndex(); +} diff --git a/scribo/demo/viewer/XmlWidget/attributesmodel.hh b/scribo/demo/viewer/XmlWidget/attributesmodel.hh new file mode 100644 index 0000000..c99c993 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/attributesmodel.hh @@ -0,0 +1,55 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ATTRIBUTESMODEL_HH +# define ATTRIBUTESMODEL_HH + +#include <QAbstractItemModel> + +#include "xmlattributes.hh" + +class AttributesModel : + public QAbstractItemModel +{ + Q_OBJECT + + public: + explicit AttributesModel(const XmlAttributes& attributes = XmlAttributes(), + QObject *parent = 0); + explicit AttributesModel(const XmlAttributes& attributes, + QAbstractItemModelPrivate& dd, + QObject *parent = 0); + + int rowCount(const QModelIndex& parent) const; + int columnCount(const QModelIndex& parent) const; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const; + QVariant data(const QModelIndex& index, int role) const; + + QModelIndex index(int row, int column, const QModelIndex &parent) const; + QModelIndex parent(const QModelIndex &child) const; + +public slots: + void reset(); + +private: + XmlAttributes attributes_; + +public slots: + void load(const XmlAttributes& attributes); +}; + +#endif // ATTRIBUTESMODEL_HH diff --git a/scribo/demo/viewer/XmlWidget/selectionproxy.hh b/scribo/demo/viewer/XmlWidget/selectionproxy.hh new file mode 100644 index 0000000..7817c72 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/selectionproxy.hh @@ -0,0 +1,47 @@ +#ifndef SELECTIONPROXY_H +#define SELECTIONPROXY_H + +#include <QSortFilterProxyModel> +#include <QDebug> + +#include "xmlitem.hh" + +class SelectionProxy : + public QSortFilterProxyModel +{ + public: + explicit SelectionProxy(QObject *parent = 0) : QSortFilterProxyModel(parent) { isAllDisplayed_ = true; } + + inline void displayAll(); + inline bool isAllDisplayed(); + + inline void beginResetModel(); + inline void endResetModel(); + inline void invalidateFilter(); + + protected: + inline bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const; + + private: + bool isAllDisplayed_; +}; + +inline bool SelectionProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const +{ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent) && (isAllDisplayed_ || sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+2).value<XmlItem *>()->isVisible()); } + +inline void SelectionProxy::beginResetModel() +{ isAllDisplayed_ = false; QSortFilterProxyModel::beginResetModel(); } + +inline void SelectionProxy::endResetModel() +{ QSortFilterProxyModel::endResetModel(); } + +inline void SelectionProxy::displayAll() +{ isAllDisplayed_ = true; } + +inline bool SelectionProxy::isAllDisplayed() +{ return isAllDisplayed_; } + +inline void SelectionProxy::invalidateFilter() +{ QSortFilterProxyModel::invalidateFilter(); } + +#endif // SELECTIONPROXY_H diff --git a/scribo/demo/viewer/XmlWidget/xmlattributes.cc b/scribo/demo/viewer/XmlWidget/xmlattributes.cc new file mode 100644 index 0000000..0a441c3 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlattributes.cc @@ -0,0 +1,49 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlattributes.hh" + +XmlAttributes::XmlAttributes() +{ +} + +XmlAttributes::XmlAttributes(const QDomNamedNodeMap& node) +{ + load(node); +} + +void XmlAttributes::load(const QDomNamedNodeMap& node) +{ + QDomAttr attr; + + for(int i = 0; i < node.count(); i++) + { + attr = node.item(i).toAttr(); + + names_ << attr.name(); + values_ << attr.value(); + } +} + +QStringList XmlAttributes::names() const +{ + return names_; +} + +QStringList XmlAttributes::values() const +{ + return values_; +} diff --git a/scribo/demo/viewer/XmlWidget/xmlattributes.hh b/scribo/demo/viewer/XmlWidget/xmlattributes.hh new file mode 100644 index 0000000..89c546e --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlattributes.hh @@ -0,0 +1,44 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLATTRIBUTES_H +# define XMLATTRIBUTES_H + +#include <QDomNamedNodeMap> +#include <QStringList> +#include <QVariant> + +class XmlAttributes +{ + public: + explicit XmlAttributes(); + explicit XmlAttributes(const QDomNamedNodeMap& node); + + void load(const QDomNamedNodeMap& node); + + QStringList names() const; + QStringList values() const; + + private: + QStringList names_; + QStringList values_; +}; + + +Q_DECLARE_METATYPE(XmlAttributes) +Q_DECLARE_METATYPE(XmlAttributes *) + +#endif // XMLATTRIBUTES_H diff --git a/GScribo/XmlWidget/xmldelegate.h b/scribo/demo/viewer/XmlWidget/xmldelegate.hh similarity index 100% rename from GScribo/XmlWidget/xmldelegate.h rename to scribo/demo/viewer/XmlWidget/xmldelegate.hh diff --git a/scribo/demo/viewer/XmlWidget/xmlitem.cc b/scribo/demo/viewer/XmlWidget/xmlitem.cc new file mode 100644 index 0000000..c12c819 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlitem.cc @@ -0,0 +1,59 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlitem.hh" + +XmlItem::XmlItem(XmlItem *parent, XmlItem *precItem) +{ + init(parent, precItem); +} + +XmlItem::XmlItem(const QDomElement& node, XmlItem *parent, XmlItem *precItem) +{ + init(parent, precItem); + load(node); +} + +XmlItem::~XmlItem() +{ + // Delete all childs. + XmlItem *child; + foreach(child, childs_) + delete child; +} + +void XmlItem::init(XmlItem *parent, XmlItem *precItem) +{ + isVisible_ = false; + regionItem_ = 0; + parent_ = parent; + + if(parent) + parent->addChild(this); + + if(precItem) + row_ = precItem->row()+1; + else + row_ = 0; +} + +void XmlItem::load(const QDomElement& node) +{ + text_ = node.tagName(); + + // Load attributes. + attributes_.load(node.attributes()); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlitem.hh b/scribo/demo/viewer/XmlWidget/xmlitem.hh new file mode 100644 index 0000000..a964ea7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlitem.hh @@ -0,0 +1,106 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLITEM_H +#define XMLITEM_H + +#include <QDomElement> + +#include "xmlattributes.hh" + +class RegionItem; + +class XmlItem +{ + public: + explicit XmlItem(XmlItem *parent = 0, XmlItem *precItem = 0); + explicit XmlItem(const QDomElement& node, XmlItem *parent = 0, XmlItem *precItem = 0); + ~XmlItem(); + + void load(const QDomElement& node); + + inline QList<XmlItem *> childs() const; + inline XmlItem *child(int i) const; + inline void addChild(XmlItem *child); + inline XmlItem *parent() const; + + inline RegionItem *regionItem(); + inline void setRegionItem(RegionItem *regionItem); + + inline bool isVisible() const; + inline void setVisible(bool visible); + inline void show(); + inline void hide(); + + inline QString text() const; + inline int row() const; + inline XmlAttributes attributes() const; + + private: + void init(XmlItem *parent = 0, XmlItem *precItem = 0); + + int row_; + bool isVisible_; + QList<XmlItem *> childs_; + XmlItem *parent_; + RegionItem *regionItem_; + QString text_; + XmlAttributes attributes_; +}; + +inline QList<XmlItem *> XmlItem::childs() const +{ return childs_; } + +inline XmlItem *XmlItem::child(int i) const +{ if(i > -1 && i < childs_.count()) return childs_[i]; return 0; } + +inline void XmlItem::addChild(XmlItem *child) +{ childs_ << child; } + +inline XmlItem *XmlItem::parent() const +{ return parent_; } + +inline RegionItem *XmlItem::regionItem() +{ return regionItem_; } + +inline void XmlItem::setRegionItem(RegionItem *regionItem) +{ regionItem_ = regionItem; } + +inline bool XmlItem::isVisible() const +{ return isVisible_; } + +inline void XmlItem::setVisible(bool visible) +{ isVisible_ = visible; } + +inline void XmlItem::show() +{ isVisible_ = true; } + +inline void XmlItem::hide() +{ isVisible_ = false; } + +inline QString XmlItem::text() const +{ return text_; } + +inline int XmlItem::row() const +{ return row_; } + +inline XmlAttributes XmlItem::attributes() const +{ return attributes_; } + +Q_DECLARE_METATYPE(XmlItem) +Q_DECLARE_METATYPE(XmlItem *) + +#endif // XMLITEM_H diff --git a/scribo/demo/viewer/XmlWidget/xmlmodel.cc b/scribo/demo/viewer/XmlWidget/xmlmodel.cc new file mode 100644 index 0000000..0f51eb7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlmodel.cc @@ -0,0 +1,123 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlmodel.hh" + +XmlModel::XmlModel(XmlItem *rootItem, QObject *parent) : + QAbstractItemModel(parent) +{ + rootItem_ = rootItem; +} + +XmlModel::XmlModel(XmlItem *rootItem, + QAbstractItemModelPrivate& dd, + QObject *parent) + : QAbstractItemModel(dd, parent) +{ + rootItem_ = rootItem; +} + +XmlModel::~XmlModel() +{ + if(rootItem_) + delete rootItem_; +} + +QVariant XmlModel::headerData(int, Qt::Orientation orientation, int role) const +{ + if(orientation == Qt::Horizontal && role == Qt::DisplayRole) + return tr("Tree"); + + return QVariant(); +} + +QVariant XmlModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + + switch(role) + { + case Qt::UserRole: + return static_cast<XmlItem *>(index.internalPointer())->text(); + + case Qt::UserRole+1: + return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())->attributes()); + + case Qt::UserRole+2: + return QVariant::fromValue(static_cast<XmlItem *>(index.internalPointer())); + + default: + return QVariant(); + } +} + +QModelIndex XmlModel::index(int row, int column, const QModelIndex& parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + + XmlItem *childItem = toXmlItem(parent)->child(row); + + // Create the model index from the child item. + if(childItem) + return createIndex(row, column, childItem); + else + return QModelIndex(); +} + +QModelIndex XmlModel::parent(const QModelIndex& child) const +{ + if(!child.isValid()) + return QModelIndex(); + + XmlItem *parentItem = static_cast<XmlItem *>(child.internalPointer())->parent(); + + if(!parentItem || parentItem == rootItem_) + return QModelIndex(); + + return createIndex(parentItem->row(), 0, parentItem); +} + +void XmlModel::load(XmlItem *rootItem) +{ + beginResetModel(); + + if(rootItem_) + delete rootItem_; + + rootItem_ = rootItem; + + endResetModel(); +} + + +inline XmlItem *XmlModel::toXmlItem(const QModelIndex& parent) const +{ + return !parent.isValid() ? rootItem_ : static_cast<XmlItem *>(parent.internalPointer()); +} + +inline int XmlModel::rowCount(const QModelIndex& parent) const +{ + if(rootItem_) + return toXmlItem(parent)->childs().count(); + return 0; +} + +inline int XmlModel::columnCount(const QModelIndex&) const +{ + return 1; +} diff --git a/scribo/demo/viewer/XmlWidget/xmlmodel.hh b/scribo/demo/viewer/XmlWidget/xmlmodel.hh new file mode 100644 index 0000000..a781ea7 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlmodel.hh @@ -0,0 +1,51 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLMODEL_H +#define XMLMODEL_H + +#include <QAbstractItemModel> + +#include "variantpointer.hh" +#include "xmlitem.hh" + +class XmlModel : + public QAbstractItemModel +{ + public: + explicit XmlModel(XmlItem *rootItem = 0, QObject *parent = 0); + explicit XmlModel(XmlItem *rootItem, QAbstractItemModelPrivate& dd, QObject *parent = 0); + ~XmlModel(); + + void load(XmlItem *rootItem); + + inline int rowCount(const QModelIndex& parent) const; + inline int columnCount(const QModelIndex& parent) const; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const; + + QVariant data(const QModelIndex& index, int role) const; + + QModelIndex index(int row, int column, const QModelIndex& parent) const; + QModelIndex parent(const QModelIndex& child) const; + + private: + inline XmlItem *toXmlItem(const QModelIndex& index) const; + + XmlItem *rootItem_; +}; + +#endif // XMLMODEL_H diff --git a/scribo/demo/viewer/XmlWidget/xmlview.cc b/scribo/demo/viewer/XmlWidget/xmlview.cc new file mode 100644 index 0000000..c943401 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlview.cc @@ -0,0 +1,104 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlview.hh" + +XmlView::XmlView(QWidget *parent) : + QTreeView(parent) +{ + proxy_.setFilterRole(Qt::UserRole); + proxy_.setDynamicSortFilter(true); + + setUniformRowHeights(true); + setItemDelegate(new XmlDelegate(Qt::UserRole)); + setSelectionMode(QAbstractItemView::ExtendedSelection); +} + +void XmlView::hideAll() +{ + proxy_.beginResetModel(); + + XmlItem *child; + foreach(child, displayedItems_) + child->hide(); + + displayedItems_.clear(); + emit resetProperty(); + + proxy_.endResetModel(); +} + +void XmlView::display(QList<XmlItem *> displayedItems, bool addToDisplayedList) +{ + proxy_.beginResetModel(); + + if(!addToDisplayedList) + hideAll(); + + XmlItem *child; + foreach(child, displayedItems) + { + child->show(); + displayedItems_ << child; + } + + proxy_.endResetModel(); + + expandAll(); +} + +QList<XmlItem *> XmlView::transform(const QModelIndexList& modelIndexList) const +{ + QList<XmlItem *> selectedItems; + QModelIndex index; + + foreach(index, modelIndexList) + selectedItems << index.data(Qt::UserRole+2).value<XmlItem *>(); + + return selectedItems; +} + +void XmlView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) +{ + QTreeView::selectionChanged(selected, deselected); + + if(selected.indexes() == selectedIndexes()) + emit resetSelection(); + + if(!selectedIndexes().isEmpty()) + { + QList<XmlItem *> xmlItems; + if(!selected.isEmpty()) + { + xmlItems = transform(selected.indexes()); + emit select(xmlItems); + } + else + { + xmlItems = transform(deselected.indexes()); + emit unselect(xmlItems); + } + + emit loadAttributes(xmlItems.last()->attributes()); + } + else + { + emit resetProperty(); + emit emptySelection(); + } + + emit newSelection(); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlview.hh b/scribo/demo/viewer/XmlWidget/xmlview.hh new file mode 100644 index 0000000..b9720dc --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlview.hh @@ -0,0 +1,95 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLVIEW_H +#define XMLVIEW_H + +#include <QGraphicsItem> +#include <QTreeView> + +#include "Rendering/regionitem.hh" +#include "selectionproxy.hh" +#include "xmldelegate.hh" +#include "xmlitem.hh" + +class XmlView : + public QTreeView +{ + Q_OBJECT + + public: + explicit XmlView(QWidget *parent = 0); + + inline QList<XmlItem *> displayedItems() const; + void hideAll(); + + inline QList<XmlItem *> selectedItems() const; + + inline void setModel(QAbstractItemModel *model); + + protected: + void selectionChanged(const QItemSelection& selected, const QItemSelection& deselected); + + private: + QList<XmlItem *> transform(const QModelIndexList& modelIndexList) const; + void display(QList<XmlItem *> displayedItems, bool addToDisplayedList); + + SelectionProxy proxy_; + QList<XmlItem *> displayedItems_; + + public slots: + inline void display(QList<XmlItem *> displayedItems); + inline void displayOnly(QList<XmlItem *> displayedItems); + + inline void displayAll(); + + inline void setFilterString(const QString& filterString); + + signals: + void loadAttributes(const XmlAttributes& xmlAttributes); + + void select(const QList<XmlItem *>& selectedItems); + void unselect(const QList<XmlItem *>& unselectedItems); + + void newSelection(); + void emptySelection(); + + void resetSelection(); + void resetProperty(); +}; + +inline QList<XmlItem *> XmlView::displayedItems() const +{ return displayedItems_; } + +inline void XmlView::display(QList<XmlItem *> displayedItems) +{ display(displayedItems, true); } + +inline void XmlView::displayOnly(QList<XmlItem *> displayedItems) +{ display(displayedItems, false); } + +inline void XmlView::displayAll() +{ hideAll(); proxy_.displayAll(); } + +inline QList<XmlItem *> XmlView::selectedItems() const +{ return transform(selectedIndexes()); } + +inline void XmlView::setFilterString(const QString& filterString) +{ proxy_.setFilterRegExp(QRegExp(filterString, Qt::CaseSensitive)); proxy_.invalidateFilter(); } + +inline void XmlView::setModel(QAbstractItemModel *model) +{ proxy_.setSourceModel(model); QTreeView::setModel(&proxy_); } + +#endif // XMLVIEW_H diff --git a/scribo/demo/viewer/XmlWidget/xmlwidget.cc b/scribo/demo/viewer/XmlWidget/xmlwidget.cc new file mode 100644 index 0000000..e6bfe2a --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlwidget.cc @@ -0,0 +1,66 @@ +// Copyright (C) 2013 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/
>. + +#include "xmlwidget.hh" + +XmlWidget::XmlWidget(QWidget *parent) : + QSplitter(Qt::Horizontal, parent) +{ + proxy_.setFilterRegExp(QRegExp("(?:Page|.Region|Line)", Qt::CaseSensitive)); + proxy_.setDynamicSortFilter(true); + proxy_.setFilterRole(Qt::UserRole); + proxy_.setSourceModel(&model_); + + view_.setModel(&proxy_); + + attributes_.setModel(&attributesModel_); + attributes_.setSelectionMode(QAbstractItemView::NoSelection); + attributes_.setItemDelegateForColumn(0, new XmlDelegate(Qt::UserRole)); + attributes_.setItemDelegateForColumn(1, new XmlDelegate(Qt::UserRole+1)); + + addWidget(&view_); + addWidget(&attributes_); + + connect(&view_, SIGNAL(resetProperty()), &attributesModel_, SLOT(reset())); + connect(&view_, SIGNAL(clicked(QModelIndex)), this, SLOT(loadAttributes(QModelIndex))); + connect(&view_, SIGNAL(loadAttributes(XmlAttributes)), &attributesModel_, SLOT(load(XmlAttributes))); +} + +void XmlWidget::changeView(XmlItem *rootItem) +{ + attributesModel_.reset(); + + model_.load(rootItem); + + view_.displayAll(); + view_.expandAll(); +} + + +XmlView * XmlWidget::view() +{ + return &view_; +} + +QTableView *XmlWidget::attributes() +{ + return &attributes_; +} + +void XmlWidget::loadAttributes(const QModelIndex& index) +{ + attributesModel_.load(index.data(Qt::UserRole+2).value<XmlItem *>()->attributes()); +} diff --git a/scribo/demo/viewer/XmlWidget/xmlwidget.hh b/scribo/demo/viewer/XmlWidget/xmlwidget.hh new file mode 100644 index 0000000..2662ae1 --- /dev/null +++ b/scribo/demo/viewer/XmlWidget/xmlwidget.hh @@ -0,0 +1,61 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XMLWIDGET_H +# define XMLWIDGET_H + +#include <QSortFilterProxyModel> +#include <QTableView> +#include <QTreeWidget> +#include <QSplitter> +#include <QDomElement> +#include <QWidget> + +#include "Rendering/scene.hh" +#include "selectionproxy.hh" +#include "attributesmodel.hh" +#include "variantpointer.hh" +#include "xmldelegate.hh" +#include "xmlmodel.hh" +#include "xmlview.hh" + +class XmlWidget : + public QSplitter +{ + Q_OBJECT + + public: + explicit XmlWidget(QWidget *parent = 0); + + XmlView *view(); + QTableView *attributes(); + + void changeView(XmlItem *rootItem); + + private: + QSortFilterProxyModel proxy_; + + XmlModel model_; + AttributesModel attributesModel_; + + XmlView view_; + QTableView attributes_; + + private slots: + void loadAttributes(const QModelIndex& index); +}; + +#endif // XMLWIDGET_H diff --git a/scribo/demo/viewer/aboutdialog.cc b/scribo/demo/viewer/aboutdialog.cc new file mode 100644 index 0000000..c668d23 --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.cc @@ -0,0 +1,31 @@ +// Copyright (C) 2013 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/
>. + +#include <aboutdialog.hh> + + +AboutDialog::AboutDialog(QWidget *parent) + : QDialog(parent, Qt::Dialog) +{ + ui = new Ui::AboutDialog; + ui->setupUi(this); +} + +AboutDialog::~AboutDialog() +{ + delete ui; +} + diff --git a/scribo/demo/viewer/aboutdialog.hh b/scribo/demo/viewer/aboutdialog.hh new file mode 100644 index 0000000..359489d --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.hh @@ -0,0 +1,40 @@ +// Copyright (C) 2013 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/
>. + +#ifndef ABOUTDIALOG_HH +# define ABOUTDIALOG_HH + +#include <QDialog> + +#include "aboutdialog.ui.h" + +namespace Ui +{ + class AboutDialog; +} + +class AboutDialog : + public QDialog +{ +public: + explicit AboutDialog(QWidget *parent = 0); + ~AboutDialog(); + +private: + Ui::AboutDialog *ui; +}; + +#endif // ABOUTDIALOG_HH diff --git a/scribo/demo/viewer/aboutdialog.ui b/scribo/demo/viewer/aboutdialog.ui new file mode 100644 index 0000000..87bed94 --- /dev/null +++ b/scribo/demo/viewer/aboutdialog.ui @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>AboutDialog</class> + <widget class="QDialog" name="AboutDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>557</width> + <height>390</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>557</width> + <height>390</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>557</width> + <height>390</height> + </size> + </property> + <property name="windowTitle"> + <string>About</string> + </property> + <property name="windowIcon"> + <iconset> + <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap>:/icons/shared/icons/olena_smaller.jpg</pixmap> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="1"> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:12pt; font-weight:600;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">This project is powered by </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Milena</span><span style=" font-family:'DejaVu Sans';">, a generic image processing library.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans';">It is part of </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Olena</span><span style=" font-family:'DejaVu Sans';">, an Image Processing Platform and its module </span><span style=" font-family:'DejaVu Sans'; font-weight:600; font-style:italic;">Scribo</span><span style=" font-family:'DejaVu Sans';">, a set of tools for Document Image Analysis.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" font-family:'DejaVu Sans'; text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans';"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:8pt;">Thanks to Antoine Froger, Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, Jérôme Galtier, Florent d'Halluin, Alex Hamelin, Damien Lefortier, Vincent Ordy, Guillaume Sadegh and Warren Seine for their contribution.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> +<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'DejaVu Sans'; font-size:7pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:7pt;">Copyright (C) 2012, 2013 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Ok</set> + </property> + <property name="centerButtons"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>AboutDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>281</x> + <y>391</y> + </hint> + <hint type="destinationlabel"> + <x>240</x> + <y>203</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc deleted file mode 100644 index 17e1c61..0000000 --- a/scribo/demo/viewer/browser_widget.cc +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "browser_widget.hh" - -BrowserWidget::BrowserWidget(QDirModel* files, QString dir) - : files_(files), - view_(new QListView()), - path_(new QLineEdit("")), - first_time_(true) -{ - QToolButton* next= new QToolButton(); - QToolButton* prev= new QToolButton(); - - prev->setIcon(style()->standardIcon(QStyle::SP_ArrowLeft)); - next->setIcon(style()->standardIcon(QStyle::SP_ArrowRight)); - next->setShortcut(QKeySequence("Ctrl+right")); - prev->setShortcut(QKeySequence("Ctrl+left")); - - QLabel* title = new QLabel(tr("Images")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - QHBoxLayout *hlayout = new QHBoxLayout; - - hlayout->addWidget(prev); - hlayout->addWidget(title); - hlayout->addWidget(next); - layout->addLayout(hlayout); - layout->addWidget(path_); - layout->addWidget(view_); - - //setLayout(hlayout); - setLayout(layout); - - view_->setModel(files); - files->setFilter(QDir::AllDirs | QDir::Files - | QDir::Readable | QDir::Drives); - - view_->setRootIndex(files->index(QDir::currentPath())); - - QDir d(dir); - if (d.isReadable()) - view_->setRootIndex(files->index(d.absolutePath())); - - view_->setRowHidden(0, true); - - path_->setText(files->filePath(view_->rootIndex())); - - connect(view_, SIGNAL(activated(const QModelIndex&)), - this, SLOT(activate(const QModelIndex&))); - connect(next, SIGNAL(released ()), - this, SLOT(next())); - connect(prev, SIGNAL(released ()), - this, SLOT(prev())); - connect(path_, SIGNAL(returnPressed()), - this, SLOT(path_return_pressed())); - - QStringList files_filters; - files_filters << "*.png" << "*.jpg" - << "*.tif" << "*.ppm" - << "*.pgm" << "*.pbm" - << "*.pnm" << "*.xmlc"; - - files->setNameFilters(files_filters); -} - -void -BrowserWidget::path_return_pressed() -{ - QString path = path_->text(); - QDir d(path); - - if (d.isReadable()) - activate(files_->index(QString(path)), false); -} - -void -BrowserWidget::activate(const QModelIndex& index, bool b) -{ - if (files_->isDir(index)) - { - view_->setRootIndex(index); - view_->setRowHidden(0, true); - path_->setText(files_->filePath(view_->rootIndex())); - first_time_ = true; - return; - } - - first_time_ = false; - - if (files_->filePath(index).endsWith(".xmlc")) - emit activated(files_->filePath(index), b, true); - else - emit activated(files_->filePath(index), b, false); -} - -void -BrowserWidget::change_pos(bool next) -{ - QModelIndex index = view_->currentIndex(); - - if(next) - index = files_->index(index.row() + 1, index.column(), index.parent()); - else - index = files_->index(index.row() - 1, index.column(), index.parent()); - - if (index.isValid()) - { - if (!files_->isDir(index)) - if (!first_time_) - activate(index, true); - view_->setCurrentIndex(index); - } -} - -BrowserWidget::~BrowserWidget() -{ -} - -QString -BrowserWidget::current() const -{ - return files_->filePath(view_->currentIndex()); -} diff --git a/scribo/demo/viewer/browser_widget.hh b/scribo/demo/viewer/browser_widget.hh deleted file mode 100644 index 9567c11..0000000 --- a/scribo/demo/viewer/browser_widget.hh +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH - -# include <QtGui> - -class BrowserWidget - : public QWidget -{ - Q_OBJECT - -public: - BrowserWidget(QDirModel* files, QString dir = QString()); - ~BrowserWidget(); - - QString current() const; - -public slots: - void activate(const QModelIndex& index, bool b = false); - void path_return_pressed(); - void next() { change_pos(true); } - void prev() { change_pos(false); } - -signals: - void activated(QString filename, bool b, bool x); - -private: - void change_pos(bool next); - QDirModel* files_; - QListView* view_; - QLineEdit* path_; - bool first_time_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_BROWSER_WIDGET_HH diff --git a/scribo/demo/viewer/common.hh b/scribo/demo/viewer/common.hh deleted file mode 100644 index 0072376..0000000 --- a/scribo/demo/viewer/common.hh +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_COMMON_HH -# define SCRIBO_DEMO_VIEWER_COMMON_HH - -namespace region -{ - typedef QVector<QPair<QString, QColor> > KeyMap; - - enum RegionId - { - // Text regions - // ------------- - - Text = 0, - - // Extension - Line, - - EndOfTextRegion, - - // Separators - // ---------- - - HorizontalSeparator, - VerticalSeparator, - - // Extension - WhitespaceSeparator, - - EndOfSepsRegion, - - // Misc regions. - // ------------- - Image, - Noise, - Table, - LineDrawing, - Graphic, - Chart, - Maths, - - EndOfMiscRegion, - - // Typographical lines - // ------------------- - - // Extension - Baseline, - Meanline, - - EndOfTypoRegion, - - RegionIdCount - }; -} - -#endif // ! SCRIBO_DEMO_VIEWER_COMMON_HH diff --git a/scribo/demo/viewer/config.cc b/scribo/demo/viewer/config.cc deleted file mode 100644 index 6bdcd35..0000000 --- a/scribo/demo/viewer/config.cc +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include <QDir> - -#include "config.hh" -#include "defs.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - - -config::config() - : QSettings("Olena-Scribo", "viewer") -{ - -} - -config* config::get_instance() -{ - static config * conf = new config(); - return conf; -} - - -// Preprocessing - -bool config::preprocessing_subsample() -{ - return value("preprocessing/subsample", false).toBool(); -} - -void config::set_preprocessing_subsample(bool b) -{ - setValue("preprocessing/subsample", b); -} - - -bool config::preprocessing_remove_bg() -{ - return value("preprocessing/remove_bg", false).toBool(); -} - -void config::set_preprocessing_remove_bg(bool b) -{ - setValue("preprocessing/remove_bg", b); -} - - -bool config::preprocessing_deskew() -{ - return value("preprocessing/deskew", false).toBool(); -} - -void config::set_preprocessing_deskew(bool b) -{ - setValue("preprocessing/deskew", b); -} - - -bool config::preprocessing_remove_noise() -{ - return value("preprocessing/remove_noise", true).toBool(); -} - -void config::set_preprocessing_remove_noise(bool b) -{ - setValue("preprocessing/remove_noise", b); -} - - -int config::preprocessing_bin_algo() -{ - return value("preprocessing/bin_algo", - scribo::toolchain::internal::SauvolaMs).toInt(); -} - -void config::set_preprocessing_bin_algo(int algo) -{ - setValue("preprocessing/bin_algo", algo); -} - - - -// Segmentation - -int config::segmentation_find_seps() -{ - return value("segmentation/find_seps", defs::LinesAndWhitespaces).toInt(); -} - -void config::set_segmentation_find_seps(int seps) -{ - setValue("segmentation/find_seps", seps); -} - - -// OCR - -bool config::ocr_enabled() -{ - return value("ocr/enabled", true).toBool(); -} - -void config::set_ocr_enabled(bool b) -{ - setValue("ocr/enabled", b); -} - - - -QString config::ocr_language() -{ - return value("ocr/language", 0).toString(); -} - -void config::set_ocr_language(const QString& lang) -{ - setValue("ocr/language", lang); -} - - - -// General options - -bool config::general_save_xml_enabled() -{ - return value("general/save_xml/enabled", true).toBool(); -} - -void config::set_general_save_xml_enabled(bool b) -{ - setValue("general/save_xml/enabled", b); -} - - -bool config::general_save_xml_same_dir() -{ - return value("general/save_xml/same_dir", true).toBool(); -} - -void config::set_general_save_xml_same_dir(bool b) -{ - setValue("general/save_xml/same_dir", b); -} - - -bool config::general_save_xml_custom_dir() -{ - return value("general/save_xml/custom_dir", false).toBool(); -} - -void config::set_general_save_xml_custom_dir(bool b) -{ - setValue("general/save_xml/custom_dir", b); -} - - -QString config::general_save_xml_custom_dir_path() -{ - return value("general/save_xml/custom_dir_path", QDir::tempPath()).toString(); -} - -void config::set_general_save_xml_custom_dir_path(const QString& path) -{ - setValue("general/save_xml/custom_dir_path", path); -} - diff --git a/scribo/demo/viewer/config.hh b/scribo/demo/viewer/config.hh deleted file mode 100644 index 74dab3b..0000000 --- a/scribo/demo/viewer/config.hh +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_CONFIG_HH -# define SCRIBO_DEMO_VIEWER_CONFIG_HH - -# include <QSettings> - -class config : public QSettings -{ -public: - - config(); - - static config* get_instance(); - - // Preprocessing - bool preprocessing_subsample(); - void set_preprocessing_subsample(bool b); - - bool preprocessing_remove_bg(); - void set_preprocessing_remove_bg(bool b); - - bool preprocessing_deskew(); - void set_preprocessing_deskew(bool b); - - bool preprocessing_remove_noise(); - void set_preprocessing_remove_noise(bool b); - - int preprocessing_bin_algo(); - void set_preprocessing_bin_algo(int algo); - - - // Segmentation - int segmentation_find_seps(); - void set_segmentation_find_seps(int seps); - - - // OCR - bool ocr_enabled(); - void set_ocr_enabled(bool b); - - QString ocr_language(); - void set_ocr_language(const QString& lang); - - - // General options - bool general_save_xml_enabled(); - void set_general_save_xml_enabled(bool b); - - bool general_save_xml_same_dir(); - void set_general_save_xml_same_dir(bool b); - - bool general_save_xml_custom_dir(); - void set_general_save_xml_custom_dir(bool b); - - QString general_save_xml_custom_dir_path(); - void set_general_save_xml_custom_dir_path(const QString& path); - - -}; - - -#endif // ! SCRIBO_DEMO_VIEWER_CONFIG_HH diff --git a/scribo/demo/viewer/configs.cc b/scribo/demo/viewer/configs.cc new file mode 100644 index 0000000..f832b5a --- /dev/null +++ b/scribo/demo/viewer/configs.cc @@ -0,0 +1,149 @@ +// Copyright (C) 2013 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/
>. + +#include "configs.hh" + +Configs::Configs() + : QSettings("olena-scribo", "gui") +{ +} + +Configs *Configs::getInstance() +{ + static Configs *conf = new Configs(); return conf; +} + +bool Configs::preprocessingSubsample() +{ + return value("preprocessing/subsample", false).toBool(); +} + +void Configs::setPreprocessingSubsample(bool b) +{ + setValue("preprocessing/subsample", b); +} + +bool Configs::preprocessingRemoveBg() +{ + return value("preprocessing/remove_bg", false).toBool(); +} + +void Configs::setPreprocessingRemoveBg(bool b) +{ + setValue("preprocessing/remove_bg", b); +} + +bool Configs::preprocessingDeskew() +{ + return value("preprocessing/deskew", false).toBool(); +} + +void Configs::setPreprocessingDeskew(bool b) +{ + setValue("preprocessing/deskew", b); +} + +bool Configs::preprocessingRemoveNoise() +{ + return value("preprocessing/remove_noise", true).toBool(); +} + +void Configs::setPreprocessingRemoveNoise(bool b) +{ + setValue("preprocessing/remove_noise", b); +} + +int Configs::preprocessingBinAlgo() +{ + return value("preprocessing/bin_algo", + scribo::toolchain::internal::SauvolaMs).toInt(); +} + +void Configs::setPreprocessingBinAlgo(int algo) +{ + setValue("preprocessing/bin_algo", algo); +} + +int Configs::segmentationFindSeps() +{ + return value("segmentation/find_seps", Separator::Both).toInt(); +} + +void Configs::setSegmentationFindSeps(int seps) +{ + setValue("segmentation/find_seps", seps); +} + +bool Configs::ocrEnabled() +{ + return value("ocr/enabled", true).toBool(); +} + +void Configs::setOcrEnabled(bool b) +{ + setValue("ocr/enabled", b); +} + +QString Configs::ocrLanguage() +{ + return value("ocr/language", 0).toString(); +} + +void Configs::setOcrLanguage(const QString& lang) +{ + setValue("ocr/language", lang); +} + +bool Configs::generalSaveXmlEnabled() +{ + return value("general/save_xml/enabled", true).toBool(); +} + +void Configs::setGeneralSaveXmlEnabled(bool b) +{ + setValue("general/save_xml/enabled", b); +} + +bool Configs::generalSaveXmlSameDir() +{ + return value("general/save_xml/same_dir", true).toBool(); +} + +void Configs::setGeneralSaveXmlSameDir(bool b) +{ + setValue("general/save_xml/same_dir", b); +} + +bool Configs::generalSaveXmlCustomDir() +{ + return value("general/save_xml/custom_dir", false).toBool(); +} + +void Configs::setGeneralSaveXmlCustomDir(bool b) +{ + setValue("general/save_xml/custom_dir", b); +} + +QString Configs::generalSaveXmlCustomDirPath() +{ + return value("general/save_xml/custom_dir_path", + QDir::tempPath()).toString(); +} + +void Configs::setGeneralSaveXmlCustomDirPath(const QString& path) +{ + setValue("general/save_xml/custom_dir_path", path); +} diff --git a/scribo/demo/viewer/configs.hh b/scribo/demo/viewer/configs.hh new file mode 100644 index 0000000..26de148 --- /dev/null +++ b/scribo/demo/viewer/configs.hh @@ -0,0 +1,74 @@ +// Copyright (C) 2013 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/
>. + +#ifndef CONFIGS_H +# define CONFIGS_H + +#include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> +#include <QSettings> +#include <QDir> +#include <QDebug> + +#include "region.hh" + +class Configs : + public QSettings +{ +public: + static Configs *getInstance(); + + bool preprocessingSubsample(); + void setPreprocessingSubsample(bool b); + + bool preprocessingRemoveBg(); + void setPreprocessingRemoveBg(bool b); + + bool preprocessingDeskew(); + void setPreprocessingDeskew(bool b); + + bool preprocessingRemoveNoise(); + void setPreprocessingRemoveNoise(bool b); + + int preprocessingBinAlgo(); + void setPreprocessingBinAlgo(int algo); + + int segmentationFindSeps(); + void setSegmentationFindSeps(int seps); + + bool ocrEnabled(); + void setOcrEnabled(bool b); + + QString ocrLanguage(); + void setOcrLanguage(const QString& lang); + + bool generalSaveXmlEnabled(); + void setGeneralSaveXmlEnabled(bool b); + + bool generalSaveXmlSameDir(); + void setGeneralSaveXmlSameDir(bool b); + + bool generalSaveXmlCustomDir(); + void setGeneralSaveXmlCustomDir(bool b); + + QString generalSaveXmlCustomDirPath(); + void setGeneralSaveXmlCustomDirPath(const QString& path); + +private: + explicit Configs(); +}; + + +#endif // CONFIGS_H diff --git a/scribo/demo/viewer/defs.hh b/scribo/demo/viewer/defs.hh deleted file mode 100644 index ada4441..0000000 --- a/scribo/demo/viewer/defs.hh +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_DEFS_HH -# define SCRIBO_DEMO_VIEWER_DEFS_HH - -namespace defs -{ - enum FindSeparators - { - Lines, - Whitespaces, - LinesAndWhitespaces - }; - -} // end of namespace defs - -#endif // ! SCRIBO_DEMO_VIEWER_DEFS_HH diff --git a/GScribo/dir.h b/scribo/demo/viewer/dir.hh similarity index 100% rename from GScribo/dir.h rename to scribo/demo/viewer/dir.hh diff --git a/scribo/demo/viewer/dockwidget.cc b/scribo/demo/viewer/dockwidget.cc new file mode 100644 index 0000000..fc895b0 --- /dev/null +++ b/scribo/demo/viewer/dockwidget.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2013 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/
>. + +#include "dockwidget.hh" + +DockWidget::DockWidget(QWidget *parent, Qt::WindowFlags flags) + : QDockWidget(parent, flags) +{ +} + + +DockWidget::DockWidget(const QString& title, + QWidget *parent, Qt::WindowFlags flags) + : QDockWidget(title, parent, flags) +{ +} + +void DockWidget::switchVisibility() +{ + setVisible(!isVisible()); +} diff --git a/scribo/demo/viewer/dockwidget.hh b/scribo/demo/viewer/dockwidget.hh new file mode 100644 index 0000000..e6fb483 --- /dev/null +++ b/scribo/demo/viewer/dockwidget.hh @@ -0,0 +1,36 @@ +// Copyright (C) 2013 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/
>. + +#ifndef DOCKWIDGET_H +# define DOCKWIDGET_H + +#include <QDockWidget> + +class DockWidget : + public QDockWidget +{ + Q_OBJECT + + public: + explicit DockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0); + explicit DockWidget(const QString& title, + QWidget *parent = 0, Qt::WindowFlags flags = 0); + +public slots: + void switchVisibility(); +}; + +#endif // DOCKWIDGET_H diff --git a/scribo/demo/viewer/general_options.cc b/scribo/demo/viewer/general_options.cc deleted file mode 100644 index 50201ff..0000000 --- a/scribo/demo/viewer/general_options.cc +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "general_options.hh" -#include "config.hh" - - -general_options::general_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - load_config(); -} - -general_options::~general_options() -{ -} - - -void general_options::load_config() -{ - config * const conf = config::get_instance(); - - saveXml->setChecked(conf->general_save_xml_enabled()); - sameDir->setChecked(conf->general_save_xml_same_dir()); - customDir->setChecked(conf->general_save_xml_custom_dir()); - customDirValue->setText(conf->general_save_xml_custom_dir_path()); -} - - -void general_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_general_save_xml_enabled(saveXml->isChecked()); - conf->set_general_save_xml_same_dir(sameDir->isChecked()); - conf->set_general_save_xml_custom_dir(customDir->isChecked()); - conf->set_general_save_xml_custom_dir_path(customDirValue->text()); -} - -void general_options::on_customDirBrowseBtn_clicked() -{ - QString dir = QFileDialog::getExistingDirectory(0, "Choose a directory"); - if (!dir.isEmpty()) - customDirValue->setText(dir); -} diff --git a/scribo/demo/viewer/general_options.hh b/scribo/demo/viewer/general_options.hh deleted file mode 100644 index e2fcaae..0000000 --- a/scribo/demo/viewer/general_options.hh +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH - -# include <QtGui> -# include <general_options.ui.h> -# include "option_widget.hh" - -class general_options : public OptionWidget, private Ui::GeneralOptions -{ - Q_OBJECT; - -public: - general_options(QWidget *parent = 0); - ~general_options(); - - virtual void load_config(); - virtual void save_config(); - -private slots: - void on_customDirBrowseBtn_clicked(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_GENERAL_OPTIONS_HH diff --git a/scribo/demo/viewer/general_options.ui b/scribo/demo/viewer/general_options.ui deleted file mode 100644 index 5839c27..0000000 --- a/scribo/demo/viewer/general_options.ui +++ /dev/null @@ -1,100 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>GeneralOptions</class> - <widget class="QWidget" name="GeneralOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QGroupBox" name="saveXml"> - <property name="title"> - <string>Save segmentation results</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QRadioButton" name="sameDir"> - <property name="text"> - <string>In the same directory as the input image</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QRadioButton" name="customDir"> - <property name="text"> - <string>In the following directory</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Maximum</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLineEdit" name="customDirValue"/> - </item> - <item> - <widget class="QPushButton" name="customDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/help_dialog.cc b/scribo/demo/viewer/help_dialog.cc deleted file mode 100644 index 2d5ce6c..0000000 --- a/scribo/demo/viewer/help_dialog.cc +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "help_dialog.hh" - -HelpDialog::HelpDialog() -{ - setupUi(this); -} diff --git a/scribo/demo/viewer/help_dialog.hh b/scribo/demo/viewer/help_dialog.hh deleted file mode 100644 index 9f179c6..0000000 --- a/scribo/demo/viewer/help_dialog.hh +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH -# define SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH - -# include <QtGui> -# include <help_dialog.ui.h> - -class HelpDialog : public QDialog, private Ui::HelpDialog -{ -public: - HelpDialog(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_HELP_DIALOG_HH diff --git a/scribo/demo/viewer/help_dialog.ui b/scribo/demo/viewer/help_dialog.ui deleted file mode 100644 index 9ab7e58..0000000 --- a/scribo/demo/viewer/help_dialog.ui +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>HelpDialog</class> - <widget class="QDialog" name="HelpDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>557</width> - <height>390</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>557</width> - <height>390</height> - </size> - </property> - <property name="windowTitle"> - <string>About</string> - </property> - <property name="windowIcon"> - <iconset resource="viewer.qrc"> - <normaloff>:/icons/shared/icons/olena_smaller.jpg</normaloff>:/icons/shared/icons/olena_smaller.jpg</iconset> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="viewer.qrc">:/icons/shared/icons/olena_smaller.jpg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Document Image Analysis Tool</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This project is powered by <span style=" font-weight:600; font-style:italic;">Milena</span>, a generic image processing library.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">It is part of <span style=" font-weight:600; font-style:italic;">Olena</span>, an Image Processing Platform and its module <span style=" font-weight:600; font-style:italic;">Scribo</span>, a set of tools for Document Image Analysis.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://olena.lrde.epita.fr"><span style=" text-decoration: underline; color:#0057ae;">http://olena.lrde.epita.fr</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Thanks to Arthur Crépin-Leblond, Samuel Da Mota, Loic Denuziere, </span><span style=" font-size:8pt;">Jérôme Galtier,</span><span style=" font-size:8pt;"> </span><span style=" font-size:8pt;">Florent d'Halluin, </span><span style=" font-size:8pt;">Alex Hamelin, </span><span style=" font-size:8pt;">Damien Lefortier, </span><span style=" font-size:8pt;">Vincent Ordy, </span><span style=" font-size:8pt;">Guillaume Sadegh and</span><span style=" font-size:8pt;"> </span><span style=" font-size:8pt;">Warren Seine </span><span style=" font-size:8pt;">for their contribution.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:7pt;">This application has been developed in the context of the SCRIBO project of the Free Software Thematic Group, part of the &quot;System@tic Paris-Région&quot; Cluster (France). This project is partially funded by the French Government, its economic development agencies, and by the Paris-Région institutions.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:7pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:7pt;">Copyright (C) 2010, 2011 EPITA Research and Development Laboratory (LRDE)</span></p></body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Ok</set> - </property> - <property name="centerButtons"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources> - <include location="viewer.qrc"/> - </resources> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>HelpDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>281</x> - <y>391</y> - </hint> - <hint type="destinationlabel"> - <x>240</x> - <y>203</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/scribo/demo/viewer/icons/olena_smaller.jpg b/scribo/demo/viewer/icons/olena_smaller.jpg deleted file mode 100644 index c6b9110..0000000 Binary files a/scribo/demo/viewer/icons/olena_smaller.jpg and /dev/null differ diff --git a/scribo/demo/viewer/image_region.cc b/scribo/demo/viewer/image_region.cc deleted file mode 100644 index 93d9d79..0000000 --- a/scribo/demo/viewer/image_region.cc +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "image_region.hh" - -ImageRegion::ImageRegion(region::RegionId id, - QString name, - QColor color, - QString attr_id, - const QVector<QPoint>& points, - bool outline, - bool fill, - bool precise, - bool draw) - : QGraphicsItem(0), - id_(id), - name_(name), - color_(color), - attr_id_(attr_id), - shape_(), - rect_(), - outline_(outline), - precise_(precise), - fill_(fill), - draw_(draw), - selected_(false), - alpha_(50) -{ - setCursor(Qt::ArrowCursor); - if (id_ == region::Line) - setZValue(3); - else - setZValue(1); - - if (points.size() == 0) - return; - - for (int i = 1; i < points.size(); ++i) - shape_.lineTo(points[i] - points[0]); - shape_.lineTo(QPoint(0, 0)); - - rect_ = shape_.boundingRect(); - setPos(points[0] + QPointF(0.5, 0.5)); - - prepareGeometryChange(); -} - -ImageRegion::~ImageRegion() -{ -} - -region::RegionId ImageRegion::id() -{ - return id_; -} - -void -ImageRegion::paint(QPainter* painter, - const QStyleOptionGraphicsItem*, - QWidget*) -{ - if (!draw_ && !selected_) - return; - - int width = 0; - if (precise_) - width = 1; - - if (outline_) - painter->setPen(QPen(QBrush(color_), width, Qt::SolidLine, - Qt::SquareCap, Qt::MiterJoin)); - else - painter->setPen(QColor(0, 0, 0, 0)); - - QColor brush = color_; - if (fill_) - brush.setAlpha(alpha_); - else - brush.setAlpha(0); - painter->setBrush(brush); - - painter->drawPath(shape_); - - if (selected_) - { - QPolygonF sceneRect = mapFromScene(scene()->sceneRect()); - QPainterPath path; - path.addPolygon(sceneRect); - QColor brush(255, 255, 255); - brush.setAlpha(120); - painter->setBrush(brush); - painter->setPen(QColor(0, 0, 0, 0)); - painter->drawPath(path.subtracted(shape_)); - } -} - -void -ImageRegion::select() -{ - if (!selected_) - { - selected_ = true; - setZValue(4); - prepareGeometryChange(); - scene()->invalidate(); - update(); - } -} - -void -ImageRegion::deselect() -{ - if (selected_) - { - selected_ = false; - if (id_ == region::Line) - setZValue(3); - else - setZValue(1); - prepareGeometryChange(); - scene()->invalidate(); - update(); - } -} diff --git a/scribo/demo/viewer/image_region.hh b/scribo/demo/viewer/image_region.hh deleted file mode 100644 index 41141f7..0000000 --- a/scribo/demo/viewer/image_region.hh +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH - -# include <QtGui> -# include "common.hh" - -class ImageRegion - : public QObject, public QGraphicsItem -{ - Q_OBJECT - -public: - ImageRegion(region::RegionId id, - QString name, - QColor color, - QString attr_id, - const QVector<QPoint>& points, - bool outline, - bool fill, - bool precise, - bool draw); - - ~ImageRegion(); - - region::RegionId id(); - void paint(QPainter* painter, - const QStyleOptionGraphicsItem* option, - QWidget* widget = 0); - - QRectF boundingRect() const; - QPainterPath shape() const; - QString name() { return name_; } - QRectF rect() { return rect_; } - QString attr_id() { return attr_id_; } - -public slots: - void setOutline(bool outline); - void setFill(bool fill); - void setFillAlpha(int alpha); - void setDraw(bool draw); - void setPrecise(bool precise); - void setDrawIfSameId(int id, bool draw); - void select(); - void deselect(); - -private: - region::RegionId id_; - QString name_; - QColor color_; - QString attr_id_; - QPainterPath shape_; - QRectF rect_; - bool outline_; - bool precise_; - bool fill_; - bool draw_; - bool selected_; - int alpha_; -}; - -#include "image_region.hxx" - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_REGION_HH diff --git a/scribo/demo/viewer/image_region.hxx b/scribo/demo/viewer/image_region.hxx deleted file mode 100644 index 5ddd7de..0000000 --- a/scribo/demo/viewer/image_region.hxx +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (C) 2009, 2010 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. - -#ifndef IMAGE_REGION_HXX_ -# define IMAGE_REGION_HXX_ - -# include "image_region.hh" - -inline -void -ImageRegion::setOutline(bool outline) -{ - outline_ = outline; - scene()->invalidate(); - update(); -} - -inline -void -ImageRegion::setPrecise(bool precise) -{ - precise_ = precise; - scene()->invalidate(); - update(); -} - -inline -void -ImageRegion::setFill(bool fill) -{ - fill_ = fill; - update(); -} - -inline -void -ImageRegion::setDraw(bool draw) -{ - draw_ = draw; - update(); -} - -inline -void -ImageRegion::setDrawIfSameId(int id, bool draw) -{ - if (id == id_) - { - draw_ = draw; - setVisible(draw); - if (scene()) - { - scene()->invalidate(); - update(); - } - } -} - -inline -void -ImageRegion::setFillAlpha(int alpha) -{ - alpha_ = alpha; - update(); -} - -inline -QRectF -ImageRegion::boundingRect() const -{ -// if (selected_) -// return mapFromScene(scene()->sceneRect()).boundingRect(); - return rect_; -} - -inline -QPainterPath -ImageRegion::shape() const -{ - return shape_; -} - -#endif /* !IMAGE_REGION_HXX_ */ diff --git a/scribo/demo/viewer/image_scene.cc b/scribo/demo/viewer/image_scene.cc deleted file mode 100644 index a800896..0000000 --- a/scribo/demo/viewer/image_scene.cc +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - - -#include "image_scene.hh" -#include "image_region.hh" - -ImageScene::ImageScene(QObject *parent) - : QGraphicsScene(parent), selected_(0) -{ -} - -void -ImageScene::clear() -{ - selected_ = 0; - QGraphicsScene::clear(); -} - -void -ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event) -{ - QGraphicsScene::mousePressEvent(event); - QList<QGraphicsItem *> items_list = items(event->scenePos()); // includes both ImageRegions and the picture. - - if (items_list.isEmpty()) - { - if (selected_) - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - - // Selection is under the mouse click (at event->pos()). - bool selection_is_clicked = items_list.contains(selected_); - - foreach(QGraphicsItem* elt, items_list) - { - ImageRegion* item = dynamic_cast<ImageRegion*>(elt); - if (item) - { - if (item != selected_) - { - if (selected_) - { - if ( (item->boundingRect().intersects(selected_->boundingRect()))) - { - int item_area = item->boundingRect().size().height() * item->boundingRect().size().width(); - int selected_area = selected_->boundingRect().size().height() * selected_->boundingRect().size().width(); - - if (selected_area < item_area && selection_is_clicked) - return; - else - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - else - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - selected_ = item; - item->select(); - emit selected(item->attr_id(), item->name()); - return; - } - } - else - { - if ( (selected_) - && (items_list.size() == 1) )// no ImageRegion, only the picture - { - selected_->deselect(); - emit deselected(); - selected_ = 0; - } - } - } -} - -ImageScene::~ImageScene() -{ -} diff --git a/scribo/demo/viewer/image_scene.hh b/scribo/demo/viewer/image_scene.hh deleted file mode 100644 index b141478..0000000 --- a/scribo/demo/viewer/image_scene.hh +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH - -# include <QtGui> - -class ImageRegion; - -class ImageScene - : public QGraphicsScene -{ - Q_OBJECT - -public: - ImageScene(QObject *parent = 0); - ~ImageScene(); - - void mousePressEvent(QGraphicsSceneMouseEvent* event); - void clear(); - -signals: - void selected(QString, QString); - void deselected(); - -private: - ImageRegion* selected_; - QVector<ImageRegion*> region_vector_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_SCENE_HH diff --git a/scribo/demo/viewer/image_view.cc b/scribo/demo/viewer/image_view.cc deleted file mode 100644 index bb34eb7..0000000 --- a/scribo/demo/viewer/image_view.cc +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "image_view.hh" - -ImageView::ImageView(QGraphicsScene* scene) - : QGraphicsView(scene) -{ -} - -void -ImageView::wheelEvent(QWheelEvent* event) -{ - // Basic zoom code (same as yavgui) - if (event->delta() != 0) - { - qreal degrees = ((qreal) event->delta()) / 8; - qreal sc; - if (degrees > 0) - sc = 1 + degrees / 100; - else - sc = 1 / (1 - degrees / 100); - - QPointF center = mapToScene(width() / 2, height() / 2); - QPointF mouse = mapToScene(event->pos()); - - qreal dx = (mouse.x() - center.x()); - qreal dy = (mouse.y() - center.y()); - QPointF newCenter = QPointF (mouse.x() - dx / sc, - mouse.y() - dy / sc); - scale(sc, sc); - scaleUpdate(); - } -} - -void -ImageView::keyPressEvent(QKeyEvent* event) -{ - if (event->key() == Qt::Key_PageUp) - scale(1.25, 1.25); - else if (event->key() == Qt::Key_PageDown) - scale(0.75, 0.75); - else if (event->key() == Qt::Key_Home) - resetMatrix(); - else if (event->key() == Qt::Key_End) - fitInView(sceneRect(), Qt::KeepAspectRatio); - else - { - QGraphicsView::keyPressEvent(event); - return; - } - scaleUpdate(); - event->accept(); -} - -void -ImageView::scaleUpdate() -{ - // Used to determine whether to change the main image cache mode. - QRect orig(0, 0, 10, 1); - QRectF scene = mapToScene(orig).boundingRect(); - emit scaleUpdated(10 / scene.width()); -} - -ImageView::~ImageView() -{ -} diff --git a/scribo/demo/viewer/image_view.hh b/scribo/demo/viewer/image_view.hh deleted file mode 100644 index 622999b..0000000 --- a/scribo/demo/viewer/image_view.hh +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH - -# include <QtGui> - -class ImageView - : public QGraphicsView -{ - Q_OBJECT - -public: - ImageView(QGraphicsScene* scene); - ~ImageView(); - - void wheelEvent(QWheelEvent* event); - void keyPressEvent(QKeyEvent *event); - - // Call after changing the scale. - void scaleUpdate(); - -signals: - // Scale is approximate. - void scaleUpdated(qreal scale); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_VIEW_HH diff --git a/scribo/demo/viewer/image_widget.cc b/scribo/demo/viewer/image_widget.cc deleted file mode 100644 index f86ff1d..0000000 --- a/scribo/demo/viewer/image_widget.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "image_widget.hh" -#include "image_view.hh" - -ImageWidget::ImageWidget(QGraphicsScene* scene) - : view_ (new ImageView(scene)) -{ - scene->setParent(view_); - - QLabel* title = new QLabel(tr("Layout")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(title); - layout->addWidget(view_); - - view_->setDragMode(QGraphicsView::ScrollHandDrag); - view_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view_->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); - - connect(view_, SIGNAL(scaleUpdated(qreal)), - this, SIGNAL(scaleUpdated(qreal))); - - setLayout(layout); -} - - -ImageWidget::~ImageWidget() -{ -} - - -void -ImageWidget::update() -{ - view_->fitInView(view_->sceneRect(), Qt::KeepAspectRatio); - view_->scaleUpdate(); -} - -ImageView * -ImageWidget::view() const -{ - return view_; -} diff --git a/scribo/demo/viewer/image_widget.hh b/scribo/demo/viewer/image_widget.hh deleted file mode 100644 index 79dd672..0000000 --- a/scribo/demo/viewer/image_widget.hh +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH - -# include <QtGui> -# include "image_view.hh" - -class ImageView; - -class ImageWidget - : public QWidget -{ - Q_OBJECT - -public: - ImageWidget(QGraphicsScene* scene); - ~ImageWidget(); - - ImageView * view() const; - -public slots: - void update(); - -signals: - void scaleUpdated(qreal scale); - -private: - ImageView* view_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_IMAGE_WIDGET_HH diff --git a/scribo/demo/viewer/key_widget.cc b/scribo/demo/viewer/key_widget.cc deleted file mode 100644 index 3b07617..0000000 --- a/scribo/demo/viewer/key_widget.cc +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "key_widget.hh" -#include "common.hh" - -KeyWidget::KeyWidget(const region::KeyMap& key_map) - : items_(new QTreeWidget()) -{ - item_list_.append(new QTreeWidgetItem(QStringList("Text"))); - item_list_.append(new QTreeWidgetItem(QStringList("Separators"))); - item_list_.append(new QTreeWidgetItem(QStringList("Misc. Regions"))); - item_list_.append(new QTreeWidgetItem(QStringList("Typographical lines"))); - - QLabel* title = new QLabel(tr("Key")); - title->setAlignment(Qt::AlignHCenter); - - foreach(QTreeWidgetItem* item, item_list_) - { - items_->addTopLevelItem(item); - item->setCheckState(0, Qt::Checked); - item->setExpanded(true); - } - items_->setHeaderHidden(true); - - base_id_.append(0); - base_id_.append(region::EndOfTextRegion + 1); - base_id_.append(region::EndOfSepsRegion + 1); - base_id_.append(region::EndOfMiscRegion + 1); - base_id_.append(region::EndOfTypoRegion + 1); - - for (int j = 0; j < base_id_.size() - 1; ++j) - for (int i = base_id_.at(j); i < base_id_.at(j + 1) - 1; ++i) - add_item_(key_map.at(i).first, key_map.at(i).second, false, item_list_.at(j)); - - QVBoxLayout* layout = new QVBoxLayout; - layout->addWidget(title); - layout->addWidget(items_); - - setLayout(layout); - - connect(items_, SIGNAL(itemChanged(QTreeWidgetItem*, int)), - this, SLOT(update(QTreeWidgetItem*))); -} - -void KeyWidget::update_all() -{ - foreach(QTreeWidgetItem* item, item_list_) - for (int i = 0; i < item->childCount(); ++i) - update(item->child(i)); -} - -void KeyWidget::setAll(bool b) -{ - Qt::CheckState state; - if (b) - state = Qt::Checked; - else - state = Qt::Unchecked; - - foreach(QTreeWidgetItem* item, item_list_) - item->setCheckState(0, state); -} - -void KeyWidget::setAllCheck(QTreeWidgetItem* parent) -{ - for (int i = 0; i < parent->childCount(); ++i) - { - if (parent->checkState(0) == Qt::Checked) - parent->child(i)->setCheckState(0, Qt::Checked); - else - parent->child(i)->setCheckState(0, Qt::Unchecked); - update(parent->child(i)); - } -} - -void -KeyWidget::change_mode(bool b) -{ - item_list_.at(0)->child(region::Line)->setHidden(!b); - // FIXME: we may like to hide also typographical objects. -} - -void -KeyWidget::add_item_(QString text, QColor color, bool b, QTreeWidgetItem* parent) -{ - QTreeWidgetItem* item = new QTreeWidgetItem(QStringList(text)); - QPixmap pixmap(10, 6); - - pixmap.fill(color); - item->setIcon(0, QIcon(pixmap)); - item->setCheckState(0, Qt::Checked); - parent->addChild(item); - item->setHidden(b); -} - -bool -KeyWidget::isChecked(region::RegionId id) -{ - QTreeWidgetItem* current_item = 0; - - foreach(QTreeWidgetItem* item, item_list_) - { - current_item = item->child(id); - if (item) - break; - else - current_item = 0; - } - - if (!current_item) - return false; - - return current_item->checkState(0) == Qt::Checked; -} - -void -KeyWidget::update(QTreeWidgetItem* item_up) -{ - int id = -1; - - foreach(QTreeWidgetItem* item, item_list_) - if (item_up == item) - { - setAllCheck(item); - return; - } - - - int i = 0; - foreach(QTreeWidgetItem* item, item_list_) - { - id = item->indexOfChild(item_up); - if (id != -1) - { - id += base_id_.at(i); - break; - } - ++i; - } - - emit updated(id, item_up->checkState(0) == Qt::Checked); -} - -KeyWidget::~KeyWidget() -{ -} - diff --git a/scribo/demo/viewer/key_widget.hh b/scribo/demo/viewer/key_widget.hh deleted file mode 100644 index 1a3518e..0000000 --- a/scribo/demo/viewer/key_widget.hh +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH - -# include <QtGui> -# include "common.hh" - -class KeyWidget - : public QWidget -{ - Q_OBJECT - -public: - KeyWidget(const region::KeyMap& key_map); - ~KeyWidget(); - - bool isChecked(region::RegionId id); - QTreeWidget* items() { return items_; }; - void update_all(); - -signals: - void updated(int key, bool checked); - -public slots: - void setAll(bool b); - -private slots: - void change_mode(bool b); - void update(QTreeWidgetItem* item); - void setAllCheck(QTreeWidgetItem* parent); - -private: - void add_item_(QString text, QColor color, bool b, QTreeWidgetItem* parent); - - QTreeWidget* items_; - QVector<QTreeWidgetItem*> item_list_; - QVector<int> base_id_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_KEY_WIDGET_HH diff --git a/scribo/demo/viewer/main.cc b/scribo/demo/viewer/main.cc index 0c50c7b..871cd4f 100644 --- a/scribo/demo/viewer/main.cc +++ b/scribo/demo/viewer/main.cc @@ -1,5 +1,4 @@ -// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory -// (LRDE) +// Copyright (C) 2013 EPITA Research and Development Laboratory (LRDE) // // This file is part of Olena. // @@ -15,35 +14,26 @@ // You should have received a copy of the GNU General Public License // along with Olena. If not, see <
http://www.gnu.org/licenses/
>. -#include <QtGui> -#include <iostream> - #undef MLN_WO_GLOBAL_VARS -#include "viewer.hh" + +#include <scribo/make/debug_filename.hh> #include <mln/labeling/colorize.hh> -#include <mln/math/pi.hh> #include <mln/io/magick/load.hh> -#include <scribo/make/debug_filename.hh> -#include <mln/debug/filename.hh> #include <mln/literal/colors.hh> +#include <mln/debug/filename.hh> +#include <QtGui/QApplication> +#include <mln/math/pi.hh> -int main(int argc, char** argv) -{ - if (argc > 2 || - (argc == 2 && - (QString(argv[1]) == "--help" || QString(argv[1]) == "-h"))) - { - std::cout << "Usage:" << std::endl - << argv[0] << " <image dir>" << std::endl; - return 0; - } - - Magick::InitializeMagick(*argv); - - Viewer* viewer = Viewer::Instance(argc, argv); - - if (!viewer) - return -1; +#include "mainwindow.hh" - return viewer->exec(); +int main(int argc, char *argv[]) +{ + Magick::InitializeMagick(*argv); + // On Linux, we NEED to use the raster graphics system. + // Linux don't really support openGL graphics system (the default one on Linux). + QApplication::setGraphicsSystem("raster"); + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); } diff --git a/scribo/demo/viewer/mainwindow.cc b/scribo/demo/viewer/mainwindow.cc new file mode 100644 index 0000000..97cda4e --- /dev/null +++ b/scribo/demo/viewer/mainwindow.cc @@ -0,0 +1,496 @@ +// Copyright (C) 2013 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/
>. + +#include "mainwindow.hh" +#include "mainwindow.ui.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + setWindowTitle(tr("GScribo")); + showMaximized(); + + initGraphicsRegion(); + initDialogsWidget(); + initXmlWidget(); + initRegionWidget(); + initPageWidget(); + initMenuBar(); + + // Told the left dock widget (here the pages widget and the region + // widget) to fill the bottom left corner. + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + // Merge the region and pages widget in one tab (pages widget over + // the region widget). + tabifyDockWidget(&dockRegion_, &dockPages_); + + connectWidgets(); +} + +MainWindow::~MainWindow() +{ + delete preferencesDialog_; + delete aboutDialog_; + delete progressDialog_; + delete ui; +} + +void MainWindow::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) + { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void MainWindow::initGraphicsRegion() +{ + graphicsView_.setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); + graphicsView_.setScene(&scene_); + + setCentralWidget(&graphicsView_); +} + +void MainWindow::initDialogsWidget() +{ + preferencesDialog_ = new PreferencesDialog(this); + aboutDialog_ = new AboutDialog(this); + progressDialog_ = new ProgressDialog(this); +} + +void MainWindow::initPageWidget() +{ + dockPages_.setWindowTitle("Pages"); + dockPages_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockPages_.setWidget(&pagesWidget_); + dockPages_.setMinimumWidth(190); + + addDockWidget(Qt::LeftDockWidgetArea, &dockPages_); +} + +void MainWindow::initRegionWidget() +{ + dockRegion_.setWindowTitle("Regions"); + dockRegion_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockRegion_.setWidget(®ionWidget_); + + addDockWidget(Qt::LeftDockWidgetArea, &dockRegion_); +} + +void MainWindow::initXmlWidget() +{ + dockXml_.setWindowTitle("Xml"); + dockXml_.setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); + dockXml_.setWidget(&xmlWidget_); + + addDockWidget(Qt::BottomDockWidgetArea, &dockXml_); + dockXml_.setVisible(false); +} + +void MainWindow::initMenuBar() +{ + QMenu *menuFile = ui->menuBar->addMenu(tr("File")); + + menuFile->addAction(tr("&Open"), this, SLOT(onOpen()), + QKeySequence(tr("Ctrl+O"))); + + segment_ = menuFile->addAction(tr("Segment"), this, SLOT(onSegment()), + QKeySequence(tr("Ctrl+S"))); + segment_->setEnabled(false); + + menuFile->addSeparator(); + + previewPrinting_ = menuFile->addAction(tr("Preview Printing"), + this, SLOT(onPreviewPrint()), + QKeySequence(tr("Shift+Ctrl+P"))); + previewPrinting_->setEnabled(false); + + print_ = menuFile->addAction(tr("Print"), this, SLOT(onPrint()), + QKeySequence(tr("Ctrl+P"))); + print_->setEnabled(false); + + menuFile->addSeparator(); + + export_ = menuFile->addAction(tr("&Exportation"), + this, SLOT(onExportation()), + QKeySequence(tr("Ctrl+E"))); + export_->setEnabled(false); + + menuFile->addSeparator(); + + menuFile->addAction(tr("Quit"), this, SLOT(close())); + + ui->menuBar->addAction(tr("Preferences"), + this, SLOT(onPreferences())); + + QMenu *menuAreas = ui->menuBar->addMenu(tr("Window")); + + next_ = menuAreas->addAction(tr("Next document"), + &pagesWidget_, SLOT(selectNextRow()), + QKeySequence(tr("Space"))); + next_->setEnabled(false); + + prev_ = menuAreas->addAction(tr("Previous document"), + &pagesWidget_, SLOT(selectPreviousRow()), + QKeySequence(tr("Backspace"))); + prev_->setEnabled(false); + + menuAreas->addSeparator(); + + QAction *page = menuAreas->addAction(tr("Page"), + &dockPages_, SLOT(switchVisibility())); + page->setCheckable(true); + page->setChecked(true); + + QAction *region = menuAreas->addAction(tr("Region"), + &dockRegion_, SLOT(switchVisibility())); + region->setCheckable(true); + region->setChecked(true); + + QAction *xml = menuAreas->addAction(tr("Xml"), + &dockXml_, SLOT(switchVisibility())); + xml->setCheckable(true); + xml->setChecked(false); + + ui->menuBar->addAction(tr("&About"), this, SLOT(onAbout())); +} + +void MainWindow::setActionsEnabled(bool isSegmented) +{ + segment_->setEnabled(!isSegmented); + print_->setEnabled(isSegmented); + previewPrinting_->setEnabled(isSegmented); +} + +void MainWindow::disableActions() +{ + segment_->setEnabled(false); + print_->setEnabled(false); + previewPrinting_->setEnabled(false); + export_->setEnabled(false); +} + +void MainWindow::connectWidgets() +{ + // Each time the scene rect change (when a new picture is loaded), we fit the scene background rectangle in the view. + connect(&scene_, SIGNAL(sceneRectChanged(QRectF)), + &graphicsView_, SLOT(fitInView(QRectF))); + // When dragging with right click, disable selection. + connect(&graphicsView_, SIGNAL(beginDrag()), + &scene_, SLOT(disableSelection())); + connect(&graphicsView_, SIGNAL(endDrag()), + &scene_, SLOT(enableSelection())); + + // If double click on a picture of the page widget -> draw it on background scene. + connect(&pagesWidget_, SIGNAL(imageSelected(QString)), + this, SLOT(onFileChanged(QString))); + + // Connect the scene to the xml widget and vice versa. + connect(&scene_, SIGNAL(newSelection(QList<RegionItem*>)), + this, SLOT(onRegionSelection(QList<RegionItem*>))); + connect(xmlWidget_.view(), SIGNAL(select(QList<XmlItem*>)), + this, SLOT(onXmlSelect(QList<XmlItem*>))); + connect(xmlWidget_.view(), SIGNAL(unselect(QList<XmlItem*>)), + this, SLOT(onXmlUnselect(QList<XmlItem*>))); + connect(xmlWidget_.view(), SIGNAL(emptySelection()), + &scene_, SLOT(selectBase())); + connect(xmlWidget_.view(), SIGNAL(resetSelection()), + &scene_, SLOT(clearSelection())); + + // Connect the scene with the region widget. + connect(®ionWidget_, SIGNAL(checkStateChanged(GraphicsRegion::Id,bool)), &scene_, SLOT(setVisible(GraphicsRegion::Id,bool))); + + // Connect the xml widget with the region widget. + connect(®ionWidget_, SIGNAL(checkStateChanged(QString)), xmlWidget_.view(), SLOT(setFilterString(QString))); + + connect(&runner_, SIGNAL(progress()), progressDialog_, SLOT(run())); + connect(&runner_, SIGNAL(new_progress_max_value(int)), + progressDialog_, SLOT(setMaximum(int))); + connect(&runner_, SIGNAL(new_progress_label(QString)), + progressDialog_, SLOT(setLabelText(QString))); + connect(&runner_, SIGNAL(finished()), progressDialog_, SLOT(close())); + connect(&runner_, SIGNAL(xml_saved(QString)), + this, SLOT(onXmlSaved(QString))); +} + +void MainWindow::onOpen() +{ + QStringList + paths = QFileDialog::getOpenFileNames(this, "Open Image(s)", + QDir::homePath(), + "Images (*.png *.jpg *.ppm *.bmp)"); + setWindowTitle(tr("GScribo")); + + if(paths.count() > 0) + { + QStringList filenames = pagesWidget_.filenames(); + QString path; + + int counter = 0; + bool isContained; + // Check for an image not already added to the page widget. + do + { + path = paths[counter]; + counter++; + isContained = filenames.contains(path); + } while(isContained && counter < paths.count()); + + if(!isContained) + { + pagesWidget_.addPicture(path, QPixmap(path)); + + // If more than one file, we store it in the page widget. + for(int i = counter; i < paths.count(); i++) + { + // Check if the page widget contains the image. + if(!filenames.contains(paths[i])) + { + path = paths[i]; + pagesWidget_.addPicture(path, QPixmap(path)); + } + } + + pagesWidget_.setCurrentRow(0); + pagesWidget_.scrollToTop(); + } + + // Change current scene. + onFileChanged(path); + } +} + +void MainWindow::onSegment() +{ + QStringList filenames; + + filenames << scene_.backgroundPath(); + + // Run segmentation of page(s). + progressDialog_->reset(); + runner_.start_demat(filenames); +} + +void MainWindow::onPreviewPrint() +{ + QPrinter printer(QPrinter::HighResolution); + printer.setPaperSize(QPrinter::A4); + printer.setResolution(300); + + QPrintPreviewDialog preview(&printer, this); + connect(&preview, SIGNAL(paintRequested(QPrinter*)), + this, SLOT(printScene(QPrinter*))); + + preview.exec(); +} + +void MainWindow::onPrint() +{ + QPrinter printer(QPrinter::HighResolution); + printer.setPaperSize(QPrinter::A4); + printer.setResolution(300); + + QPrintDialog dialog(&printer, this); + dialog.setWindowTitle("Print Document"); + + if(dialog.exec() != QDialog::Accepted) + return; + + printScene(&printer); +} + +void MainWindow::printScene(QPrinter *printer) +{ + QPainter painter(printer); + QStyleOptionGraphicsItem options; + + scene_.backgroundPixmap()->paint(&painter, &options, 0); + + // Paint backwards items first. + printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::TextRegion), + &options); + printItems(&painter, scene_.root()->childsFrom(GraphicsRegion::Image), + &options); + + for(int i = GraphicsRegion::Line; i < GraphicsRegion::Image; i++) + printItems(&painter, + scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), + &options); + + for(int i = GraphicsRegion::Noise; i <= GraphicsRegion::Meanline; i++) + printItems(&painter, + scene_.root()->childsFrom(static_cast<GraphicsRegion::Id>(i)), + &options); +} + +void MainWindow::printItems(QPainter *painter, + const QList<QGraphicsItem *>& items, + QStyleOptionGraphicsItem *options) +{ + foreach(QGraphicsItem *child, items) + { + if(child->isVisible()) + { + QRect + viewport = scene_.backgroundPixmap()->mapRectFromItem(child, child->boundingRect()).toRect(); + painter->translate(abs(child->boundingRect().x() - viewport.x()), + abs(child->boundingRect().y() - viewport.y())); + child->paint(painter, options); + painter->resetTransform(); + } + } +} + +void MainWindow::onExportation() +{ + QMessageBox messageBox(this); + messageBox.setWindowTitle("Information"); + messageBox.setText("This feature is not available yet"); + messageBox.exec(); + return; + + QFileInfo fileInfo(scene_.backgroundPath()); + QString outputSuggestion = fileInfo.baseName() + ".pdf"; + QString output = QFileDialog::getSaveFileName(0, tr("Export Document As ..."), outputSuggestion, + tr("PDF (*.pdf);; HTML (*.html *.htm")); + + if(!output.isEmpty()) + { + progressDialog_->reset(); + runner_.start_export(scene_.backgroundPath(), xml_.filename(), output); + } +} + +void MainWindow::onXmlSaved(const QString& filename) +{ + xml_.load(filename); + xmlWidget_.changeView(xml_.xmlItem()); + scene_.setRoot(xml_.graphicsItem()); + + setActionsEnabled(true); + export_->setEnabled(xml_.recognized()); +} + +void MainWindow::onFileChanged(const QString& filename) +{ + // If it's not the current scene. + if(scene_.backgroundPath() != filename) + { + QString xmlPath = Xml::getPath(filename); + + if(filename.isEmpty()) + { + xmlPath = QString(); + disableActions(); + } + // Check if the xml file already exists. + else if(!QFile(xmlPath).exists()) + { + xmlPath = QString(); + setActionsEnabled(false); + } + else + setActionsEnabled(true); + + xml_.load(xmlPath); + scene_.changeScene(filename, xml_.graphicsItem()); + xmlWidget_.changeView(xml_.xmlItem()); + export_->setEnabled(xml_.recognized()); + updatePageBrowsing(); + } +} + +void MainWindow::onRegionSelection(QList<RegionItem *> regionItems) +{ + if(!regionItems.isEmpty()) + xmlWidget_.view()->displayOnly(toXmlItems(regionItems)); + else + { + xmlWidget_.view()->reset(); + xmlWidget_.view()->displayAll(); + xmlWidget_.view()->expandAll(); + } +} + +void MainWindow::onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select) +{ + QList<RegionItem *> regionItems = toRegionItems(xmlItems); + + if(!regionItems.isEmpty()) + { + if(select) + scene_.select(regionItems); + else + scene_.unselect(regionItems); + } +} + +QList<RegionItem *> MainWindow::toRegionItems(QList<XmlItem *> xmlItems) const +{ + QList<RegionItem *> regionItems; + XmlItem *child; + foreach(child, xmlItems) + { + if(child->regionItem()) + regionItems << child->regionItem(); + } + + return regionItems; +} + +QList<XmlItem *> MainWindow::toXmlItems(QList<RegionItem *> regionItems) const +{ + QList<XmlItem *> xmlItems; + RegionItem *child; + foreach(child, regionItems) + xmlItems << child->xmlItem(); + + return xmlItems; +} + +void MainWindow::onPreferences() +{ + preferencesDialog_->show(); +} + +void MainWindow::onAbout() +{ + aboutDialog_->show(); +} + +void MainWindow::onXmlSelect(QList<XmlItem *> xmlItems) +{ + onXmlChangeSelection(xmlItems, true); +} + +void MainWindow::onXmlUnselect(QList<XmlItem *> xmlItems) +{ + onXmlChangeSelection(xmlItems, false); +} + +void MainWindow::updatePageBrowsing() +{ + next_->setEnabled(pagesWidget_.haveNextRow()); + prev_->setEnabled(pagesWidget_.havePreviousRow()); +} diff --git a/scribo/demo/viewer/mainwindow.hh b/scribo/demo/viewer/mainwindow.hh new file mode 100644 index 0000000..527b612 --- /dev/null +++ b/scribo/demo/viewer/mainwindow.hh @@ -0,0 +1,130 @@ +// Copyright (C) 2013 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/
>. + +#ifndef MAINWINDOW_HH +# define MAINWINDOW_HH + +#include <QPrintPreviewDialog> +#include <QGraphicsView> +#include <QPrintDialog> +#include <QMainWindow> +#include <QHBoxLayout> +#include <QDockWidget> +#include <QFileDialog> +#include <QGroupBox> +#include <QPrinter> + +#include "Preferences/preferencesdialog.hh" +#include "Processing/progressdialog.hh" +#include "PagesWidget/pageswidget.hh" +#include "Rendering/graphicsview.hh" +#include "XmlWidget/xmlwidget.hh" +#include "Processing/runner.hh" +#include "Rendering/scene.hh" +#include "regionwidget.hh" +#include "aboutdialog.hh" +#include "dockwidget.hh" +#include "xml.hh" + +namespace Ui +{ + class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT; + +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + +protected: + void changeEvent(QEvent *e); + +private: + void initGraphicsRegion(); + void initDialogsWidget(); + void initPageWidget(); + void initRegionWidget(); + void initXmlWidget(); + void initMenuBar(); + void connectWidgets(); + + void setActionsEnabled(bool isSegmented); + void disableActions(); + + void updatePageBrowsing(); + + void printItems(QPainter *painter, const QList<QGraphicsItem *>& items, QStyleOptionGraphicsItem *options); + + Xml processTmpXml(const QString& filename) const; + QList<RegionItem *> toRegionItems(QList<XmlItem *> regionItems) const; + QList<XmlItem *> toXmlItems(QList<RegionItem *> xmlItems) const; + + Ui::MainWindow *ui; + + DockWidget dockRegion_; + DockWidget dockPages_; + DockWidget dockXml_; + + GraphicsView graphicsView_; + Scene scene_; + + PagesWidget pagesWidget_; + RegionWidget regionWidget_; + + AboutDialog *aboutDialog_; + ProgressDialog *progressDialog_; + PreferencesDialog *preferencesDialog_; + + XmlWidget xmlWidget_; + Xml xml_; + Runner runner_; + + QAction *segment_; + QAction *previewPrinting_; + QAction *print_; + QAction *export_; + + // Browse among documents. + QAction *next_; + QAction *prev_; + +public slots: + void printScene(QPrinter *printer); + +private slots: + void onOpen(); + void onSegment(); + void onPreviewPrint(); + void onPrint(); + void onExportation(); + void onPreferences(); + void onAbout(); + + void onXmlSaved(const QString& filename); + void onFileChanged(const QString& filename); + + void onRegionSelection(QList<RegionItem *> regionItems); + + void onXmlChangeSelection(QList<XmlItem *> xmlItems, bool select); + void onXmlSelect(QList<XmlItem *> xmlItems); + void onXmlUnselect(QList<XmlItem *> xmlItems); +}; + + +#endif // MAINWINDOW_HH diff --git a/GScribo/mainwindow.ui b/scribo/demo/viewer/mainwindow.ui similarity index 100% rename from GScribo/mainwindow.ui rename to scribo/demo/viewer/mainwindow.ui diff --git a/scribo/demo/viewer/ocr_options.cc b/scribo/demo/viewer/ocr_options.cc deleted file mode 100644 index 0ff09d9..0000000 --- a/scribo/demo/viewer/ocr_options.cc +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#include "defs.hh" -#include "ocr_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - - -static const char *language[][2] = { - { "English", "eng" }, - { "French", "fra" }, - { 0, 0 } -}; - - -ocr_options::ocr_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - for (unsigned i = 0; language[i][0]; ++i) - ocr_language->insertItem(i, language[i][0]); - - load_config(); -} - -ocr_options::~ocr_options() -{ -} - - -int ocr_options::find_index(const QString& lang) -{ - for (unsigned i = 0; language[i][0]; ++i) - if (lang == language[i][1]) - return i; - return 0; -} - - -void ocr_options::load_config() -{ - config * const conf = config::get_instance(); - - enable_ocr->setChecked(conf->ocr_enabled()); - ocr_language->setCurrentIndex(find_index(conf->ocr_language())); -} - - -void ocr_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_ocr_enabled(enable_ocr->isChecked()); - conf->set_ocr_language(language[ocr_language->currentIndex()][1]); -} diff --git a/scribo/demo/viewer/ocr_options.hh b/scribo/demo/viewer/ocr_options.hh deleted file mode 100644 index 67ab4ef..0000000 --- a/scribo/demo/viewer/ocr_options.hh +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH - -# include <QtGui> -# include <ocr_options.ui.h> -# include "option_widget.hh" - -class ocr_options : public OptionWidget, private Ui::OcrOptions -{ - Q_OBJECT; - -public: - ocr_options(QWidget *parent = 0); - ~ocr_options(); - - void load_config(); - void save_config(); - -private: - int find_index(const QString& lang); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH diff --git a/scribo/demo/viewer/ocr_options.ui b/scribo/demo/viewer/ocr_options.ui deleted file mode 100644 index d001c64..0000000 --- a/scribo/demo/viewer/ocr_options.ui +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>OcrOptions</class> - <widget class="QWidget" name="OcrOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>366</width> - <height>112</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QGroupBox" name="enable_ocr"> - <property name="title"> - <string>Enable OCR</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <property name="flat"> - <bool>true</bool> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Language</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QComboBox" name="ocr_language"/> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/option_widget.cc b/scribo/demo/viewer/option_widget.cc deleted file mode 100644 index 4557749..0000000 --- a/scribo/demo/viewer/option_widget.cc +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2010 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/
>. - -# include "option_widget.hh" - -OptionWidget::OptionWidget(QWidget * parent) - : QWidget(parent) -{ -} - -void OptionWidget::save_config() -{ -} - -void OptionWidget::load_config() -{ -} diff --git a/scribo/demo/viewer/option_widget.hh b/scribo/demo/viewer/option_widget.hh deleted file mode 100644 index 6b24e90..0000000 --- a/scribo/demo/viewer/option_widget.hh +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH - -#include <QWidget> - -struct OptionWidget : public QWidget -{ - OptionWidget(QWidget * parent); - - virtual void load_config(); - virtual void save_config(); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_OPTION_WIDGET_HH diff --git a/scribo/demo/viewer/preferences_dialog.cc b/scribo/demo/viewer/preferences_dialog.cc deleted file mode 100644 index 1eb80a7..0000000 --- a/scribo/demo/viewer/preferences_dialog.cc +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "preferences_dialog.hh" -#include "general_options.hh" -#include "ocr_options.hh" -#include "preprocessing_options.hh" -#include "segmentation_options.hh" - - - -preferences_dialog::preferences_dialog(QWidget *parent) - : QDialog(parent) -{ - setupUi(this); - - // We may want to remove this useless object in the ui file. - delete widget; - - setAttribute(Qt::WA_DeleteOnClose); - - load_option_list(); - optionList->setCurrentRow(0); -} - -preferences_dialog::~preferences_dialog() -{ -} - - -void preferences_dialog::load_option_list() -{ - static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 }; - - int i; - for (i = 0; options[i]; ++i) - optionList->insertItem(i, options[i]); - - widgets_.fill(0, i); -} - -void preferences_dialog::on_optionList_currentRowChanged(int row) -{ - select_option_widget(row); -} - - -void preferences_dialog::select_option_widget(int row) -{ - if (row >= widgets_.size()) - { - qDebug() << "select_option_widget - Hu? Something wrong... Invalid row"; - return; - } - - if (!widgets_[row]) - { - QWidget *widget = 0; - - switch (row) - { - case 0: - widget = new general_options(this); - break; - - case 1: - widget = new preprocessing_options(this); - break; - - case 2: - widget = new segmentation_options(this); - break; - - case 3: - widget = new ocr_options(this); - break; - - default: - qDebug() << "select_option_widget - Hu? Something wrong..."; - } - - if (widget) - widgets_[row] = widget; - } - - if (horizontalLayout_2->count() == 2) - { - QWidget *current_widget = horizontalLayout_2->itemAt(1)->widget(); - horizontalLayout_2->removeWidget(current_widget); - current_widget->hide(); - } - - horizontalLayout_2->insertWidget(1, widgets_[row]); - widgets_[row]->show(); -} - - -void preferences_dialog::accept() -{ - for (int i = 0; i < widgets_.size(); ++i) - if (widgets_[i]) - { - static_cast<OptionWidget *>(widgets_[i])->save_config(); - delete widgets_[i]; - } - QDialog::accept(); -} - - -void preferences_dialog::reject() -{ - for (int i = 0; i < widgets_.size(); ++i) - delete widgets_[i]; - QDialog::reject(); -} diff --git a/scribo/demo/viewer/preferences_dialog.hh b/scribo/demo/viewer/preferences_dialog.hh deleted file mode 100644 index 0368bbe..0000000 --- a/scribo/demo/viewer/preferences_dialog.hh +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH -# define SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH - -# include <QtGui> -# include <preferences_dialog.ui.h> - -class preferences_dialog : public QDialog, private Ui::PreferencesDialog -{ - Q_OBJECT; - -public: - preferences_dialog(QWidget *parent = 0); - ~preferences_dialog(); - -private slots: - void on_optionList_currentRowChanged(int row); - virtual void accept(); - virtual void reject(); - -private: // Methods - void load_option_list(); - void select_option_widget(int row); - -private: // Attributes - QVector<QWidget *> widgets_; - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH diff --git a/scribo/demo/viewer/preferences_dialog.ui b/scribo/demo/viewer/preferences_dialog.ui deleted file mode 100644 index 1d40563..0000000 --- a/scribo/demo/viewer/preferences_dialog.ui +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PreferencesDialog</class> - <widget class="QDialog" name="PreferencesDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>668</width> - <height>418</height> - </rect> - </property> - <property name="windowTitle"> - <string>Preferences</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Preferences</span></p></body></html></string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QListWidget" name="optionList"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Maximum" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>200</width> - <height>16777215</height> - </size> - </property> - <property name="baseSize"> - <size> - <width>100</width> - <height>0</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="QWidget" name="widget" native="true"/> - </item> - </layout> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>PreferencesDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>PreferencesDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/scribo/demo/viewer/preprocess.cc b/scribo/demo/viewer/preprocess.cc deleted file mode 100644 index fd9a48b..0000000 --- a/scribo/demo/viewer/preprocess.cc +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "preprocess.hh" - -void preprocess::on_progress() -{ - emit progress(); -} - - -void preprocess::on_new_progress_label(const char *label) -{ - QString lbl(label); - emit new_progress_label(label); -} diff --git a/scribo/demo/viewer/preprocess.hh b/scribo/demo/viewer/preprocess.hh deleted file mode 100644 index 4562cfb..0000000 --- a/scribo/demo/viewer/preprocess.hh +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREPROCESS_HH -# define SCRIBO_DEMO_VIEWER_PREPROCESS_HH - -# include <QtCore/QObject> -# include <mln/core/image/image2d.hh> -# include <mln/value/rgb8.hh> -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -struct preprocess - : public QObject, - public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> > -{ - Q_OBJECT; - - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - -signals: - void new_progress_label(const QString& label); - void progress(); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESS_HH diff --git a/scribo/demo/viewer/preprocessing_options.cc b/scribo/demo/viewer/preprocessing_options.cc deleted file mode 100644 index 2d55fea..0000000 --- a/scribo/demo/viewer/preprocessing_options.cc +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "defs.hh" -#include "preprocessing_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -preprocessing_options::preprocessing_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - bin_algoCbox->insertItem(Convert, "Violent convert"); - bin_algoCbox->insertItem(Sauvola, "Local threshold"); - bin_algoCbox->insertItem(SauvolaMs, - "Local threshold multiscale"); - - load_config(); -} - -preprocessing_options::~preprocessing_options() -{ -} - - -void preprocessing_options::load_config() -{ - config * const conf = config::get_instance(); - - subsampleCb->setChecked(conf->preprocessing_subsample()); - remove_bgCb->setChecked(conf->preprocessing_remove_bg()); - deskewCb->setChecked(conf->preprocessing_deskew()); - remove_noiseCb->setChecked(conf->preprocessing_remove_noise()); - bin_algoCbox->setCurrentIndex(conf->preprocessing_bin_algo()); -} - - -void preprocessing_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_preprocessing_subsample(subsampleCb->isChecked()); - conf->set_preprocessing_remove_bg(remove_bgCb->isChecked()); - conf->set_preprocessing_deskew(deskewCb->isChecked()); - conf->set_preprocessing_remove_noise(remove_noiseCb->isChecked()); - conf->set_preprocessing_bin_algo(bin_algoCbox->currentIndex()); -} diff --git a/scribo/demo/viewer/preprocessing_options.hh b/scribo/demo/viewer/preprocessing_options.hh deleted file mode 100644 index c676880..0000000 --- a/scribo/demo/viewer/preprocessing_options.hh +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH - -# include <QtGui> -# include <preprocessing_options.ui.h> -# include "option_widget.hh" - -class preprocessing_options : public OptionWidget, private Ui::PreprocessingOptions -{ - Q_OBJECT; - -public: - preprocessing_options(QWidget *parent = 0); - ~preprocessing_options(); - - void load_config(); - void save_config(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH diff --git a/scribo/demo/viewer/preprocessing_options.ui b/scribo/demo/viewer/preprocessing_options.ui deleted file mode 100644 index 962cf49..0000000 --- a/scribo/demo/viewer/preprocessing_options.ui +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PreprocessingOptions</class> - <widget class="QWidget" name="PreprocessingOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>466</width> - <height>198</height> - </rect> - </property> - <property name="windowTitle"> - <string>Configure toolchain</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Binarization method:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="bin_algoCbox"/> - </item> - </layout> - </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="subsampleCb"> - <property name="text"> - <string>Run on subsampled image</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="remove_bgCb"> - <property name="text"> - <string>Remove background (slow)</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QCheckBox" name="deskewCb"> - <property name="text"> - <string>Deskew</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QCheckBox" name="remove_noiseCb"> - <property name="text"> - <string>Remove noise</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>48</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/process.cc b/scribo/demo/viewer/process.cc deleted file mode 100644 index 8fa5b9f..0000000 --- a/scribo/demo/viewer/process.cc +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#include "process.hh" - -process::process(const char *doc_filename) - : super_t(doc_filename) -{ - -} - -void process::on_progress() -{ - emit progress(); -} - - -void process::on_new_progress_label(const char *label) -{ - QString lbl(label); - emit new_progress_label(label); -} - - -void process::on_xml_saved() -{ - QString filename(output_file.c_str()); - emit xml_saved(filename); -} diff --git a/scribo/demo/viewer/process.hh b/scribo/demo/viewer/process.hh deleted file mode 100644 index 09ace43..0000000 --- a/scribo/demo/viewer/process.hh +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_PROCESS_HH -# define SCRIBO_DEMO_VIEWER_PROCESS_HH - -# include <QtCore/QObject> -# include <mln/core/image/image2d.hh> -# include <scribo/toolchain/internal/content_in_doc_functor.hh> - -using namespace scribo::toolchain::internal; - -struct process - : public QObject, - public content_in_doc_functor<mln::image2d<bool> > -{ - Q_OBJECT; - typedef content_in_doc_functor<mln::image2d<bool> > super_t; - -public: - process(const char *doc_filename); - - virtual void on_progress(); - virtual void on_new_progress_label(const char *label); - virtual void on_xml_saved(); - -signals: - void new_progress_label(const QString& label); - void progress(); - void xml_saved(const QString& filename); -}; - -#endif // ! SCRIBO_DEMO_VIEWER_PROCESS_HH diff --git a/scribo/demo/viewer/region.hh b/scribo/demo/viewer/region.hh new file mode 100644 index 0000000..806d8b4 --- /dev/null +++ b/scribo/demo/viewer/region.hh @@ -0,0 +1,72 @@ +// Copyright (C) 2013 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/
>. + +#ifndef REGION_HH +# define REGION_HH + +#include <QColor> + +namespace GraphicsRegion +{ + // WARNING : The order is important. + enum Id + { + TextRegion, + Line, + + VerticalSeparator, + HorizontalSeparator, + WhiteSpaceSeparator, + + Image, + Noise, + Table, + Maths, + Graphic, + Chart, + + Baseline, + Meanline, + + Text, + Separators, + Miscellaneous, + Typology, + + None + }; + + struct Data + { + QColor color; + QString name; + GraphicsRegion::Id region; + GraphicsRegion::Id parent; + int zValue; + }; +} + +namespace Separator +{ + enum FindSeparator + { + Lines, + Whitespaces, + Both + }; +} + +#endif // REGION_HH diff --git a/scribo/demo/viewer/regionwidget.cc b/scribo/demo/viewer/regionwidget.cc new file mode 100644 index 0000000..a9553ca --- /dev/null +++ b/scribo/demo/viewer/regionwidget.cc @@ -0,0 +1,114 @@ +// Copyright (C) 2013 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/
>. + +#include "regionwidget.hh" + +RegionWidget::RegionWidget(QWidget *parent) : + QTreeWidget(parent) +{ + setHeaderHidden(true); + setSelectionMode(QAbstractItemView::NoSelection); + + addTopLevelItem(createRoot("Text", GraphicsRegion::Text, + GraphicsRegion::TextRegion, + GraphicsRegion::Line)); + addTopLevelItem(createRoot("Typological Lines", GraphicsRegion::Typology, + GraphicsRegion::Baseline, + GraphicsRegion::Meanline)); + addTopLevelItem(createRoot("Separators", GraphicsRegion::Separators, + GraphicsRegion::VerticalSeparator, + GraphicsRegion::WhiteSpaceSeparator)); + addTopLevelItem(createRoot("Miscellaneous", GraphicsRegion::Miscellaneous, + GraphicsRegion::Image, GraphicsRegion::Chart)); + + expandAll(); + + connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), + this, SLOT(checkStateChanged(QTreeWidgetItem*))); +} + +QTreeWidgetItem *RegionWidget::createRoot(const QString& text, + const GraphicsRegion::Id& region, + const GraphicsRegion::Id& begin, + const GraphicsRegion::Id& end) +{ + // Create root. + QTreeWidgetItem *rootItem = createItem(text, region); + + // Fill root with corresponding childs. + for(int region_ = begin; region_ <= end; region_++) + fillRoot(rootItem, static_cast<GraphicsRegion::Id>(region_)); + + return rootItem; +} + +QTreeWidgetItem *RegionWidget::createItem(const QString& text, + const GraphicsRegion::Id& region, + const QColor& color) +{ + QTreeWidgetItem *item = new QTreeWidgetItem; + item->setText(0, text); + item->setCheckState(0, Qt::Checked); + item->setBackgroundColor(0, color); + // Store graphical id in the object to recognize it afterward. + item->setData(0, Qt::UserRole, static_cast<int>(region)); + + return item; +} + +void RegionWidget::checkStateChanged(QTreeWidgetItem *item) +{ + // If it's a root item, go to childs. + if(item->childCount() != 0) + { + QTreeWidgetItem *child; + for(int i = 0; i < item->childCount(); i++) + { + child = item->child(i); + child->setCheckState(0, item->checkState(0)); + } + } + else + { + if(item->checkState(0) == Qt::Checked) + { + filterString_.append('|' + item->text(0)); + emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), true); + } + else + { + filterString_.remove('|' + item->text(0), Qt::CaseSensitive); + emit checkStateChanged(static_cast<GraphicsRegion::Id>(item->data(0, Qt::UserRole).toInt()), false); + } + + //emit checkStateChanged(filterString_); + } +} + + +inline void RegionWidget::fillRoot(QTreeWidgetItem *rootItem, + const GraphicsRegion::Id& region) +{ + GraphicsRegion::Data data = Xml::dataFromRegion(region); + filterString_.append('|' + data.name); + rootItem->addChild(createItem(data.name, region, data.color)); +} + + +inline QString RegionWidget::filterString() const +{ + return filterString_.right(filterString_.count()-1); +} diff --git a/scribo/demo/viewer/regionwidget.hh b/scribo/demo/viewer/regionwidget.hh new file mode 100644 index 0000000..3899ffc --- /dev/null +++ b/scribo/demo/viewer/regionwidget.hh @@ -0,0 +1,58 @@ +// Copyright (C) 2013 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/
>. + +#ifndef REGIONWIDGET_HH +# define REGIONWIDGET_HH + +#include <QTreeWidget> +#include <QLabel> + +#include "xml.hh" + +class RegionWidget : + public QTreeWidget +{ + Q_OBJECT; + +public: + explicit RegionWidget(QWidget *parent = 0); + + QString filterString() const; + +private: + QTreeWidgetItem *createRoot(const QString& text, + const GraphicsRegion::Id& region, + const GraphicsRegion::Id& begin, + const GraphicsRegion::Id& end); + QTreeWidgetItem *createItem(const QString& text, + const GraphicsRegion::Id& region, + const QColor& color = QColor::fromRgb(255, 255, 255)); + void fillRoot(QTreeWidgetItem *rootItem, + const GraphicsRegion::Id& region); + + QString filterString_; + +private slots: + void checkStateChanged(QTreeWidgetItem *item); + +signals: + void checkStateChanged(const GraphicsRegion::Id& region, + bool checked); + void checkStateChanged(const QString& filterString); +}; + + +#endif // REGIONWIDGET_HH diff --git a/scribo/demo/viewer/runner.cc b/scribo/demo/viewer/runner.cc deleted file mode 100644 index da2f3bf..0000000 --- a/scribo/demo/viewer/runner.cc +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "runner.hh" - -#include <mln/core/image/image2d.hh> -#include <mln/value/rgb8.hh> -#include <mln/io/magick/load.hh> - -#include "demodir.hh" - -#include "process.hh" -#include "preprocess.hh" -#include "config.hh" -#include "defs.hh" - - - -using namespace mln; -using namespace scribo::toolchain::internal; - -static -QString get_pathto(const QString& file, - const QString localdirsuffix = QString()) -{ - QFile f(SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix + "/" + file); - if (f.exists()) - return SCRIBO_LOCAL_DEMODIR "/" + localdirsuffix; - - f.setFileName(SCRIBO_PREFIX_LIBEXECDIR "/" + file); - if (f.exists()) - return SCRIBO_PREFIX_LIBEXECDIR; - - qDebug() << "FATAL ERROR: Can't locate file: " + file; - - return ""; -} - - -runner::runner(QObject *parent) - : QThread(parent) -{ - moveToThread(this); -} - - -void runner::run() -{ - - switch(mode_) - { - default: - case Demat: - { - image2d<value::rgb8> ima; - io::magick::load(ima, args_.at(0).toUtf8().constData()); - - image2d<bool> bin_ima = preprocess(ima); - process(ima, bin_ima); - } - break; - - case Export: - export_as(); - break; - } - - emit finished(); - qDebug() << "Done."; -} - - -void runner::stop() -{ - terminate(); -} - - - -// Demat related stuff - -void runner::start_demat(const QString& filename) -{ - args_.clear(); - args_ << filename; - mode_ = Demat; - - QThread::start(); -} - - -image2d<bool> -runner::preprocess(const image2d<value::rgb8>& ima) -{ - emit new_step("Preprocessing"); - - ::preprocess f; - - // Load config. - config * const conf = config::get_instance(); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(new_progress_label(const QString&)), - this, SIGNAL(new_progress_label(const QString&))); - - f.enable_subsample = conf->preprocessing_subsample(); - f.enable_fg_extraction = conf->preprocessing_remove_bg(); - f.enable_deskew = conf->preprocessing_deskew(); - f.enable_denoising = conf->preprocessing_remove_noise(); - - f.binarization_algo = static_cast<Binarization_Algo>(conf->preprocessing_bin_algo()); - - emit new_progress_max_value(f.nsteps()); - - // Perform preprocessing. - f(ima); - - qDebug() << "Preprocess Done."; - return f.output; -} - - -void runner::process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima) -{ - emit new_step("Page segmentation"); - - ::process f(args_.at(0).toUtf8().constData()); - - connect(&f, SIGNAL(progress()), this, SIGNAL(progress())); - connect(&f, SIGNAL(new_progress_label(const QString&)), - this, SIGNAL(new_progress_label(const QString&))); - connect(&f, SIGNAL(xml_saved(const QString&)), - this, SIGNAL(xml_saved(const QString&))); - - // Load config. - config * const conf = config::get_instance(); - - defs::FindSeparators - find_seps = static_cast<defs::FindSeparators>(conf->segmentation_find_seps()); - f.enable_line_seps = (find_seps == defs::Lines - || find_seps == defs::LinesAndWhitespaces); - f.enable_whitespace_seps = (find_seps == defs::Whitespaces - || find_seps == defs::LinesAndWhitespaces); - f.enable_ocr = conf->ocr_enabled(); - f.ocr_language = conf->ocr_language().toAscii().data(); - f.xml_format = scribo::io::xml::PageExtended; - - - f.save_doc_as_xml = true; - QFileInfo file(args_.at(0)); - QString output_dir = QDir::tempPath(); - if (conf->general_save_xml_enabled()) - { - if (conf->general_save_xml_same_dir()) - output_dir = file.absolutePath(); - else if (conf->general_save_xml_custom_dir()) - output_dir = conf->general_save_xml_custom_dir_path(); - else - qDebug() << "runner::progress - Invalid xml saving option!"; - - QDir dir(output_dir); - if (!dir.exists() && !dir.mkpath(output_dir)) - output_dir = QDir::tempPath(); - } - f.output_file = (output_dir + "/" + file.baseName() + "_gui.xml").toUtf8().constData(); - - emit new_progress_max_value(f.nsteps()); - - // Perform text detection. - f(original_ima, processed_ima); - - qDebug() << "Process Done."; -} - - - -// Export related stuff - -void runner::start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile) -{ - args_.clear(); - args_ << imgfile << xmlfile << outfile; - mode_ = Export; - - QThread::start(); -} - - -void runner::export_as() -{ - emit new_step("Exporting document..."); - emit new_progress_max_value(2); - - // Checking output format - QFileInfo f(args_.at(2)); - - QString pathto_xml2doc = get_pathto("scribo-xml2doc", "xml2doc"); - - if (pathto_xml2doc.isEmpty()) - { - QMessageBox::critical(0, "Fatal error", "Cannot export! Cannot find scribo-xml2doc program!"); - return; - } - - emit progress(); - - int rvalue = 0; - if (f.suffix() == "pdf") - { - emit new_step("Exporting as PDF..."); - rvalue = system(QString("%1/scribo-xml2doc --pdf %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else if (f.suffix() == "html" || f.suffix() == "htm") - { - emit new_step("Exporting as HTML..."); - rvalue = system(QString("%1/scribo-xml2doc --html %2 %3 %4") - .arg(pathto_xml2doc).arg(args_.at(1)).arg(args_.at(0)) - .arg(args_.at(2)).toAscii().constData()); - } - else - QMessageBox::critical(0, "Fatal error", "Cannot export! Invalid output format!"); - - if (rvalue != 0) - QMessageBox::critical(0, "Fatal error", "Cannot export! Return value is not 0!"); -} diff --git a/scribo/demo/viewer/runner.hh b/scribo/demo/viewer/runner.hh deleted file mode 100644 index 176dcd8..0000000 --- a/scribo/demo/viewer/runner.hh +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_RUNNER_HH -# define SCRIBO_DEMO_VIEWER_RUNNER_HH - -# include <QtGui> - -# include <mln/core/image/image2d.hh> -# include <mln/value/rgb8.hh> - -using namespace mln; - -enum RunMode -{ - Demat, - Export -}; - -class runner : public QThread -{ - Q_OBJECT; - -public: - runner(QObject *parent = 0); - - void start_demat(const QString& filename); - void start_export(const QString& imgfile, - const QString& xmlfile, const QString& outfile); - -public slots: - void stop(); - -signals: - void new_step(const QString& step_name); - void new_progress_max_value(int i); - void new_progress_label(const QString& msg); - void xml_saved(const QString& filename); - void progress(); - void finished(); - -private: // members - image2d<bool> preprocess(const image2d<value::rgb8>& ima); - void process(const image2d<value::rgb8>& original_ima, - const image2d<bool>& processed_ima); - - void export_as(); - - virtual void run(); - - template <typename V> - unsigned find_best_scale(const mln::image2d<V>& ima); - -private: // attributes - QStringList args_; - RunMode mode_; -}; - - -#endif // ! SCRIBO_DEMO_VIEWER_RUNNER_HH diff --git a/scribo/demo/viewer/segmentation_options.cc b/scribo/demo/viewer/segmentation_options.cc deleted file mode 100644 index c120879..0000000 --- a/scribo/demo/viewer/segmentation_options.cc +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#include "defs.hh" -#include "segmentation_options.hh" -#include "config.hh" - -// Defines enum of binarization algorithms -# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh> - -using namespace scribo::toolchain::internal; - -segmentation_options::segmentation_options(QWidget *parent) - : OptionWidget(parent) -{ - setupUi(this); - - find_sepsCbox->insertItem(defs::Lines, "Lines"); - find_sepsCbox->insertItem(defs::Whitespaces, "Whitespaces"); - find_sepsCbox->insertItem(defs::LinesAndWhitespaces, "Lines and whitespaces"); - - load_config(); -} - -segmentation_options::~segmentation_options() -{ -} - - -void segmentation_options::load_config() -{ - config * const conf = config::get_instance(); - - find_sepsCbox->setCurrentIndex(conf->segmentation_find_seps()); -} - - -void segmentation_options::save_config() -{ - config * const conf = config::get_instance(); - - conf->set_segmentation_find_seps(find_sepsCbox->currentIndex()); -} diff --git a/scribo/demo/viewer/segmentation_options.hh b/scribo/demo/viewer/segmentation_options.hh deleted file mode 100644 index bdf65f9..0000000 --- a/scribo/demo/viewer/segmentation_options.hh +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH -# define SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH - -# include <QtGui> -# include <segmentation_options.ui.h> -# include "option_widget.hh" - -class segmentation_options : public OptionWidget, private Ui::SegmentationOptions -{ - Q_OBJECT; - -public: - segmentation_options(QWidget *parent = 0); - ~segmentation_options(); - - void load_config(); - void save_config(); - -}; - -#endif // ! SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH diff --git a/scribo/demo/viewer/segmentation_options.ui b/scribo/demo/viewer/segmentation_options.ui deleted file mode 100644 index 485e448..0000000 --- a/scribo/demo/viewer/segmentation_options.ui +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>SegmentationOptions</class> - <widget class="QWidget" name="SegmentationOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Find separators</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="find_sepsCbox"> - <property name="editable"> - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </item> - <item row="1" column="0"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>258</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scribo/demo/viewer/step_widget.cc b/scribo/demo/viewer/step_widget.cc deleted file mode 100644 index 19b5d0f..0000000 --- a/scribo/demo/viewer/step_widget.cc +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright (C) 2010 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/
>. - -# include "step_widget.hh" -# include "config.hh" - -StepWidget::StepWidget() - : view_(new QListWidget()), - step_(QString::Null()) -{ - QLabel* title = new QLabel(tr("Steps")); - title->setAlignment(Qt::AlignHCenter); - - QVBoxLayout* layout = new QVBoxLayout; - - layout->addWidget(title); - layout->addWidget(view_); - - view_->setSortingEnabled(true); - - setLayout(layout); - - connect(view_, SIGNAL(itemActivated(QListWidgetItem*)), - this, SLOT(activate(QListWidgetItem*))); - - connect(this, SIGNAL(activated(QListWidgetItem*)), - this, SLOT(activate(QListWidgetItem*))); - -} - -StepWidget::~StepWidget() -{ -} - - -void StepWidget::activate(QListWidgetItem* item) -{ - QString key, value; - - StepQMap::iterator iter = map_.find(item->text()); - - if (iter != map_.end()) - { - view_->setCurrentItem(item); - step_ = item->text(); - key = iter.key(); - value = iter.value(); - - qDebug() << "Loading " << value; - emit load_xml(value); - } - else - qDebug() << "Step not found!"; - - emit step_selected(view_->count()); -} - - -void StepWidget::fill_steps(QString file, bool step, bool container) -{ - view_->clear(); - map_.clear(); - - if (container) - { - emit change_base(true); - // emit load_image(file, true); - emit load_xml(file); - } - else - { - emit change_base(false); - // image is loaded once - emit load_image(file, false); - - - QFileInfo f(file); - file_with_no_ext_ = f.baseName(); - - QStringList dirlist; - dirlist << f.absolutePath() << QDir::tempPath(); - - // Set directories to look at according to settings. - config * const conf = config::get_instance(); - if (conf->general_save_xml_custom_dir()) - dirlist << conf->general_save_xml_custom_dir_path(); - - foreach(QString path, dirlist) - { - QDir dir(path); - - if (dir.isReadable()) - { - QStringList filter; - filter << "*.xml"; - QFileInfoList xml_list = dir.entryInfoList(filter); - for (int i = 0; i < xml_list.size(); ++i) - insert_new_entry(xml_list.at(i)); - } - } - - if ( (step && step_ != QString::Null())) - { - QList<QListWidgetItem*> list = view_->findItems(step_, Qt::MatchContains); - - if (!list.isEmpty()) - emit activated(list.first()); - } - else - { - step_ = QString::Null(); - if (view_->count()) - emit activated(view_->item(0)); - } - } -} - - -QListWidgetItem* StepWidget::insert_new_entry(const QFileInfo& file) -{ - QListWidgetItem *item = 0; - - if (file.fileName().startsWith(file_with_no_ext_)) - { - QString key = file.baseName(); - key.replace(file_with_no_ext_ + QString("_"), QString("")); - key.replace(QRegExp("^step([0-9])"), "Step \\1"); - key.replace(QRegExp("^Step ([0-9])_"), "Step \\1 : "); - key.replace("_", " "); - - bool exists = (map_.find(key) != map_.end()); - - map_.insertMulti(key, file.absoluteFilePath()); - - if (!exists) - { - item = new QListWidgetItem(key); - view_->addItem(item); - } - else - item = view_->findItems(key, Qt::MatchCaseSensitive).at(0); - } - - return item; -} - - -QListWidgetItem* StepWidget::add_element(const QString& element) -{ - QListWidgetItem *item = new QListWidgetItem(element); - view_->addItem(item); - - return item; -} - -QString StepWidget::current() const -{ - return map_.value(step_); -} - - - - - - diff --git a/scribo/demo/viewer/step_widget.hh b/scribo/demo/viewer/step_widget.hh deleted file mode 100644 index f648ede..0000000 --- a/scribo/demo/viewer/step_widget.hh +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2010 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/
>. - - -#ifndef SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ -# define SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ - -# include <QtGui> - -typedef QMap<QString, QString> StepQMap; - -class StepWidget - : public QWidget -{ - Q_OBJECT - -public: - StepWidget(); - ~StepWidget(); - QListWidgetItem* add_element(const QString& element); - - QString current() const; - -signals: - void load_image(QString, bool); - void load_xml(QString); - void activated(QListWidgetItem*); - void change_base(bool); - void step_selected(bool); - -public slots: - void fill_steps(QString file, bool step = false, bool container = false); - void activate(QListWidgetItem* item); - QListWidgetItem* insert_new_entry(const QFileInfo& file); - -private: - QListWidget* view_; - StepQMap map_; - QString step_; - QString file_with_no_ext_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_STEP_WIDGET_HH_ diff --git a/scribo/demo/viewer/variantpointer.cc b/scribo/demo/viewer/variantpointer.cc new file mode 100644 index 0000000..07213aa --- /dev/null +++ b/scribo/demo/viewer/variantpointer.cc @@ -0,0 +1,39 @@ +// Copyright (C) 2013 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/
>. + +# include <variantpointer.hh> + + +template<typename T> +VariantPointer<T>::VariantPointer() +{ +} + + +template<typename T> +QVariant +VariantPointer<T>::toQVariant(T *pointer) +{ + return QVariant::fromValue(static_cast<void *>(pointer)); +} + + +template<typename T> +T * +VariantPointer<T>::fromQVariant(const QVariant& variant) +{ + return static_cast<T *>(variant.value<void *>()); +} diff --git a/scribo/demo/viewer/variantpointer.hh b/scribo/demo/viewer/variantpointer.hh new file mode 100644 index 0000000..e8aab4b --- /dev/null +++ b/scribo/demo/viewer/variantpointer.hh @@ -0,0 +1,33 @@ +// Copyright (C) 2013 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/
>. + +#ifndef VARIANTPOINTER_HH +# define VARIANTPOINTER_HH + +#include <QVariant> + +template<typename T> +class VariantPointer +{ +public: + static QVariant toQVariant(T *pointer); + static T *fromQVariant(const QVariant& variant); + +private: + VariantPointer(); +}; + +#endif // VARIANTPOINTER_HH diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc deleted file mode 100644 index 866761d..0000000 --- a/scribo/demo/viewer/viewer.cc +++ /dev/null @@ -1,1021 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - - -#include <iostream> -#include <limits.h> - -#include "viewer.hh" -#include "key_widget.hh" -#include "browser_widget.hh" -#include "xml_widget.hh" -#include "step_widget.hh" -#include "image_scene.hh" -#include "image_view.hh" -#include "image_region.hh" -#include "help_dialog.hh" -#include "preferences_dialog.hh" -#include "runner.hh" -#include "config.hh" - -#include "common.hh" - -Viewer::Viewer(int &argc, char** argv) - : app_ (new QApplication(argc, argv)), - win_ (new QMainWindow()), - image_(0), - scene_(new ImageScene()), - files_(new QDirModel()), - doc_layout_(0), - key_map_(region::RegionIdCount), - no_cache_(false), - extended_mode_(false), - xml_file_(QString::Null()), - base64_(false), - text_(true), - use_image_(true), - pdialog_(win_) -{ - // Key map - // -------- - - key_map_[region::Text] = qMakePair(tr("Text Region"), QColor(0, 200, 0)); - - // Extension - key_map_[region::Line] = qMakePair(tr("Text line"), QColor(255, 0, 0)); - - key_map_[region::Image] = qMakePair(tr("Image"), QColor(255, 120, 0)); - key_map_[region::Noise] = qMakePair(tr("Noise"), QColor(43, 39, 128)); - key_map_[region::Table] = qMakePair(tr("Table"), QColor(220, 246, 0)); - key_map_[region::LineDrawing] = qMakePair(tr("LineDrawing"), - QColor(255, 198, 0)); - key_map_[region::Graphic] = qMakePair(tr("Graphic"), QColor(255, 0, 144)); - key_map_[region::Chart] = qMakePair(tr("Chart"), QColor(0, 204, 255)); - key_map_[region::Maths] = qMakePair(tr("Maths"), QColor(170, 0, 255)); - - // Extension - key_map_[region::HorizontalSeparator] = qMakePair(tr("HorizontalSeparator"), QColor(0, 0, 255)); - key_map_[region::VerticalSeparator] = qMakePair(tr("VerticalSeparator"), QColor(0, 0, 255)); - key_map_[region::WhitespaceSeparator] = qMakePair(tr("Whitespace Separator"), QColor(0, 0, 128)); - - // Extension - key_map_[region::Baseline] = qMakePair(tr("Baseline"), QColor(128, 0, 255)); - key_map_[region::Meanline] = qMakePair(tr("Meanline"), QColor(128, 0, 255)); - - - - // Region ids - // ---------- - - region_ids_["TextRegion"] = region::Text; - - // Extension - region_ids_["Line"] = region::Line; - - region_ids_["ImageRegion"] = region::Image; - region_ids_["NoiseRegion"] = region::Noise; - region_ids_["TableRegion"] = region::Table; - region_ids_["Line_drawingRegion"] = region::LineDrawing; - region_ids_["GraphicRegion"] = region::Graphic; - region_ids_["ChartRegion"] = region::Chart; - region_ids_["MathsRegion"] = region::Maths; - - // Extension - region_ids_["VerticalSeparatorRegion"] = region::VerticalSeparator; - region_ids_["HorizontalSeparatorRegion"] = region::HorizontalSeparator; - region_ids_["WhitespaceSeparatorRegion"] = region::WhitespaceSeparator; - - - - win_->resize(1152, 864); - win_->statusBar(); - - QMenu* file_menu = win_->menuBar()->addMenu(tr("File")); - QMenu* option_menu = win_->menuBar()->addMenu(tr("Options")); - QMenu* view_menu = win_->menuBar()->addMenu(tr("View")); - QMenu* help_menu = win_->menuBar()->addMenu(tr("Help")); - - - // File menu - - QAction *doc_seg_action = create_action("Segment document", file_menu, - "Segment document", "Ctrl+S"); - connect(doc_seg_action, SIGNAL(triggered()), - this, SLOT(run_process())); - file_menu->addAction(doc_seg_action); - - file_menu->addSeparator(); - - export_action_ = create_action("Export as...", file_menu, - "Export as...", "Shift+Ctrl+S"); - connect(export_action_, SIGNAL(triggered()), - this, SLOT(export_as())); - file_menu->addAction(export_action_); - export_action_->setEnabled(false); - - file_menu->addSeparator(); - - QAction *preview_print_action = create_action("Printing preview", file_menu, - "Printint preview", "Ctrl+P"); - connect(preview_print_action, SIGNAL(triggered()), - this, SLOT(preview_print())); - file_menu->addAction(preview_print_action); - preview_print_action->setEnabled(false); - - - QAction *print_action = create_action("Print", file_menu, - "Print", "Ctrl+P"); - connect(print_action, SIGNAL(triggered()), - this, SLOT(print())); - file_menu->addAction(print_action); - print_action->setEnabled(false); - - file_menu->addSeparator(); - - - QAction* quit_action = create_action("Quit", file_menu, - "Exit the program.", "Ctrl+q"); - connect(quit_action, SIGNAL(triggered()), - app_, SLOT(quit())); - file_menu->addAction(quit_action); - - // Option menu - - QAction* preferences_action_ = create_action("Preferences", option_menu, - "Preferences", "Ctrl+Alt+P"); - preferences_action_->setCheckable(false); - connect(preferences_action_, SIGNAL(triggered(bool)), - this, SLOT(on_preferences())); - option_menu->addAction(preferences_action_); - - - // View menu - - outline_action_ = create_action("Draw outline", view_menu, - "Draw region outlines.", "Ctrl+o"); - outline_action_->setCheckable(true); - outline_action_->setChecked(true); - connect(outline_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setOutline(bool))); - view_menu->addAction(outline_action_); - - precise_action_ = create_action("Precise outline", view_menu, - "1px outline relative to the image " - "(1px relative to the view if off).", - "Shift+Ctrl+p"); - precise_action_->setCheckable(true); - precise_action_->setChecked(false); - connect(precise_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setPrecise(bool))); - view_menu->addAction(precise_action_); - - fill_action_ = create_action("Fill regions", view_menu, - "Color the inside of regions.", "Ctrl+f"); - fill_action_->setCheckable(true); - fill_action_->setChecked(true); - connect(fill_action_, SIGNAL(toggled(bool)), - this, SIGNAL(setFill(bool))); - view_menu->addAction(fill_action_); - - QAction* cache_action = create_action("Disable cache", view_menu, - "Disable the image cache (useful for" - " large images).", "Ctrl+c"); - cache_action->setCheckable(true); - cache_action->setChecked(false); - connect(cache_action, SIGNAL(toggled(bool)), - this, SLOT(useCache(bool))); - view_menu->addAction(cache_action); - - - QAction* extended_action = create_action("Extended mode", view_menu, - "If enabled, some features " - "not supported by ICDAR" - " are added such as text regions" - "or text lines", "Ctrl+e"); - extended_action->setCheckable(true); - extended_action->setChecked(false); - connect(extended_action, SIGNAL(toggled(bool)), - this, SLOT(useExtended(bool))); - view_menu->addAction(extended_action); - - QAction* show_image_action = create_action("Show pictures", view_menu, - "Display pictures on the scene or not", - "Ctrl+i"); - show_image_action->setCheckable(true); - show_image_action->setChecked(true); - connect(show_image_action, SIGNAL(toggled(bool)), - this, SLOT(useImage(bool))); - view_menu->addAction(show_image_action); - - QAction* show_text_action = create_action("Show text", view_menu, - "Show detected text inside boxes.", - "Ctrl+t"); - show_text_action->setCheckable(true); - show_text_action->setChecked(true); - connect(show_text_action, SIGNAL(toggled(bool)), - this, SLOT(useText(bool))); - view_menu->addAction(show_text_action); - - key_wgt_ = new KeyWidget(key_map_); - QAction *show_region_action = create_action("Show regions", view_menu, - "Display regions that are present in" - " the XML file.", - "Ctrl+r"); - show_region_action->setCheckable(true); - show_region_action->setChecked(true); - connect(show_region_action, SIGNAL(toggled(bool)), - key_wgt_, SLOT(setAll(bool))); - view_menu->addAction(show_region_action); - - // Help menu - - QAction* about_action = create_action("About", help_menu, - "About this program", - "Ctrl+h"); - connect(about_action, SIGNAL(triggered()), - this, SLOT(help())); - help_menu->addAction(about_action); - - // Layout - - QSplitter* h_splitter = new QSplitter(); - QSplitter* v_splitter = new QSplitter(Qt::Vertical); - QSplitter* v_splitter2 = new QSplitter(Qt::Vertical); - - step_widget_ = new StepWidget(); - XmlWidget* xml_wgt = new XmlWidget(); - browser_wgt_ = new BrowserWidget(files_, argc != 2 ? QString() : argv[1]); - image_wgt_ = new ImageWidget(scene_); - - connect(step_widget_, SIGNAL(step_selected(bool)), - export_action_, SLOT(setEnabled(bool))); - connect(step_widget_, SIGNAL(step_selected(bool)), - print_action, SLOT(setEnabled(bool))); - connect(step_widget_, SIGNAL(step_selected(bool)), - preview_print_action, SLOT(setEnabled(bool))); - - scene_->setBackgroundBrush(scene_->palette().window()); - - v_splitter->addWidget(step_widget_); - v_splitter->addWidget(key_wgt_); - v_splitter->addWidget(browser_wgt_); - - v_splitter2->addWidget(image_wgt_); - v_splitter2->addWidget(xml_wgt); - - h_splitter->addWidget(v_splitter); - h_splitter->addWidget(v_splitter2); - - win_->setCentralWidget(h_splitter); - - QList<int> v_sizes; - v_sizes << 200 << 250 << 350; - v_splitter->setSizes(v_sizes); - - QList<int> v_sizes2; - v_sizes2 << 725 << 175; - v_splitter2->setSizes(v_sizes2); - - QList<int> h_sizes; - h_sizes << 200 << 900; - h_splitter->setSizes(h_sizes); - - connect(browser_wgt_, SIGNAL(activated(QString, bool, bool)), - step_widget_, SLOT(fill_steps(QString, bool, bool))); - - connect(step_widget_, SIGNAL(change_base(bool)), - this, SLOT(change_base(bool))); - connect(step_widget_, SIGNAL(load_image(QString, bool)), - this, SLOT(load(QString, bool))); - connect(step_widget_, SIGNAL(load_xml(QString)), - this, SLOT(load_xml(QString))); - - connect(this, SIGNAL(mode_changed(bool)), - key_wgt_, SLOT(change_mode(bool))); - connect(this, SIGNAL(updated()), - image_wgt_, SLOT(update())); - connect(this, SIGNAL(fill_xml(QString)), - xml_wgt, SLOT(fill_widget(QString))); - - connect(key_wgt_, SIGNAL(updated(int, bool)), - this, SIGNAL(key_updated(int, bool))); - - connect(scene_, SIGNAL(selected(QString, QString)), - xml_wgt, SLOT(select(QString, QString))); - connect(scene_, SIGNAL(deselected()), - xml_wgt, SLOT(deselect())); - - connect(image_wgt_, SIGNAL(scaleUpdated(qreal)), - this, SLOT(maybeChangeCacheMode(qreal))); - - - // Progress dialog and process runner. - pdialog_.setModal(true); - pdialog_.setAutoClose(false); - pdialog_.setCancelButton(0); - connect(&runner_, SIGNAL(finished()), &pdialog_, SLOT(close())); - - connect(&runner_, SIGNAL(new_step(const QString&)), - &pdialog_, SLOT(setWindowTitle(const QString&))); - connect(&runner_, SIGNAL(new_progress_max_value(int)), - &pdialog_, SLOT(setMaximum(int))); - connect(&runner_, SIGNAL(new_progress_label(const QString&)), - &pdialog_, SLOT(setLabelText(const QString&))); - connect(&runner_, SIGNAL(progress()), - this, SLOT(run_progress())); - connect(&runner_, SIGNAL(xml_saved(const QString&)), - this, SLOT(on_xml_saved(const QString&))); - - extended_action->setChecked(true); -} - - -Viewer::~Viewer() -{ - // Remove temporary xml files. - foreach(QString file, tmp_files_to_remove_) - QFile::remove(file); -} - -void -Viewer::add_text(QDomNode line) -{ - - int a_height = line.toElement().attribute("aHeight", "0").toInt(); - int d_height = line.toElement().attribute("dHeight", "0").toInt(); - int x_height = line.toElement().attribute("xHeight", "0").toInt(); - - if (d_height < 0) - d_height = -d_height; - - if ( (a_height - x_height) < (d_height)) - a_height = x_height + d_height; - - if ( (a_height - x_height) > (d_height)) - d_height = a_height - x_height; - - QDomNode coords = line.firstChild(); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - { - qDebug() << "Warning : textline without coordinates..."; - return; - } - - QDomNode point = coords.firstChild(); - - int x_min = INT_MAX; - int y_min = INT_MAX; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - if (x < x_min) - x_min = x; - - if (y < y_min) - y_min = y; - - point = point.nextSibling(); - } - - QString text = line.toElement().attribute("text", ""); - QFont font("Times"); - font.setPixelSize(a_height + d_height); - QGraphicsTextItem* text_item = scene_->addText(text, font); - text_item->setPos(x_min, y_min); - text_item->setTextInteractionFlags(Qt::TextSelectableByMouse); - text_item->setZValue(5); - text_vector_ << text_item; - if (!text_) - scene_->removeItem(text_item); - -} - -void -Viewer::add_region(QDomNode father, QString attr_id) -{ - QDomNode coords = father.firstChild(); - QString name = father.toElement().tagName(); - region::RegionId id = static_cast<region::RegionId>(region_ids_[name]); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - { - qDebug() << "Warning : add_region - region without coordinates"; - return; - } - - QDomNode point = coords.firstChild(); - QVector<QPoint> points; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - points << QPoint(x, y); - point = point.nextSibling(); - } - - ImageRegion* r = new ImageRegion(id, - key_map_[id].first, - key_map_[id].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(id)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); -} - - -void -Viewer::add_typo_lines(QDomNode father, QString attr_id) -{ - // Retrieve typographical information - int baseline = father.toElement().attribute("baseline").toInt(); - int meanline = father.toElement().attribute("meanline").toInt(); - - QRect bbox; - - // Looking for bbox coordinates. - { - QDomNode coords = father.firstChild(); - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (coords.isNull()) - return; - - - QDomNode point = coords.firstChild(); - QVector<QPoint> points; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - points << QPoint(x, y); - point = point.nextSibling(); - } - - QPolygon polygon(points); - bbox = polygon.boundingRect(); - } - - // Creating blocks - - // Baseline - { - QVector<QPoint> points; - points.append(QPoint(bbox.topLeft().x(), baseline)); - points.append(QPoint(bbox.topRight().x(), baseline)); - - ImageRegion* r = new ImageRegion(region::Baseline, - key_map_[region::Baseline].first, - key_map_[region::Baseline].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(region::Baseline)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); - } - - // Meanline - { - QVector<QPoint> points; - points.append(QPoint(bbox.topLeft().x(), meanline)); - points.append(QPoint(bbox.topRight().x(), meanline)); - - ImageRegion* r = new ImageRegion(region::Meanline, - key_map_[region::Meanline].first, - key_map_[region::Meanline].second, - attr_id, points, - outline_action_->isChecked(), - fill_action_->isChecked(), - precise_action_->isChecked(), - key_wgt_->isChecked(region::Meanline)); - - connect(this, SIGNAL(key_updated(int, bool)), - r, SLOT(setDrawIfSameId(int, bool))); - connect(this, SIGNAL(setOutline(bool)), - r, SLOT(setOutline(bool))); - connect(this, SIGNAL(setPrecise(bool)), - r, SLOT(setPrecise(bool))); - connect(this, SIGNAL(setFill(bool)), - r, SLOT(setFill(bool))); - - scene_->addItem(r); - } -} - - -void -Viewer::load_xml(QString filename) -{ - app_->setOverrideCursor(QCursor(Qt::WaitCursor)); - emit fill_xml(filename); - - if (image_ && image_->scene() && image_->scene() == scene_) - scene_->removeItem(image_); - - text_vector_.clear(); - image_vector_.clear(); - scene_->clear(); - - if (!base64_ && use_image_ && image_) - scene_->addItem(image_); - - scene_->update(); - - xml_file_ = filename; - QFile f_in(xml_file_); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - QDomElement root = doc.documentElement(); - QDomNode page = root.firstChild(); - - while (!page.isNull() && !page.toElement().tagName().contains("Page")) - page = page.nextSibling(); - - if (page.isNull()) - return; - - int width = page.toElement().attribute("imageWidth", "none").toInt(); - int height = page.toElement().attribute("imageHeight", "none").toInt(); - - scene_->setSceneRect(0, 0, width, height); - - QDomNode region = page.firstChild(); - - while (!region.isNull()) - { - if (region.toElement().tagName().contains(QRegExp("(WhitespaceSeparator|Image|Graphic|Chart|Separator|Table|Text)Region"))) - { - QString attr_id = region.toElement().attribute("id", "none"); - add_region(region, attr_id); - - if ( base64_ && - region.toElement().tagName().contains(QRegExp("(Image|Graphic|Chart|Separator|Table)Region"))) - { - QDomNode container = region.firstChild(); - - while (!container.isNull() && !container.toElement().tagName().contains("container")) - container = container.nextSibling(); - - QDomNode coords = region.firstChild(); - - while (!coords.isNull() && !coords.toElement().tagName().contains("Coords")) - coords = coords.nextSibling(); - - if (!container.isNull() && !coords.isNull()) - { - QDomNode child = container.firstChild(); - - while (!child.isNull() && !child.toElement().tagName().contains("data")) - child = child.nextSibling(); - - QPixmap pix; - QString data = child.toElement().text(); - QByteArray ba; - ba = ba.append(data); - QByteArray out_ba = QByteArray::fromBase64(ba); - pix.loadFromData(out_ba); - - QGraphicsPixmapItem* image = new QGraphicsPixmapItem(pix); - - QDomNode point = coords.firstChild(); - - int x_min = INT_MAX; - int y_min = INT_MAX; - - while (!point.isNull()) - { - int x = point.toElement().attribute("x", "0").toInt(); - int y = point.toElement().attribute("y", "0").toInt(); - - if (x < x_min) - x_min = x; - - if (y < y_min) - y_min = y; - - point = point.nextSibling(); - } - - image->setShapeMode(QGraphicsPixmapItem::BoundingRectShape); - image->setZValue(0); - image->setOffset(x_min, y_min); - if (use_image_) - scene_->addItem(image); - image_vector_ << image; - - if (no_cache_) - image->setCacheMode(QGraphicsItem::NoCache); - else - image->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - - child = child.nextSibling(); - } - } - - if (region.toElement().tagName().contains("TextRegion")) - { - QDomNode line = region.firstChild(); - - do - { - while (!line.isNull() && !line.toElement().tagName().contains("Line")) - line = line.nextSibling(); - - if (!line.isNull()) - { - if (extended_mode_) - { - QString line_id = line.toElement().attribute("id", "none"); - add_region(line, line_id); - add_typo_lines(line, line_id); - } - add_text(line); - } - } - while (!(line = line.nextSiblingElement("Line")).isNull()); - } - } - - region = region.nextSibling(); - } - - //emit updated(); - scene_->update(); - key_wgt_->update_all(); - - app_->restoreOverrideCursor(); -} - -void -Viewer::load(QString filename, bool b) -{ - app_->setOverrideCursor(QCursor(Qt::WaitCursor)); - - scene_->clear(); - text_vector_.clear(); - image_vector_.clear(); - scene_->update(); - image_ = 0; - xml_file_ = QString::Null(); - - // Load the image in a pixmap that is directly shown on screen. - // This is very slow when used with the normal rendering system. - // OpenGL might speed up things a bit. - if (b) - image_ = new QGraphicsPixmapItem(load_base64(filename)); - else - image_ = new QGraphicsPixmapItem(QPixmap(filename)); - - current_image_ = filename; - - image_->setShapeMode(QGraphicsPixmapItem::BoundingRectShape); - image_->setZValue(0); - if (use_image_) - scene_->addItem(image_); - - if (no_cache_) - image_->setCacheMode(QGraphicsItem::NoCache); - else - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - - app_->restoreOverrideCursor(); - emit updated(); - - app_->restoreOverrideCursor(); -} - -int -Viewer::exec() -{ - win_->show(); - return app_->exec(); -} - -void -Viewer::help() -{ - HelpDialog dlg; - dlg.exec(); -} - -void -Viewer::maybeChangeCacheMode(qreal scale) -{ - if (image_) - { - if (scale >= 0.7) - image_->setCacheMode(QGraphicsItem::NoCache); - else if (!no_cache_) - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); - } -} - -void Viewer::useExtended(bool b) -{ - extended_mode_ = b; - key_wgt_->update_all(); - - if (xml_file_ != QString::Null()) - load_xml(xml_file_); - - emit mode_changed(b); -} - -void -Viewer::useCache(bool b) -{ - no_cache_ = b; - if (b) - { - if (image_) - image_->setCacheMode(QGraphicsItem::NoCache); - } - else - if (image_) - image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache); -} - -QPixmap Viewer::load_base64(QString xml) -{ - QPixmap pix; - QFile f_in(xml); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - QDomElement root = doc.documentElement(); - QDomNode child = root.firstChild(); - - while (!child.isNull() && !child.toElement().tagName().contains("Page")) - child = child.nextSibling(); - - child = child.firstChild(); - while (!child.isNull()) - { - if (child.toElement().tagName().contains(QRegExp("ImageRegion"))) - { - QDomNode node = child.firstChild(); - QString id = child.toElement().attribute("id", "none"); - - while (!node.isNull() && !node.toElement().tagName().contains("container")) - node = node.nextSibling(); - - if (!node.isNull()) - { - QString data = node.firstChildElement("data").text(); - QByteArray ba; - ba = ba.append(data); - QByteArray out_ba = QByteArray::fromBase64(ba); - pix.loadFromData(out_ba); - - return pix; - } - } - child = child.nextSibling(); - } - - return pix; -} - -void -Viewer::useText(bool b) -{ - text_ = b; - if (!b) - { - for (int i = 0; i < text_vector_.size(); ++i) - scene_->removeItem(text_vector_[i]); - } - else - { - for (int i = 0; i < text_vector_.size(); ++i) - scene_->addItem(text_vector_[i]); - } - - scene_->update(); -} - -void -Viewer::useImage(bool b) -{ - use_image_ = b; - if (!b) - { - if (image_ && image_->scene() && image_->scene() == scene_) - scene_->removeItem(image_); - - for (int i = 0; i < image_vector_.size(); ++i) - scene_->removeItem(image_vector_[i]); - } - else - { - if (image_ && image_->scene() == 0) - scene_->addItem(image_); - - for (int i = 0; i < image_vector_.size(); ++i) - scene_->addItem(image_vector_[i]); - } - - scene_->update(); -} - -void -Viewer::change_base(bool b) -{ - base64_ = b; -} - - -QAction -*Viewer::create_action(QString name, QMenu *menu, QString status, QString shortcut) -{ - QAction* action = new QAction(name, menu); - action->setStatusTip(status); - action->setShortcut(QKeySequence(shortcut)); - - return (action); -} - -void -Viewer::on_preferences() -{ - preferences_dialog *win = new preferences_dialog(win_); - win->show(); -} - - -void -Viewer::run_process() -{ - if (!current_image_.isEmpty()) - { - reset_progress_dialog(); - runner_.start_demat(current_image_); - } -} - - -void -Viewer::run_progress() -{ - pdialog_.setValue(pdialog_.value() + 1); -} - - -void -Viewer::on_xml_saved(const QString& filename) -{ - config * const conf = config::get_instance(); - - if (!conf->general_save_xml_enabled()) - tmp_files_to_remove_.insert(filename); - - QListWidgetItem *item = step_widget_->insert_new_entry(filename); - step_widget_->activate(item); -} - - -void -Viewer::export_as() -{ - QFileInfo f(browser_wgt_->current()); - QString output_suggestion = f.baseName() + ".pdf"; - QString output = QFileDialog::getSaveFileName(0, "Export document as...", output_suggestion, tr("PDF (*.pdf);; HTML (*.html *.htm)")); - - if (!output.isEmpty()) - { - reset_progress_dialog(); - runner_.start_export(browser_wgt_->current(), step_widget_->current(), output); - qDebug() << "Saving to " << output << " - " << browser_wgt_->current() << " - " << step_widget_->current(); - } -} - - -void -Viewer::reset_progress_dialog() -{ - pdialog_.setValue(0); - pdialog_.setLabelText(""); - pdialog_.show(); -} - - -void -Viewer::print() -{ - QPrinter printer(QPrinter::HighResolution); - configure_printer(printer); - - QPrintDialog dialog(&printer); - dialog.setWindowTitle(tr("Print Document")); - if (dialog.exec() != QDialog::Accepted) - return; - - do_print(&printer); -} - -void -Viewer::preview_print() -{ - QPrinter printer(QPrinter::HighResolution); - configure_printer(printer); - - QPrintPreviewDialog preview(&printer); - connect(&preview, SIGNAL(paintRequested(QPrinter *)), - this, SLOT(do_print(QPrinter *))); - - preview.exec(); -} - -void Viewer::do_print(QPrinter * printer) -{ - QList<QGraphicsItem *> items = image_wgt_->view()->items(); - - QPainter painter(printer); - - QGraphicsItem *item; - QStyleOptionGraphicsItem options; - - // Painting backward objects first. - for (int i = items.size() - 1; i >= 0; --i) - { - item = items.at(i); - - if (item != image_) - { - QRect vport = image_->mapRectFromItem(item, - item->boundingRect()).toRect(); - - painter.translate(std::abs(item->boundingRect().x() - vport.x()), - std::abs(item->boundingRect().y() - vport.y())); - } - - - item->paint(&painter, &options); - painter.resetTransform(); - } -} - -void -Viewer::configure_printer(QPrinter& printer) -{ - printer.setPageSize(QPrinter::A4); - printer.setResolution(300); -} diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh deleted file mode 100644 index c68dd02..0000000 --- a/scribo/demo/viewer/viewer.hh +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_VIEWER_HH -# define SCRIBO_DEMO_VIEWER_VIEWER_HH - -# include <QtGui> -# include <QDomNode> -# include "common.hh" -# include "runner.hh" -# include "image_widget.hh" - -class ImageScene; -class DomModel; -class KeyWidget; -class ImageRegion; -class StepWidget; -class BrowserWidget; - - -class Viewer - : public QObject -{ - Q_OBJECT - -public: - ~Viewer(); - - static Viewer* Instance(int &argc, char** argv); - - int exec(); - -public slots: - // Load the file as an image, load the layout if xml with the same - // name is found. - void load(QString filename, bool b); - void help(); - void load_xml(QString filename); - void maybeChangeCacheMode(qreal scale); - void useCache(bool b); - void useExtended(bool b); - void useText(bool b); - void useImage(bool b); - void change_base(bool b); - -private slots: - void on_preferences(); - void run_process(); - void run_progress(); - void on_xml_saved(const QString& filename); - void export_as(); - void print(); - void preview_print(); - void do_print(QPrinter * printer); - -signals: - void updated(); - void key_updated(int key, bool checked); - void setOutline(bool b); - void setPrecise(bool b); - void setFill(bool b); - void mode_changed(bool b); - void fill_xml(QString); - -private: - Viewer(int &argc, char** argv); - Viewer(); - - void xml_to_layout(); - QPixmap load_base64(QString xml); - void add_region(QDomNode father, QString attr_id); - void add_text(QDomNode line); - void add_typo_lines(QDomNode father, QString attr_id); - QAction *create_action(QString name, QMenu* menu, QString status, QString shortcut); - void reset_progress_dialog(); - void configure_printer(QPrinter& printer); - - QApplication* app_; - QMainWindow* win_; - StepWidget* step_widget_; - BrowserWidget* browser_wgt_; - - QGraphicsPixmapItem* image_; - - ImageScene* scene_; - ImageWidget* image_wgt_; - QDirModel* files_; - DomModel* doc_layout_; - - QAction* outline_action_; - QAction* fill_action_; - QAction* precise_action_; - QAction *export_action_; - - KeyWidget* key_wgt_; - - QMap<QString, int> region_ids_; - region::KeyMap key_map_; - - bool no_cache_; - bool extended_mode_; - QString xml_file_; - bool base64_; - bool text_; - bool use_image_; - QVector<QGraphicsTextItem *> text_vector_; - QVector<QGraphicsPixmapItem*> image_vector_; - QString current_image_; - - QProgressDialog pdialog_; - runner runner_; - - QSet<QString> tmp_files_to_remove_; -}; - -#include "viewer.hxx" - -#endif // ! SCRIBO_DEMO_VIEWER_VIEWER_HH diff --git a/scribo/demo/viewer/viewer.hxx b/scribo/demo/viewer/viewer.hxx deleted file mode 100644 index cba59f3..0000000 --- a/scribo/demo/viewer/viewer.hxx +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2010 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. - -#ifndef VIEWER_HXX_ -# define VIEWER_HXX_ - -# include "viewer.hh" - -inline Viewer* Viewer::Instance(int &argc, char** argv) -{ - static Viewer viewer(argc, argv); - - return &viewer; -} - -#endif /* !VIEWER_HXX_ */ diff --git a/scribo/demo/viewer/viewer.qrc b/scribo/demo/viewer/viewer.qrc deleted file mode 100644 index c64fdcc..0000000 --- a/scribo/demo/viewer/viewer.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="icons"> - <file>icons/olena_smaller.jpg</file> - </qresource> -</RCC> diff --git a/scribo/demo/viewer/xml.cc b/scribo/demo/viewer/xml.cc new file mode 100644 index 0000000..74c9112 --- /dev/null +++ b/scribo/demo/viewer/xml.cc @@ -0,0 +1,253 @@ +// Copyright (C) 2013 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/
>. + +#include "xml.hh" + +Xml::Xml(const QString& filename) +{ + load(filename); +} + +QString Xml::getPath(const QString& filename) +{ + Configs *const configs = Configs::getInstance(); + + QString xmlPath = filename; + + // Get xml filename from image path. + xmlPath.remove(0, xmlPath.lastIndexOf('/')+1); + int pos = xmlPath.lastIndexOf('.'); + xmlPath.remove(pos, xmlPath.length()-pos); + xmlPath += "_gui.xml"; + + return configs->generalSaveXmlCustomDirPath() + "/" + xmlPath; +} + +void Xml::isRecognized(const QDomElement& textElement) +{ + QDomElement lineElement = textElement.firstChild().nextSiblingElement("Line"); + + // Check if the attributes "text" exists in the attributes of line in the xml file. + isRecognized_ = lineElement.attributeNode("text").isNull() ? false : true; +} + +void Xml::load(const QString& filename) +{ + if(filename.isEmpty()) + { + xmlItem_ = 0; + graphicsItem_ = 0; + filename_ = QString(); + isRecognized_ = false; + return; + } + + // Reset graphic and tree items; + xmlItem_ = new XmlItem; + graphicsItem_ = new RootGraphicsItem(13); + filename_ = getPath(filename); + + QFile xmlFile(filename); + xmlFile.open(QIODevice::ReadOnly); + + // Fill new xml tree. + xml_.clear(); + xml_.setContent(&xmlFile); + + xmlFile.close(); + + QDomElement root = xml_.documentElement(); + xmlItem_->load(root); + xmlItem_->show(); + + root = root.firstChild().toElement(); + XmlItem *parentTreeItem = init(root, xmlItem_); + + // Run through the xml file structure by structure. + root = root.nextSibling().firstChild().toElement(); + // Check if the xml file has been recognized by the ocr or not. + isRecognized(root); + + processNode(root, datas_[0], parentTreeItem); + for(int i = 2; i < 11; i++) + processNode(root.nextSiblingElement(datas_[i].name), datas_[i], parentTreeItem); +} + +XmlItem *Xml::init(const QDomElement& root, XmlItem *rootTreeItem) +{ + XmlItem *metadataItem = new XmlItem(root, rootTreeItem); + + XmlItem *contentItem = 0; + + // Run through "METADATA" node and subnodes. + QDomElement node = root.firstChild().toElement(); + while(!node.isNull()) + { + contentItem = new XmlItem(node, metadataItem, contentItem); + node = node.nextSibling().toElement(); + } + + // Add "PAGE" root node and return it. + metadataItem = new XmlItem(root.nextSibling().toElement(), rootTreeItem, metadataItem); + metadataItem->show(); + + return metadataItem; +} + +void Xml::processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *pageItem) +{ + if(!root.isNull()) + { + // Create corresponding tree item. + XmlItem *regionItem = new XmlItem(root, pageItem); + + QDomElement node = root.firstChild().toElement(); + XmlItem *coordsItem = new XmlItem(node, regionItem); + + QPolygon polygon; + XmlItem *pointItem = 0; + QString x, y; + + // Run through all points data. + node = node.firstChild().toElement(); + while(!node.isNull()) + { + x = node.attribute("x", "null"); + y = node.attribute("y", "null"); + + pointItem = new XmlItem(node, coordsItem, pointItem); + + polygon << QPoint(x.toInt(), y.toInt()); + node = node.nextSibling().toElement(); + } + + // Create the graphics item from data structure. + RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); + graphicsItem->loadData(data); + graphicsItem_->addItemFrom(graphicsItem, data.region); + + // Store xml item and graphics item in each object for selection. + regionItem->setRegionItem(graphicsItem); + graphicsItem->setXmlItem(regionItem); + + if(data.region == GraphicsRegion::TextRegion) + processLineNode(root.firstChild().nextSiblingElement("Line"), coordsItem); + + // Run through all nodes from the same data structure recursively. + processNode(root.nextSiblingElement(data.name), data, pageItem); + } +} + +void Xml::processLineNode(const QDomElement& root, XmlItem *precItem) +{ + if(!root.isNull()) + { + // Create corresponding tree item. + XmlItem *lineItem = new XmlItem(root, precItem->parent(), precItem); + + QDomElement node = root.firstChild().toElement(); + XmlItem *coordsItem = new XmlItem(node, lineItem); + + QPolygon polygon; + XmlItem *pointItem = 0; + + QString xs, ys; + int x, y; + + int xMin = INT_MAX; + int xMax = INT_MIN; + + // Run through all points data. + node = node.firstChild().toElement(); + while(!node.isNull()) + { + xs = node.attribute("x", "null"); + ys = node.attribute("y", "null"); + + pointItem = new XmlItem(node, coordsItem, pointItem); + + x = xs.toInt(); + y = ys.toInt(); + + // Get beginning and end of line. + if(xMin > x) + xMin = x; + if(xMax < x) + xMax = x; + + polygon << QPoint(x, y); + node = node.nextSibling().toElement(); + } + + // Create the graphics item from data structure. + RegionItem *graphicsItem = new RegionItem(polygon, graphicsItem_); + graphicsItem->loadData(datas_[1]); + graphicsItem_->addItemFrom(graphicsItem, datas_[1].region); + + // Store xml item and graphics item in each object for selection. + lineItem->setRegionItem(graphicsItem); + graphicsItem->setXmlItem(lineItem); + + // Get meanline and baseline. + processTypoNode(root, QPoint(xMin, xMax)); + // Run through all line nodes recursively. + processLineNode(root.nextSiblingElement(datas_[1].name), lineItem); + } +} + +void Xml::processTypoNode(const QDomElement& root, const QPoint& xPoint) +{ + int yPos = root.attribute("baseline", "null").toInt(); + QGraphicsLineItem *baselineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); + baselineItem->setZValue(datas_[11].zValue); + graphicsItem_->addItemFrom(baselineItem, datas_[11].region); + + yPos = root.attribute("meanline", "null").toInt(); + QGraphicsLineItem *meanlineItem = new QGraphicsLineItem(QLine(QPoint(xPoint.x(), yPos), QPoint(xPoint.y(), yPos))); + meanlineItem->setZValue(datas_[12].zValue); + graphicsItem_->addItemFrom(meanlineItem, datas_[12].region); +} + + +XmlItem *Xml::xmlItem() +{ + return xmlItem_; +} + +RootGraphicsItem *Xml::graphicsItem() +{ + return graphicsItem_; +} + +QDomDocument Xml::document() const +{ + return xml_; +} + +QString Xml::filename() const +{ + return filename_; +} + +GraphicsRegion::Data Xml::dataFromRegion(GraphicsRegion::Id region) +{ + return datas_[region]; +} + +bool Xml::recognized() const +{ + return isRecognized_; +} diff --git a/scribo/demo/viewer/xml.hh b/scribo/demo/viewer/xml.hh new file mode 100644 index 0000000..c5f59d4 --- /dev/null +++ b/scribo/demo/viewer/xml.hh @@ -0,0 +1,91 @@ +// Copyright (C) 2013 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/
>. + +#ifndef XML_HH +# define XML_HH + +#include <QTreeWidgetItem> +#include <QGraphicsItem> +#include <QStringList> +#include <QDomElement> +#include <QDomAttr> +#include <climits> +#include <QFile> + +#include "Rendering/rootgraphicsitem.hh" +#include "Rendering/regionitem.hh" +#include "XmlWidget/xmlitem.hh" +#include "variantpointer.hh" +#include "configs.hh" +#include "region.hh" + +// WARNING : The order is VERY IMPORTANT (depending on the enum). +static const GraphicsRegion::Data datas_[] = +{ + /* COLOR | NAME | REGION | PARENT | Z */ + { QColor::fromRgb(0, 100, 0, 110), "TextRegion", GraphicsRegion::TextRegion, GraphicsRegion::Text, 1 }, + { QColor::fromRgb(255, 0, 0, 110), "Line", GraphicsRegion::Line, GraphicsRegion::Text, 2 }, + { QColor::fromRgb(0, 0, 255, 110), "VerticalSeparatorRegion", GraphicsRegion::VerticalSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(0, 0, 255, 110), "HorizontalSeparatorRegion", GraphicsRegion::HorizontalSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(0, 0, 128, 110), "WhitespaceSeparatorRegion", GraphicsRegion::WhiteSpaceSeparator, GraphicsRegion::Separators, 2 }, + { QColor::fromRgb(255, 120, 0, 110), "ImageRegion", GraphicsRegion::Image, GraphicsRegion::Miscellaneous, 1 }, + { QColor::fromRgb(43, 39, 128, 110), "NoiseRegion", GraphicsRegion::Noise, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(220, 246, 0, 110), "TableRegion", GraphicsRegion::Table, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(170, 0, 255, 110), "MathsRegion", GraphicsRegion::Maths, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(255, 0, 144, 110), "GraphicsRegion", GraphicsRegion::Graphic, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(0, 204, 255, 110), "ChartRegion", GraphicsRegion::Chart, GraphicsRegion::Miscellaneous, 2 }, + { QColor::fromRgb(128, 0, 255), "Baseline", GraphicsRegion::Baseline, GraphicsRegion::Typology, 3 }, + { QColor::fromRgb(128, 0, 255), "Meanline", GraphicsRegion::Meanline, GraphicsRegion::Typology, 3 }, + { QColor::fromRgb(255, 255, 255), "Text", GraphicsRegion::Text, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Separators", GraphicsRegion::Separators, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Miscellaneous", GraphicsRegion::Miscellaneous, GraphicsRegion::None, 0 }, + { QColor::fromRgb(255, 255, 255), "Typological Lines", GraphicsRegion::Typology, GraphicsRegion::None, 0 } +}; + +class Xml +{ +public: + explicit Xml(const QString& filename = QString()); + + XmlItem *xmlItem(); + RootGraphicsItem *graphicsItem(); + + QDomDocument document() const; + QString filename() const; + bool recognized() const; + + static QString getPath(const QString& filename); + + void load(const QString& filename); + static GraphicsRegion::Data dataFromRegion(GraphicsRegion::Id region); + +private: + XmlItem *init(const QDomElement& root, XmlItem *rootTreeItem); + void isRecognized(const QDomElement& element); + + void processNode(const QDomElement& root, const GraphicsRegion::Data& data, XmlItem *rootTreeItem); + void processLineNode(const QDomElement& root, XmlItem *rootTreeItem); + void processTypoNode(const QDomElement& root, const QPoint& xPoint); + + RootGraphicsItem *graphicsItem_; + XmlItem *xmlItem_; + + QDomDocument xml_; + QString filename_; + bool isRecognized_; +}; + +#endif // XML_HH diff --git a/scribo/demo/viewer/xml_widget.cc b/scribo/demo/viewer/xml_widget.cc deleted file mode 100644 index 642cf9a..0000000 --- a/scribo/demo/viewer/xml_widget.cc +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright (C) 2010, 2011 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/
>. - -#include "xml_widget.hh" - -XmlWidget::XmlWidget() - : tree_(new QTreeWidget()), - property_(new QTreeWidget()) -{ - QLabel* title = new QLabel(tr("XML")); - title->setAlignment(Qt::AlignHCenter); - - tree_->setHeaderHidden(true); - - QVBoxLayout* layout = new QVBoxLayout; - QHBoxLayout *hlayout = new QHBoxLayout; - - QStringList header_names; - header_names << tr("Name") << tr("Value"); - property_->setHeaderItem(new QTreeWidgetItem(header_names)); - - hlayout->addWidget(tree_); - hlayout->addWidget(property_); - - layout->addWidget(title); - layout->addLayout(hlayout); - - setLayout(layout); - - connect(tree_, SIGNAL(itemDoubleClicked (QTreeWidgetItem*, int)), - this, SLOT(check_item (QTreeWidgetItem*) ) ); -} - -void -XmlWidget::select(QString id, QString /*name*/) -{ - QDomNode n = node_map_[item_map_[id]]; - - if (!n.isNull()) - { - QTreeWidgetItem* item = node_map_.key(n); - - tree_->setCurrentItem(item, 0); - item->setExpanded(true); - check_item(item); - } -} - -void -XmlWidget::check_item (QTreeWidgetItem* item) -{ - QDomNode node = node_map_[item]; - - if (node.hasAttributes()) - { - property_->clear(); - QDomNamedNodeMap attributes = node.toElement().attributes(); - - for (int i = 0; i < attributes.count(); ++i) - { - QStringList values; - values << attributes.item(i).toAttr().name() << attributes.item(i).toAttr().value(); - property_->addTopLevelItem(new QTreeWidgetItem(values)); - } - } - - property_->resizeColumnToContents(0); -} - -void XmlWidget::NFS(QDomNode node, QTreeWidgetItem* item) -{ - if (!node.isNull()) - { - QString append; - if (node.toElement().tagName().contains("Point")) - { - QString x = node.toElement().attribute("x", "0"); - QString y = node.toElement().attribute("y", "0"); - append.append(" = (" + x + ", " + y + ")"); - } - - QTreeWidgetItem* child = - new QTreeWidgetItem(QStringList(node.toElement().tagName() + node.nodeValue() + append)); - - if (node.hasAttributes()) - { - QString id = node.toElement().attribute("id", "none"); - item_map_[id] = child; - } - - node_map_[child] = node; - item->addChild(child); - - QDomNode sibling = node.firstChild(); - while (!sibling.isNull()) - { - if (!sibling.toElement().tagName().contains("data")) - NFS(sibling, child); - else - { - QTreeWidgetItem* child_son = - new QTreeWidgetItem(QStringList("data = base64-encoded")); - - child->addChild(child_son); - } - sibling = sibling.nextSibling(); - } - } -} - -void XmlWidget::fill_widget(QString xml) -{ - node_map_.clear(); - item_map_.clear(); - - tree_->clear(); - property_->clear(); - QFile f_in(xml); - f_in.open(QIODevice::ReadOnly); - - QDomDocument doc; - doc.setContent(&f_in); - f_in.close(); - - int i = 0; - - QDomElement root = doc.documentElement(); - QTreeWidgetItem* root_item= - new QTreeWidgetItem(QStringList(root.tagName())); - - tree_->addTopLevelItem(root_item); - root = root.firstChild().toElement(); - - while (!root.isNull()) - { - ++i; - NFS(root, root_item); - root = root.nextSibling().toElement(); - } -} - -void -XmlWidget::deselect() -{ - property_->clear(); -} - -XmlWidget::~XmlWidget() -{ -} diff --git a/scribo/demo/viewer/xml_widget.hh b/scribo/demo/viewer/xml_widget.hh deleted file mode 100644 index b7cd868..0000000 --- a/scribo/demo/viewer/xml_widget.hh +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2010 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/
>. - -#ifndef SCRIBO_DEMO_VIEWER_XML_WIDGET_HH -# define SCRIBO_DEMO_VIEWER_XML_WIDGET_HH - -# include <QtGui> -# include <QDomNode> - -class DomModel; - -class XmlWidget - : public QWidget -{ - Q_OBJECT - -public: - XmlWidget(); - ~XmlWidget(); - -public slots: - void select(QString id, QString name); - void deselect(); - void fill_widget(QString xml); - void check_item (QTreeWidgetItem* item); - -private: - void NFS(QDomNode node, QTreeWidgetItem* item); - QTreeWidget* tree_; - QTreeWidget* property_; - QMap<QString, QTreeWidgetItem*> item_map_; - QMap<QTreeWidgetItem*, QDomNode> node_map_; -}; - -#endif // ! SCRIBO_DEMO_VIEWER_XML_WIDGET_HH -- 1.7.2.5
11 years, 10 months
1
0
0
0
branch unstable/scribo updated: olena-2.0-224-g69a8bfc
by git@lrde.epita.fr
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 unstable/scribo has been updated via 69a8bfc3ef6b444b37f7c6d2e974d86ef5d4488a (commit) via aca68d9d5cead2bcf349ea3d4f2a22e9d24a3775 (commit) via 94d54581bce6a3bfe96ac3614a3a7017c879fcd5 (commit) via 6c791fefc2a93fe92eaf4d91821b157fb7efd22f (commit) via ab0344329d2bdd21a19307a1ffadd58115937ce8 (commit) via e27c410b8f3e81106432ab14212e886e245c11b3 (commit) via 096f3277a5dc84d0a4dc284dc030d13c94f7ccc0 (commit) via 4d0f7e21480dcafde0dcdffd90770e39d0724b2b (commit) via d8df2a51a54be6a929145348178edc41368d79db (commit) via 155ebbe20c5028ce77059696dbc1c31279fd4916 (commit) via 843aad8f634ad3f8950127dbd390a10f03473e0f (commit) via 9ec795020788ea4faba152b7774b62c4736a3bc8 (commit) via 824b198117b490e8e368f7705fec4bfe2a48bc9c (commit) via 355b7419a5130d0c9891fe2b151d73cce563883a (commit) via 32803c365ae89bb5411c6c708dfeaef28d84e37e (commit) via 0f3d77e27c06085247b3005024aceb37f40dfd65 (commit) via 3a248bc84533d6a24aa80dae9bcffe9742a7ac55 (commit) via 12d0a854b02ee047bd2139472c62fec2c24ca329 (commit) via 245453d30a1fd640924990d2164968a44e147e6e (commit) via 1db398e0b2928df6e8ac40c96864f1e460bcaa77 (commit) via 50e66038cb273e1a9a44847821729781030cde92 (commit) via 063c717a3628a5ddba0eced68ba8154403cf3156 (commit) via 2088b4c018a40c82f47a55de17d646d29519b488 (commit) via 0abc322fa3646540c4c31787a1b86893270b48e8 (commit) via 62a8605f575c8c161a68fc74ee33890b914f53d1 (commit) via 40e7cc0fc6488f9fbcc9860dcc4e8a8a57fbbf89 (commit) via 5d515548a805f3ff3675796d48a68712e8154518 (commit) via a814e2b86d4746b08c4ea2c2e565f051a38580cf (commit) via 5d7fb449c3d5506f11f483df0436265b900a2f0e (commit) via 176908242450d2d4457f592041d1b76e1e257755 (commit) via 6e24fcedd67b80c1bd531626631dee19e980f767 (commit) via 6a5f908ae3bb1927c93cc1c5e1fadf84b0fe979b (commit) via 8ae6c4cd403b65251711a61357adcd508340f7dc (commit) via f2b50a1a59ae30cd8c3c6a8aa5398bfeb3463834 (commit) via d4f02abaac288198bb1c74ad64817d2dfd015824 (commit) via 85c24dedfb231d87cdfbdc4b9fb5d1c8185fab9e (commit) via f782485fde9e54c6ff3140d3640078d1ee2b291b (commit) via 1f8557cf6b87813b244af2e50fda82428f433a37 (commit) via c52c5f64e6a2fc3b94e0cf171f4d59e78a4b4bc5 (commit) via 44a94cb2fff571b70ad79e79c711481654e6be6b (commit) via 9f51f7b4638bc3d792638d22753f3f2b02181798 (commit) via 279bb010ecb9b8aac09d53da5c849c7149ffc160 (commit) via 8bafffd99d6176417e15a4b63fc838b64c8b8b62 (commit) via 8fbf9f2fbe5d3d41ffdc5d9a7a6e395615a8a8e3 (commit) via d4b9819e60f71e7f6e56f4fa48a9246ad5720225 (commit) via 996b7f6c5acfd0d00dadc2029d18c2e08f028cec (commit) via 26f95b1755a17fd2493f70fddde58f1f92362c31 (commit) via fddc057bccf8cb5a54f17d2d14a22f8a56126273 (commit) via 3cf38cdc895c378bab0a62dac04988850ef17e0f (commit) via 9e4ce856d1d29493dab00b083740dad80e701f1f (commit) via 4eb9bb1fcae2fa1ec32ccb3dd5975b09d7255421 (commit) via aa29f39128e0a0dcb09361568357d3b3217bc35e (commit) via cffe62e5cff26c4b5dbdc5d2d598ffbada51d9eb (commit) via 13174eafba2824096b4916382075b98085208e85 (commit) via b654f0d48265b56eda78f0df27cb1a414f7f7e5a (commit) via b4ca8d4c88354e1577271f6103b13e1ab1f285c6 (commit) via 08bc024b524e8e1c89b9baa4070eb562715f0b03 (commit) via 72ee021ea66c1cb31d559c7803596199c11dea02 (commit) via 3864857f85d254caf232b2a9fb4c547d7bf8f11a (commit) via f8e2ffe537bc8dc29cc432ef21462dee8046d0dc (commit) via bc142a16b5a6963f43b63f286e4f201a69ad9211 (commit) via cfc65f324dbe578cea17162f954e90e696f260c3 (commit) via b2369d6d4c5f48d3b44808b8be120cc380363774 (commit) via 2b70784ca52b9411cc83b882ee3009d1d673fbc3 (commit) via 0495fcc3c300f95b89efeb60315c99a6d4cc7b7d (commit) via 223d19db8b270a2aea87a45a5bf3b26d136bc3e0 (commit) via 4cc8793a572e16b76ca437fdefc8d3539c25ccbe (commit) via 324abfb27047a96a29edd686dc0a8aa5cc2d6699 (commit) via e33727052ccf1d6c683cd2492d060ded7fccd7f4 (commit) via 39e1152eceddabf1c61e368c2f7bd477dbc2c46e (commit) via 1a7b4fcf3f2e141a6b59bc39db3ae2298329b379 (commit) via 0a1c1c9af1b82c13146555ce8caca89030e7af58 (commit) via 287d09bba75106e59f22e1a313225481cf7f9bd8 (commit) via cc2c4ef347d9a8fdce6fc6bbf29213f14e366131 (commit) via 3363574ac18e8b13b42f21d354a1901a511c513d (commit) via bd2670fbf582fc5c238507bdb3d9543d5bcb0577 (commit) via 849c13701f8eb2e08d838979c7b3539332cf099a (commit) via dcad6adc4a6b9469f79c055f1c2a5138c74e6f29 (commit) via d590e49dcb0541a2f964fbbc10032fa3ffcc260b (commit) via 21c2800d395c87adb3e456adb3a2f1ece83fe0fd (commit) via 558a2abb439427e9f267698ce3f1541bda95b395 (commit) via 6b931cc6d218c25448e7bf3479c98c16acd7daa1 (commit) via 1e58a782ca5f922f685e967dd35a570c7b6dd16e (commit) via 4649bd3bb8ff982893c774075f03d937fe3d995b (commit) via 7cbb3cb04ebbf5b76672a8733629fce9a8cb591b (commit) via 5a934f2c1678ae9bce79836ef2a11f6005e69b7b (commit) via e32d709852606cfc30d2bb673b1fa6042e2b0185 (commit) via 14bf21225e9519b342dbc7eea62ce761f1523d4e (commit) via 75d065e29b6a317d9d4c78ba8d35a214639bb02c (commit) from a6aaffe887605d9d3168584eb4b68646c29ade13 (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 ----------------------------------------------------------------- 69a8bfc tests/unit_test/unit-tests.mk: Update. aca68d9 tests/unit_test/unit-tests.mk: Update. 94d5458 Fix call to text_in_doc_preprocess(). 6c791fe Fix various warnings. ab03443 common.mk: Fix include paths order. e27c410 tests/data.hh.in: Rename guards. 096f327 Fix a warning. 4d0f7e2 Merge branch 'next' into unstable/scribo ----------------------------------------------------------------------- Summary of changes: ChangeLog | 273 +- HACKING | 92 +- Makefile.am | 99 +- README | 15 - bootstrap | 25 +- build-aux/.gitignore | 1 + build-aux/build_unit_test.sh | 4 +- build-aux/generate_dist_headers.sh | 44 +- build-aux/strip-lrde | 23 - {milena/tests => build-aux}/tests-recursive.mk | 0 build-aux/texi2dvi | 146 +- configure.ac | 43 +- dynamic-use-of-static-c++/.vcs | 23 - .../vcs/dynamic_static_bridge_vcs.rb | 15 - external/Makefile.am | 21 - external/README | 71 - external/trimesh/.gitignore | 6 - external/trimesh/COPYING | 302 - external/trimesh/ChangeLog | 95 - external/trimesh/Makedefs.Darwin | 53 - external/trimesh/Makedefs.Linux | 59 - external/trimesh/Makedefs.Linux64 | 59 - external/trimesh/Makedefs.SunOS | 50 - external/trimesh/Makedefs.Win32 | 69 - external/trimesh/Makefile.am | 19 - external/trimesh/Makerules | 80 - external/trimesh/README | 144 - external/trimesh/configure.ac | 62 - external/trimesh/gluit/COPYING.freeglut | 27 - external/trimesh/gluit/COPYING.glui | 504 - external/trimesh/gluit/Makefile.am | 91 - external/trimesh/gluit/freeglut_callbacks.c | 336 - external/trimesh/gluit/freeglut_cursor.c | 270 - external/trimesh/gluit/freeglut_display.c | 99 - external/trimesh/gluit/freeglut_ext.c | 205 - external/trimesh/gluit/freeglut_font.c | 368 - external/trimesh/gluit/freeglut_font_data.c | 2024 - external/trimesh/gluit/freeglut_gamemode.c | 598 - external/trimesh/gluit/freeglut_geometry.c | 1147 - .../trimesh/gluit/freeglut_glutfont_definitions.c | 77 - external/trimesh/gluit/freeglut_init.c | 899 - external/trimesh/gluit/freeglut_internal.h | 854 - external/trimesh/gluit/freeglut_joystick.c | 1805 - external/trimesh/gluit/freeglut_main.c | 1982 - external/trimesh/gluit/freeglut_menu.c | 949 - external/trimesh/gluit/freeglut_misc.c | 179 - external/trimesh/gluit/freeglut_overlay.c | 49 - external/trimesh/gluit/freeglut_state.c | 694 - .../trimesh/gluit/freeglut_stroke_mono_roman.c | 2821 - external/trimesh/gluit/freeglut_stroke_roman.c | 2821 - external/trimesh/gluit/freeglut_structure.c | 651 - external/trimesh/gluit/freeglut_teapot.c | 207 - external/trimesh/gluit/freeglut_teapot_data.h | 2428 - external/trimesh/gluit/freeglut_videoresize.c | 54 - external/trimesh/gluit/freeglut_window.c | 1092 - external/trimesh/gluit/glui.cc | 1960 - external/trimesh/gluit/glui_add_controls.cc | 742 - external/trimesh/gluit/glui_algebra3.cc | 1037 - external/trimesh/gluit/glui_algebra3.h | 474 - external/trimesh/gluit/glui_arcball.cc | 223 - external/trimesh/gluit/glui_arcball.h | 80 - external/trimesh/gluit/glui_bitmap_img_data.cc | 22 - external/trimesh/gluit/glui_bitmaps.cc | 104 - external/trimesh/gluit/glui_button.cc | 208 - external/trimesh/gluit/glui_checkbox.cc | 313 - external/trimesh/gluit/glui_column.cc | 76 - external/trimesh/gluit/glui_control.cc | 1223 - external/trimesh/gluit/glui_edittext.cc | 1045 - external/trimesh/gluit/glui_img_checkbox_0.c | 38 - external/trimesh/gluit/glui_img_checkbox_0_dis.c | 38 - external/trimesh/gluit/glui_img_checkbox_1.c | 38 - external/trimesh/gluit/glui_img_checkbox_1_dis.c | 38 - external/trimesh/gluit/glui_img_downarrow.c | 56 - external/trimesh/gluit/glui_img_leftarrow.c | 56 - external/trimesh/gluit/glui_img_listbox_down.c | 42 - external/trimesh/gluit/glui_img_listbox_up.c | 42 - external/trimesh/gluit/glui_img_listbox_up_dis.c | 42 - external/trimesh/gluit/glui_img_radiobutton_0.c | 44 - .../trimesh/gluit/glui_img_radiobutton_0_dis.c | 44 - external/trimesh/gluit/glui_img_radiobutton_1.c | 44 - .../trimesh/gluit/glui_img_radiobutton_1_dis.c | 44 - external/trimesh/gluit/glui_img_rightarrow.c | 56 - external/trimesh/gluit/glui_img_spindown_0.c | 24 - external/trimesh/gluit/glui_img_spindown_1.c | 24 - external/trimesh/gluit/glui_img_spindown_dis.c | 24 - external/trimesh/gluit/glui_img_spinup_0.c | 24 - external/trimesh/gluit/glui_img_spinup_1.c | 24 - external/trimesh/gluit/glui_img_spinup_dis.c | 24 - external/trimesh/gluit/glui_img_uparrow.c | 56 - external/trimesh/gluit/glui_listbox.cc | 445 - external/trimesh/gluit/glui_mouse_iaction.cc | 212 - external/trimesh/gluit/glui_node.cc | 175 - external/trimesh/gluit/glui_panel.cc | 178 - external/trimesh/gluit/glui_quaternion.cc | 229 - external/trimesh/gluit/glui_quaternion.h | 97 - external/trimesh/gluit/glui_radio.cc | 341 - external/trimesh/gluit/glui_rollout.cc | 286 - external/trimesh/gluit/glui_rotation.cc | 389 - external/trimesh/gluit/glui_separator.cc | 60 - external/trimesh/gluit/glui_slider.cc | 725 - external/trimesh/gluit/glui_spinner.cc | 579 - external/trimesh/gluit/glui_statictext.cc | 124 - external/trimesh/gluit/glui_stdinc.h | 131 - external/trimesh/gluit/glui_translation.cc | 518 - external/trimesh/gluit/gluit.mk | 16 - external/trimesh/include/Color.h | 107 - external/trimesh/include/GL/freeglut.h | 22 - external/trimesh/include/GL/freeglut_ext.h | 124 - external/trimesh/include/GL/freeglut_std.h | 579 - external/trimesh/include/GL/glui.h | 1767 - external/trimesh/include/GL/glut.h | 29 - external/trimesh/include/GLCamera.h | 74 - external/trimesh/include/ICP.h | 40 - external/trimesh/include/KDtree.h | 46 - external/trimesh/include/Makefile.am | 21 - external/trimesh/include/TriMesh.h | 161 - external/trimesh/include/TriMesh_algo.h | 145 - external/trimesh/include/Vec.h | 459 - external/trimesh/include/XForm.h | 317 - external/trimesh/include/bsphere.h | 273 - external/trimesh/include/lineqn.h | 358 - external/trimesh/include/mempool.h | 88 - external/trimesh/include/noise3d.h | 127 - external/trimesh/include/timestamp.h | 69 - external/trimesh/libsrc/GLCamera.cc | 378 - external/trimesh/libsrc/ICP.cc | 859 - external/trimesh/libsrc/KDtree.cc | 299 - external/trimesh/libsrc/Makefile.am | 34 - external/trimesh/libsrc/TriMesh_bounding.cc | 135 - external/trimesh/libsrc/TriMesh_connectivity.cc | 124 - external/trimesh/libsrc/TriMesh_curvature.cc | 325 - external/trimesh/libsrc/TriMesh_grid.cc | 109 - external/trimesh/libsrc/TriMesh_io.cc | 1925 - external/trimesh/libsrc/TriMesh_normals.cc | 118 - external/trimesh/libsrc/TriMesh_pointareas.cc | 77 - external/trimesh/libsrc/TriMesh_stats.cc | 46 - external/trimesh/libsrc/TriMesh_tstrips.cc | 245 - external/trimesh/libsrc/diffuse.cc | 353 - external/trimesh/libsrc/edgeflip.cc | 176 - external/trimesh/libsrc/faceflip.cc | 30 - external/trimesh/libsrc/filter.cc | 491 - external/trimesh/libsrc/lmsmooth.cc | 76 - external/trimesh/libsrc/mesh_align.cc | 78 - external/trimesh/libsrc/mesh_view.cc | 599 - external/trimesh/libsrc/remove.cc | 137 - external/trimesh/libsrc/reorder_verts.cc | 210 - external/trimesh/libsrc/subdiv.cc | 396 - external/trimesh/utilsrc/Makefile.am | 26 - external/trimesh/utilsrc/mesh_align.cc | 91 - external/trimesh/utilsrc/mesh_cat.cc | 84 - external/trimesh/utilsrc/mesh_cc.cc | 333 - external/trimesh/utilsrc/mesh_filter.cc | 394 - external/trimesh/utilsrc/mesh_make.cc | 976 - external/trimesh/utilsrc/mesh_shade.cc | 508 - external/trimesh/utilsrc/mesh_view.cc | 598 - milena/ChangeLog | 636 +- milena/Makefile.am | 14 +- milena/apps/Makefile.am | 5 +- milena/apps/constrained-connectivity/Makefile.am | 5 +- milena/apps/graph-morpho/Makefile.am | 8 +- milena/apps/mesh-segm-skel/Makefile.am | 79 +- milena/apps/mesh-segm-skel/io.hh | 205 - .../mesh-segm-skel/mesh-complex-max-curv-segm.cc | 2 +- .../apps/mesh-segm-skel/mesh-complex-max-curv.cc | 2 +- milena/apps/mesh-segm-skel/mesh-max-curv.cc | 125 - milena/apps/mesh-segm-skel/mesh-pinv-curv.cc | 105 - milena/apps/mesh-segm-skel/mesh-segm.cc | 230 - milena/apps/mesh-segm-skel/mesh-skel.cc | 207 - milena/apps/mesh-segm-skel/misc.hh | 661 + milena/apps/mesh-segm-skel/test-mesh-max-curv.in | 23 - milena/apps/mesh-segm-skel/test-mesh-segm.in | 26 - milena/apps/mesh-segm-skel/trimesh/README | 4 - milena/apps/mesh-segm-skel/trimesh/misc.hh | 660 - milena/apps/morphers/Makefile.am | 71 + milena/apps/morphers/image2d-skel.hh | 137 + milena/apps/morphers/iz.cc | 173 + milena/apps/morphers/iz_input.pbm | Bin 0 -> 21890 bytes milena/apps/morphers/lazy_recorder.cc | 62 + milena/apps/morphers/lazy_recorder.hh | 206 + milena/apps/morphers/mask+channel.cc | 67 + milena/apps/morphers/mask+recorder.cc | 65 + milena/apps/morphers/recorder-bft.cc | 114 + milena/apps/morphers/recorder-wst.cc | 106 + milena/apps/morphers/recorder.cc | 61 + milena/apps/morphers/recorder.hh | 182 + milena/apps/papers/levillain.09.ismm/Makefile.am | 30 +- .../papers/levillain.09.ismm/classif-1complex.cc | 307 + .../apps/papers/levillain.09.ismm/classif-graph.cc | 287 + .../apps/papers/levillain.09.ismm/classseedsi.pbm | 6415 + milena/apps/papers/levillain.09.ismm/graph.cc | 255 +- .../papers/levillain.09.ismm/influence_zones.hh | 84 + milena/apps/papers/levillain.09.ismm/io.hh | 242 + milena/common.mk | 22 + .../examples/tuto4_genericity_and_algorithms.cc | 5 +- milena/doc/tools/split_sample.sh | 6 +- milena/headers.mk | 111 +- milena/mln/accu/math/all.hh | 5 - milena/mln/accu/math/inf.hh | 178 - milena/mln/accu/math/sup.hh | 180 - milena/mln/accu/site_set/rectangularity.hh | 19 +- milena/mln/all.hh | 12 +- milena/mln/canvas/browsing/diagonal2d.hh | 7 +- milena/mln/canvas/browsing/snake_fwd.hh | 2 +- milena/mln/canvas/browsing/snake_vert.hh | 2 +- milena/mln/canvas/labeling/sorted.hh | 6 +- milena/mln/canvas/labeling/video.hh | 5 +- milena/mln/clustering/kmean_rgb.hh | 18 +- milena/mln/core/concept/proxy.hxx | 26 +- milena/mln/core/image/imorph/decorated_image.hh | 26 + milena/mln/core/image/vmorph/all.hh | 5 +- milena/mln/core/image/vmorph/fun_image.hh | 4 +- milena/mln/core/image/vmorph/thrubin_image.hh | 254 - milena/mln/data/all.hh | 4 +- milena/mln/data/was.median.hh | 207 - milena/mln/essential/routine.hh | 12 +- milena/mln/extract/all.hh | 51 - milena/mln/extract/blue.hh | 63 - milena/mln/extract/essential.hh | 36 - milena/mln/extract/green.hh | 63 - milena/mln/extract/hue.hh | 63 - milena/mln/extract/lum.hh | 63 - milena/mln/extract/red.hh | 63 - milena/mln/extract/sat.hh | 63 - milena/mln/fun/access/all.hh | 50 - milena/mln/fun/access/mean.hh | 89 - milena/mln/fun/accu_result.hh | 70 - milena/mln/fun/all.hh | 8 +- milena/mln/fun/binary.hh | 92 - milena/mln/fun/binary_param.hh | 100 - milena/mln/fun/component/comp.hh | 108 - milena/mln/fun/component/comp_count.hh | 96 - milena/mln/fun/component/ithcomp.hh | 80 - milena/mln/fun/component/scomp.hh | 87 - milena/mln/fun/compose.hh | 115 - milena/mln/fun/composition.hh | 221 - milena/mln/fun/essential.hh | 4 +- milena/mln/fun/from_accu.hh | 136 - milena/mln/fun/math/abs.hh | 67 - milena/mln/fun/math/cos.hh | 89 - milena/mln/fun/math/inf.hh | 67 - milena/mln/fun/math/norm.hh | 117 - milena/mln/fun/math/sup.hh | 67 - milena/mln/fun/meta/all.hh | 51 - milena/mln/fun/meta/blue.hh | 90 - milena/mln/fun/meta/essential.hh | 31 - milena/mln/fun/meta/first.hh | 90 - milena/mln/fun/meta/green.hh | 90 - milena/mln/fun/meta/hue.hh | 119 - milena/mln/fun/meta/inty.hh | 88 - milena/mln/fun/meta/lum.hh | 88 - milena/mln/fun/meta/red.hh | 90 - milena/mln/fun/meta/sat.hh | 122 - milena/mln/fun/meta/second.hh | 90 - milena/mln/fun/meta/to_enc.hh | 77 - milena/mln/fun/point/col.hh | 83 - milena/mln/fun/point/row.hh | 81 - milena/mln/fun/point/sli.hh | 81 - milena/mln/fun/spe/binary.hh | 145 - milena/mln/fun/unary_param.hh | 100 - milena/mln/fun/v2v/all.hh | 10 +- milena/mln/fun/v2v/essential.hh | 4 +- milena/mln/fun/v2v/hsi_to_rgb.hh | 134 - milena/mln/fun/v2v/rgb_to_hsi.hh | 124 - milena/mln/geom/seeds2tiling_roundness.hh | 3 +- milena/mln/io/plot/save.hh | 6 +- milena/mln/labeling/value_and_compute.hh | 15 +- milena/mln/linear/all.hh | 12 - milena/mln/linear/gaussian/filter.hh | 140 - milena/mln/linear/gaussian/impl.hh | 460 - .../mln/linear/gaussian/internal/coefficients.hh | 298 - milena/mln/metal/math/pow.hh | 7 +- milena/mln/metal/math/root.hh | 5 +- milena/mln/morpho/tree/propagate_node.hh | 4 +- milena/mln/morpho/watershed/topological.hh | 6 +- milena/mln/registration/all.hh | 48 - milena/mln/registration/essential.hh | 36 - milena/mln/registration/get_rot.hh | 151 - milena/mln/registration/get_rtransf.hh | 94 - milena/mln/registration/internal/rms.hh | 80 - milena/mln/registration/registration.hh | 391 - milena/mln/subsampling/all.hh | 47 - milena/mln/subsampling/antialiased.hh | 3 +- milena/mln/subsampling/essential.hh | 35 - milena/mln/subsampling/gaussian_subsampling.hh | 90 - milena/mln/subsampling/subsampling.hh | 114 - milena/mln/tag/init.hh | 3 + milena/mln/topo/complex.hh | 54 +- milena/mln/topo/face_iter.hh | 7 +- milena/mln/topo/n_face_iter.hh | 5 +- milena/mln/trait/all.hh | 6 - milena/mln/trait/ch_value.hh | 19 - milena/mln/util/object_id.hh | 4 +- milena/mln/util/tracked_ptr.hh | 32 +- milena/mln/value/all.hh | 8 - milena/mln/value/essential.hh | 5 - milena/mln/value/graylevel.hh | 23 +- milena/mln/value/graylevel_f.hh | 255 +- milena/mln/value/graylevel_f.hxx | 319 + milena/mln/value/hsi.hh | 113 - milena/mln/value/int_s24.hh | 49 + milena/mln/value/int_u24.hh | 49 + milena/mln/value/internal/gray_f.hh | 320 +- milena/mln/value/internal/gray_f.hxx | 160 + milena/mln/value/shell.hh | 164 - milena/mln/value/stack.hh | 334 - .../mln/world/inter_pixel/dim2/make_edge_image.hh | 3 +- milena/mln/world/rgb/invert.hh | 6 +- milena/new-header | 155 + milena/nodist-headers | 84 - milena/sandbox/ChangeLog |12247 -- milena/sandbox/abraham/README | 11 - milena/sandbox/abraham/img/dots.pgm | Bin 452 -> 0 bytes milena/sandbox/abraham/img/lena.pgm | 5 - milena/sandbox/abraham/img/lena.ppm | 5 - milena/sandbox/abraham/img/little_test.pgm | 5 - milena/sandbox/abraham/img/test.pgm | Bin 243 -> 0 bytes .../abraham/mln/core/site_set/p_priority_queue.hh | 352 - milena/sandbox/abraham/mln/fun/v2v/rgb_to_hsi.hh | 175 - milena/sandbox/abraham/mln/io/tikz/save.hh | 254 - milena/sandbox/abraham/mln/io/tikz/save_header.hh | 90 - milena/sandbox/abraham/mln/level/thru.hh | 115 - .../abraham/mln/morpho/autarkical_leveling.hh | 156 - milena/sandbox/abraham/mln/morpho/basic_najman.hh | 893 - milena/sandbox/abraham/mln/morpho/hit_or_miss.hh | 84 - .../mln/morpho/images/result_m_watershed.pgm | Bin 177 -> 0 bytes .../mln/morpho/images/result_topo_watershed.pgm | Bin 177 -> 0 bytes .../sandbox/abraham/mln/morpho/images/test_2.pgm | 5 - .../sandbox/abraham/mln/morpho/images/test_3.pgm | 29 - .../sandbox/abraham/mln/morpho/images/test_4.pgm | 5 - .../mln/morpho/images/test_component_mapping.pgm | 5 - .../mln/morpho/images/test_component_tree.pgm | Bin 65 -> 0 bytes .../abraham/mln/morpho/images/test_watershed.pgm | Bin 177 -> 0 bytes milena/sandbox/abraham/mln/morpho/najman_wst.hh | 791 - milena/sandbox/abraham/mln/morpho/topo_wst.hh | 768 - milena/sandbox/abraham/mln/morpho/vector_median.hh | 129 - milena/sandbox/abraham/mln/morpho/vmt.hh | 126 - milena/sandbox/abraham/mln/trait/images.hh | 239 - milena/sandbox/abraham/mln/transform/fft.hh | 693 - .../sandbox/abraham/mln/value/builtin/symbolics.hh | 76 - milena/sandbox/abraham/tests/core/concept/test.cc | 75 - .../abraham/tests/core/image/fun_image_const.cc | 65 - .../abraham/tests/core/image/fun_image_norm.cc | 64 - .../abraham/tests/core/image/fun_image_v2v.cc | 57 - .../abraham/tests/core/image/fun_image_v2w2v.cc | 64 - .../sandbox/abraham/tests/core/image/thru_const.cc | 65 - .../sandbox/abraham/tests/core/image/thru_norm.cc | 59 - .../sandbox/abraham/tests/core/image/thru_v2v.cc | 57 - .../sandbox/abraham/tests/core/image/thru_v2w2v.cc | 65 - .../abraham/tests/core/image/violent_cast_image.cc | 56 - milena/sandbox/abraham/tests/fun/meta/red.cc | 67 - milena/sandbox/abraham/tests/fun/v2w2v/cos.cc | 41 - milena/sandbox/abraham/tests/fun/v2w_w2v/norm.cc | 71 - milena/sandbox/abraham/tests/io/tikz/Makefile | 33 - milena/sandbox/abraham/tests/io/tikz/tikz.cc | 44 - milena/sandbox/abraham/tests/morpho/Makefile | 22 - .../sandbox/abraham/tests/morpho/images/+irm6.pgm | Bin 262159 -> 0 bytes .../tests/morpho/images/+test_watershed.pgm | Bin 177 -> 0 bytes .../tests/morpho/images/result_m_watershed.pgm | Bin 177 -> 0 bytes .../tests/morpho/images/result_topo_watershed.pgm | Bin 177 -> 0 bytes .../sandbox/abraham/tests/morpho/images/test_2.pgm | 5 - .../sandbox/abraham/tests/morpho/images/test_3.pgm | 29 - .../sandbox/abraham/tests/morpho/images/test_4.pgm | 5 - .../tests/morpho/images/test_component_mapping.pgm | 5 - .../tests/morpho/images/test_component_tree.pgm | Bin 65 -> 0 bytes .../abraham/tests/morpho/images/test_watershed.pgm | Bin 177 -> 0 bytes milena/sandbox/abraham/tests/morpho/levelings.cc | 49 - milena/sandbox/abraham/tests/morpho/red_erosion.cc | 41 - .../sandbox/abraham/tests/morpho/red_erosion3.cc | 65 - milena/sandbox/abraham/tests/morpho/ref/Makefile | 52 - .../tests/morpho/ref/include/lattribheight.h | 4 - .../abraham/tests/morpho/ref/include/lwshedtopo.h | 4 - .../abraham/tests/morpho/ref/include/mccodimage.h | 100 - .../abraham/tests/morpho/ref/include/mccomptree.h | 79 - .../tests/morpho/ref/include/mcfahsalembier.h | 64 - .../abraham/tests/morpho/ref/include/mcimage.h | 98 - .../abraham/tests/morpho/ref/include/mcindic.h | 27 - .../abraham/tests/morpho/ref/include/mclifo.h | 48 - .../abraham/tests/morpho/ref/include/mcunionfind.h | 24 - .../abraham/tests/morpho/ref/include/mcutil.h | 31 - .../abraham/tests/morpho/ref/src/com/wshedtopo.c | 97 - .../abraham/tests/morpho/ref/src/lib/lattrib.c | 1754 - .../tests/morpho/ref/src/lib/lattribheight.c | 717 - .../abraham/tests/morpho/ref/src/lib/lwshedtopo.c | 1011 - .../abraham/tests/morpho/ref/src/lib/mccodimage.c | 586 - .../abraham/tests/morpho/ref/src/lib/mccomptree.c | 805 - .../tests/morpho/ref/src/lib/mcfahsalembier.c | 236 - .../abraham/tests/morpho/ref/src/lib/mcimage.c | 2219 - .../abraham/tests/morpho/ref/src/lib/mcindic.c | 76 - .../abraham/tests/morpho/ref/src/lib/mclifo.c | 155 - .../abraham/tests/morpho/ref/src/lib/mcunionfind.c | 188 - .../sandbox/abraham/tests/morpho/ref/test/UrOx.pgm | 6 - .../sandbox/abraham/tests/morpho/test_watershed.cc | 51 - .../abraham/tests/morpho/test_watershed_topo.cc | 42 - milena/sandbox/abraham/tests/transform/fft.cc | 34 - milena/sandbox/abraham/tests/transform/fft_.cc | 92 - milena/sandbox/abraham/tests/value/mixin.cc | 98 - .../aroumougame/retin/headers/Trimesh/Color.h | 105 - .../aroumougame/retin/headers/Trimesh/KDtree.h | 47 - .../aroumougame/retin/headers/Trimesh/TriMesh.h | 133 - .../retin/headers/Trimesh/TriMesh_algo.h | 77 - .../retin/headers/Trimesh/TriMesh_bounding.h | 1 - .../retin/headers/Trimesh/TriMesh_connectivity.h | 1 - .../retin/headers/Trimesh/TriMesh_normals.h | 1 - .../retin/headers/Trimesh/TriMesh_pointareas.h | 1 - .../retin/headers/Trimesh/TriMesh_stats.h | 1 - .../retin/headers/Trimesh/TriMesh_tstrips.h | 1 - .../aroumougame/retin/headers/Trimesh/Vec.h | 396 - .../aroumougame/retin/headers/Trimesh/XForm.h | 303 - .../aroumougame/retin/headers/Trimesh/bsphere.h | 273 - .../aroumougame/retin/headers/Trimesh/lineqn.h | 358 - .../aroumougame/retin/headers/Trimesh/mempool.h | 88 - .../retin/headers/Trimesh/mesh_filter.h | 7 - .../aroumougame/retin/headers/Trimesh/mesh_shade.h | 6 - .../aroumougame/retin/headers/Trimesh/remove.h | 1 - .../retin/headers/Trimesh/reorder_verts.h | 1 - .../aroumougame/retin/headers/Trimesh/timestamp.h | 69 - .../sandbox/aroumougame/retin/headers/WRL/Coin.h | 53 - .../retin/headers/WRL/MaillageTriangulaire.h | 58 - .../retin/headers/WRL/MailleTriangulaire.h | 35 - milena/sandbox/aroumougame/retin/headers/WRL/OFF.h | 88 - .../aroumougame/retin/headers/WRL/Objet3D.h | 89 - .../retin/headers/WRL/OutilsListePoints.h | 47 - .../aroumougame/retin/headers/WRL/OutilsPoint3D.h | 52 - .../aroumougame/retin/headers/WRL/PreTraitement.h | 53 - milena/sandbox/aroumougame/retin/headers/WRL/WRL.h | 74 - .../sandbox/aroumougame/retin/headers/WRL/calcul.h | 37 - .../aroumougame/retin/headers/binvox/file/Buffer.h | 69 - .../retin/headers/binvox/file/Datafile.h | 115 - .../retin/headers/binvox/file/Tokenfile.h | 113 - .../aroumougame/retin/headers/binvox/geom/Face.h | 76 - .../retin/headers/binvox/geom/Globals.h | 55 - .../aroumougame/retin/headers/binvox/geom/Mesh.h | 122 - .../retin/headers/binvox/geom/MeshFile.h | 69 - .../retin/headers/binvox/geom/MeshFileIdentifier.h | 82 - .../retin/headers/binvox/geom/MeshRef.h | 56 - .../retin/headers/binvox/geom/MeshView.h | 59 - .../retin/headers/binvox/geom/ObjMeshFile.h | 53 - .../retin/headers/binvox/geom/OffMeshFile.h | 35 - .../retin/headers/binvox/geom/PlyMeshFile.h | 53 - .../aroumougame/retin/headers/binvox/geom/Vertex.h | 58 - .../retin/headers/binvox/geom/WrlMeshFile.h | 35 - .../retin/headers/binvox/geom/geom_defs.h | 40 - .../aroumougame/retin/headers/binvox/libvox.h | 12 - .../aroumougame/retin/headers/binvox/math/Matrix.h | 100 - .../retin/headers/binvox/math/MyRandom.h | 54 - .../aroumougame/retin/headers/binvox/math/Vector.h | 144 - .../aroumougame/retin/headers/binvox/math/common.h | 92 - .../retin/headers/binvox/ply/ply_gatech.h | 238 - .../retin/headers/binvox/time/WallTimer.h | 71 - .../aroumougame/retin/headers/binvox/ui/Camera.h | 84 - .../retin/headers/binvox/ui/CameraList.h | 68 - .../aroumougame/retin/headers/binvox/ui/GLwindow.h | 124 - .../aroumougame/retin/headers/binvox/ui/View.h | 73 - .../aroumougame/retin/headers/binvox/ui/opengl.h | 49 - .../retin/headers/binvox/voxel/PalagyiFilter.h | 69 - .../retin/headers/binvox/voxel/Template.h | 81 - .../retin/headers/binvox/voxel/Templates.h | 78 - .../retin/headers/binvox/voxel/VoxelFile.h | 105 - .../retin/headers/binvox/voxel/VoxelFilter.h | 51 - .../retin/headers/binvox/voxel/VoxelRef.h | 75 - .../retin/headers/binvox/voxel/Voxelizer.h | 89 - .../retin/headers/binvox/voxel/Voxels.h | 199 - .../retin/headers/binvox/voxel/typedefs.h | 31 - milena/sandbox/aroumougame/retin/headers/cb3dr.h | 5 - .../aroumougame/retin/headers/histogramme/hist.h | 57 - .../retin/headers/histogramme/listeHisto.h | 50 - .../aroumougame/retin/headers/matrice/MatriceF.h | 35 - .../retin/headers/matrice/valeursVecteursPropres.h | 13 - .../aroumougame/retin/sources/Trimesh/KDtree.cpp | 321 - .../retin/sources/Trimesh/TriMesh_bounding.cpp | 133 - .../retin/sources/Trimesh/TriMesh_connectivity.cpp | 124 - .../retin/sources/Trimesh/TriMesh_curvature.cpp | 325 - .../retin/sources/Trimesh/TriMesh_io.cpp | 1814 - .../retin/sources/Trimesh/TriMesh_normals.cpp | 50 - .../retin/sources/Trimesh/TriMesh_pointareas.cpp | 77 - .../retin/sources/Trimesh/TriMesh_stats.cpp | 46 - .../retin/sources/Trimesh/TriMesh_tstrips.cpp | 246 - .../aroumougame/retin/sources/Trimesh/diffuse.cpp | 246 - .../aroumougame/retin/sources/Trimesh/lmsmooth.cpp | 73 - .../retin/sources/Trimesh/mesh_filter.cpp | 470 - .../retin/sources/Trimesh/mesh_shade.cpp | 90 - .../aroumougame/retin/sources/Trimesh/remove.cpp | 212 - .../retin/sources/Trimesh/reorder_verts.cpp | 126 - .../retin/sources/WRL/MaillageTriangulaire.cpp | 281 - .../retin/sources/WRL/MailleTriangulaire.cpp | 94 - .../sandbox/aroumougame/retin/sources/WRL/OFF.cpp | 174 - .../aroumougame/retin/sources/WRL/Objet3D.cpp | 146 - .../retin/sources/WRL/OutilsListePoints.cpp | 198 - .../retin/sources/WRL/OutilsPoint3D.cpp | 247 - .../retin/sources/WRL/PreTraitement.cpp | 213 - .../sandbox/aroumougame/retin/sources/WRL/WRL.cpp | 639 - .../aroumougame/retin/sources/WRL/calcul.cpp | 194 - .../retin/sources/binvox/file/Buffer.cpp | 61 - .../retin/sources/binvox/file/Datafile.cpp | 420 - .../retin/sources/binvox/file/Tokenfile.cpp | 367 - .../aroumougame/retin/sources/binvox/geom/Face.cpp | 201 - .../aroumougame/retin/sources/binvox/geom/Mesh.cpp | 281 - .../retin/sources/binvox/geom/MeshFile.cpp | 54 - .../sources/binvox/geom/MeshFileIdentifier.cpp | 143 - .../retin/sources/binvox/geom/MeshRef.cpp | 42 - .../retin/sources/binvox/geom/MeshView.cpp | 103 - .../retin/sources/binvox/geom/ObjMeshFile.cpp | 179 - .../retin/sources/binvox/geom/OffMeshFile.cpp | 65 - .../retin/sources/binvox/geom/PlyMeshFile.cpp | 197 - .../retin/sources/binvox/geom/Vertex.cpp | 59 - .../retin/sources/binvox/geom/WrlMeshFile.cpp | 96 - .../aroumougame/retin/sources/binvox/libvox.cpp | 190 - .../retin/sources/binvox/math/Matrix.cpp | 510 - .../retin/sources/binvox/math/MyRandom.cpp | 56 - .../retin/sources/binvox/math/Vector.cpp | 543 - .../retin/sources/binvox/math/common.cpp | 139 - .../retin/sources/binvox/ply/ply_gatech.c | 3428 - .../retin/sources/binvox/time/WallTimer.cpp | 158 - .../aroumougame/retin/sources/binvox/ui/Camera.cpp | 192 - .../retin/sources/binvox/ui/CameraList.cpp | 130 - .../retin/sources/binvox/ui/GLwindow.cpp | 333 - .../aroumougame/retin/sources/binvox/ui/View.cpp | 86 - .../aroumougame/retin/sources/binvox/ui/opengl.cpp | 67 - .../retin/sources/binvox/voxel/PalagyiFilter.cpp | 180 - .../retin/sources/binvox/voxel/Template.cpp | 220 - .../retin/sources/binvox/voxel/Templates.cpp | 170 - .../retin/sources/binvox/voxel/VoxelFile.cpp | 721 - .../retin/sources/binvox/voxel/VoxelFilter.cpp | 54 - .../retin/sources/binvox/voxel/VoxelRef.cpp | 101 - .../retin/sources/binvox/voxel/Voxelizer.cpp | 519 - .../retin/sources/binvox/voxel/Voxels.cpp | 1021 - milena/sandbox/aroumougame/retin/sources/cb3dr.cpp | 3 - .../aroumougame/retin/sources/histogramme/hist.cpp | 399 - .../retin/sources/histogramme/listeHisto.cpp | 273 - .../aroumougame/retin/sources/matrice/MatriceF.cpp | 233 - .../sources/matrice/valeursVecteursPropres.cpp | 58 - milena/sandbox/aroumougame/skeleton/io.hh | 157 - milena/sandbox/aroumougame/skeleton/mesh-skel.cc | 216 - .../aroumougame/skeleton/mesh-skel_region.cc | 256 - .../sandbox/aroumougame/skeleton/miscellenous.hh | 142 - .../sandbox/aroumougame/skeleton/neighborhood1.hh | 35 - milena/sandbox/aroumougame/skeleton/sedt.hh | 431 - milena/sandbox/aroumougame/skeleton/test.cc | 100 - .../sandbox/aroumougame/skeleton/test_image2d.cc | 50 - .../sandbox/aroumougame/skeleton/test_image3d.cc | 83 - milena/sandbox/aroumougame/skeleton/thinning.hh | 972 - milena/sandbox/aroumougame/test/m0.wrl |180539 -------------------- milena/sandbox/aroumougame/test/m05.wrl | 806 - milena/sandbox/aroumougame/test/m9l0.wrl |26434 --- milena/sandbox/aroumougame/test/makefile | 402 - milena/sandbox/aroumougame/test/ml0.wrl |173118 ------------------- milena/sandbox/aroumougame/test/ml09.wrl | 2267 - milena/sandbox/aroumougame/test/mmake.sh | 3 - .../aroumougame/test/sources/test_graph.cpp | 263 - milena/sandbox/aroumougame/test/test.off |92102 ---------- milena/sandbox/aroumougame/test/test_graph.cpp | 273 - milena/sandbox/aroumougame/test/test_graph_off.cpp | 243 - milena/sandbox/aroumougame/test/test_graph_wrl.cpp | 303 - milena/sandbox/ballas/compilation_unit.rb | 56 - milena/sandbox/ballas/doc/draft.txt | 370 - milena/sandbox/ballas/doc/image_tours.txt | 885 - milena/sandbox/ballas/doc/image_types/doc.tex | 28 - .../ballas/doc/image_types/include/image_tour.tex | 480 - milena/sandbox/ballas/methods | 104 - milena/sandbox/ballas/refactorization/box2d.hh | 246 - milena/sandbox/ballas/refactorization/concept.hh | 229 - milena/sandbox/ballas/refactorization/exact.hh | 95 - milena/sandbox/ballas/refactorization/image2d.hh | 108 - .../ballas/refactorization/internal/exact.hh | 124 - .../ballas/refactorization/internal/force_exact.hh | 77 - .../ballas/refactorization/internal/image_base.hh | 49 - .../ballas/refactorization/internal/impl.hh | 16 - .../ballas/refactorization/internal/piter_base.hh | 75 - .../ballas/refactorization/internal/pset_base.hh | 49 - .../ballas/refactorization/internal/psite_base.hh | 40 - .../ballas/refactorization/internal/site_base.hh | 21 - .../sandbox/ballas/refactorization/metal/bexpr.hh | 80 - .../sandbox/ballas/refactorization/metal/bool.hh | 99 - .../sandbox/ballas/refactorization/metal/equal.hh | 63 - milena/sandbox/ballas/refactorization/p_run.hh | 286 - milena/sandbox/ballas/refactorization/point2d.hh | 214 - .../sandbox/ballas/refactorization/point2d_impl.hh | 41 - milena/sandbox/ballas/refactorization/rle_image.hh | 118 - milena/sandbox/ballas/refactorization/rle_pset.hh | 308 - milena/sandbox/ballas/refactorization/rle_psite.hh | 137 - .../sandbox/ballas/refactorization/test/box2d.cc | 22 - .../sandbox/ballas/refactorization/test/image2d.cc | 26 - milena/sandbox/ballas/refactorization/test/rle.cc | 62 - milena/sandbox/ballas/test.cc | 69 - milena/sandbox/ballas/vaucanson_bench | 141 - milena/sandbox/beguin/fusion_graph.hh | 60 - milena/sandbox/beguin/graph_link.hh | 37 - milena/sandbox/beguin/irm.cc | 536 - milena/sandbox/beguin/irm.jpg | Bin 84574 -> 0 bytes milena/sandbox/beguin/irm6.pgm | Bin 262159 -> 0 bytes milena/sandbox/beguin/irm_g.cc | 186 - milena/sandbox/beguin/puzzle.jpg | Bin 80492 -> 0 bytes milena/sandbox/beguin/segm_to_pregraph.hh | 66 - milena/sandbox/beguin/try.hh | 69 - milena/sandbox/bench/README_CFLAGS | 8 - milena/sandbox/bench/extract_vertical_lines.cc | 49 - .../bench/fast_components_and_attributes.cc | 402 - milena/sandbox/bench/fast_rows.cc | 247 - milena/sandbox/bench/fast_tiles.cc | 140 - milena/sandbox/bench/fastest.cc | 351 - milena/sandbox/bench/fastest_forall_p_browsing.cc | 384 - .../bench/fastest_statistical_tour_browsing.cc | 168 - .../bench/fastest_statistical_tour_nbh_browsing.cc | 186 - milena/sandbox/bench/input_iz.pgm.gz | Bin 59982 -> 0 bytes milena/sandbox/bench/iz.cc | 386 - milena/sandbox/bench/z_sub_browsing/+inc | 1 - milena/sandbox/bench/z_sub_browsing/README | 5 - milena/sandbox/bench/z_sub_browsing/debase.cc | 23 - milena/sandbox/bench/z_sub_browsing/debase.hh | 351 - milena/sandbox/bench/z_sub_browsing/fast.cc | 139 - milena/sandbox/bench/z_sub_browsing/in.pgm.gz | Bin 3649560 -> 0 bytes milena/sandbox/bench/z_sub_browsing/integral.cc | 23 - milena/sandbox/bench/z_sub_browsing/integral.hh | 165 - milena/sandbox/bin/labeling/colorize.cc | 24 - milena/sandbox/bin/pgm_to_pbm.cc | 39 - milena/sandbox/bin/ppm_negate.cc | 43 - milena/sandbox/bugs/concept_and_assignment.cc | 84 - milena/sandbox/bugs/io_xv_imview.pbm | Bin 13 -> 0 bytes milena/sandbox/bugs/lut.cc | 23 - milena/sandbox/bugs/piter_slice.cc | 33 - milena/sandbox/bugs/piter_slice.solved.cc | 38 - milena/sandbox/camille/.gitignore | 4 - milena/sandbox/camille/Makefile | 9 - .../sandbox/camille/graph-line-gradient-closing.cc | 149 - milena/sandbox/camille/graph-wst.cc | 219 - milena/sandbox/delmon/growcut/Makefile | 30 - milena/sandbox/delmon/growcut/README | 12 - milena/sandbox/delmon/growcut/check.sh | 16 - milena/sandbox/delmon/growcut/keep_color.cc | 34 - milena/sandbox/delmon/growcut/main.cc | 150 - milena/sandbox/delmon/growcut/main_bw.cc | 111 - milena/sandbox/delmon/growcut/remove_if_blue.cc | 34 - milena/sandbox/delmon/minsurf/Makefile | 17 - milena/sandbox/delmon/minsurf/README | 11 - milena/sandbox/delmon/minsurf/check.sh | 9 - milena/sandbox/delmon/minsurf/keep_object.cc | 24 - milena/sandbox/delmon/minsurf/main.cc | 274 - milena/sandbox/duhamel/abr.cc | 54 - milena/sandbox/duhamel/abr.hh | 156 - milena/sandbox/duhamel/abr_to_image.cc | 147 - milena/sandbox/duhamel/border_duplicate.cc | 98 - milena/sandbox/duhamel/border_duplicate.hh | 220 - milena/sandbox/duhamel/border_fill.cc | 114 - milena/sandbox/duhamel/border_fill.hh | 292 - milena/sandbox/duhamel/border_mirror.cc | 61 - milena/sandbox/duhamel/border_mirror.hh | 139 - milena/sandbox/duhamel/canvas_chamfer.hh | 98 - milena/sandbox/duhamel/canvas_labeling.hh | 404 - milena/sandbox/duhamel/chamfer.cc | 51 - milena/sandbox/duhamel/chamfer.hh | 126 - milena/sandbox/duhamel/color_sub.cc | 70 - milena/sandbox/duhamel/color_sub.hh | 64 - milena/sandbox/duhamel/compil.cmd | 1 - .../sandbox/duhamel/debug_print_3d_with_border.hh | 70 - milena/sandbox/duhamel/draw_mesh.hh | 241 - milena/sandbox/duhamel/extract_array.cc | 149 - milena/sandbox/duhamel/fill.hh | 131 - milena/sandbox/duhamel/fills_test.cc | 226 - milena/sandbox/duhamel/graph.hh | 183 - milena/sandbox/duhamel/graph.hxx | 97 - milena/sandbox/duhamel/graph_labeling.cc | 14 - milena/sandbox/duhamel/graph_labeling.hh | 98 - milena/sandbox/duhamel/graph_labeling2.cc | 13 - milena/sandbox/duhamel/labeling.hh | 138 - milena/sandbox/duhamel/labeling_algo.cc | 83 - milena/sandbox/duhamel/labeling_algo.hh | 301 - milena/sandbox/duhamel/labeling_cpy_from_mln.hh | 276 - milena/sandbox/duhamel/labeling_level.hh | 213 - milena/sandbox/duhamel/labeling_level_fast.cc | 63 - .../duhamel/labeling_level_fast_10000x1000.cc | 63 - .../duhamel/labeling_level_generic_10000x1000.cc | 63 - milena/sandbox/duhamel/level.hh | 117 - milena/sandbox/duhamel/level_cpy_from_mln.hh | 147 - milena/sandbox/duhamel/log.txt | 24 - milena/sandbox/duhamel/main.cc | 39 - milena/sandbox/duhamel/main_mesh_image.cc | 65 - milena/sandbox/duhamel/mem.hh | 118 - milena/sandbox/duhamel/mesh_image.hh | 190 - milena/sandbox/duhamel/mesh_p.hh | 159 - milena/sandbox/duhamel/mesh_psite.hh | 55 - milena/sandbox/duhamel/paste.hh | 36 - milena/sandbox/duhamel/queue_p_fast.hh | 275 - milena/sandbox/duhamel/queue_p_priority.cc | 64 - milena/sandbox/duhamel/queue_p_priority.hh | 316 - milena/sandbox/duhamel/slow_seed2tiling.cc | 156 - .../duhamel/test_border_duplicate_image1d_1.cc | 54 - .../duhamel/test_border_duplicate_image1d_2.cc | 53 - .../duhamel/test_border_duplicate_image1d_3.cc | 57 - .../duhamel/test_border_duplicate_image1d_4.cc | 56 - .../duhamel/test_border_duplicate_image1d_5.cc | 56 - .../duhamel/test_border_duplicate_image2d_1.cc | 54 - .../duhamel/test_border_duplicate_image2d_2.cc | 53 - .../duhamel/test_border_duplicate_image2d_3.cc | 54 - .../duhamel/test_border_duplicate_image2d_4.cc | 56 - .../duhamel/test_border_duplicate_image3d_1.cc | 53 - .../duhamel/test_border_duplicate_image3d_2.cc | 52 - .../duhamel/test_border_duplicate_image3d_3.cc | 56 - .../duhamel/test_border_duplicate_image3d_4.cc | 55 - .../sandbox/duhamel/test_border_fill_image1d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image1d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image1d_3.cc | 54 - .../sandbox/duhamel/test_border_fill_image1d_4.cc | 55 - .../sandbox/duhamel/test_border_fill_image1d_5.cc | 54 - .../sandbox/duhamel/test_border_fill_image2d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image2d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image2d_3.cc | 54 - .../sandbox/duhamel/test_border_fill_image2d_4.cc | 54 - .../sandbox/duhamel/test_border_fill_image3d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image3d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image3d_3.cc | 53 - .../sandbox/duhamel/test_border_fill_image3d_4.cc | 53 - milena/sandbox/duhamel/test_debug_iota_3d.cc | 50 - milena/sandbox/duhamel/translate_image.cc | 43 - milena/sandbox/duhamel/translate_image.hh | 196 - milena/sandbox/edwin/Makefile | 29 - milena/sandbox/edwin/exec/benchmark/Makefile | 21 - milena/sandbox/edwin/exec/benchmark/newv.cc | 86 - milena/sandbox/edwin/exec/benchmark/oldv.cc | 82 - milena/sandbox/edwin/exec/color_distance.hh | 80 - .../sandbox/edwin/exec/color_internal_gradient.hh | 149 - milena/sandbox/edwin/exec/color_labeling_mean.hh | 70 - milena/sandbox/edwin/exec/give_me_the_curve.cc | 92 - milena/sandbox/edwin/exec/internal_gradient.cc | 41 - milena/sandbox/edwin/exec/mask_colorize.cc | 78 - milena/sandbox/edwin/exec/mask_fill_mean_color.cc | 61 - .../sandbox/edwin/exec/max_delta_colormean_obj.cc | 244 - milena/sandbox/edwin/exec/pgm_gradient.cc | 42 - milena/sandbox/edwin/exec/plot.conf | 3 - milena/sandbox/edwin/exec/score.hh | 287 - .../edwin/exec/sharpest_obj_reconstruction.cc | 145 - milena/sandbox/edwin/exec/tree_debug.cc | 86 - .../sandbox/edwin/exec/wst_from_reconstructed.cc | 85 - milena/sandbox/edwin/exec/zi.cc | 353 - milena/sandbox/edwin/exec/zi.hh | 152 - .../sandbox/edwin/mln/core/concept/dindex_site.hh | 253 - .../sandbox/edwin/mln/core/concept/index_site.hh | 311 - milena/sandbox/edwin/mln/core/concept/tree.hh | 148 - milena/sandbox/edwin/mln/core/dindex_site.hh | 119 - .../edwin/mln/core/image/attribute_image.hh | 435 - .../edwin/mln/core/internal/index_site_base.hh | 254 - .../sandbox/edwin/mln/core/site_set/p_run_idx.hh | 458 - .../edwin/mln/core/site_set/p_run_idx_piter.hh | 222 - milena/sandbox/edwin/mln/debug/ctree.hh | 155 - milena/sandbox/edwin/mln/morpho/attribute/bbox.hh | 203 - .../edwin/mln/morpho/attribute/mysharpness.hh | 59 - .../edwin/mln/morpho/attribute/occupation.hh | 252 - .../edwin/mln/morpho/tree/component_tree.hh | 124 - milena/sandbox/edwin/mln/morpho/tree/components.hh | 322 - .../edwin/mln/morpho/tree/components_debug.hh | 384 - .../mln/morpho/tree/compute_attribute_image.hh | 178 - milena/sandbox/edwin/mln/morpho/tree/debug.hh | 124 - .../edwin/mln/morpho/tree/impl/dual_hqueue.hh | 408 - .../edwin/mln/morpho/tree/impl/dual_union_find.hh | 361 - .../edwin/mln/morpho/tree/impl/union_find.hh | 172 - milena/sandbox/edwin/mln/morpho/tree/propagate.hh | 148 - .../edwin/mln/morpho/tree/propagate_node.hh | 112 - .../edwin/mln/morpho/tree/propagate_node_debug.hh | 217 - milena/sandbox/edwin/mln/util/ctree/ctree.hh | 589 - .../edwin/mln/util/ctree/internal/tree_base.hh | 140 - milena/sandbox/edwin/mln/util/ctree/node.hh | 183 - milena/sandbox/edwin/move_accu.sh | 91 - milena/sandbox/edwin/rush/exo2/configure | 21 - milena/sandbox/edwin/rush/exo2/test.cc | 133 - milena/sandbox/edwin/rush/exo2/wst_from_closing.cc | 127 - .../edwin/rush/granulometry/granulometry.hh | 163 - milena/sandbox/edwin/rush/granulometry/test.cc | 115 - milena/sandbox/edwin/rush/leaves/Makefile | 35 - milena/sandbox/edwin/rush/leaves/chain.sh | 34 - milena/sandbox/edwin/rush/leaves/configure | 21 - milena/sandbox/edwin/rush/leaves/export_leaves.hh | 115 - milena/sandbox/edwin/rush/leaves/get_leaves.cc | 65 - milena/sandbox/edwin/rush/leaves/splot.sh | 10 - milena/sandbox/edwin/rush/leaves/test/Makefile | 41 - milena/sandbox/edwin/rush/leaves/test/configure | 21 - milena/sandbox/edwin/rush/leaves/test/export.cc | 63 - milena/sandbox/edwin/tests/sharp.cc | 311 - milena/sandbox/edwin/tests/sharpness_attribute.cc | 140 - milena/sandbox/edwin/tools/make_the_curves.sh | 15 - milena/sandbox/edwin/tree/Makefile | 1838 - milena/sandbox/edwin/tree/accumulator/arg_max.hh | 160 - milena/sandbox/edwin/tree/configure | 21 - milena/sandbox/edwin/tree/propagation.cc | 104 - milena/sandbox/edwin/tree/run.hh | 271 - milena/sandbox/edwin/tree/tree.cc | 293 - milena/sandbox/exec/Makefile | 7 - milena/sandbox/exec/bw_negate_in_color.cc | 46 - milena/sandbox/exec/filetype.hh | 54 - milena/sandbox/exec/histo_save.cc | 46 - milena/sandbox/fabien/README | 204 - milena/sandbox/fabien/bin/Makefile | 12 - milena/sandbox/fabien/bin/dicom2dump.cc | 32 - milena/sandbox/fabien/bin/dicom2pgm.cc | 34 - milena/sandbox/fabien/bin/dicom_mask.cc | 104 - milena/sandbox/fabien/bin/dump2pbm.cc | 51 - milena/sandbox/fabien/bin/dump2pgm.cc | 37 - milena/sandbox/fabien/bin/dump2pgm8b.cc | 33 - milena/sandbox/fabien/bin/dump2ppm.cc | 35 - milena/sandbox/fabien/bin/dump_mask.cc | 86 - milena/sandbox/fabien/bin/dumpi12_to_pgm.cc | 58 - milena/sandbox/fabien/bin/dumpl16_to_colorize.cc | 64 - milena/sandbox/fabien/bin/dumpl32_to_colorize.cc | 61 - milena/sandbox/fabien/bin/dumpl8_to_colorize.cc | 62 - milena/sandbox/fabien/bin/filetype.hh | 54 - milena/sandbox/fabien/bin/pnms2dump.cc | 98 - milena/sandbox/fabien/binarization/Makefile | 5 - milena/sandbox/fabien/binarization/test.cc | 149 - milena/sandbox/fabien/dcmtk/Makefile | 2 - milena/sandbox/fabien/dcmtk/dicom.cc | 14 - milena/sandbox/fabien/dcmtk/load.hh | 388 - milena/sandbox/fabien/dcmtk/save.hh | 951 - milena/sandbox/fabien/igr/Makefile | 99 - milena/sandbox/fabien/igr/Makefile.rules | 8 - milena/sandbox/fabien/igr/all_labels2gif.sh | 33 - milena/sandbox/fabien/igr/check.sh | 49 - milena/sandbox/fabien/igr/check2d_wsd.sh | 32 - milena/sandbox/fabien/igr/check3d_wsd.sh | 35 - milena/sandbox/fabien/igr/check_dist.sh | 19 - milena/sandbox/fabien/igr/check_edges.sh | 55 - milena/sandbox/fabien/igr/check_us_morpho.sh | 46 - milena/sandbox/fabien/igr/clo_vol.cc | 76 - milena/sandbox/fabien/igr/color/find_color.cc | 100 - milena/sandbox/fabien/igr/crop.cc | 73 - milena/sandbox/fabien/igr/dist_edges.cc | 276 - milena/sandbox/fabien/igr/filter.cc | 151 - milena/sandbox/fabien/igr/filter_morpho_us.cc | 100 - milena/sandbox/fabien/igr/fixed_seg/Makefile | 9 - milena/sandbox/fabien/igr/fixed_seg/main.cc | 321 - milena/sandbox/fabien/igr/fun_labels.cc | 253 - milena/sandbox/fabien/igr/fun_labels.sh | 104 - milena/sandbox/fabien/igr/grad.cc | 66 - milena/sandbox/fabien/igr/graph.cc | 331 - milena/sandbox/fabien/igr/igr.cc | 179 - milena/sandbox/fabien/igr/label2gif.cc | 105 - milena/sandbox/fabien/igr/launch.sh | 4 - milena/sandbox/fabien/igr/launch2d.sh | 32 - milena/sandbox/fabien/igr/launch3d.sh | 28 - milena/sandbox/fabien/igr/maj.cc | 61 - milena/sandbox/fabien/igr/mat2mln/mat2mln.cc | 60 - milena/sandbox/fabien/igr/mat2mln/mat2raw.cc | 52 - milena/sandbox/fabien/igr/mat2mln/raw2mlndata.cc | 130 - milena/sandbox/fabien/igr/matlab.cc | 382 - milena/sandbox/fabien/igr/mean_median_label.cc | 191 - milena/sandbox/fabien/igr/mean_slices.cc | 89 - milena/sandbox/fabien/igr/med.cc | 148 - milena/sandbox/fabien/igr/min_max_float.cc | 89 - milena/sandbox/fabien/igr/nbasins_check.sh | 17 - milena/sandbox/fabien/igr/nbasins_finder.cc | 79 - milena/sandbox/fabien/igr/norm.cc | 105 - milena/sandbox/fabien/igr/plot_label.hh | 58 - milena/sandbox/fabien/igr/plot_points/Makefile | 11 - milena/sandbox/fabien/igr/plot_points/README | 2 - milena/sandbox/fabien/igr/plot_points/int2rgb.hh | 36 - milena/sandbox/fabien/igr/plot_points/main.cc | 77 - .../fabien/igr/plot_points/plot_points_of_label.cc | 95 - milena/sandbox/fabien/igr/point_filtering/Makefile | 9 - milena/sandbox/fabien/igr/point_filtering/main.cc | 83 - milena/sandbox/fabien/igr/seg2d.cc | 55 - milena/sandbox/fabien/igr/seg3d.cc | 57 - milena/sandbox/fabien/igr/seg_vol_irm.hh | 349 - milena/sandbox/fabien/igr/segment_us_morpho.sh | 40 - milena/sandbox/fabien/igr/smooth_fixed_seg/main.cc | 243 - milena/sandbox/fabien/igr/space_smooth/Makefile | 15 - milena/sandbox/fabien/igr/space_smooth/linear.cc | 78 - milena/sandbox/fabien/igr/space_smooth/median.cc | 133 - milena/sandbox/fabien/igr/space_smooth/morpho.cc | 98 - milena/sandbox/fabien/igr/thres.cc | 72 - milena/sandbox/fabien/igr/time_max.cc | 118 - milena/sandbox/fabien/igr/time_max_norm.cc | 117 - milena/sandbox/fabien/igr/time_smooth/Makefile | 15 - milena/sandbox/fabien/igr/time_smooth/linear.cc | 95 - milena/sandbox/fabien/igr/time_smooth/median.cc | 102 - milena/sandbox/fabien/igr/time_smooth/morpho.cc | 102 - milena/sandbox/fabien/igr/tmax.sh | 23 - milena/sandbox/fabien/igr/watershed.hh | 331 - milena/sandbox/fabien/igr/watershed2d.cc | 318 - milena/sandbox/fabien/igr/watershed3d.cc | 330 - milena/sandbox/fabien/igr/wst.cc | 74 - milena/sandbox/fabien/igr/wst_edges.cc | 147 - milena/sandbox/fabien/magick/Makefile | 14 - milena/sandbox/fabien/magick/magick.cc | 27 - milena/sandbox/fabien/magick/save.cc | 23 - milena/sandbox/fabien/magick/tiled_image.cc | 38 - .../fabien/mln/canvas/browsing/directional.hh | 157 - milena/sandbox/fabien/mln/canvas/browsing/snake.hh | 128 - milena/sandbox/fabien/mln/core/image/cache.hh | 200 - milena/sandbox/fabien/mln/core/image/disk_ima.hh | 644 - .../fabien/mln/core/image/magick_tiled2d.hh | 610 - milena/sandbox/fabien/mln/core/image/page.hh | 155 - milena/sandbox/fabien/mln/core/image/tiled2d.hh | 652 - milena/sandbox/fabien/mln/data/fast_median.hh | 180 - milena/sandbox/fabien/mln/debug/int2rgb.hh | 91 - .../sandbox/fabien/mln/display/display_region.hh | 90 - milena/sandbox/fabien/mln/io/pnm/load.hh | 334 - milena/sandbox/fabien/mln/io/pnm/load_disk_ima.hh | 88 - milena/sandbox/fabien/mln/test/conversion.hh | 140 - milena/sandbox/fabien/mln/upsampling/hq2x.hh | 2990 - milena/sandbox/fabien/mln/upsampling/hq3x.hh | 3949 - milena/sandbox/fabien/mln/upsampling/hq4x.hh | 5429 - .../fabien/mln/world/inter_pixel/display_region.hh | 163 - .../fabien/mln/world/inter_pixel/is_zero_face.hh | 90 - milena/sandbox/fabien/tests/core/image/Makefile | 15 - milena/sandbox/fabien/tests/core/image/bench.hh | 19 - milena/sandbox/fabien/tests/core/image/bench.sh | 17 - milena/sandbox/fabien/tests/core/image/disk_ima.cc | 32 - milena/sandbox/fabien/tests/core/image/ima2d.cc | 31 - milena/sandbox/fabien/tests/core/image/tiled2d.cc | 32 - milena/sandbox/fabien/tests/display/Makefile | 7 - .../sandbox/fabien/tests/display/display_region.cc | 64 - milena/sandbox/fabien/tests/test/conversion.cc | 33 - milena/sandbox/fabien/tests/upsampling/Makefile | 12 - milena/sandbox/fabien/tests/upsampling/hq2x.cc | 29 - milena/sandbox/fabien/tests/upsampling/hq3x.cc | 29 - milena/sandbox/fabien/tests/upsampling/hq4x.cc | 29 - .../fabien/tests/world/inter_pixel/Makefile | 7 - .../tests/world/inter_pixel/display_region.cc | 59 - .../folio/exercices/heritage_conditionnel.cc | 7 - .../folio/exercices/heritage_conditionnel.hh | 46 - milena/sandbox/folio/img/monkeys_april.ppm | Bin 3099112 -> 0 bytes milena/sandbox/folio/mln/dt/canvas_dt.hh | 178 - milena/sandbox/folio/mln/dt/chamfer.hh | 156 - milena/sandbox/folio/mln/dt/cp.hh | 121 - milena/sandbox/folio/mln/dt/dmap.hh | 119 - milena/sandbox/folio/mln/dt/dt_old/canevas_dt.hh | 231 - milena/sandbox/folio/mln/dt/dt_old/chamfer.cc | 206 - .../sandbox/folio/mln/dt/dt_old/distance_front.cc | 88 - .../folio/mln/dt/dt_old/distance_front_new.hh | 420 - milena/sandbox/folio/mln/dt/dt_old/dt.cc | 59 - milena/sandbox/folio/mln/dt/dt_old/dt.hh | 101 - milena/sandbox/folio/mln/dt/dt_old/dt.spe.hh | 123 - milena/sandbox/folio/mln/dt/dt_old/naive.cc | 142 - milena/sandbox/folio/mln/dt/dt_old/psn.cc | 204 - milena/sandbox/folio/mln/dt/dt_old/psn_log.cc | 290 - milena/sandbox/folio/mln/dt/path.hh | 121 - milena/sandbox/folio/mln/dt/raw_cp_fast.hh | 173 - milena/sandbox/folio/mln/dt/raw_cp_slow.hh | 155 - milena/sandbox/folio/mln/dt/raw_dmap_fast.hh | 164 - milena/sandbox/folio/mln/dt/raw_dmap_slow.hh | 149 - milena/sandbox/folio/mln/dt/raw_path_fast.hh | 173 - milena/sandbox/folio/mln/dt/raw_path_slow.hh | 155 - milena/sandbox/folio/mln/fun/v2v/hsl_to_hsv.hh | 141 - milena/sandbox/folio/mln/fun/v2v/rgb_to_hsv.hh | 160 - .../folio/mln/histo/classify_with_histo_3d.hh | 59 - .../folio/mln/histo/classify_with_histo_rgb.hh | 39 - milena/sandbox/folio/mln/histo/compute_histo.hh | 69 - milena/sandbox/folio/mln/histo/compute_histo_3d.hh | 67 - .../sandbox/folio/mln/histo/compute_histo_rgb.hh | 43 - milena/sandbox/folio/mln/histo/project_histo_3d.hh | 61 - milena/sandbox/folio/mln/value/circular.hh | 268 - milena/sandbox/folio/mln/value/hsv.hh | 413 - milena/sandbox/folio/mln/value/pipo.hh | 107 - milena/sandbox/folio/papers/dt_resume.txt | 33 - milena/sandbox/folio/papers/examples.txt | 63 - milena/sandbox/folio/test/dt/canvas/dt.hh | 101 - milena/sandbox/folio/test/dt/canvas/dt.spe.hh | 123 - milena/sandbox/folio/test/dt/chamfer.cc | 52 - milena/sandbox/folio/test/dt/dt.cc | 66 - milena/sandbox/folio/test/dt/dt_bench.cc | 53 - milena/sandbox/folio/test/dt/dt_maze.cc | 124 - milena/sandbox/folio/test/dt/naive.cc | 142 - milena/sandbox/folio/test/dt/psn.cc | 204 - milena/sandbox/folio/test/dt/psn_log.cc | 290 - milena/sandbox/folio/test/dt/tmp.ppm | Bin 4966 -> 0 bytes .../sandbox/folio/test/histo/compute_histo_3d.cc | 76 - .../sandbox/folio/test/histo/compute_histo_rgb.cc | 52 - .../folio/test/histo/compute_histo_rgb_from_ppm.cc | 30 - milena/sandbox/folio/test/histo/plot_lena.cc | 55 - milena/sandbox/folio/test/histo/plot_lena_3d.cc | 63 - milena/sandbox/folio/test/histo/plot_lena_rgb.cc | 56 - .../folio/test/histo/project_histo_3d_add.cc | 75 - .../folio/test/histo/project_histo_3d_mean.cc | 80 - milena/sandbox/folio/test/histo/project_screen.cc | 149 - milena/sandbox/folio/test/histo/projected.cc | 49 - milena/sandbox/folio/test/histo/projected3d.cc | 138 - milena/sandbox/folio/test/value/circular.cc | 89 - milena/sandbox/folio/test/value/comp.cc | 9 - milena/sandbox/folio/test/value/hsv.cc | 34 - milena/sandbox/folio/test/value/pipo.cc | 21 - .../folio/tools/histo/classify_with_histo_gs.cc | 110 - .../histo/projected_histo_classified_color_maj.cc | 116 - .../tools/histo/projected_histo_classified_gs.cc | 116 - .../folio/tools/histo/projected_histo_gs.cc | 89 - milena/sandbox/fred/fun/abs.hh | 39 - milena/sandbox/fred/fun/assignability.hh | 103 - milena/sandbox/fred/fun/binary.hh | 137 - milena/sandbox/fred/fun/compose.hh | 71 - milena/sandbox/fred/fun/composition.hh | 210 - milena/sandbox/fred/fun/cos.cc | 34 - milena/sandbox/fred/fun/cos.hh | 48 - milena/sandbox/fred/fun/fun.cc | 108 - milena/sandbox/fred/fun/inc.hh | 43 - milena/sandbox/fred/fun/meta_function.hh | 203 - milena/sandbox/fred/fun/norm.hh | 96 - milena/sandbox/fred/fun/nsolve.hh | 152 - milena/sandbox/fred/fun/nsolve_binary.hh | 302 - milena/sandbox/fred/fun/nsolve_unary.hh | 171 - milena/sandbox/fred/fun/red.hh | 44 - milena/sandbox/fred/fun/thru.cc | 31 - milena/sandbox/fred/fun/thru_morpher.hh | 302 - milena/sandbox/fred/fun/unary.hh | 357 - milena/sandbox/fred/functions.html | 478 - milena/sandbox/fred/functions.mkdown | 441 - milena/sandbox/fred/old/accu_trait.hh | 94 - milena/sandbox/fred/old/accuprops.cc | 331 - milena/sandbox/fred/old/accuprops2.cc | 380 - milena/sandbox/fred/old/algebraic.cc | 406 - milena/sandbox/fred/old/closing_area.cc | 50 - milena/sandbox/fred/old/connected_filter.hh | 123 - milena/sandbox/fred/old/leveling.cc | 47 - milena/sandbox/fred/old/leveling_filter.hh | 381 - milena/sandbox/fred/old/mean.hh | 202 - milena/sandbox/fred/old/meantest.cc | 21 - milena/sandbox/fred/old/overload.cc | 296 - milena/sandbox/fred/old/p2p/Makefile | 12 - milena/sandbox/fred/old/p2p/compose_p2p.hh | 44 - milena/sandbox/fred/old/p2p/p2p_morpher.hh | 284 - milena/sandbox/fred/old/p2p/symmetry_p2p.hh | 47 - milena/sandbox/fred/old/p2p/test_morph_image.cc | 62 - milena/sandbox/fred/old/p2p/translate_p2p.hh | 43 - milena/sandbox/fred/old/site_wrapper.hh | 188 - milena/sandbox/fred/old/value.cc | 24 - milena/sandbox/fred/old/value_wrapper.hh | 188 - milena/sandbox/fred/tests/Makefile | 24 - milena/sandbox/fred/tests/cos.cc | 35 - milena/sandbox/fred/tests/fun.cc | 120 - milena/sandbox/fred/tests/thru.cc | 50 - milena/sandbox/fred/tests/wip.cc | 25 - milena/sandbox/garrigues/TODO | 43 - milena/sandbox/garrigues/area_filter_auto_dual.cc | 268 - milena/sandbox/garrigues/factures/extract_array.cc | 114 - .../garrigues/factures/extract_array_highlight.cc | 164 - milena/sandbox/garrigues/fllt/compute_level_set.hh | 410 - .../garrigues/fllt/compute_level_set_fast.hh | 486 - .../garrigues/fllt/compute_level_set_fast2.hh | 471 - milena/sandbox/garrigues/fllt/debug.hh | 205 - milena/sandbox/garrigues/fllt/doc.hh | 91 - milena/sandbox/garrigues/fllt/essai.cc | 104 - milena/sandbox/garrigues/fllt/fllt.hh | 136 - milena/sandbox/garrigues/fllt/fllt_doc.hh | 86 - milena/sandbox/garrigues/fllt/fllt_merge.hh | 200 - milena/sandbox/garrigues/fllt/fllt_optimized.hh | 193 - milena/sandbox/garrigues/fllt/fllt_simple.cc | 730 - milena/sandbox/garrigues/fllt/fllt_simple.svg.1.cc | 325 - milena/sandbox/garrigues/fllt/fllt_simple.svg.2.cc | 349 - milena/sandbox/garrigues/fllt/fllt_simple.svg.3.cc | 612 - milena/sandbox/garrigues/fllt/fllt_theo.cc | 322 - milena/sandbox/garrigues/fllt/fllt_types.hh | 71 - milena/sandbox/garrigues/fllt/give_confs.cc | 56 - .../sandbox/garrigues/fllt/local_configurations.hh | 144 - milena/sandbox/garrigues/fllt/lower.hh | 90 - milena/sandbox/garrigues/fllt/merge.hh | 216 - milena/sandbox/garrigues/fllt/test.cc | 62 - milena/sandbox/garrigues/fllt/test_fllt.cc | 34 - milena/sandbox/garrigues/fllt/test_fllt10.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt10_inv.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt12.cc | 29 - milena/sandbox/garrigues/fllt/test_fllt13.cc | 30 - milena/sandbox/garrigues/fllt/test_fllt15.cc | 43 - milena/sandbox/garrigues/fllt/test_fllt2.cc | 33 - milena/sandbox/garrigues/fllt/test_fllt3.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt3_inv.cc | 45 - milena/sandbox/garrigues/fllt/test_fllt4.cc | 40 - milena/sandbox/garrigues/fllt/test_fllt5.cc | 40 - milena/sandbox/garrigues/fllt/test_fllt6.cc | 28 - milena/sandbox/garrigues/fllt/test_fllt7.cc | 44 - milena/sandbox/garrigues/fllt/test_fllt7_inv.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt8.cc | 33 - milena/sandbox/garrigues/fllt/test_fllt9.cc | 41 - milena/sandbox/garrigues/fllt/test_fllt_lena.cc | 24 - .../sandbox/garrigues/fllt/test_fllt_lena_tiles.cc | 32 - milena/sandbox/garrigues/fllt/test_fllt_tiny.cc | 19 - milena/sandbox/garrigues/fllt/test_flltb.cc | 40 - milena/sandbox/garrigues/fllt/types.hh | 211 - milena/sandbox/garrigues/fllt/upper.hh | 89 - .../image_identity/image_domain_morpher.hh | 122 - .../garrigues/image_identity/image_identity.cc | 9 - .../garrigues/image_identity/image_identity.hh | 77 - .../image_identity/image_value_morpher.hh | 95 - .../garrigues/image_identity/interpolated.cc | 70 - .../garrigues/image_identity/interpolated.hh | 185 - milena/sandbox/garrigues/level_set.hh | 494 - milena/sandbox/garrigues/log | 35 - milena/sandbox/garrigues/lower.hh | 89 - .../garrigues/tiled_image2d/backend/file.hh | 76 - .../sandbox/garrigues/tiled_image2d/backend/ios.hh | 79 - .../garrigues/tiled_image2d/backend/mmap.hh | 128 - milena/sandbox/garrigues/tiled_image2d/block.hh | 68 - milena/sandbox/garrigues/tiled_image2d/context.hh | 38 - .../sandbox/garrigues/tiled_image2d/layout/all.hh | 8 - .../garrigues/tiled_image2d/layout/image2d/all.hh | 7 - .../garrigues/tiled_image2d/layout/image2d/lrtb.hh | 70 - .../garrigues/tiled_image2d/layout/image2d/tblr.hh | 33 - .../garrigues/tiled_image2d/layout/layout2d.hh | 56 - .../garrigues/tiled_image2d/layout/page2d/all.hh | 7 - .../garrigues/tiled_image2d/layout/page2d/lrtb.hh | 52 - .../garrigues/tiled_image2d/layout/page2d/tblr.hh | 21 - milena/sandbox/garrigues/tiled_image2d/page.hh | 91 - .../sandbox/garrigues/tiled_image2d/paged_image.hh | 56 - .../sandbox/garrigues/tiled_image2d/support/lru.hh | 198 - .../garrigues/tiled_image2d/support/simple.hh | 35 - .../garrigues/tiled_image2d/tiled_image2d.cc | 54 - .../garrigues/tiled_image2d/tiled_image2d.hh | 374 - milena/sandbox/garrigues/union_find/Makefile | 27 - .../garrigues/union_find/canvas/find_root.hh | 61 - .../canvas/reconstruction_on_function.hh | 165 - .../union_find/canvas/reconstruction_on_set.hh | 149 - .../union_find/canvas/self_dual_reconstruction.hh | 217 - .../union_find/images/marker_to_dilate.pbm | 4 - .../union_find/images/marker_to_erode.pbm | Bin 221 -> 0 bytes .../sandbox/garrigues/union_find/images/mask.pbm | 5 - .../union_find/reconstructions_on_function.cc | 66 - .../union_find/reconstructions_on_function.hh | 247 - .../garrigues/union_find/reconstructions_on_set.cc | 90 - .../garrigues/union_find/reconstructions_on_set.hh | 224 - .../sandbox/garrigues/union_find/reunion_avec_theo | 23 - .../union_find/self_dual_reconstruction.cc | 105 - .../union_find/self_dual_reconstruction.hh | 206 - milena/sandbox/garrigues/upper.hh | 89 - milena/sandbox/garrigues/value_behavior.cc | 106 - milena/sandbox/green/README | 301 - .../green/bench/transform/distance/Makefile.am | 150 - .../green/bench/transform/distance/distance.cc | 775 - .../green/bug/labeling/mean_values/Makefile.am | 148 - .../green/bug/labeling/mean_values/label.pgm | Bin 16504 -> 0 bytes .../green/bug/labeling/mean_values/mean_values.cc | 59 - .../green/demo/accu/stat/histo2d/Makefile.am | 148 - .../green/demo/accu/stat/histo2d/histo2d.cc | 155 - .../sandbox/green/demo/annotating/bic/Makefile.am | 150 - milena/sandbox/green/demo/annotating/bic/bic.cc | 87 - .../sandbox/green/demo/annotating/hsv/Makefile.am | 152 - milena/sandbox/green/demo/annotating/hsv/hsv.cc | 607 - .../sandbox/green/demo/annotating/lep/Makefile.am | 150 - milena/sandbox/green/demo/annotating/lep/lep.cc | 92 - .../green/demo/annotating/nb_color/Makefile.am | 150 - .../green/demo/annotating/nb_color/nb_color.cc | 101 - .../green/demo/annotating/project/Makefile.am | 150 - .../green/demo/annotating/project/project.cc | 210 - .../green/demo/annotating/rgb_64/Makefile.am | 150 - .../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 47 - .../green/demo/annotating/rgb_64_9/Makefile.am | 150 - .../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 97 - .../green/demo/annotating/stddev_color/Makefile.am | 150 - .../demo/annotating/stddev_color/stddev_color.cc | 124 - .../demo/annotating/stddev_color_16/Makefile.am | 150 - .../annotating/stddev_color_16/stddev_color_16.cc | 178 - .../green/demo/clustering/kmean1d/Makefile.am | 148 - .../green/demo/clustering/kmean1d/kmean1d.cc | 161 - .../green/demo/clustering/kmean2d/Makefile.am | 148 - .../green/demo/clustering/kmean2d/kmean2d.cc | 440 - .../green/demo/clustering/kmean3d/Makefile.am | 148 - .../green/demo/clustering/kmean3d/kmean3d.cc | 169 - .../green/demo/clustering/kmean_rgb/Makefile.am | 148 - .../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 91 - .../demo/labeling/regional_maxima/Makefile.am | 150 - .../labeling/regional_maxima/regional_maxima.cc | 821 - .../demo/labeling/regional_maxima/thresholds.txt | 42 - milena/sandbox/green/doc/annotating/class.txt | 42 - .../green/doc/annotating/syntheseMillet2008.txt | 283 - milena/sandbox/green/doc/annotating/testMillet2008 | 69 - .../green/doc/examples/accu_color/accu_color.cc | 249 - milena/sandbox/green/doc/examples/frac/Makefile.am | 148 - milena/sandbox/green/doc/examples/frac/frac.cc | 423 - milena/sandbox/green/doc/examples/frac/frac.hh | 793 - milena/sandbox/green/doc/examples/frac/gcd.hh | 91 - .../sandbox/green/doc/examples/frac/sign_prod.hh | 74 - .../green/doc/examples/hello_milena/Makefile.am | 49 - .../doc/examples/hello_milena/hello_milena.cc | 41 - .../green/doc/examples/hello_world/Makefile.am | 49 - .../green/doc/examples/hello_world/hello_world.cc | 9 - .../green/doc/examples/hello_world/print.cc | 6 - milena/sandbox/green/doc/examples/io/Makefile.am | 150 - milena/sandbox/green/doc/examples/io/io.cc | 71 - .../green/doc/examples/learn_milena/Makefile.am | 49 - .../doc/examples/learn_milena/learn_milena.cc | 151 - milena/sandbox/green/doc/examples/otsu/Makefile.am | 49 - milena/sandbox/green/doc/examples/otsu/otsu.cc | 193 - .../sandbox/green/doc/examples/stats/Makefile.am | 49 - milena/sandbox/green/doc/examples/stats/stats.cc | 32 - milena/sandbox/green/doc/formulae/formulae.tex | 1157 - milena/sandbox/green/doc/quick_tour/quick_tour.tex | 115 - .../doc/regional_maxima/cmp_method/h0_input.pgm.gz | Bin 18078 -> 0 bytes .../doc/regional_maxima/cmp_method/h2_mean.pgm.gz | Bin 374 -> 0 bytes .../doc/regional_maxima/cmp_method/h2_merge.pgm.gz | Bin 4491 -> 0 bytes .../doc/regional_maxima/cmp_method/h3_mean.pgm.gz | Bin 391 -> 0 bytes .../doc/regional_maxima/cmp_method/h3_merge.pgm.gz | Bin 10188 -> 0 bytes .../doc/regional_maxima/cmp_method/h4_mean.pgm.gz | Bin 367 -> 0 bytes .../doc/regional_maxima/cmp_method/h4_merge.pgm.gz | Bin 18078 -> 0 bytes .../doc/regional_maxima/cmp_method/h5_mean.pgm.gz | Bin 372 -> 0 bytes .../doc/regional_maxima/cmp_method/h5_merge.pgm.gz | Bin 12777 -> 0 bytes .../doc/regional_maxima/cmp_method/i2_mean.ppm.gz | Bin 566650 -> 0 bytes .../doc/regional_maxima/cmp_method/i2_merge.ppm.gz | Bin 1586150 -> 0 bytes .../doc/regional_maxima/cmp_method/i3_mean.ppm.gz | Bin 573407 -> 0 bytes .../doc/regional_maxima/cmp_method/i3_merge.ppm.gz | Bin 3050979 -> 0 bytes .../doc/regional_maxima/cmp_method/i4_mean.ppm.gz | Bin 663621 -> 0 bytes .../doc/regional_maxima/cmp_method/i4_merge.ppm.gz | Bin 3387044 -> 0 bytes .../doc/regional_maxima/cmp_method/i5_mean.ppm.gz | Bin 653140 -> 0 bytes .../doc/regional_maxima/cmp_method/i5_merge.ppm.gz | Bin 3217839 -> 0 bytes .../doc/regional_maxima/cmp_method/l2_input.pgm.gz | Bin 423612 -> 0 bytes .../doc/regional_maxima/cmp_method/l3_input.pgm.gz | Bin 420801 -> 0 bytes .../doc/regional_maxima/cmp_method/l4_input.pgm.gz | Bin 486206 -> 0 bytes .../doc/regional_maxima/cmp_method/l5_input.pgm.gz | Bin 479055 -> 0 bytes .../regional_maxima/cmp_method/reponse_theo.eml | 106 - .../doc/regional_maxima/cmp_method/s2_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s3_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s4_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s5_histo.txt | 31 - .../doc/regional_maxima/cmp_method/synthese.txt | 223 - .../doc/regional_maxima/cmp_quant/h0_input.pgm.gz | Bin 18078 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q2.pgm.gz | Bin 247 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q3.pgm.gz | Bin 280 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q4.pgm.gz | Bin 319 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q5.pgm.gz | Bin 375 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q6.pgm.gz | Bin 392 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q7.pgm.gz | Bin 383 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q8.pgm.gz | Bin 470 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q2.pgm.gz | Bin 18081 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q3.pgm.gz | Bin 18081 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q4.pgm.gz | Bin 16358 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q5.pgm.gz | Bin 12780 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q6.pgm.gz | Bin 9694 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q7.pgm.gz | Bin 6211 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q8.pgm.gz | Bin 1564 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q2.ppm.gz | Bin 112779 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q3.ppm.gz | Bin 191264 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q4.ppm.gz | Bin 298062 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q5.ppm.gz | Bin 653143 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q6.ppm.gz | Bin 807617 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q7.ppm.gz | Bin 813222 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q8.ppm.gz | Bin 861711 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q2.ppm.gz | Bin 3387047 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q3.ppm.gz | Bin 3387047 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q4.ppm.gz | Bin 3355365 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q5.ppm.gz | Bin 3217842 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q6.ppm.gz | Bin 3033730 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q7.ppm.gz | Bin 2295150 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q8.ppm.gz | Bin 1319396 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q2.pgm.gz | Bin 83951 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q3.pgm.gz | Bin 143817 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q4.pgm.gz | Bin 220346 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q5.pgm.gz | Bin 479058 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q6.pgm.gz | Bin 593359 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q7.pgm.gz | Bin 600121 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q8.pgm.gz | Bin 630760 -> 0 bytes .../doc/regional_maxima/cmp_quant/s5_histo_q2.txt | 3 - .../doc/regional_maxima/cmp_quant/s5_histo_q3.txt | 8 - .../doc/regional_maxima/cmp_quant/s5_histo_q4.txt | 18 - .../doc/regional_maxima/cmp_quant/s5_histo_q5.txt | 33 - .../doc/regional_maxima/cmp_quant/s5_histo_q6.txt | 33 - .../doc/regional_maxima/cmp_quant/s5_histo_q7.txt | 32 - .../doc/regional_maxima/cmp_quant/s5_histo_q8.txt | 75 - .../doc/regional_maxima/cmp_quant/synthese.txt | 205 - .../mp00411c/colormap_all_q4.txt.gz | Bin 187 -> 0 bytes .../mp00411c/colormap_all_q5.txt.gz | Bin 420 -> 0 bytes .../mp00411c/colormap_thick_q4.txt.gz | Bin 159 -> 0 bytes .../mp00411c/colormap_thick_q5.txt.gz | Bin 352 -> 0 bytes .../mp00411c/colormap_thin_q4.txt.gz | Bin 173 -> 0 bytes .../mp00411c/colormap_thin_q5.txt.gz | Bin 366 -> 0 bytes .../regional_maxima/mp00411c/histo_all_q4.dump.gz | Bin 1233 -> 0 bytes .../regional_maxima/mp00411c/histo_all_q5.dump.gz | Bin 4779 -> 0 bytes .../mp00411c/histo_thick_q4.dump.gz | Bin 781 -> 0 bytes .../mp00411c/histo_thick_q5.dump.gz | Bin 2532 -> 0 bytes .../regional_maxima/mp00411c/histo_thin_q4.dump.gz | Bin 901 -> 0 bytes .../regional_maxima/mp00411c/histo_thin_q5.dump.gz | Bin 2976 -> 0 bytes .../doc/regional_maxima/mp00411c/iz_all_q4.dump.gz | Bin 659040 -> 0 bytes .../doc/regional_maxima/mp00411c/iz_all_q5.dump.gz | Bin 1505619 -> 0 bytes .../regional_maxima/mp00411c/iz_thick_q4.dump.gz | Bin 482831 -> 0 bytes .../regional_maxima/mp00411c/iz_thick_q5.dump.gz | Bin 1414258 -> 0 bytes .../regional_maxima/mp00411c/iz_thin_q4.dump.gz | Bin 647722 -> 0 bytes .../regional_maxima/mp00411c/iz_thin_q5.dump.gz | Bin 1458415 -> 0 bytes .../mp00411c/labeled_all_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_all_q5.dump.gz | Bin 343 -> 0 bytes .../mp00411c/labeled_thick_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_thick_q5.dump.gz | Bin 309 -> 0 bytes .../mp00411c/labeled_thin_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_thin_q5.dump.gz | Bin 308 -> 0 bytes .../regional_maxima/mp00411c/mean3_all_q4.ppm.gz | Bin 985276 -> 0 bytes .../regional_maxima/mp00411c/mean3_all_q5.ppm.gz | Bin 1961577 -> 0 bytes .../regional_maxima/mp00411c/mean3_thick_q4.ppm.gz | Bin 865034 -> 0 bytes .../regional_maxima/mp00411c/mean3_thick_q5.ppm.gz | Bin 1831699 -> 0 bytes .../regional_maxima/mp00411c/mean3_thin_q4.ppm.gz | Bin 958289 -> 0 bytes .../regional_maxima/mp00411c/mean3_thin_q5.ppm.gz | Bin 1872271 -> 0 bytes .../regional_maxima/mp00411c/mean4_all_q4.ppm.gz | Bin 772605 -> 0 bytes .../regional_maxima/mp00411c/mean4_all_q5.ppm.gz | Bin 1852455 -> 0 bytes .../regional_maxima/mp00411c/mean4_thick_q4.ppm.gz | Bin 559850 -> 0 bytes .../regional_maxima/mp00411c/mean4_thick_q5.ppm.gz | Bin 1727247 -> 0 bytes .../regional_maxima/mp00411c/mean4_thin_q4.ppm.gz | Bin 760428 -> 0 bytes .../regional_maxima/mp00411c/mean4_thin_q5.ppm.gz | Bin 1781495 -> 0 bytes .../doc/regional_maxima/mp00411c/mp00411c.ppm.gz | Bin 5316204 -> 0 bytes .../doc/regional_maxima/mp00411c/mp00411c.sh.gz | Bin 636 -> 0 bytes .../regional_maxima/mp00411c/mp00411c_thick.pbm.gz | Bin 190478 -> 0 bytes .../regional_maxima/mp00411c/mp00411c_thin.pbm.gz | Bin 248730 -> 0 bytes .../regional_maxima/mp00411c/opened_all_q4.dump.gz | Bin 1159 -> 0 bytes .../regional_maxima/mp00411c/opened_all_q5.dump.gz | Bin 4531 -> 0 bytes .../mp00411c/opened_thick_q4.dump.gz | Bin 747 -> 0 bytes .../mp00411c/opened_thick_q5.dump.gz | Bin 2351 -> 0 bytes .../mp00411c/opened_thin_q4.dump.gz | Bin 848 -> 0 bytes .../mp00411c/opened_thin_q5.dump.gz | Bin 2772 -> 0 bytes .../regional_maxima/mp00411c/proj1_all_q4.pgm.gz | Bin 343 -> 0 bytes .../regional_maxima/mp00411c/proj1_all_q5.pgm.gz | Bin 779 -> 0 bytes .../regional_maxima/mp00411c/proj1_thick_q4.pgm.gz | Bin 312 -> 0 bytes .../regional_maxima/mp00411c/proj1_thick_q5.pgm.gz | Bin 612 -> 0 bytes .../regional_maxima/mp00411c/proj1_thin_q4.pgm.gz | Bin 339 -> 0 bytes .../regional_maxima/mp00411c/proj1_thin_q5.pgm.gz | Bin 718 -> 0 bytes .../regional_maxima/mp00411c/proj2_all_q4.pgm.gz | Bin 338 -> 0 bytes .../regional_maxima/mp00411c/proj2_all_q5.pgm.gz | Bin 750 -> 0 bytes .../regional_maxima/mp00411c/proj2_thick_q4.pgm.gz | Bin 315 -> 0 bytes .../regional_maxima/mp00411c/proj2_thick_q5.pgm.gz | Bin 606 -> 0 bytes .../regional_maxima/mp00411c/proj2_thin_q4.pgm.gz | Bin 331 -> 0 bytes .../regional_maxima/mp00411c/proj2_thin_q5.pgm.gz | Bin 693 -> 0 bytes .../regional_maxima/mp00411c/proj3_all_q4.ppm.gz | Bin 230 -> 0 bytes .../regional_maxima/mp00411c/proj3_all_q5.ppm.gz | Bin 401 -> 0 bytes .../regional_maxima/mp00411c/proj3_thick_q4.ppm.gz | Bin 224 -> 0 bytes .../regional_maxima/mp00411c/proj3_thick_q5.ppm.gz | Bin 343 -> 0 bytes .../regional_maxima/mp00411c/proj3_thin_q4.ppm.gz | Bin 229 -> 0 bytes .../regional_maxima/mp00411c/proj3_thin_q5.ppm.gz | Bin 359 -> 0 bytes .../regional_maxima/mp00411c/proj4_all_q4.ppm.gz | Bin 252 -> 0 bytes .../regional_maxima/mp00411c/proj4_all_q5.ppm.gz | Bin 447 -> 0 bytes .../regional_maxima/mp00411c/proj4_thick_q4.ppm.gz | Bin 221 -> 0 bytes .../regional_maxima/mp00411c/proj4_thick_q5.ppm.gz | Bin 369 -> 0 bytes .../regional_maxima/mp00411c/proj4_thin_q4.ppm.gz | Bin 234 -> 0 bytes .../regional_maxima/mp00411c/proj4_thin_q5.ppm.gz | Bin 415 -> 0 bytes .../doc/regional_maxima/mp00411c/quant_q4.ppm.gz | Bin 2590062 -> 0 bytes .../doc/regional_maxima/mp00411c/quant_q5.ppm.gz | Bin 3775184 -> 0 bytes .../regional_maxima/mp00411c/stats3_all_q4.txt.gz | Bin 292 -> 0 bytes .../regional_maxima/mp00411c/stats3_all_q5.txt.gz | Bin 701 -> 0 bytes .../mp00411c/stats3_thick_q4.txt.gz | Bin 244 -> 0 bytes .../mp00411c/stats3_thick_q5.txt.gz | Bin 584 -> 0 bytes .../regional_maxima/mp00411c/stats3_thin_q4.txt.gz | Bin 262 -> 0 bytes .../regional_maxima/mp00411c/stats3_thin_q5.txt.gz | Bin 606 -> 0 bytes .../regional_maxima/mp00411c/stats4_all_q4.txt.gz | Bin 284 -> 0 bytes .../regional_maxima/mp00411c/stats4_all_q5.txt.gz | Bin 704 -> 0 bytes .../mp00411c/stats4_thick_q4.txt.gz | Bin 234 -> 0 bytes .../mp00411c/stats4_thick_q5.txt.gz | Bin 580 -> 0 bytes .../regional_maxima/mp00411c/stats4_thin_q4.txt.gz | Bin 255 -> 0 bytes .../regional_maxima/mp00411c/stats4_thin_q5.txt.gz | Bin 591 -> 0 bytes .../doc/regional_maxima/mp00411c/synthese.txt.gz | Bin 4062 -> 0 bytes .../green/exp/annotating/achromastism/Makefile.am | 153 - .../exp/annotating/achromastism/achromastism.cc | 113 - .../exp/annotating/achromastism/text-color.txt | 15 - .../green/exp/annotating/achromastism/text-img.txt | 40 - .../exp/annotating/achromastism/text-only.txt | 8 - .../sandbox/green/exp/annotating/bench/Makefile.am | 153 - milena/sandbox/green/exp/annotating/bench/bench.cc | 1213 - .../sandbox/green/exp/annotating/error/Makefile.am | 153 - milena/sandbox/green/exp/annotating/error/error.cc | 700 - .../sandbox/green/exp/annotating/histo/Makefile.am | 153 - milena/sandbox/green/exp/annotating/histo/histo.cc | 306 - .../sandbox/green/exp/annotating/hsv/Makefile.am | 153 - milena/sandbox/green/exp/annotating/hsv/hsv.cc | 652 - .../sandbox/green/exp/annotating/hue/Makefile.am | 153 - milena/sandbox/green/exp/annotating/hue/hue.cc | 291 - .../green/exp/annotating/hue/text-color.txt | 15 - .../sandbox/green/exp/annotating/hue/text-img.txt | 40 - .../sandbox/green/exp/annotating/hue/text-only.txt | 8 - .../green/exp/annotating/nb_color/Makefile.am | 151 - .../green/exp/annotating/nb_color/nb_color.cc | 131 - .../green/exp/annotating/saturation/Makefile.am | 153 - .../green/exp/annotating/saturation/saturation.cc | 119 - .../green/exp/annotating/saturation/text-color.txt | 15 - .../green/exp/annotating/saturation/text-img.txt | 40 - .../green/exp/annotating/saturation/text-only.txt | 8 - .../green/exp/annotating/stddev_color/Makefile.am | 151 - .../exp/annotating/stddev_color/stddev_color.cc | 153 - .../exp/annotating/stddev_color_16/Makefile.am | 151 - .../annotating/stddev_color_16/stddev_color_16.cc | 195 - .../sandbox/green/exp/annotating/value/Makefile.am | 153 - .../green/exp/annotating/value/text-color.txt | 15 - .../green/exp/annotating/value/text-img.txt | 40 - .../green/exp/annotating/value/text-only.txt | 8 - milena/sandbox/green/exp/annotating/value/value.cc | 316 - .../green/exp/labeling/regional_maxima/Makefile.am | 151 - .../labeling/regional_maxima/regional_maxima.cc | 156 - milena/sandbox/green/mln/accu/stat/histo1d.hh | 348 - milena/sandbox/green/mln/accu/stat/histo2d.hh | 346 - milena/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 380 - milena/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 349 - milena/sandbox/green/mln/clustering/k_mean.hh | 672 - milena/sandbox/green/mln/clustering/kmean1d.hh | 1100 - milena/sandbox/green/mln/clustering/kmean2d.hh | 1343 - milena/sandbox/green/mln/clustering/kmean3d.hh | 1347 - milena/sandbox/green/mln/clustering/kmean_rgb.hh | 973 - milena/sandbox/green/mln/display/display_histo.hh | 180 - milena/sandbox/green/mln/display/project_histo.hh | 536 - milena/sandbox/green/mln/fun/p2b/achromatic.hh | 112 - .../sandbox/green/mln/fun/p2b/component_equals.hh | 99 - milena/sandbox/green/mln/fun/v2v/achromatism.hh | 64 - .../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 - .../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 - milena/sandbox/green/mln/fun/v2v/log.hh | 70 - milena/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 70 - milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 - milena/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 82 - .../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 - milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 - milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 - milena/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 70 - .../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 - .../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 - milena/sandbox/green/mln/img_path.hh | 239 - milena/sandbox/green/mln/io/plot/save_histo_sh.hh | 204 - milena/sandbox/green/mln/io/plot/save_image_sh.hh | 1058 - milena/sandbox/green/mln/math/ceil.hh | 64 - milena/sandbox/green/mln/math/floor.hh | 64 - milena/sandbox/green/mln/value/hsv.hh | 424 - milena/sandbox/green/mln/value/rg.hh | 116 - .../green/tests/accu/stat/histo1d/Makefile.am | 148 - .../green/tests/accu/stat/histo1d/gaussian.sh | 12 - .../green/tests/accu/stat/histo1d/histo1d.cc | 706 - .../green/tests/accu/stat/histo2d/Makefile.am | 148 - .../green/tests/accu/stat/histo2d/gaussian2d.sh | 21 - .../green/tests/accu/stat/histo3d_hsl/Makefile.am | 148 - .../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 423 - .../green/tests/accu/stat/histo3d_rgb/Makefile.am | 148 - .../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 398 - .../green/tests/clustering/k_mean/Makefile.am | 148 - .../green/tests/clustering/k_mean/k_mean.cc | 450 - .../green/tests/clustering/kmean1d/Makefile.am | 148 - .../green/tests/clustering/kmean1d/kmean1d.cc | 483 - .../green/tests/io/plot/save_image_sh/Makefile.am | 148 - .../tests/io/plot/save_image_sh/save_image_sh.cc | 662 - .../green/tools/annotating/histo/Makefile.am | 150 - .../sandbox/green/tools/annotating/histo/histo.cc | 143 - .../sandbox/green/tools/annotating/iz/Makefile.am | 150 - milena/sandbox/green/tools/annotating/iz/iz.cc | 373 - .../green/tools/annotating/opening/Makefile.am | 150 - .../green/tools/annotating/opening/opening.cc | 111 - .../green/tools/annotating/regmax/Makefile.am | 150 - .../green/tools/annotating/regmax/regmax.cc | 328 - milena/sandbox/icdar/2009/README | 13 - milena/sandbox/icdar/2009/dibco/binarization.cc | 840 - milena/sandbox/icdar/2009/dibco/quasi.cc | 180 - .../sandbox/icdar/2009/dibco/svg.1.binarization.cc | 466 - .../sandbox/icdar/2009/dibco/svg.2.binarization.cc | 738 - .../sandbox/icdar/2009/dibco/svg.3.binarization.cc | 860 - milena/sandbox/icdar/2009/dibco/wst-based.sh | 8 - milena/sandbox/icdar/2009/hsc/clean_input.cc | 41 - milena/sandbox/icdar/2009/hsc/clean_input.hh | 45 - milena/sandbox/icdar/2009/hsc/clean_lines.hh | 72 - .../2009/hsc/clean_lines_with_grouped_bboxes.hh | 104 - .../icdar/2009/hsc/dummy_input_to_words_dat.cc | 59 - .../sandbox/icdar/2009/hsc/first_attempts/boxes.cc | 109 - .../sandbox/icdar/2009/hsc/first_attempts/dist.sh | 8 - .../icdar/2009/hsc/first_attempts/exec/iz_lines.cc | 106 - .../2009/hsc/first_attempts/exec/relabel_lines.cc | 296 - .../2009/hsc/first_attempts/exec/show_lines.cc | 53 - .../2009/hsc/first_attempts/exec/show_lines_pbm.cc | 44 - .../sandbox/icdar/2009/hsc/first_attempts/fuzzy.sh | 18 - .../sandbox/icdar/2009/hsc/first_attempts/main.cc | 389 - .../icdar/2009/hsc/first_attempts/reduce.sh | 4 - .../sandbox/icdar/2009/hsc/first_attempts/words.sh | 7 - .../icdar/2009/hsc/first_attempts/words_25p.sh | 11 - milena/sandbox/icdar/2009/hsc/get_line_images.hh | 69 - milena/sandbox/icdar/2009/hsc/icdar2ppm.cc | 16 - milena/sandbox/icdar/2009/hsc/icdar2ppm.hh | 35 - milena/sandbox/icdar/2009/hsc/icdar_io.cc | 51 - .../sandbox/icdar/2009/hsc/input_lines_to_lines.cc | 46 - milena/sandbox/icdar/2009/hsc/input_to_lines.hh | 46 - .../sandbox/icdar/2009/hsc/input_to_lines_dat.cc | 88 - .../sandbox/icdar/2009/hsc/input_to_words_dat.cc | 146 - milena/sandbox/icdar/2009/hsc/input_to_ws.hh | 116 - milena/sandbox/icdar/2009/hsc/input_to_wsl.cc | 68 - milena/sandbox/icdar/2009/hsc/io/icdar/load.hh | 96 - milena/sandbox/icdar/2009/hsc/io/icdar/save.hh | 89 - milena/sandbox/icdar/2009/hsc/label_maj.hh | 197 - milena/sandbox/icdar/2009/hsc/line_to_words.hh | 166 - milena/sandbox/icdar/2009/hsc/lines_to_boxes.cc | 54 - milena/sandbox/icdar/2009/hsc/lines_to_words.cc | 50 - .../sandbox/icdar/2009/hsc/old_input_to_lines.cc | 380 - milena/sandbox/icdar/2009/hsc/ws_to_wsl.hh | 451 - milena/sandbox/icdar/2009/pscomp/iz.cc | 174 - milena/sandbox/icdar/2009/pscomp/rect_filter.cc | 165 - milena/sandbox/igr/code/test.cc | 50 - .../sandbox/inim/2009/binarization/binarization.cc | 36 - .../sandbox/inim/2009/binarization/binarization.hh | 78 - .../2009/binarization/proof-of-concept/ChangeLog | 69 - .../2009/binarization/proof-of-concept/Makefile | 87 - .../binarization/proof-of-concept/build/Makefile | 79 - .../proof-of-concept/build/configure.in | 5 - .../binarization/proof-of-concept/check/Makefile | 71 - .../binarization/proof-of-concept/check/graph.sh | 27 - .../binarization/proof-of-concept/check/histo.gp | 19 - .../2009/binarization/proof-of-concept/configure | 264 - .../binarization/proof-of-concept/configure.in | 26 - .../binarization/proof-of-concept/scripts/flower | 33 - .../proof-of-concept/scripts/init_tar.sh | 14 - .../binarization/proof-of-concept/scripts/todo.sh | 26 - .../binarization/proof-of-concept/src/basic.cc | 75 - .../binarization/proof-of-concept/src/gradient.cc | 109 - .../binarization/proof-of-concept/src/snake2d.hh | 190 - .../binarization/proof-of-concept/src/util.hxx | 97 - milena/sandbox/inim/2009/binarization/snake2d.cc | 39 - milena/sandbox/inim/2009/binarization/snake2d.hh | 190 - milena/sandbox/inim/2009/classif/Makefile | 87 - milena/sandbox/inim/2009/classif/plotscript | 4 - milena/sandbox/inim/2009/classif/src/display.hh | 80 - milena/sandbox/inim/2009/classif/src/iccvg04.cc | 171 - milena/sandbox/inim/2009/classif/src/max_tree.hh | 312 - milena/sandbox/inim/2009/classif/src/proj.hh | 139 - milena/sandbox/inim/2009/classif/src/v2.cc | 178 - milena/sandbox/inim/2009/color/README | 83 - milena/sandbox/inim/2009/color/laplacien.cc | 130 - .../inim/2009/color/min_tree_area_filter.cc | 515 - milena/sandbox/inim/2009/color/min_tree_color.cc | 536 - .../sandbox/inim/2009/color/min_tree_color_v2.cc | 533 - .../inim/2009/color/min_tree_height_filter.cc | 553 - .../inim/2009/color/min_tree_volume_filter.cc | 551 - milena/sandbox/inim/2009/color/reference.cc | 557 - milena/sandbox/inim/2009/color/reference2.cc | 408 - milena/sandbox/inim/2009/color/src/convert.hh | 37 - milena/sandbox/inim/2009/color/src/distance.hh | 52 - milena/sandbox/inim/2009/color/src/graph.hh | 62 - milena/sandbox/inim/2009/color/src/io.hh | 57 - milena/sandbox/inim/2009/nature/Makefile | 24 - milena/sandbox/inim/2009/nature/closing.cc | 61 - milena/sandbox/inim/2009/nature/co_occurence.hh | 77 - milena/sandbox/inim/2009/nature/erosion.cc | 60 - milena/sandbox/inim/2009/nature/fft.cc | 61 - milena/sandbox/inim/2009/nature/gradient.cc | 60 - milena/sandbox/inim/2009/nature/histo_hsi.cc | 181 - milena/sandbox/inim/2009/nature/hom.cc | 316 - milena/sandbox/inim/2009/nature/mco.cc | 48 - milena/sandbox/inim/2009/nature/nature.cc | 499 - milena/sandbox/inim/2009/nature/opening.cc | 61 - milena/sandbox/inim/2009/nature/proj.cc | 68 - milena/sandbox/inim/2009/nature/proj.hh | 64 - milena/sandbox/inim/2009/nature/test.sh | 11 - milena/sandbox/inim/2009/ocr/Makefile | 26 - milena/sandbox/inim/2009/ocr/check.sh | 31 - milena/sandbox/inim/2009/ocr/check_simple_point.cc | 61 - .../inim/2009/ocr/compute_local_configurations.cc | 74 - milena/sandbox/inim/2009/ocr/enlarge.hh | 202 - .../sandbox/inim/2009/ocr/ocr_with_preprocess.cc | 173 - .../inim/2009/ocr/ocr_without_preprocess.cc | 90 - milena/sandbox/inim/2009/ocr/resize.hh | 96 - milena/sandbox/inim/2009/ocr/simple_point.cc | 39 - milena/sandbox/inim/2009/ocr/simple_point.hh | 206 - milena/sandbox/inim/2009/ocr/skeleton.hh | 200 - milena/sandbox/inim/2009/ocr/skeleton.old.cc | 30 - milena/sandbox/inim/2009/ocr/skeleton.old.hh | 612 - milena/sandbox/inim/2009/ocr/tesseract_wrap.hh | 91 - milena/sandbox/inim/2010/blur/AUTHORS | 2 - milena/sandbox/inim/2010/blur/Makefile | 29 - milena/sandbox/inim/2010/blur/README | 7 - milena/sandbox/inim/2010/blur/advance_iterator.hh | 55 - milena/sandbox/inim/2010/blur/advance_iterator.hxx | 95 - milena/sandbox/inim/2010/blur/cuttor.hh | 61 - milena/sandbox/inim/2010/blur/cuttor.hxx | 304 - milena/sandbox/inim/2010/blur/main.cc | 39 - milena/sandbox/inim/2010/blur/vect_it.hh | 43 - milena/sandbox/inim/2010/blur/vect_it.hxx | 152 - milena/sandbox/inim/2010/blur/vect_it_OLD.hxx | 145 - milena/sandbox/inim/2010/blur/vector.hh | 43 - milena/sandbox/inim/2010/blur/vector.hxx | 115 - milena/sandbox/inim/2010/boxes/Makefile | 47 - milena/sandbox/inim/2010/boxes/boxes.cc | 221 - milena/sandbox/inim/2010/boxes/configure | 27 - milena/sandbox/inim/2010/cag/Makefile | 7 - milena/sandbox/inim/2010/cag/README | 47 - milena/sandbox/inim/2010/cag/get_lines.hh | 113 - milena/sandbox/inim/2010/cag/graph.hh | 189 - milena/sandbox/inim/2010/cag/main.cc | 113 - milena/sandbox/inim/2010/cag/superpose.hh | 125 - milena/sandbox/inim/2010/morpho/README | 19 - milena/sandbox/inim/2010/morpho/configure | 45 - milena/sandbox/inim/2010/morpho/dilation-n.hh | 41 - milena/sandbox/inim/2010/morpho/erosion-n.hh | 41 - milena/sandbox/inim/2010/morpho/main_dilation-n.cc | 54 - milena/sandbox/inim/2010/morpho/morpho.cc | 129 - milena/sandbox/inim/2010/morpho/run.sh | 21 - milena/sandbox/inim/2010/page/AUTHORS | 3 - milena/sandbox/inim/2010/page/Makefile | 43 - milena/sandbox/inim/2010/page/README | 51 - .../inim/2010/page/binarization/binarization.hh | 36 - .../inim/2010/page/binarization/binarization.hxx | 72 - .../inim/2010/page/binarization/functors.hh | 23 - .../inim/2010/page/binarization/functors.hxx | 33 - .../inim/2010/page/binarization/grayscale.hh | 32 - .../inim/2010/page/binarization/grayscale.hxx | 15 - .../inim/2010/page/binarization/integral-image.hh | 34 - .../inim/2010/page/binarization/integral-image.hxx | 57 - .../sandbox/inim/2010/page/check_size_functor.hh | 30 - milena/sandbox/inim/2010/page/main.cc | 89 - milena/sandbox/inim/2010/page/white.hh | 36 - milena/sandbox/inim/2010/page/white.hxx | 233 - milena/sandbox/inim/2010/rag/Makefile | 25 - milena/sandbox/inim/2010/rag/center_weight.hh | 183 - milena/sandbox/inim/2010/rag/dijkstra.hh | 71 - .../sandbox/inim/2010/rag/p_vertices_with_accu.hh | 115 - milena/sandbox/inim/2010/rag/rag.cc | 29 - milena/sandbox/inim/2010/rag/rag.hh | 246 - milena/sandbox/inim/2011/fredwin/Makefile | 37 - milena/sandbox/inim/2011/fredwin/configure | 21 - milena/sandbox/inim/2011/fredwin/inim.cc | 273 - milena/sandbox/jardonnet/TODO | 6 - milena/sandbox/jardonnet/array/Makefile | 2 - milena/sandbox/jardonnet/array/array.cc | 22 - milena/sandbox/jardonnet/array/array.hh | 300 - milena/sandbox/jardonnet/array/old/1d.hh | 293 - milena/sandbox/jardonnet/array/old/1d.hxx | 237 - milena/sandbox/jardonnet/array/old/2d.hh | 327 - milena/sandbox/jardonnet/array/old/2d.hxx | 283 - milena/sandbox/jardonnet/array/old/3d.hh | 334 - milena/sandbox/jardonnet/array/old/3d.hxx | 293 - milena/sandbox/jardonnet/array/old/all.hh | 36 - milena/sandbox/jardonnet/array/old/nd.hh | 50 - milena/sandbox/jardonnet/array/old/objs.hh | 75 - milena/sandbox/jardonnet/icc.txt | 2 - milena/sandbox/jardonnet/igr/Makefile | 61 - milena/sandbox/jardonnet/igr/check/check | 10 - milena/sandbox/jardonnet/igr/check/s7.ppm | 6001 - milena/sandbox/jardonnet/igr/check/tiny.ppm | 317 - milena/sandbox/jardonnet/igr/src/igr.cc | 109 - milena/sandbox/jardonnet/n_cmpt/Makefile | 46 - milena/sandbox/jardonnet/n_cmpt/check/mg_ima.pgm | Bin 96121 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/check/test2.pgm | Bin 152 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test3.pgm | Bin 152 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test4.pgm | Bin 114 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/tiny.pgm | 193 - .../jardonnet/n_cmpt/diff_ref_fused_on_small | 13 - milena/sandbox/jardonnet/n_cmpt/fused | 26 - milena/sandbox/jardonnet/n_cmpt/fused_filter.cc | 254 - milena/sandbox/jardonnet/n_cmpt/n_cmpt.cc | 43 - milena/sandbox/jardonnet/n_cmpt/n_cmpt.hh | 193 - milena/sandbox/jardonnet/n_cmpt/n_cmpt2.cc | 37 - milena/sandbox/jardonnet/n_cmpt/n_cmpt2.hh | 175 - milena/sandbox/jardonnet/n_cmpt/n_cmpt3.cc | 46 - milena/sandbox/jardonnet/n_cmpt/n_cmpt3.hh | 205 - milena/sandbox/jardonnet/n_cmpt/n_cmpt4.cc | 48 - milena/sandbox/jardonnet/n_cmpt/n_cmpt4.hh | 208 - milena/sandbox/jardonnet/n_cmpt/n_cmpt5.cc | 46 - milena/sandbox/jardonnet/n_cmpt/n_cmpt5.hh | 253 - milena/sandbox/jardonnet/n_cmpt/nwst.cc | 48 - milena/sandbox/jardonnet/n_cmpt/nwst.hh | 200 - milena/sandbox/jardonnet/n_cmpt/prob.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/ref | 22 - milena/sandbox/jardonnet/n_cmpt/ref_filter.cc | 226 - milena/sandbox/jardonnet/n_cmpt/seg15.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/test3.cc | 42 - .../jardonnet/n_cmpt/test_attribute_watershed.cc | 79 - milena/sandbox/jardonnet/n_cmpt/tikz.cc | 63 - milena/sandbox/jardonnet/n_cmpt/tikz.hh | 309 - milena/sandbox/jardonnet/n_cmpt/tiny_seg15.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/wst.cc | 46 - milena/sandbox/jardonnet/perl/hxx.pl | 27 - milena/sandbox/jardonnet/perl/test/all.hh | 63 - milena/sandbox/jardonnet/perl/test/c.hh | 140 - milena/sandbox/jardonnet/perl/test/cast.hh | 85 - milena/sandbox/jardonnet/perl/test/i2v/all.hh | 56 - milena/sandbox/jardonnet/perl/test/i2v/all_to.hh | 108 - milena/sandbox/jardonnet/perl/test/i2v/array.hh | 147 - .../jardonnet/perl/test/internal/selector.hh | 200 - .../perl/test/internal/x2x_linear_impl.hh | 102 - milena/sandbox/jardonnet/perl/test/ops.hh | 199 - milena/sandbox/jardonnet/perl/test/p2b/all.hh | 56 - milena/sandbox/jardonnet/perl/test/p2b/chess.hh | 78 - milena/sandbox/jardonnet/perl/test/p2b/has.hh | 137 - milena/sandbox/jardonnet/perl/test/p2v/all.hh | 58 - milena/sandbox/jardonnet/perl/test/p2v/elifs.hh | 85 - milena/sandbox/jardonnet/perl/test/p2v/iota.hh | 106 - milena/sandbox/jardonnet/perl/test/p2v/ternary.hh | 120 - .../sandbox/jardonnet/perl/test/v2b/threshold.hh | 90 - milena/sandbox/jardonnet/perl/test/v2v/abs.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/all.hh | 61 - milena/sandbox/jardonnet/perl/test/v2v/cast.hh | 81 - milena/sandbox/jardonnet/perl/test/v2v/dec.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/enc.hh | 77 - milena/sandbox/jardonnet/perl/test/v2v/id.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/inc.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/linear.hh | 94 - milena/sandbox/jardonnet/perl/test/v2v/norm.hh | 130 - .../sandbox/jardonnet/perl/test/v2v/rgb_to_hsi.hh | 143 - milena/sandbox/jardonnet/perl/test/v2v/saturate.hh | 129 - milena/sandbox/jardonnet/perl/test/vv2v/max.hh | 77 - milena/sandbox/jardonnet/perl/test/vv2v/min.hh | 77 - milena/sandbox/jardonnet/perl/test/x2x/all.hh | 66 - .../jardonnet/perl/test/x2x/geom/composed.hh | 285 - .../jardonnet/perl/test/x2x/geom/rotation.hh | 243 - .../jardonnet/perl/test/x2x/geom/translation.hh | 152 - .../jardonnet/perl/test/x2x/interpol/bilinear.hh | 139 - .../jardonnet/perl/test/x2x/interpol/linear.hh | 124 - .../jardonnet/perl/test/x2x/interpol/test.cc | 14 - milena/sandbox/jardonnet/registration/center.hh | 72 - milena/sandbox/jardonnet/registration/chamfer.hh | 189 - milena/sandbox/jardonnet/registration/cloud.hh | 107 - milena/sandbox/jardonnet/registration/cov.hh | 82 - milena/sandbox/jardonnet/registration/cross_cov.hh | 18 - milena/sandbox/jardonnet/registration/exp_val.hh | 73 - milena/sandbox/jardonnet/registration/final_qk.hh | 111 - .../jardonnet/registration/frankel_young.hh | 46 - milena/sandbox/jardonnet/registration/icp.hh | 255 - milena/sandbox/jardonnet/registration/icp_ref.hh | 234 - .../jardonnet/registration/interpolation.hh | 41 - milena/sandbox/jardonnet/registration/jacobi.hh | 116 - milena/sandbox/jardonnet/registration/misc.hh | 19 - .../sandbox/jardonnet/registration/multiscale.hh | 78 - milena/sandbox/jardonnet/registration/power_it.hh | 39 - .../sandbox/jardonnet/registration/projection.hh | 86 - milena/sandbox/jardonnet/registration/quat7.hh | 191 - .../sandbox/jardonnet/registration/registration.hh | 172 - milena/sandbox/jardonnet/registration/rotation.hh | 70 - milena/sandbox/jardonnet/registration/save.hh | 131 - milena/sandbox/jardonnet/registration/tools.hh | 314 - milena/sandbox/jardonnet/registration/update_qk.hh | 74 - milena/sandbox/jardonnet/registration/variance.hh | 27 - .../jardonnet/subsampling/gaussian_subsampling.hh | 93 - .../jardonnet/subsampling/sub_sampled_image.hh | 226 - milena/sandbox/jardonnet/test/Makefile | 57 - milena/sandbox/jardonnet/test/bench | 88 - milena/sandbox/jardonnet/test/bench.rb | 39 - milena/sandbox/jardonnet/test/big_chess.cc | 76 - .../sandbox/jardonnet/test/final/final_qk2_1.ppm | Bin 840120 -> 0 bytes .../sandbox/jardonnet/test/final/final_qk2_2.ppm | Bin 840120 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_1.ppm | Bin 1016184 -> 0 bytes .../jardonnet/test/final/final_qk_1_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_2.ppm | Bin 840120 -> 0 bytes .../jardonnet/test/final/final_qk_2_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_3.ppm | Bin 1016184 -> 0 bytes milena/sandbox/jardonnet/test/final/no_final.ppm | Bin 840120 -> 0 bytes .../jardonnet/test/final/no_final_1_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/gaussian.cc | 21 - .../sandbox/jardonnet/test/gaussian_subsampling.cc | 21 - milena/sandbox/jardonnet/test/icp.cc | 122 - milena/sandbox/jardonnet/test/icp_ref.cc | 109 - milena/sandbox/jardonnet/test/img/c0.pbm | 5 - milena/sandbox/jardonnet/test/img/c1.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c10.pbm | Bin 1351 -> 0 bytes milena/sandbox/jardonnet/test/img/c11.pbm | 4 - milena/sandbox/jardonnet/test/img/c2.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c3.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c4.pbm | 5 - milena/sandbox/jardonnet/test/img/c5.pbm | Bin 5050 -> 0 bytes milena/sandbox/jardonnet/test/img/c55.pbm | Bin 5050 -> 0 bytes milena/sandbox/jardonnet/test/img/c6.pbm | 4 - milena/sandbox/jardonnet/test/img/c7.pbm | 4 - milena/sandbox/jardonnet/test/img/c8.pbm | 4 - milena/sandbox/jardonnet/test/img/c9.pbm | 4 - milena/sandbox/jardonnet/test/img/x0.pbm | 5 - milena/sandbox/jardonnet/test/img/x1.pbm | 4 - milena/sandbox/jardonnet/test/img/x10.pbm | Bin 1351 -> 0 bytes milena/sandbox/jardonnet/test/img/x11.pbm | 4 - milena/sandbox/jardonnet/test/img/x2.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x3.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x4.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x5.pbm | 4 - milena/sandbox/jardonnet/test/img/x6.pbm | 4 - milena/sandbox/jardonnet/test/img/x7.pbm | Bin 45050 -> 0 bytes milena/sandbox/jardonnet/test/img/x8.pbm | Bin 45050 -> 0 bytes milena/sandbox/jardonnet/test/img/x9.pbm | 6 - milena/sandbox/jardonnet/test/length.ppm | Bin 840120 -> 0 bytes milena/sandbox/jardonnet/test/no_final.ppm | Bin 1016184 -> 0 bytes milena/sandbox/jardonnet/test/plotscript | 9 - milena/sandbox/jardonnet/test/reduce.cc | 26 - milena/sandbox/jardonnet/test/registration.cc | 71 - milena/sandbox/jardonnet/test/script_latex.plot | 8 - milena/sandbox/jardonnet/test/subsampling.cc | 22 - milena/sandbox/jardonnet/test/test.cc | 12 - milena/sandbox/jardonnet/test/test.rb | 51 - milena/sandbox/jardonnet/test/type.cc | 15 - milena/sandbox/jardonnet/virtual/Makefile | 2 - milena/sandbox/jardonnet/virtual/access.cc | 92 - milena/sandbox/jardonnet/virtual/access.hh | 179 - milena/sandbox/jardonnet/virtual/bilinear.ppm | Bin 786552 -> 0 bytes milena/sandbox/jardonnet/virtual/lena.pgm | 4 - milena/sandbox/jardonnet/virtual/lena.ppm | 541 - milena/sandbox/jardonnet/virtual/nn.ppm | Bin 786552 -> 0 bytes milena/sandbox/laurent/ismm2009.cc | 1178 - milena/sandbox/laurent/ismm2009.hh | 342 - milena/sandbox/laurent/memo/ismm2009.v0.cc | 563 - milena/sandbox/laurent/memo/ismm2009.v1.cc | 745 - milena/sandbox/laurent/memo/ismm2009.v2.cc | 978 - milena/sandbox/laurent/playing_with_attributes.cc | 397 - milena/sandbox/lazzara/afp/micro_films/Makefile | 8 - .../lazzara/afp/micro_films/demat_mf_afp.sh | 52 - .../sandbox/lazzara/afp/micro_films/extract_mf.cc | 126 - .../lazzara/afp/micro_films/keep_background.cc | 85 - .../sandbox/lazzara/afp/micro_films/split_image.cc | 80 - milena/sandbox/lazzara/csv2vtk/csv2vtk.cc | 83 - milena/sandbox/lazzara/fonctionnalites_milena.ods | Bin 21834 -> 0 bytes milena/sandbox/lazzara/igr/gui/Makefile.am | 11 - milena/sandbox/lazzara/igr/gui/demo.pro | 16 - .../sandbox/lazzara/igr/gui/src/bak/mainwindow.cc | 441 - .../sandbox/lazzara/igr/gui/src/bak/mainwindow.hh | 146 - milena/sandbox/lazzara/igr/gui/src/display.cc | 135 - milena/sandbox/lazzara/igr/gui/src/display.hh | 88 - milena/sandbox/lazzara/igr/gui/src/display_seg.cc | 172 - milena/sandbox/lazzara/igr/gui/src/display_seg.hh | 95 - milena/sandbox/lazzara/igr/gui/src/edit_seg.cc | 250 - milena/sandbox/lazzara/igr/gui/src/edit_seg.hh | 89 - milena/sandbox/lazzara/igr/gui/src/image_viewer.cc | 194 - milena/sandbox/lazzara/igr/gui/src/image_viewer.hh | 102 - .../igr/gui/src/internal/interactive_scene.cc | 88 - .../igr/gui/src/internal/interactive_scene.hh | 73 - milena/sandbox/lazzara/igr/gui/src/main.cc | 39 - milena/sandbox/lazzara/igr/gui/src/main_window.cc | 56 - milena/sandbox/lazzara/igr/gui/src/main_window.hh | 60 - milena/sandbox/lazzara/igr/gui/src/to_qimage.hh | 63 - milena/sandbox/lazzara/igr/gui/src/widgets.cc | 4 - .../sandbox/lazzara/igr/gui/ui/bak/mainwindow.ui | 277 - milena/sandbox/lazzara/igr/gui/ui/display.ui | 88 - milena/sandbox/lazzara/igr/gui/ui/display_seg.ui | 108 - milena/sandbox/lazzara/igr/gui/ui/edit_seg.ui | 97 - milena/sandbox/lazzara/igr/gui/ui/image_viewer.ui | 154 - milena/sandbox/lazzara/igr/gui/ui/main_window.ui | 75 - milena/sandbox/lazzara/igr/igr-biggest-comp.cc | 294 - milena/sandbox/lazzara/igr/igr-cloud.cc | 61 - milena/sandbox/lazzara/igr/igr.cc | 295 - .../sandbox/lazzara/igr/irm/grad_clo_and_wshd.cc | 93 - milena/sandbox/lazzara/igr/irm/hsl_grad_and_wst.cc | 142 - milena/sandbox/lazzara/igr/irm/wst_rag.cc | 298 - milena/sandbox/lazzara/igr/irm/wst_rag_hsl.cc | 310 - .../lazzara/igr/irm_seg_with_mm_and_rag.mine.cc | 331 - milena/sandbox/lazzara/igr/registration_3d.cc | 58 - milena/sandbox/lazzara/igr/tr_image.cc | 185 - .../lazzara/scribo/binarization_naive/main.cc | 54 - .../lazzara/scribo/binarization_naive/toto.cc | 28 - milena/sandbox/lazzara/scribo/fill_holes/main.cc | 118 - .../separateurs_materialises/lines_pattern.cc | 69 - .../sandbox/lazzara/scribo/skeleton_crest/main.cc | 52 - milena/sandbox/markov/T_gen.hh | 76 - milena/sandbox/markov/approx_exp.hh | 77 - milena/sandbox/markov/markov.cc | 57 - milena/sandbox/markov/markov.hh | 112 - milena/sandbox/markov/random.hh | 29 - milena/sandbox/markov/random.hxx | 53 - milena/sandbox/modules/icdar/lines.cc | 358 - milena/sandbox/modules/icdar/words.cc | 250 - milena/sandbox/nivault/dmap.hh | 577 - milena/sandbox/nivault/dmap.hxx | 372 - milena/sandbox/nivault/dyn_line.hh | 183 - milena/sandbox/nivault/extract_character.cc | 360 - milena/sandbox/nivault/extract_score.cc | 228 - milena/sandbox/nivault/log | 19 - milena/sandbox/nivault/median.hh | 257 - milena/sandbox/nivault/plugin-gimp/.gitignore | 13 - milena/sandbox/nivault/plugin-gimp/AUTHORS | 2 - milena/sandbox/nivault/plugin-gimp/COPYING | 21 - milena/sandbox/nivault/plugin-gimp/ChangeLog | 347 - milena/sandbox/nivault/plugin-gimp/HACKING | 29 - milena/sandbox/nivault/plugin-gimp/INSTALL | 229 - milena/sandbox/nivault/plugin-gimp/Makefile.am | 15 - milena/sandbox/nivault/plugin-gimp/TODO | 1 - milena/sandbox/nivault/plugin-gimp/autogen.sh | 184 - milena/sandbox/nivault/plugin-gimp/configure.ac | 125 - .../sandbox/nivault/plugin-gimp/help/Makefile.am | 3 - .../nivault/plugin-gimp/help/en/Makefile.am | 9 - .../nivault/plugin-gimp/help/en/gimp-help.xml | 4 - .../sandbox/nivault/plugin-gimp/help/en/index.html | 33 - .../nivault/plugin-gimp/help/images/Makefile.am | 8 - .../nivault/plugin-gimp/help/images/wilber.png | Bin 5022 -> 0 bytes milena/sandbox/nivault/plugin-gimp/po/ChangeLog | 72 - milena/sandbox/nivault/plugin-gimp/po/az.po | 115 - milena/sandbox/nivault/plugin-gimp/po/de.po | 91 - milena/sandbox/nivault/plugin-gimp/po/fr.po | 114 - milena/sandbox/nivault/plugin-gimp/po/sk.po | 115 - milena/sandbox/nivault/plugin-gimp/po/sv.po | 116 - milena/sandbox/nivault/plugin-gimp/po/zh_TW.po | 114 - milena/sandbox/nivault/plugin-gimp/src/Makefile.am | 27 - .../sandbox/nivault/plugin-gimp/src/build-image.hh | 55 - .../nivault/plugin-gimp/src/build-image.hxx | 103 - .../sandbox/nivault/plugin-gimp/src/gimp-image.hh | 620 - .../sandbox/nivault/plugin-gimp/src/interface.hh | 40 - .../sandbox/nivault/plugin-gimp/src/interface.hxx | 94 - milena/sandbox/nivault/plugin-gimp/src/main.cc | 153 - .../sandbox/nivault/plugin-gimp/src/plugin-intl.hh | 45 - milena/sandbox/nivault/rotation.cc | 72 - milena/sandbox/nivault/tests/pouet.cc | 49 - milena/sandbox/nivault/tests/test | 4 - milena/sandbox/nivault/vec.hh | 363 - milena/sandbox/pellegrin/Makefile | 26 - milena/sandbox/pellegrin/cond_inheritance/Makefile | 2 - .../cond_inheritance/concept/point_set.hh | 72 - .../cond_inheritance/internal/multi_set.hh | 72 - .../cond_inheritance/internal/point_set_base.hh | 97 - .../pellegrin/cond_inheritance/internal/uni_set.hh | 70 - .../sandbox/pellegrin/cond_inheritance/p_array.hh | 71 - milena/sandbox/pellegrin/cond_inheritance/p_set.hh | 71 - .../cond_inheritance/test_cond_inherit.cc | 61 - milena/sandbox/pellegrin/first_test.cc | 40 - .../pellegrin/set/core/concept/point_set.hh | 246 - .../pellegrin/set/core/internal/multi_set.hh | 176 - .../sandbox/pellegrin/set/core/internal/uni_set.hh | 176 - milena/sandbox/pellegrin/set/core/line2d.hh | 212 - milena/sandbox/pellegrin/set/core/p_array.hh | 247 - milena/sandbox/pellegrin/set/core/p_bgraph.hh | 235 - milena/sandbox/pellegrin/set/core/p_graph.hh | 263 - milena/sandbox/pellegrin/set/core/p_line_graph.hh | 178 - .../sandbox/pellegrin/set/core/p_priority_queue.hh | 365 - .../pellegrin/set/core/p_priority_queue_fast.hh | 365 - .../set/core/p_priority_queue_fast_with_array.hh | 351 - milena/sandbox/pellegrin/set/core/p_queue.hh | 311 - milena/sandbox/pellegrin/set/core/p_queue_fast.hh | 318 - milena/sandbox/pellegrin/set/core/p_run.hh | 250 - milena/sandbox/pellegrin/set/core/p_runs.hh | 541 - milena/sandbox/pellegrin/set/core/p_set.hh | 195 - milena/sandbox/pellegrin/set/core/pset_if.hh | 227 - milena/sandbox/pellegrin/set/test/Makefile | 16 - milena/sandbox/pellegrin/set/test/detest.sh | 17 - milena/sandbox/pellegrin/set/test/p_bgraph.cc | 85 - .../sandbox/pellegrin/set/test/p_priority_queue.cc | 98 - .../pellegrin/set/test/p_priority_queue_fast.cc | 98 - .../set/test/p_priority_queue_fast_with_array.cc | 105 - milena/sandbox/pellegrin/set/test/p_queue.cc | 57 - milena/sandbox/pellegrin/set/test/p_queue_fast.cc | 57 - milena/sandbox/pellegrin/set/test/p_runs.cc | 82 - milena/sandbox/pellegrin/set/test/p_set.cc | 57 - milena/sandbox/pellegrin/set/test/pset_if.cc | 53 - milena/sandbox/pellegrin/set/test/test.sh | 18 - milena/sandbox/pellegrin/set/trait/point_set.hh | 110 - milena/sandbox/pellegrin/set/types_de_points.txt | 14 - milena/sandbox/roland/.gitignore | 3 - milena/sandbox/roland/Makefile | 25 - milena/sandbox/roland/double.cc | 47 - milena/sandbox/roland/min-max.cc | 48 - milena/sandbox/roland/morpho/lower_completion.hh | 152 - .../roland/morpho/shortest_path_watershed.hh | 221 - milena/sandbox/theo/Rd/debase.union_find.hh | 165 - milena/sandbox/theo/Rd/deco.cc | 71 - milena/sandbox/theo/Rd/diff.cc | 28 - milena/sandbox/theo/Rd/diff_pgm.cc | 43 - milena/sandbox/theo/Rd/hybrid.cc | 53 - milena/sandbox/theo/Rd/hybrid.hh | 117 - milena/sandbox/theo/Rd/min.cc | 42 - milena/sandbox/theo/Rd/parallel.cc | 54 - milena/sandbox/theo/Rd/parallel.hh | 85 - milena/sandbox/theo/Rd/parallel_wo.cc | 46 - milena/sandbox/theo/Rd/queue_based.cc | 51 - milena/sandbox/theo/Rd/queue_based.hh | 124 - milena/sandbox/theo/Rd/sequential.cc | 50 - milena/sandbox/theo/Rd/sequential.hh | 87 - milena/sandbox/theo/Rd/sequential_bench.cc | 51 - milena/sandbox/theo/Rd/sequential_bench.hh | 100 - milena/sandbox/theo/Rd/svg.queue_based.hh | 118 - milena/sandbox/theo/Rd/union_find.cc | 52 - milena/sandbox/theo/Rd/union_find.hh | 166 - milena/sandbox/theo/Rd/utils.hh | 269 - milena/sandbox/theo/browsing/fwd.cc | 515 - milena/sandbox/theo/browsing/fwd.hh | 88 - milena/sandbox/theo/color/blen_pix.hh | 187 - milena/sandbox/theo/color/change_attributes.hh | 360 - milena/sandbox/theo/color/filter_blen_rgb_edges.cc | 387 - .../theo/color/filter_meandist_rgb_pixels.cc | 227 - milena/sandbox/theo/color/mean_rgb_pix.hh | 151 - milena/sandbox/theo/color/segment.hh | 578 - milena/sandbox/theo/color/segment_gl_pixels.cc | 117 - milena/sandbox/theo/color/segment_rgb_edges.cc | 368 - milena/sandbox/theo/color/segment_rgb_pixels.cc | 205 - milena/sandbox/theo/color/sum_pix.hh | 162 - milena/sandbox/theo/compute_parent_more.hh | 191 - milena/sandbox/theo/cs2d/cs2d.cc | 110 - milena/sandbox/theo/cs2d/cs2d.hh | 172 - milena/sandbox/theo/cs2d/cs2d_morpho.hh | 372 - milena/sandbox/theo/cs2d/cs2d_utils.hh | 251 - milena/sandbox/theo/cs2d/dbl_neighb.hh | 167 - milena/sandbox/theo/cs2d/kruskal.cc | 357 - milena/sandbox/theo/cs2d/tuto.cc | 145 - milena/sandbox/theo/csi/edwin.cc | 144 - milena/sandbox/theo/csi/fred.cc | 148 - milena/sandbox/theo/dead/inplace.hh | 66 - milena/sandbox/theo/dead/instant.hh | 168 - milena/sandbox/theo/dmap.cc | 131 - milena/sandbox/theo/dmap.txt | 92 - milena/sandbox/theo/esiee/jean/pfg2d.cc | 51 - milena/sandbox/theo/esiee/jean/pfg3d.cc | 135 - milena/sandbox/theo/esiee/laurent/ismm09/cplx2d.hh | 162 - .../esiee/laurent/ismm09/extinct_attributes.hh | 167 - milena/sandbox/theo/esiee/laurent/ismm09/lca.hh | 173 - milena/sandbox/theo/esiee/laurent/ismm09/main.cc | 140 - .../sandbox/theo/esiee/laurent/ismm09/main.ext.cc | 76 - .../theo/esiee/laurent/ismm09/pseudo_tree.hh | 597 - .../sandbox/theo/esiee/laurent/ismm09/topo_wst.cc | 114 - milena/sandbox/theo/esiee/laurent/ismm09/trash.hh | 106 - milena/sandbox/theo/esiee/laurent/ismm09/util.hh | 72 - .../theo/esiee/laurent/presentation/classif.cc | 419 - .../esiee/laurent/presentation/segmentation.hh | 14 - .../theo/esiee/laurent/presentation/wst2d.cc | 162 - .../theo/esiee/laurent/presentation/wst3d.cc | 79 - .../theo/esiee/laurent/presentation/wst_edge.cc | 409 - .../sandbox/theo/esiee/slides_2009_may/dilation.hh | 70 - milena/sandbox/theo/esiee/slides_2009_may/main.cc | 31 - milena/sandbox/theo/estimate.hh | 90 - milena/sandbox/theo/exec/clean_holes.cc | 66 - milena/sandbox/theo/exec/closing_area.cc | 60 - milena/sandbox/theo/exec/closing_height.cc | 60 - milena/sandbox/theo/exec/closing_isotropic.cc | 81 - milena/sandbox/theo/exec/closing_rectangle.cc | 62 - milena/sandbox/theo/exec/closing_volume.cc | 60 - .../sandbox/theo/exec/color_internal_gradient.cc | 148 - milena/sandbox/theo/exec/color_labeling_mean.cc | 67 - milena/sandbox/theo/exec/diff_abs.cc | 38 - milena/sandbox/theo/exec/distance_thick.cc | 46 - milena/sandbox/theo/exec/dump2cloud.cc | 34 - milena/sandbox/theo/exec/dump2pnm.cc | 93 - milena/sandbox/theo/exec/dump_12bit_to_pgm.cc | 35 - milena/sandbox/theo/exec/elementary_gradient.cc | 90 - milena/sandbox/theo/exec/filetype.hh | 54 - .../sandbox/theo/exec/gaussian_directional_2d.cc | 99 - .../sandbox/theo/exec/gaussian_directional_2d.hh | 475 - .../theo/exec/gaussian_directional_2d__float.cc | 99 - milena/sandbox/theo/exec/opening_rectangle.cc | 62 - milena/sandbox/theo/exec/pnms2dump.cc | 97 - milena/sandbox/theo/exec/rank_rectangle.cc | 52 - milena/sandbox/theo/exec/subsample.cc | 43 - milena/sandbox/theo/exec/superpose.cc | 39 - milena/sandbox/theo/exec/threshold_low.cc | 69 - milena/sandbox/theo/exec/watershed_flooding.cc | 96 - milena/sandbox/theo/exec/watershed_superpose.cc | 36 - milena/sandbox/theo/experimental/depeche/col.cc | 286 - .../sandbox/theo/experimental/depeche/homogen.cc | 43 - milena/sandbox/theo/experimental/depeche/row.cc | 117 - milena/sandbox/theo/experimental/depeche/row_mm.cc | 96 - milena/sandbox/theo/experimental/histo_image.cc | 421 - .../theo/experimental/op_pw_value_pw_cst.cc | 91 - .../sandbox/theo/experimental/projected_histo.cc | 66 - milena/sandbox/theo/fllt.svg.6.cc | 1139 - milena/sandbox/theo/fllt.svg.7.hh | 838 - milena/sandbox/theo/fllt/compute_fllt.cc | 19 - .../theo/fllt/connected_filters/area_filter.cc | 26 - .../theo/fllt/connected_filters/area_filter.hh | 69 - .../theo/fllt/connected_filters/canonize_tree.hh | 51 - .../fllt/connected_filters/pseudo_flat_zones.cc | 44 - milena/sandbox/theo/fllt/fllt.hh | 1017 - milena/sandbox/theo/fllt/fllt.svg.1.cc | 222 - milena/sandbox/theo/fllt/fllt.svg.2.cc | 304 - milena/sandbox/theo/fllt/fllt.svg.3.cc | 313 - milena/sandbox/theo/fllt/fllt.svg.4.cc | 352 - milena/sandbox/theo/fllt/fllt.svg.5.cc | 353 - milena/sandbox/theo/fllt/fllt.svg.6.cc | 1136 - milena/sandbox/theo/fllt/fllt.svg.7.hh | 913 - milena/sandbox/theo/fllt/fllt_test.hh | 874 - milena/sandbox/theo/fllt/fllt_tree_to_image.hh | 30 - milena/sandbox/theo/fllt/simple_tests.cc | 84 - milena/sandbox/theo/igr/dump_cut.cc | 47 - milena/sandbox/theo/igr/dump_to_dist.cc | 160 - milena/sandbox/theo/igr/irm_anat_segm.cc | 69 - milena/sandbox/theo/igr/irm_anat_segm__2D_ONLY.cc | 57 - milena/sandbox/theo/igr/irm_seg_with_mm_and_rag.cc | 178 - .../theo/igr/melimage/irm_perf/dynaparam7.m | 299 - milena/sandbox/theo/igr/pgms2pgm.cc | 41 - milena/sandbox/theo/igr/segment_2d_t.cc | 128 - milena/sandbox/theo/mln/browsing/window_sliding.cc | 52 - milena/sandbox/theo/mln/core/concept/walue.hh | 80 - .../sandbox/theo/mln/morpho/canvas/f_and_g.pbm.gz | Bin 3400 -> 0 bytes milena/sandbox/theo/mln/morpho/canvas/g.pbm.gz | Bin 31955 -> 0 bytes .../theo/mln/morpho/canvas/internal/find_root.hh | 89 - milena/sandbox/theo/mln/morpho/canvas/lena.pgm.gz | Bin 222842 -> 0 bytes .../theo/mln/morpho/canvas/lena_blurred.pgm.gz | Bin 104878 -> 0 bytes .../sandbox/theo/mln/morpho/canvas/lena_min.pgm.gz | Bin 216190 -> 0 bytes .../sandbox/theo/mln/morpho/canvas/one_domain.cc | 569 - .../mln/morpho/canvas/reconstruction_on_set.cc | 376 - .../mln/morpho/canvas/reconstruction_on_set.hh | 356 - .../morpho/canvas/reconstruction_on_set_tiny.cc | 190 - .../sandbox/theo/mln/morpho/canvas/regminid.pbm.gz | Bin 1794 -> 0 bytes .../theo/mln/morpho/conditional/dilation.cc | 29 - .../theo/mln/morpho/conditional/dilation.hh | 111 - .../sandbox/theo/mln/morpho/geodesic/dilation.cc | 31 - .../sandbox/theo/mln/morpho/geodesic/dilation.hh | 88 - .../mln/morpho/geodesic/dilation_permissive.cc | 47 - .../mln/morpho/geodesic/dilation_permissive.hh | 463 - .../morpho/geodesic/dilation_permissive_bench.cc | 60 - .../mln/morpho/geodesic/dilation_permissive_n.cc | 35 - milena/sandbox/theo/mln/morpho/max.hh | 143 - .../theo/mln/morpho/reconstruction/by_dilation.cc | 68 - .../theo/mln/morpho/reconstruction/by_dilation.hh | 776 - .../mln/morpho/reconstruction/by_dilation_tiny.cc | 71 - milena/sandbox/theo/mln/subsampling/debase.cc | 23 - milena/sandbox/theo/mln/subsampling/debase.hh | 351 - milena/sandbox/theo/mln/subsampling/in.pgm.gz | Bin 3649560 -> 0 bytes milena/sandbox/theo/mln/subsampling/integral.cc | 38 - milena/sandbox/theo/mln/subsampling/integral.hh | 295 - milena/sandbox/theo/mln/subsampling/sizes.cc | 45 - milena/sandbox/theo/mln/walue/approx_equal.hh | 98 - milena/sandbox/theo/mln/walue/color.hh | 66 - milena/sandbox/theo/mln/walue/gl.cc | 76 - milena/sandbox/theo/mln/walue/gl.hh | 362 - milena/sandbox/theo/mln/walue/gl16.hh | 50 - milena/sandbox/theo/mln/walue/gl8.hh | 50 - milena/sandbox/theo/mln/walue/glf.cc | 39 - milena/sandbox/theo/mln/walue/glf.hh | 152 - milena/sandbox/theo/mln/walue/int_u.cc | 32 - milena/sandbox/theo/mln/walue/int_u.hh | 170 - milena/sandbox/theo/mln/walue/internal/rgb_base.hh | 240 - milena/sandbox/theo/mln/walue/rgb.hh | 86 - milena/sandbox/theo/mln/walue/rgb_3x8.cc | 26 - milena/sandbox/theo/mln/walue/rgb_3x8.hh | 51 - milena/sandbox/theo/mln/walue/rgb_3xn.hh | 98 - milena/sandbox/theo/mln/walue/rgb_t.hh | 97 - milena/sandbox/theo/mln/walue/set_encoding.hh | 176 - .../sandbox/theo/p_runs__with_dedicated_piter.hh | 758 - milena/sandbox/theo/publis/icip2009/compute_a.cc | 578 - .../sandbox/theo/publis/icip2009/regmin_count.cc | 175 - milena/sandbox/theo/rush/exo2/Makefile | 36 - milena/sandbox/theo/rush/exo2/exo2.cc | 118 - milena/sandbox/theo/rush/exo2/exo2.sh | 16 - milena/sandbox/theo/rush/exo2/propagate.hh | 77 - milena/sandbox/theo/rush/exo3/Makefile | 28 - milena/sandbox/theo/rush/exo3/assignable.cc | 251 - milena/sandbox/theo/rush/exo3/exo3_fun_area.cc | 313 - .../sandbox/theo/rush/exo3/exo3_fun_generator.cc | 366 - milena/sandbox/theo/skel.cc | 106 - milena/sandbox/theo/test_attribute.cc | 122 - milena/sandbox/theo/tufa_2008/closed_gradient.cc | 64 - milena/sandbox/theo/tufa_2008/closing.cc | 64 - milena/sandbox/theo/tufa_2008/experiment.cc | 138 - milena/sandbox/theo/tufa_2008/filter.cc | 169 - milena/sandbox/theo/tufa_2008/filter_n.cc | 341 - milena/sandbox/theo/tufa_2008/fz_count.cc | 160 - milena/sandbox/theo/tufa_2008/gradient.cc | 58 - milena/sandbox/theo/tufa_2008/n_cmpt.cc | 263 - milena/sandbox/theo/tufa_2008/opening.cc | 63 - milena/sandbox/theo/tufa_2008/steps.0.cc | 171 - milena/sandbox/theo/tufa_2008/steps.1.cc | 274 - milena/sandbox/theo/tufa_2008/steps.2.cc | 259 - milena/sandbox/theo/tufa_2008/steps.2b.cc | 185 - milena/sandbox/theo/tufa_2008/steps.3.cc | 186 - milena/sandbox/theo/tufa_2008/wst.cc | 69 - milena/sandbox/theo/tufa_2008/wst_f_equal_wst_a.cc | 140 - milena/sandbox/theo/win_fun.cc | 160 - milena/sandbox/theo/win_fun.hh | 160 - milena/sandbox/vigouroux/cmy/fun.hh | 54 - milena/sandbox/vigouroux/cmy/get_blue.hh | 67 - milena/sandbox/vigouroux/cmy/get_green.hh | 56 - milena/sandbox/vigouroux/cmy/my_cmy.hh | 90 - milena/sandbox/vigouroux/cmy/rgb_to_cmy.hh | 78 - milena/sandbox/vigouroux/cmy/test.cc | 28 - milena/sandbox/vigouroux/cmy/testfun.cc | 30 - milena/sandbox/vigouroux/color.cc | 27 - milena/sandbox/vigouroux/color.hh | 45 - milena/sandbox/vigouroux/color/color.hh | 309 - milena/sandbox/vigouroux/color/hsi.hh | 64 - milena/sandbox/vigouroux/color/hsl.hh | 55 - milena/sandbox/vigouroux/color/hsv.hh | 56 - milena/sandbox/vigouroux/color/is_HSI.cc | 33 - milena/sandbox/vigouroux/color/my_cmy.hh | 65 - milena/sandbox/vigouroux/color/my_hsi.hh | 93 - milena/sandbox/vigouroux/color/my_hsl.hh | 90 - milena/sandbox/vigouroux/color/my_hsv.hh | 90 - milena/sandbox/vigouroux/color/my_xyz.hh | 93 - milena/sandbox/vigouroux/color/my_yiq.hh | 133 - milena/sandbox/vigouroux/color/my_yuv.hh | 133 - milena/sandbox/vigouroux/color/nrgb.hh | 131 - milena/sandbox/vigouroux/color/rgb.hh | 59 - milena/sandbox/vigouroux/color/rgb_to_cmy.hh | 47 - milena/sandbox/vigouroux/color/rgb_to_hsi.hh | 105 - milena/sandbox/vigouroux/color/rgb_to_hsl.hh | 82 - milena/sandbox/vigouroux/color/rgb_to_hsv.hh | 60 - milena/sandbox/vigouroux/color/rgb_to_xyz.hh | 76 - milena/sandbox/vigouroux/color/rgb_to_yiq.hh | 48 - milena/sandbox/vigouroux/color/rgb_to_yuv.hh | 48 - milena/sandbox/vigouroux/color/tests.cc | 31 - milena/sandbox/vigouroux/color/xyz.hh | 55 - milena/sandbox/vigouroux/color/yiq.hh | 65 - milena/sandbox/vigouroux/color/yuv.hh | 64 - milena/sandbox/vigouroux/conv/getred.hh | 76 - milena/sandbox/vigouroux/conv/rgbto.hh | 149 - milena/sandbox/vigouroux/conv/test.cc | 33 - milena/sandbox/vigouroux/conv/tored.hh | 118 - milena/sandbox/vigouroux/conv/torgb.hh | 140 - .../vigouroux/convert/abstract/colorconv.hh | 69 - .../vigouroux/convert/abstract/conversion.hh | 178 - milena/sandbox/vigouroux/convert/basics.hh | 39 - milena/sandbox/vigouroux/convert/bound.hh | 67 - milena/sandbox/vigouroux/convert/cast.hh | 64 - milena/sandbox/vigouroux/convert/conversion.hh | 160 - .../sandbox/vigouroux/convert/conversion_ng_se.hh | 82 - milena/sandbox/vigouroux/convert/force.hh | 63 - milena/sandbox/vigouroux/convert/nrgbxyz.hh | 182 - milena/sandbox/vigouroux/convert/rgbhsi.hh | 154 - milena/sandbox/vigouroux/convert/rgbhsl.hh | 227 - milena/sandbox/vigouroux/convert/rgbhsv.hh | 205 - milena/sandbox/vigouroux/convert/rgbnrgb.hh | 146 - milena/sandbox/vigouroux/convert/rgbxyz.hh | 144 - milena/sandbox/vigouroux/convert/rgbyiq.hh | 142 - milena/sandbox/vigouroux/convert/rgbyuv.hh | 140 - milena/sandbox/vigouroux/convert/stretch.hh | 218 - milena/sandbox/vigouroux/convert/value_to_point.hh | 131 - milena/sandbox/vigouroux/function.hh | 72 - milena/sandbox/vigouroux/gradation.hh | 91 - milena/sandbox/vigouroux/hsi/get_blue.hh | 67 - milena/sandbox/vigouroux/hsi/get_green.hh | 67 - milena/sandbox/vigouroux/hsi/get_red.hh | 67 - milena/sandbox/vigouroux/hsi/my_hsi.hh | 93 - milena/sandbox/vigouroux/hsi/rgb_to_hsi.hh | 110 - milena/sandbox/vigouroux/lap.cc | 49 - milena/sandbox/vigouroux/lap.hh | 77 - milena/sandbox/vigouroux/literal/black.hh | 38 - milena/sandbox/vigouroux/literal/blue.hh | 38 - milena/sandbox/vigouroux/literal/brown.hh | 37 - milena/sandbox/vigouroux/literal/cyan.hh | 44 - milena/sandbox/vigouroux/literal/darkgray.hh | 33 - milena/sandbox/vigouroux/literal/gray.hh | 33 - milena/sandbox/vigouroux/literal/green.hh | 38 - milena/sandbox/vigouroux/literal/lightgray.hh | 33 - milena/sandbox/vigouroux/literal/lime.hh | 37 - milena/sandbox/vigouroux/literal/magenta.hh | 37 - milena/sandbox/vigouroux/literal/olive.hh | 33 - milena/sandbox/vigouroux/literal/orange.hh | 37 - milena/sandbox/vigouroux/literal/pink.hh | 37 - milena/sandbox/vigouroux/literal/purple.hh | 37 - milena/sandbox/vigouroux/literal/red.hh | 38 - milena/sandbox/vigouroux/literal/teal.hh | 37 - milena/sandbox/vigouroux/literal/violet.hh | 37 - milena/sandbox/vigouroux/literal/white.hh | 38 - milena/sandbox/vigouroux/literal/yellow.hh | 37 - milena/sandbox/vigouroux/load.cc | 78 - milena/sandbox/vigouroux/moyenne.cc | 63 - milena/sandbox/vigouroux/testfun.cc | 32 - milena/sandbox/vigouroux/tests.cc | 31 - milena/sandbox/vigouroux/xyz/get_blue.hh | 56 - milena/sandbox/vigouroux/xyz/get_green.hh | 56 - milena/sandbox/vigouroux/xyz/get_red.hh | 52 - milena/sandbox/vigouroux/xyz/my_xyz.hh | 93 - milena/sandbox/vigouroux/xyz/rgb_to_xyz.hh | 76 - milena/sandbox/vigouroux/xyz/test.cc | 28 - milena/sandbox/vigouroux/xyz/testfun.cc | 31 - milena/sandbox/vigouroux/yiq/get_blue.hh | 56 - milena/sandbox/vigouroux/yiq/get_green.hh | 55 - milena/sandbox/vigouroux/yiq/get_red.hh | 54 - milena/sandbox/vigouroux/yiq/my_yiq.hh | 91 - milena/sandbox/vigouroux/yiq/rgb_to_yiq.hh | 78 - milena/sandbox/vigouroux/yiq/test.cc | 28 - milena/sandbox/vigouroux/yiq/testfun.cc | 30 - milena/sandbox/vigouroux/yuv/get_blue.hh | 56 - milena/sandbox/vigouroux/yuv/get_green.hh | 56 - milena/sandbox/vigouroux/yuv/get_red.hh | 58 - milena/sandbox/vigouroux/yuv/my_yuv.hh | 91 - milena/sandbox/vigouroux/yuv/rgb_to_yuv.hh | 79 - milena/sandbox/vigouroux/yuv/test.cc | 28 - milena/sandbox/vigouroux/yuv/testfun.cc | 30 - milena/tests/Makefile.am | 12 +- milena/tests/accu/Makefile.am | 14 - milena/tests/accu/image/Makefile.am | 9 +- milena/tests/accu/math/Makefile.am | 3 +- milena/tests/accu/shape/Makefile.am | 3 +- milena/tests/accu/site_set/Makefile.am | 3 +- milena/tests/accu/stat/Makefile.am | 12 - milena/tests/algebra/Makefile.am | 10 +- milena/tests/algebra/h_vec.cc | 6 +- milena/tests/arith/Makefile.am | 9 +- milena/tests/binarization/Makefile.am | 1 - milena/tests/border/Makefile.am | 24 +- milena/tests/canvas/Makefile.am | 4 +- milena/tests/canvas/browsing/Makefile.am | 11 +- milena/tests/canvas/morpho/Makefile.am | 7 +- milena/tests/convert/Makefile.am | 18 +- milena/tests/convert/impl/Makefile.am | 3 +- milena/tests/convert/to_hsl.cc | 44 - milena/tests/core/alias/Makefile.am | 18 +- milena/tests/core/alias/point1d.cc | 9 +- milena/tests/core/image/Makefile.am | 14 +- milena/tests/core/image/dmorph/Makefile.am | 10 +- milena/tests/core/image/imorph/Makefile.am | 7 +- milena/tests/core/image/vmorph/Makefile.am | 4 +- milena/tests/core/other/Makefile.am | 22 +- milena/tests/core/routine/Makefile.am | 8 +- milena/tests/core/site_set/Makefile.am | 18 +- milena/tests/data.hh.in | 10 +- milena/tests/data/Makefile.am | 29 +- milena/tests/data/approx/Makefile.am | 3 +- milena/tests/data/naive/Makefile.am | 3 +- milena/tests/debug/Makefile.am | 7 +- milena/tests/draw/Makefile.am | 6 +- milena/tests/estim/Makefile.am | 6 +- milena/tests/extension/Makefile.am | 4 +- milena/tests/extract/Makefile.am | 20 +- milena/tests/extract/blue.cc | 47 - milena/tests/extract/green.cc | 47 - milena/tests/extract/hue.cc | 47 - milena/tests/extract/lum.cc | 47 - milena/tests/extract/red.cc | 47 - milena/tests/extract/sat.cc | 47 - milena/tests/fun/Makefile.am | 4 +- milena/tests/fun/i2v/Makefile.am | 6 +- milena/tests/fun/p2b/Makefile.am | 7 +- milena/tests/fun/p2p/Makefile.am | 4 +- milena/tests/fun/p2v/Makefile.am | 7 +- milena/tests/fun/stat/Makefile.am | 3 +- milena/tests/fun/v2i/Makefile.am | 3 +- milena/tests/fun/v2v/Makefile.am | 16 +- milena/tests/fun/v2v/component.cc | 69 - milena/tests/fun/vv2v/Makefile.am | 5 +- milena/tests/fun/x2x/Makefile.am | 7 +- milena/tests/geom/Makefile.am | 23 - milena/tests/graph/Makefile.am | 3 +- milena/tests/graph/attribute/Makefile.am | 4 +- milena/tests/histo/Makefile.am | 5 +- milena/tests/io/dicom/Makefile.am | 3 +- milena/tests/io/dump/Makefile.am | 1 - milena/tests/io/fits/Makefile.am | 1 - milena/tests/io/fld/Makefile.am | 6 +- milena/tests/io/magick/Makefile.am | 2 - milena/tests/io/off/Makefile.am | 3 - milena/tests/io/pbm/Makefile.am | 2 - milena/tests/io/pbms/Makefile.am | 1 - milena/tests/io/pfm/Makefile.am | 7 +- milena/tests/io/pgm/Makefile.am | 5 - milena/tests/io/pgms/Makefile.am | 1 - milena/tests/io/pnm/Makefile.am | 7 +- milena/tests/io/ppm/Makefile.am | 3 - milena/tests/io/ppms/Makefile.am | 1 - milena/tests/io/tiff/Makefile.am | 3 +- milena/tests/labeling/Makefile.am | 19 +- milena/tests/linear/Makefile.am | 21 +- milena/tests/linear/gaussian/Makefile.am | 13 +- milena/tests/linear/gaussian/filter.cc | 48 - milena/tests/linear/local/Makefile.am | 5 +- milena/tests/literal/Makefile.am | 14 +- milena/tests/logical/Makefile.am | 9 +- milena/tests/make/Makefile.am | 18 +- milena/tests/make/p_edges_with_mass_centers.cc | 3 +- milena/tests/make/p_vertices_with_mass_centers.cc | 3 +- milena/tests/math/Makefile.am | 7 +- milena/tests/metal/Makefile.am | 7 +- milena/tests/metal/converts_to.cc | 23 +- milena/tests/metal/make/Makefile.am | 7 +- milena/tests/metal/math/Makefile.am | 6 +- milena/tests/morpho/Makefile.am | 27 +- milena/tests/morpho/approx/Makefile.am | 2 - milena/tests/morpho/attribute/Makefile.am | 6 +- milena/tests/morpho/closing/Makefile.am | 8 - milena/tests/morpho/closing/approx/Makefile.am | 1 - milena/tests/morpho/elementary/Makefile.am | 12 +- milena/tests/morpho/opening/Makefile.am | 8 - milena/tests/morpho/opening/approx/Makefile.am | 1 - .../morpho/reconstruction/by_dilation/Makefile.am | 3 - .../morpho/reconstruction/by_erosion/Makefile.am | 3 - milena/tests/morpho/tree/Makefile.am | 8 +- milena/tests/morpho/tree/filter/Makefile.am | 3 +- milena/tests/morpho/watershed/Makefile.am | 3 - milena/tests/opt/Makefile.am | 4 +- milena/tests/pw/Makefile.am | 6 +- milena/tests/registration/Makefile.am | 9 +- milena/tests/registration/registration.cc | 55 - milena/tests/set/Makefile.am | 12 +- milena/tests/subsampling/Makefile.am | 3 +- milena/tests/tag/Makefile.am | 7 +- milena/tests/test/Makefile.am | 4 +- milena/tests/tests.mk | 13 +- milena/tests/topo/Makefile.am | 4 +- milena/tests/topo/skeleton/Makefile.am | 4 +- milena/tests/trace/Makefile.am | 7 +- milena/tests/trait/Makefile.am | 6 +- milena/tests/trait/ch_value.cc | 12 - milena/tests/trait/image/Makefile.am | 5 +- milena/tests/trait/op/Makefile.am | 6 +- milena/tests/trait/op/plus.cc | 41 +- milena/tests/trait/value/Makefile.am | 6 +- milena/tests/transform/Makefile.am | 11 +- milena/tests/unit_test/unit-tests.mk | 1410 +- milena/tests/upscaling/art/Makefile.am | 4 +- milena/tests/util/Makefile.am | 20 +- milena/tests/value/Makefile.am | 32 +- milena/tests/value/builtin/Makefile.am | 5 +- milena/tests/value/concept/Makefile.am | 7 +- milena/tests/value/graylevel.cc | 74 +- milena/tests/value/int_s16.cc | 5 +- milena/tests/value/int_u8.cc | 5 +- milena/tests/value/stack.cc | 55 - milena/tests/win/Makefile.am | 20 +- milena/tests/world/binary_2d/Makefile.am | 4 +- milena/tests/world/inter_pixel/Makefile.am | 7 +- milena/tests/world/inter_pixel/dim2/Makefile.am | 3 +- milena/tools/Makefile.am | 6 +- milena/tools/tools.mk | 3 +- milena/vcs/milena.rb | 16 - scribo/ChangeLog | 249 +- scribo/Makefile.am | 16 +- scribo/common.mk | 28 + scribo/headers.mk | 4 - scribo/sandbox/ChangeLog | 219 - scribo/sandbox/green/ChangeLog | 1666 - scribo/sandbox/green/README | 219 - scribo/sandbox/green/README.green | 1211 - scribo/sandbox/green/README.img | 124 - scribo/sandbox/green/README.result | 143 - .../green/bench/clustering/distance/Makefile.am | 153 - .../green/bench/clustering/distance/distance.cc | 842 - .../sandbox/green/demo/annotating/bic/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 - .../sandbox/green/demo/annotating/hsv/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 - .../sandbox/green/demo/annotating/lep/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 - .../green/demo/annotating/nb_color/Makefile.am | 153 - .../green/demo/annotating/nb_color/nb_color.cc | 143 - .../green/demo/annotating/project/Makefile.am | 153 - .../green/demo/annotating/project/project.cc | 275 - .../green/demo/annotating/rgb_64/Makefile.am | 153 - .../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 - .../green/demo/annotating/rgb_64_9/Makefile.am | 153 - .../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 - .../green/demo/annotating/stddev_color/Makefile.am | 153 - .../demo/annotating/stddev_color/stddev_color.cc | 191 - .../demo/annotating/stddev_color_16/Makefile.am | 153 - .../annotating/stddev_color_16/stddev_color_16.cc | 261 - .../green/demo/clustering/kmean1d/Makefile.am | 153 - .../green/demo/clustering/kmean1d/kmean1d.cc | 258 - .../green/demo/clustering/kmean2d/Makefile.am | 153 - .../green/demo/clustering/kmean2d/kmean2d.cc | 278 - .../green/demo/clustering/kmean3d/Makefile.am | 153 - .../green/demo/clustering/kmean3d/kmean3d.cc | 265 - .../green/demo/clustering/kmean_rgb/Makefile.am | 153 - .../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 239 - .../demo/labeling/regional_maxima/Makefile.am | 153 - .../labeling/regional_maxima/regional_maxima.cc | 198 - .../demo/labeling/regional_maxima/thresholds.txt | 42 - .../green/demo/labeling/watershed/Makefile.am | 153 - .../green/demo/labeling/watershed/gaussian.sh | 12 - .../green/demo/labeling/watershed/watershed.cc | 360 - scribo/sandbox/green/doc/annotating/class.txt | 42 - .../green/doc/annotating/syntheseMillet2008.txt | 283 - scribo/sandbox/green/doc/annotating/testMillet2008 | 69 - .../green/doc/examples/accu_color/accu_color.cc | 249 - scribo/sandbox/green/doc/examples/frac/Makefile.am | 148 - scribo/sandbox/green/doc/examples/frac/frac.cc | 423 - scribo/sandbox/green/doc/examples/frac/frac.hh | 793 - scribo/sandbox/green/doc/examples/frac/gcd.hh | 91 - .../sandbox/green/doc/examples/frac/sign_prod.hh | 74 - .../green/doc/examples/hello_milena/Makefile.am | 49 - .../doc/examples/hello_milena/hello_milena.cc | 41 - .../green/doc/examples/hello_world/Makefile.am | 49 - .../green/doc/examples/hello_world/hello_world.cc | 9 - .../green/doc/examples/hello_world/print.cc | 6 - scribo/sandbox/green/doc/examples/io/Makefile.am | 150 - scribo/sandbox/green/doc/examples/io/io.cc | 71 - .../green/doc/examples/learn_milena/Makefile.am | 49 - .../doc/examples/learn_milena/learn_milena.cc | 151 - scribo/sandbox/green/doc/examples/otsu/Makefile.am | 49 - scribo/sandbox/green/doc/examples/otsu/otsu.cc | 193 - .../sandbox/green/doc/examples/stats/Makefile.am | 49 - scribo/sandbox/green/doc/examples/stats/stats.cc | 32 - scribo/sandbox/green/doc/formulae/formulae.tex | 1157 - scribo/sandbox/green/doc/quick_tour/quick_tour.tex | 115 - .../green/exp/annotating/achromastism/Makefile.am | 153 - .../exp/annotating/achromastism/achromastism.cc | 179 - .../exp/annotating/achromastism/text-color.txt | 15 - .../green/exp/annotating/achromastism/text-img.txt | 40 - .../exp/annotating/achromastism/text-only.txt | 8 - .../sandbox/green/exp/annotating/bench/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 - .../sandbox/green/exp/annotating/error/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/error/error.cc | 833 - .../sandbox/green/exp/annotating/histo/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 - .../sandbox/green/exp/annotating/hsv/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 - .../sandbox/green/exp/annotating/hue/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 - .../green/exp/annotating/hue/text-color.txt | 15 - .../sandbox/green/exp/annotating/hue/text-img.txt | 40 - .../sandbox/green/exp/annotating/hue/text-only.txt | 8 - .../green/exp/annotating/nb_color/Makefile.am | 153 - .../green/exp/annotating/nb_color/nb_color.cc | 171 - .../green/exp/annotating/saturation/Makefile.am | 153 - .../green/exp/annotating/saturation/saturation.cc | 175 - .../green/exp/annotating/saturation/text-color.txt | 15 - .../green/exp/annotating/saturation/text-img.txt | 40 - .../green/exp/annotating/saturation/text-only.txt | 8 - .../green/exp/annotating/stddev_color/Makefile.am | 153 - .../exp/annotating/stddev_color/stddev_color.cc | 216 - .../exp/annotating/stddev_color_16/Makefile.am | 153 - .../annotating/stddev_color_16/stddev_color_16.cc | 277 - .../sandbox/green/exp/annotating/value/Makefile.am | 153 - .../green/exp/annotating/value/text-color.txt | 15 - .../green/exp/annotating/value/text-img.txt | 40 - .../green/exp/annotating/value/text-only.txt | 8 - scribo/sandbox/green/exp/annotating/value/value.cc | 468 - .../sandbox/green/exp/regional_maxima/Makefile.am | 153 - .../green/exp/regional_maxima/regional_maxima.cc | 196 - .../green/exp/regional_maxima/thresholds.txt | 42 - scribo/sandbox/green/gaussian.sh | 12 - scribo/sandbox/green/gaussian2d.sh | 21 - scribo/sandbox/green/mln/accu/stat/histo1d.hh | 338 - scribo/sandbox/green/mln/accu/stat/histo2d.hh | 342 - scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 388 - scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 345 - scribo/sandbox/green/mln/clustering/k_mean.hh | 785 - scribo/sandbox/green/mln/clustering/kmean1d.hh | 1082 - scribo/sandbox/green/mln/clustering/kmean2d.hh | 1345 - scribo/sandbox/green/mln/clustering/kmean3d.hh | 1345 - scribo/sandbox/green/mln/clustering/kmean_rgb.hh | 1042 - scribo/sandbox/green/mln/display/display_histo.hh | 295 - scribo/sandbox/green/mln/display/project_histo.hh | 679 - scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 128 - .../sandbox/green/mln/fun/p2b/component_equals.hh | 99 - scribo/sandbox/green/mln/fun/v2v/achromatism.hh | 64 - .../sandbox/green/mln/fun/v2v/hue_concentration.hh | 111 - .../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 - scribo/sandbox/green/mln/fun/v2v/log.hh | 70 - scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 119 - scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 - scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 119 - .../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 81 - scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 162 - scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 - scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 109 - .../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 - .../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 - scribo/sandbox/green/mln/img_path.hh | 239 - scribo/sandbox/green/mln/io/plot/save_image_sh.hh | 1090 - scribo/sandbox/green/mln/math/ceil.hh | 64 - scribo/sandbox/green/mln/math/floor.hh | 64 - scribo/sandbox/green/mln/value/hsv.hh | 424 - scribo/sandbox/green/mln/value/rg.hh | 175 - scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh | 334 - scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh | 346 - scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh | 349 - scribo/sandbox/green/ok/mln/img_path.hh | 239 - .../sandbox/green/ok/test/accu/histo/gaussian.sh | 12 - scribo/sandbox/green/ok/test/accu/histo/histo1d | Bin 802920 -> 0 bytes scribo/sandbox/green/ok/test/accu/histo/histo1d.cc | 726 - scribo/sandbox/green/test_labelling.cc | 336 - scribo/sandbox/green/test_labelling_2.cc | 342 - scribo/sandbox/green/test_labelling_3.cc | 463 - .../green/tests/accu/stat/histo1d/Makefile.am | 153 - .../green/tests/accu/stat/histo1d/histo1d.cc | 507 - .../green/tests/accu/stat/histo3d_hsl/Makefile.am | 153 - .../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 391 - .../green/tests/accu/stat/histo3d_rgb/Makefile.am | 153 - .../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 397 - .../green/tests/clustering/k_mean/Makefile.am | 153 - .../green/tests/clustering/k_mean/k_mean.cc | 547 - .../green/tests/clustering/kmean1d/Makefile.am | 148 - .../green/tests/clustering/kmean1d/kmean1d.cc | 483 - .../green/tests/io/plot/save_image_sh/Makefile.am | 153 - .../tests/io/plot/save_image_sh/save_image_sh.cc | 774 - .../sandbox/green/tools/labeling/histo/Makefile.am | 153 - scribo/sandbox/green/tools/labeling/histo/histo.cc | 204 - scribo/sandbox/green/tools/labeling/iz/Makefile.am | 153 - scribo/sandbox/green/tools/labeling/iz/iz.cc | 495 - .../green/tools/labeling/opening/Makefile.am | 153 - .../green/tools/labeling/opening/opening.cc | 174 - .../green/tools/labeling/regmax/Makefile.am | 153 - .../sandbox/green/tools/labeling/regmax/regmax.cc | 428 - .../green/use/accu/stat/histo1d/Makefile.am | 153 - .../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 50 - .../green/use/accu/stat/histo2d/Makefile.am | 153 - .../sandbox/green/use/accu/stat/histo2d/histo2d.cc | 58 - .../green/use/accu/stat/histo3d_hsl/Makefile.am | 153 - .../green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc | 59 - .../green/use/accu/stat/histo3d_rgb/Makefile.am | 153 - .../green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc | 57 - .../green/use/clustering/k_mean/Makefile.am | 153 - .../sandbox/green/use/clustering/k_mean/k_mean.cc | 55 - .../green/use/clustering/kmean1d/Makefile.am | 153 - .../green/use/clustering/kmean1d/kmean1d.cc | 50 - .../green/use/clustering/kmean2d/Makefile.am | 153 - .../green/use/clustering/kmean2d/kmean2d.cc | 61 - .../green/use/clustering/kmean3d/Makefile.am | 153 - .../green/use/clustering/kmean3d/kmean3d.cc | 63 - .../green/use/clustering/kmean_rgb/Makefile.am | 153 - .../green/use/clustering/kmean_rgb/kmean_rgb.cc | 63 - .../green/use/display/display_histo/Makefile.am | 153 - .../use/display/display_histo/display_histo.cc | 86 - .../green/use/fun/v2v/rg_to_rgb/Makefile.am | 153 - .../green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc | 68 - .../green/use/fun/v2v/rgb8_to_rgbn/Makefile.am | 153 - .../green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc | 57 - .../green/use/fun/v2v/rgb_to_rg/Makefile.am | 153 - .../green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc | 58 - .../green/use/io/plot/save_image_sh/Makefile.am | 153 - .../use/io/plot/save_image_sh/save_image_sh.cc | 53 - scribo/sandbox/green/use/value/rg/Makefile.am | 153 - scribo/sandbox/green/use/value/rg/rg.cc | 58 - scribo/sandbox/z/white_spaces/hom_sep.cc | 133 - .../sandbox/z/white_spaces/white_space_closing.cc | 123 - scribo/sandbox/z/white_spaces/white_spaces.cc | 842 - scribo/scribo.mk | 10 +- scribo/scribo/binarization/otsu_threshold.hh | 7 +- scribo/scribo/debug/alignment_decision_image.hh | 6 +- scribo/scribo/debug/bboxes_enlarged_image.hh | 4 +- scribo/scribo/debug/decision_image.hh | 10 +- scribo/scribo/debug/links_decision_image.hh | 6 +- scribo/scribo/debug/links_image.hh | 4 +- .../scribo/debug/looks_like_a_text_line_image.hh | 4 +- scribo/scribo/io/text_boxes/save.hh | 4 +- scribo/scribo/io/xml/load.hh | 2 +- scribo/scribo/primitive/extract/components.hh | 6 +- .../primitive/link/with_single_right_link.hh | 4 +- scribo/scribo/text/paragraphs_closing.hh | 11 +- scribo/scribo/text/recognition.hh | 10 +- scribo/scribo/toolchain/content_in_doc.hh | 12 +- scribo/scribo/toolchain/content_in_hdoc.hh | 10 +- scribo/scribo/toolchain/text_in_doc.hh | 10 +- scribo/scribo/toolchain/text_in_doc_preprocess.hh | 20 +- scribo/scribo/toolchain/text_in_picture.hh | 6 +- scribo/src/Makefile.am | 9 +- scribo/src/afp/components.hh | 6 +- scribo/src/binarization/Makefile.am | 16 +- scribo/src/binarization/otsu.cc | 4 +- scribo/src/content_in_hdoc.cc | 4 +- scribo/src/contest/DAE-2011/Makefile.am | 7 +- scribo/src/contest/DAE-2011/content_in_doc_dae.cc | 2 +- scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc | 2 +- scribo/src/contest/Makefile.am | 3 - scribo/src/contest/hdibco-2010/Makefile.am | 6 +- scribo/src/contest/hdlac-2011/Makefile.am | 6 +- .../contest/hdlac-2011/content_in_hdoc_hdlac.cc | 8 + scribo/src/debug/Makefile.am | 39 - scribo/src/debug/show_separators.cc | 5 +- scribo/src/filter/Makefile.am | 7 - scribo/src/misc/Makefile.am | 7 - scribo/src/misc/morpho.cc | 9 +- scribo/src/non_text_components.cc | 2 +- scribo/src/postprocessing/Makefile.am | 6 +- scribo/src/preprocessing/Makefile.am | 10 - scribo/src/primitive/extract/Makefile.am | 13 +- scribo/src/primitive/find/Makefile.am | 6 - scribo/src/primitive/group/Makefile.am | 9 +- scribo/src/primitive/remove/Makefile.am | 3 +- scribo/src/table/Makefile.am | 5 - scribo/src/text/Makefile.am | 5 - scribo/src/text_in_doc_preprocess.cc | 2 +- scribo/src/toolchain/nepomuk/Makefile.am | 3 +- scribo/src/util/Makefile.am | 3 +- scribo/src/util/component_precise_outline.cc | 5 +- scribo/tests/binarization/Makefile.am | 12 +- scribo/tests/convert/Makefile.am | 6 +- scribo/tests/core/Makefile.am | 7 +- scribo/tests/estim/Makefile.am | 7 +- scribo/tests/filter/Makefile.am | 18 - scribo/tests/preprocessing/Makefile.am | 5 - scribo/tests/primitive/extract/Makefile.am | 3 +- scribo/tests/primitive/link/Makefile.am | 3 +- scribo/tests/table/Makefile.am | 5 +- scribo/tests/tests.mk | 50 +- scribo/tests/toolchain/nepomuk/Makefile.am | 6 +- scribo/tests/unit_test/unit-tests.mk | 294 - scribo/tests/util/Makefile.am | 5 +- scribo/vcs/scribo.rb | 16 - swilena/ChangeLog | 15 + swilena/Makefile.am | 4 +- swilena/image2d_int_u8.i | 15 +- swilena/int_u24.i | 40 + swilena/python/Makefile.am | 12 +- vcs/oln.rb | 16 - 2635 files changed, 12288 insertions(+), 870247 deletions(-) delete mode 100755 build-aux/strip-lrde rename {milena/tests => build-aux}/tests-recursive.mk (100%) delete mode 100644 dynamic-use-of-static-c++/.vcs delete mode 100644 dynamic-use-of-static-c++/vcs/dynamic_static_bridge_vcs.rb delete mode 100644 external/Makefile.am delete mode 100644 external/README delete mode 100644 external/trimesh/.gitignore delete mode 100644 external/trimesh/COPYING delete mode 100644 external/trimesh/ChangeLog delete mode 100644 external/trimesh/Makedefs.Darwin delete mode 100644 external/trimesh/Makedefs.Linux delete mode 100644 external/trimesh/Makedefs.Linux64 delete mode 100644 external/trimesh/Makedefs.SunOS delete mode 100644 external/trimesh/Makedefs.Win32 delete mode 100644 external/trimesh/Makefile.am delete mode 100644 external/trimesh/Makerules delete mode 100644 external/trimesh/README delete mode 100644 external/trimesh/configure.ac delete mode 100644 external/trimesh/gluit/COPYING.freeglut delete mode 100644 external/trimesh/gluit/COPYING.glui delete mode 100644 external/trimesh/gluit/Makefile.am delete mode 100644 external/trimesh/gluit/freeglut_callbacks.c delete mode 100644 external/trimesh/gluit/freeglut_cursor.c delete mode 100644 external/trimesh/gluit/freeglut_display.c delete mode 100644 external/trimesh/gluit/freeglut_ext.c delete mode 100644 external/trimesh/gluit/freeglut_font.c delete mode 100644 external/trimesh/gluit/freeglut_font_data.c delete mode 100644 external/trimesh/gluit/freeglut_gamemode.c delete mode 100644 external/trimesh/gluit/freeglut_geometry.c delete mode 100644 external/trimesh/gluit/freeglut_glutfont_definitions.c delete mode 100644 external/trimesh/gluit/freeglut_init.c delete mode 100644 external/trimesh/gluit/freeglut_internal.h delete mode 100644 external/trimesh/gluit/freeglut_joystick.c delete mode 100644 external/trimesh/gluit/freeglut_main.c delete mode 100644 external/trimesh/gluit/freeglut_menu.c delete mode 100644 external/trimesh/gluit/freeglut_misc.c delete mode 100644 external/trimesh/gluit/freeglut_overlay.c delete mode 100644 external/trimesh/gluit/freeglut_state.c delete mode 100644 external/trimesh/gluit/freeglut_stroke_mono_roman.c delete mode 100644 external/trimesh/gluit/freeglut_stroke_roman.c delete mode 100644 external/trimesh/gluit/freeglut_structure.c delete mode 100644 external/trimesh/gluit/freeglut_teapot.c delete mode 100644 external/trimesh/gluit/freeglut_teapot_data.h delete mode 100644 external/trimesh/gluit/freeglut_videoresize.c delete mode 100644 external/trimesh/gluit/freeglut_window.c delete mode 100644 external/trimesh/gluit/glui.cc delete mode 100644 external/trimesh/gluit/glui_add_controls.cc delete mode 100644 external/trimesh/gluit/glui_algebra3.cc delete mode 100644 external/trimesh/gluit/glui_algebra3.h delete mode 100644 external/trimesh/gluit/glui_arcball.cc delete mode 100644 external/trimesh/gluit/glui_arcball.h delete mode 100644 external/trimesh/gluit/glui_bitmap_img_data.cc delete mode 100644 external/trimesh/gluit/glui_bitmaps.cc delete mode 100644 external/trimesh/gluit/glui_button.cc delete mode 100644 external/trimesh/gluit/glui_checkbox.cc delete mode 100644 external/trimesh/gluit/glui_column.cc delete mode 100644 external/trimesh/gluit/glui_control.cc delete mode 100644 external/trimesh/gluit/glui_edittext.cc delete mode 100644 external/trimesh/gluit/glui_img_checkbox_0.c delete mode 100644 external/trimesh/gluit/glui_img_checkbox_0_dis.c delete mode 100644 external/trimesh/gluit/glui_img_checkbox_1.c delete mode 100644 external/trimesh/gluit/glui_img_checkbox_1_dis.c delete mode 100644 external/trimesh/gluit/glui_img_downarrow.c delete mode 100644 external/trimesh/gluit/glui_img_leftarrow.c delete mode 100644 external/trimesh/gluit/glui_img_listbox_down.c delete mode 100644 external/trimesh/gluit/glui_img_listbox_up.c delete mode 100644 external/trimesh/gluit/glui_img_listbox_up_dis.c delete mode 100644 external/trimesh/gluit/glui_img_radiobutton_0.c delete mode 100644 external/trimesh/gluit/glui_img_radiobutton_0_dis.c delete mode 100644 external/trimesh/gluit/glui_img_radiobutton_1.c delete mode 100644 external/trimesh/gluit/glui_img_radiobutton_1_dis.c delete mode 100644 external/trimesh/gluit/glui_img_rightarrow.c delete mode 100644 external/trimesh/gluit/glui_img_spindown_0.c delete mode 100644 external/trimesh/gluit/glui_img_spindown_1.c delete mode 100644 external/trimesh/gluit/glui_img_spindown_dis.c delete mode 100644 external/trimesh/gluit/glui_img_spinup_0.c delete mode 100644 external/trimesh/gluit/glui_img_spinup_1.c delete mode 100644 external/trimesh/gluit/glui_img_spinup_dis.c delete mode 100644 external/trimesh/gluit/glui_img_uparrow.c delete mode 100644 external/trimesh/gluit/glui_listbox.cc delete mode 100644 external/trimesh/gluit/glui_mouse_iaction.cc delete mode 100644 external/trimesh/gluit/glui_node.cc delete mode 100644 external/trimesh/gluit/glui_panel.cc delete mode 100644 external/trimesh/gluit/glui_quaternion.cc delete mode 100644 external/trimesh/gluit/glui_quaternion.h delete mode 100644 external/trimesh/gluit/glui_radio.cc delete mode 100644 external/trimesh/gluit/glui_rollout.cc delete mode 100644 external/trimesh/gluit/glui_rotation.cc delete mode 100644 external/trimesh/gluit/glui_separator.cc delete mode 100644 external/trimesh/gluit/glui_slider.cc delete mode 100644 external/trimesh/gluit/glui_spinner.cc delete mode 100644 external/trimesh/gluit/glui_statictext.cc delete mode 100644 external/trimesh/gluit/glui_stdinc.h delete mode 100644 external/trimesh/gluit/glui_translation.cc delete mode 100644 external/trimesh/gluit/gluit.mk delete mode 100644 external/trimesh/include/Color.h delete mode 100644 external/trimesh/include/GL/freeglut.h delete mode 100644 external/trimesh/include/GL/freeglut_ext.h delete mode 100644 external/trimesh/include/GL/freeglut_std.h delete mode 100644 external/trimesh/include/GL/glui.h delete mode 100644 external/trimesh/include/GL/glut.h delete mode 100644 external/trimesh/include/GLCamera.h delete mode 100644 external/trimesh/include/ICP.h delete mode 100644 external/trimesh/include/KDtree.h delete mode 100644 external/trimesh/include/Makefile.am delete mode 100644 external/trimesh/include/TriMesh.h delete mode 100644 external/trimesh/include/TriMesh_algo.h delete mode 100644 external/trimesh/include/Vec.h delete mode 100644 external/trimesh/include/XForm.h delete mode 100644 external/trimesh/include/bsphere.h delete mode 100644 external/trimesh/include/lineqn.h delete mode 100644 external/trimesh/include/mempool.h delete mode 100644 external/trimesh/include/noise3d.h delete mode 100644 external/trimesh/include/timestamp.h delete mode 100644 external/trimesh/libsrc/GLCamera.cc delete mode 100644 external/trimesh/libsrc/ICP.cc delete mode 100644 external/trimesh/libsrc/KDtree.cc delete mode 100644 external/trimesh/libsrc/Makefile.am delete mode 100644 external/trimesh/libsrc/TriMesh_bounding.cc delete mode 100644 external/trimesh/libsrc/TriMesh_connectivity.cc delete mode 100644 external/trimesh/libsrc/TriMesh_curvature.cc delete mode 100644 external/trimesh/libsrc/TriMesh_grid.cc delete mode 100644 external/trimesh/libsrc/TriMesh_io.cc delete mode 100644 external/trimesh/libsrc/TriMesh_normals.cc delete mode 100644 external/trimesh/libsrc/TriMesh_pointareas.cc delete mode 100644 external/trimesh/libsrc/TriMesh_stats.cc delete mode 100644 external/trimesh/libsrc/TriMesh_tstrips.cc delete mode 100644 external/trimesh/libsrc/diffuse.cc delete mode 100644 external/trimesh/libsrc/edgeflip.cc delete mode 100644 external/trimesh/libsrc/faceflip.cc delete mode 100644 external/trimesh/libsrc/filter.cc delete mode 100644 external/trimesh/libsrc/lmsmooth.cc delete mode 100644 external/trimesh/libsrc/mesh_align.cc delete mode 100644 external/trimesh/libsrc/mesh_view.cc delete mode 100644 external/trimesh/libsrc/remove.cc delete mode 100644 external/trimesh/libsrc/reorder_verts.cc delete mode 100644 external/trimesh/libsrc/subdiv.cc delete mode 100644 external/trimesh/utilsrc/Makefile.am delete mode 100644 external/trimesh/utilsrc/mesh_align.cc delete mode 100644 external/trimesh/utilsrc/mesh_cat.cc delete mode 100644 external/trimesh/utilsrc/mesh_cc.cc delete mode 100644 external/trimesh/utilsrc/mesh_filter.cc delete mode 100644 external/trimesh/utilsrc/mesh_make.cc delete mode 100644 external/trimesh/utilsrc/mesh_shade.cc delete mode 100644 external/trimesh/utilsrc/mesh_view.cc delete mode 100644 milena/apps/mesh-segm-skel/io.hh delete mode 100644 milena/apps/mesh-segm-skel/mesh-max-curv.cc delete mode 100644 milena/apps/mesh-segm-skel/mesh-pinv-curv.cc delete mode 100644 milena/apps/mesh-segm-skel/mesh-segm.cc delete mode 100644 milena/apps/mesh-segm-skel/mesh-skel.cc create mode 100644 milena/apps/mesh-segm-skel/misc.hh delete mode 100644 milena/apps/mesh-segm-skel/test-mesh-max-curv.in delete mode 100755 milena/apps/mesh-segm-skel/test-mesh-segm.in delete mode 100644 milena/apps/mesh-segm-skel/trimesh/README delete mode 100644 milena/apps/mesh-segm-skel/trimesh/misc.hh create mode 100644 milena/apps/morphers/Makefile.am create mode 100644 milena/apps/morphers/image2d-skel.hh create mode 100644 milena/apps/morphers/iz.cc create mode 100644 milena/apps/morphers/iz_input.pbm create mode 100644 milena/apps/morphers/lazy_recorder.cc create mode 100644 milena/apps/morphers/lazy_recorder.hh create mode 100644 milena/apps/morphers/mask+channel.cc create mode 100644 milena/apps/morphers/mask+recorder.cc create mode 100644 milena/apps/morphers/recorder-bft.cc create mode 100644 milena/apps/morphers/recorder-wst.cc create mode 100644 milena/apps/morphers/recorder.cc create mode 100644 milena/apps/morphers/recorder.hh create mode 100644 milena/apps/papers/levillain.09.ismm/classif-1complex.cc create mode 100644 milena/apps/papers/levillain.09.ismm/classif-graph.cc create mode 100644 milena/apps/papers/levillain.09.ismm/classseedsi.pbm create mode 100644 milena/apps/papers/levillain.09.ismm/influence_zones.hh create mode 100644 milena/apps/papers/levillain.09.ismm/io.hh create mode 100644 milena/common.mk delete mode 100644 milena/mln/accu/math/inf.hh delete mode 100644 milena/mln/accu/math/sup.hh delete mode 100644 milena/mln/core/image/vmorph/thrubin_image.hh delete mode 100644 milena/mln/data/was.median.hh delete mode 100644 milena/mln/extract/all.hh delete mode 100644 milena/mln/extract/blue.hh delete mode 100644 milena/mln/extract/essential.hh delete mode 100644 milena/mln/extract/green.hh delete mode 100644 milena/mln/extract/hue.hh delete mode 100644 milena/mln/extract/lum.hh delete mode 100644 milena/mln/extract/red.hh delete mode 100644 milena/mln/extract/sat.hh delete mode 100644 milena/mln/fun/access/all.hh delete mode 100644 milena/mln/fun/access/mean.hh delete mode 100644 milena/mln/fun/accu_result.hh delete mode 100644 milena/mln/fun/binary.hh delete mode 100644 milena/mln/fun/binary_param.hh delete mode 100644 milena/mln/fun/component/comp.hh delete mode 100644 milena/mln/fun/component/comp_count.hh delete mode 100644 milena/mln/fun/component/ithcomp.hh delete mode 100644 milena/mln/fun/component/scomp.hh delete mode 100644 milena/mln/fun/compose.hh delete mode 100644 milena/mln/fun/composition.hh delete mode 100644 milena/mln/fun/from_accu.hh delete mode 100644 milena/mln/fun/math/abs.hh delete mode 100644 milena/mln/fun/math/cos.hh delete mode 100644 milena/mln/fun/math/inf.hh delete mode 100644 milena/mln/fun/math/norm.hh delete mode 100644 milena/mln/fun/math/sup.hh delete mode 100644 milena/mln/fun/meta/all.hh delete mode 100644 milena/mln/fun/meta/blue.hh delete mode 100644 milena/mln/fun/meta/essential.hh delete mode 100644 milena/mln/fun/meta/first.hh delete mode 100644 milena/mln/fun/meta/green.hh delete mode 100644 milena/mln/fun/meta/hue.hh delete mode 100644 milena/mln/fun/meta/inty.hh delete mode 100644 milena/mln/fun/meta/lum.hh delete mode 100644 milena/mln/fun/meta/red.hh delete mode 100644 milena/mln/fun/meta/sat.hh delete mode 100644 milena/mln/fun/meta/second.hh delete mode 100644 milena/mln/fun/meta/to_enc.hh delete mode 100644 milena/mln/fun/point/col.hh delete mode 100644 milena/mln/fun/point/row.hh delete mode 100644 milena/mln/fun/point/sli.hh delete mode 100644 milena/mln/fun/spe/binary.hh delete mode 100644 milena/mln/fun/unary_param.hh delete mode 100644 milena/mln/fun/v2v/hsi_to_rgb.hh delete mode 100644 milena/mln/fun/v2v/rgb_to_hsi.hh delete mode 100644 milena/mln/linear/gaussian/filter.hh delete mode 100644 milena/mln/linear/gaussian/impl.hh delete mode 100644 milena/mln/linear/gaussian/internal/coefficients.hh delete mode 100644 milena/mln/registration/all.hh delete mode 100644 milena/mln/registration/essential.hh delete mode 100644 milena/mln/registration/get_rot.hh delete mode 100644 milena/mln/registration/get_rtransf.hh delete mode 100644 milena/mln/registration/internal/rms.hh delete mode 100644 milena/mln/registration/registration.hh delete mode 100644 milena/mln/subsampling/all.hh delete mode 100644 milena/mln/subsampling/essential.hh delete mode 100644 milena/mln/subsampling/gaussian_subsampling.hh delete mode 100644 milena/mln/subsampling/subsampling.hh create mode 100644 milena/mln/value/graylevel_f.hxx delete mode 100644 milena/mln/value/hsi.hh create mode 100644 milena/mln/value/int_s24.hh create mode 100644 milena/mln/value/int_u24.hh create mode 100644 milena/mln/value/internal/gray_f.hxx delete mode 100644 milena/mln/value/shell.hh delete mode 100644 milena/mln/value/stack.hh create mode 100755 milena/new-header delete mode 100644 milena/nodist-headers delete mode 100644 milena/sandbox/ChangeLog delete mode 100644 milena/sandbox/abraham/README delete mode 100644 milena/sandbox/abraham/img/dots.pgm delete mode 100644 milena/sandbox/abraham/img/lena.pgm delete mode 100644 milena/sandbox/abraham/img/lena.ppm delete mode 100644 milena/sandbox/abraham/img/little_test.pgm delete mode 100644 milena/sandbox/abraham/img/test.pgm delete mode 100644 milena/sandbox/abraham/mln/core/site_set/p_priority_queue.hh delete mode 100644 milena/sandbox/abraham/mln/fun/v2v/rgb_to_hsi.hh delete mode 100644 milena/sandbox/abraham/mln/io/tikz/save.hh delete mode 100644 milena/sandbox/abraham/mln/io/tikz/save_header.hh delete mode 100644 milena/sandbox/abraham/mln/level/thru.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/autarkical_leveling.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/basic_najman.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/hit_or_miss.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/images/result_m_watershed.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/result_topo_watershed.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_2.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_3.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_4.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_component_mapping.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_component_tree.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/images/test_watershed.pgm delete mode 100644 milena/sandbox/abraham/mln/morpho/najman_wst.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/topo_wst.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/vector_median.hh delete mode 100644 milena/sandbox/abraham/mln/morpho/vmt.hh delete mode 100644 milena/sandbox/abraham/mln/trait/images.hh delete mode 100644 milena/sandbox/abraham/mln/transform/fft.hh delete mode 100644 milena/sandbox/abraham/mln/value/builtin/symbolics.hh delete mode 100644 milena/sandbox/abraham/tests/core/concept/test.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/fun_image_const.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/fun_image_norm.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/fun_image_v2v.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/fun_image_v2w2v.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/thru_const.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/thru_norm.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/thru_v2v.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/thru_v2w2v.cc delete mode 100644 milena/sandbox/abraham/tests/core/image/violent_cast_image.cc delete mode 100644 milena/sandbox/abraham/tests/fun/meta/red.cc delete mode 100644 milena/sandbox/abraham/tests/fun/v2w2v/cos.cc delete mode 100644 milena/sandbox/abraham/tests/fun/v2w_w2v/norm.cc delete mode 100644 milena/sandbox/abraham/tests/io/tikz/Makefile delete mode 100644 milena/sandbox/abraham/tests/io/tikz/tikz.cc delete mode 100644 milena/sandbox/abraham/tests/morpho/Makefile delete mode 100644 milena/sandbox/abraham/tests/morpho/images/+irm6.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/+test_watershed.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/result_m_watershed.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/result_topo_watershed.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_2.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_3.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_4.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_component_mapping.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_component_tree.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/images/test_watershed.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/levelings.cc delete mode 100644 milena/sandbox/abraham/tests/morpho/red_erosion.cc delete mode 100644 milena/sandbox/abraham/tests/morpho/red_erosion3.cc delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/Makefile delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/lattribheight.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/lwshedtopo.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mccodimage.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mccomptree.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mcfahsalembier.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mcimage.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mcindic.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mclifo.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mcunionfind.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/include/mcutil.h delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/com/wshedtopo.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/lattrib.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/lattribheight.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/lwshedtopo.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mccodimage.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mccomptree.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mcfahsalembier.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mcimage.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mcindic.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mclifo.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/src/lib/mcunionfind.c delete mode 100644 milena/sandbox/abraham/tests/morpho/ref/test/UrOx.pgm delete mode 100644 milena/sandbox/abraham/tests/morpho/test_watershed.cc delete mode 100644 milena/sandbox/abraham/tests/morpho/test_watershed_topo.cc delete mode 100644 milena/sandbox/abraham/tests/transform/fft.cc delete mode 100644 milena/sandbox/abraham/tests/transform/fft_.cc delete mode 100644 milena/sandbox/abraham/tests/value/mixin.cc delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/Color.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/KDtree.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_algo.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_bounding.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_connectivity.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_curvature.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_io.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_normals.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_pointareas.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_stats.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/TriMesh_tstrips.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/Vec.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/XForm.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/bsphere.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/diffuse.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/lineqn.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/lmsmooth.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/mempool.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/mesh_filter.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/mesh_shade.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/remove.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/reorder_verts.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/Trimesh/timestamp.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/Coin.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/MaillageTriangulaire.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/MailleTriangulaire.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/OFF.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/Objet3D.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/OutilsListePoints.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/OutilsPoint3D.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/PreTraitement.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/WRL.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/WRL/calcul.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/file/Buffer.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/file/Datafile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/file/Tokenfile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/Face.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/Globals.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/Mesh.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/MeshFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/MeshFileIdentifier.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/MeshRef.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/MeshView.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/ObjMeshFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/OffMeshFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/PlyMeshFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/Vertex.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/WrlMeshFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/geom/geom_defs.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/libvox.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/math/Matrix.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/math/MyRandom.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/math/Vector.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/math/common.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ply/ply_gatech.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/time/WallTimer.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ui/Camera.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ui/CameraList.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ui/GLwindow.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ui/View.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/ui/opengl.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/PalagyiFilter.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/Template.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/Templates.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/VoxelFile.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/VoxelFilter.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/VoxelRef.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/Voxelizer.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/Voxels.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/binvox/voxel/typedefs.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/cb3dr.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/histogramme/hist.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/histogramme/listeHisto.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/matrice/MatriceF.h delete mode 100755 milena/sandbox/aroumougame/retin/headers/matrice/valeursVecteursPropres.h delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/KDtree.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_bounding.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_connectivity.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_curvature.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_io.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_normals.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_pointareas.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_stats.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/TriMesh_tstrips.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/diffuse.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/lmsmooth.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/mesh_filter.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/mesh_shade.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/remove.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/Trimesh/reorder_verts.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/MaillageTriangulaire.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/MailleTriangulaire.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/OFF.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/Objet3D.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/OutilsListePoints.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/OutilsPoint3D.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/PreTraitement.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/WRL.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/WRL/calcul.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/file/Buffer.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/file/Datafile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/file/Tokenfile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/Face.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/Mesh.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/MeshFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/MeshFileIdentifier.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/MeshRef.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/MeshView.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/ObjMeshFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/OffMeshFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/PlyMeshFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/Vertex.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/geom/WrlMeshFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/libvox.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/math/Matrix.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/math/MyRandom.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/math/Vector.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/math/common.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ply/ply_gatech.c delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/time/WallTimer.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ui/Camera.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ui/CameraList.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ui/GLwindow.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ui/View.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/ui/opengl.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/PalagyiFilter.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/Template.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/Templates.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/VoxelFile.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/VoxelFilter.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/VoxelRef.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/Voxelizer.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/binvox/voxel/Voxels.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/cb3dr.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/histogramme/hist.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/histogramme/listeHisto.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/matrice/MatriceF.cpp delete mode 100755 milena/sandbox/aroumougame/retin/sources/matrice/valeursVecteursPropres.cpp delete mode 100644 milena/sandbox/aroumougame/skeleton/io.hh delete mode 100644 milena/sandbox/aroumougame/skeleton/mesh-skel.cc delete mode 100644 milena/sandbox/aroumougame/skeleton/mesh-skel_region.cc delete mode 100644 milena/sandbox/aroumougame/skeleton/miscellenous.hh delete mode 100755 milena/sandbox/aroumougame/skeleton/neighborhood1.hh delete mode 100644 milena/sandbox/aroumougame/skeleton/sedt.hh delete mode 100644 milena/sandbox/aroumougame/skeleton/test.cc delete mode 100755 milena/sandbox/aroumougame/skeleton/test_image2d.cc delete mode 100755 milena/sandbox/aroumougame/skeleton/test_image3d.cc delete mode 100755 milena/sandbox/aroumougame/skeleton/thinning.hh delete mode 100755 milena/sandbox/aroumougame/test/m0.wrl delete mode 100755 milena/sandbox/aroumougame/test/m05.wrl delete mode 100755 milena/sandbox/aroumougame/test/m9l0.wrl delete mode 100755 milena/sandbox/aroumougame/test/makefile delete mode 100755 milena/sandbox/aroumougame/test/ml0.wrl delete mode 100755 milena/sandbox/aroumougame/test/ml09.wrl delete mode 100755 milena/sandbox/aroumougame/test/mmake.sh delete mode 100755 milena/sandbox/aroumougame/test/sources/test_graph.cpp delete mode 100755 milena/sandbox/aroumougame/test/test.off delete mode 100755 milena/sandbox/aroumougame/test/test_graph.cpp delete mode 100755 milena/sandbox/aroumougame/test/test_graph_off.cpp delete mode 100755 milena/sandbox/aroumougame/test/test_graph_wrl.cpp delete mode 100644 milena/sandbox/ballas/compilation_unit.rb delete mode 100644 milena/sandbox/ballas/doc/draft.txt delete mode 100644 milena/sandbox/ballas/doc/image_tours.txt delete mode 100644 milena/sandbox/ballas/doc/image_types/doc.tex delete mode 100644 milena/sandbox/ballas/doc/image_types/include/image_tour.tex delete mode 100644 milena/sandbox/ballas/methods delete mode 100644 milena/sandbox/ballas/refactorization/box2d.hh delete mode 100644 milena/sandbox/ballas/refactorization/concept.hh delete mode 100644 milena/sandbox/ballas/refactorization/exact.hh delete mode 100644 milena/sandbox/ballas/refactorization/image2d.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/exact.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/force_exact.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/image_base.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/impl.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/piter_base.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/pset_base.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/psite_base.hh delete mode 100644 milena/sandbox/ballas/refactorization/internal/site_base.hh delete mode 100644 milena/sandbox/ballas/refactorization/metal/bexpr.hh delete mode 100644 milena/sandbox/ballas/refactorization/metal/bool.hh delete mode 100644 milena/sandbox/ballas/refactorization/metal/equal.hh delete mode 100644 milena/sandbox/ballas/refactorization/p_run.hh delete mode 100644 milena/sandbox/ballas/refactorization/point2d.hh delete mode 100644 milena/sandbox/ballas/refactorization/point2d_impl.hh delete mode 100644 milena/sandbox/ballas/refactorization/rle_image.hh delete mode 100644 milena/sandbox/ballas/refactorization/rle_pset.hh delete mode 100644 milena/sandbox/ballas/refactorization/rle_psite.hh delete mode 100644 milena/sandbox/ballas/refactorization/test/box2d.cc delete mode 100644 milena/sandbox/ballas/refactorization/test/image2d.cc delete mode 100644 milena/sandbox/ballas/refactorization/test/rle.cc delete mode 100644 milena/sandbox/ballas/test.cc delete mode 100644 milena/sandbox/ballas/vaucanson_bench delete mode 100644 milena/sandbox/beguin/fusion_graph.hh delete mode 100644 milena/sandbox/beguin/graph_link.hh delete mode 100644 milena/sandbox/beguin/irm.cc delete mode 100644 milena/sandbox/beguin/irm.jpg delete mode 100644 milena/sandbox/beguin/irm6.pgm delete mode 100644 milena/sandbox/beguin/irm_g.cc delete mode 100644 milena/sandbox/beguin/puzzle.jpg delete mode 100644 milena/sandbox/beguin/segm_to_pregraph.hh delete mode 100644 milena/sandbox/beguin/try.hh delete mode 100644 milena/sandbox/bench/README_CFLAGS delete mode 100644 milena/sandbox/bench/extract_vertical_lines.cc delete mode 100644 milena/sandbox/bench/fast_components_and_attributes.cc delete mode 100644 milena/sandbox/bench/fast_rows.cc delete mode 100644 milena/sandbox/bench/fast_tiles.cc delete mode 100644 milena/sandbox/bench/fastest.cc delete mode 100644 milena/sandbox/bench/fastest_forall_p_browsing.cc delete mode 100644 milena/sandbox/bench/fastest_statistical_tour_browsing.cc delete mode 100644 milena/sandbox/bench/fastest_statistical_tour_nbh_browsing.cc delete mode 100644 milena/sandbox/bench/input_iz.pgm.gz delete mode 100644 milena/sandbox/bench/iz.cc delete mode 120000 milena/sandbox/bench/z_sub_browsing/+inc delete mode 100644 milena/sandbox/bench/z_sub_browsing/README delete mode 100644 milena/sandbox/bench/z_sub_browsing/debase.cc delete mode 100644 milena/sandbox/bench/z_sub_browsing/debase.hh delete mode 100644 milena/sandbox/bench/z_sub_browsing/fast.cc delete mode 100644 milena/sandbox/bench/z_sub_browsing/in.pgm.gz delete mode 100644 milena/sandbox/bench/z_sub_browsing/integral.cc delete mode 100644 milena/sandbox/bench/z_sub_browsing/integral.hh delete mode 100644 milena/sandbox/bin/labeling/colorize.cc delete mode 100644 milena/sandbox/bin/pgm_to_pbm.cc delete mode 100644 milena/sandbox/bin/ppm_negate.cc delete mode 100644 milena/sandbox/bugs/concept_and_assignment.cc delete mode 100644 milena/sandbox/bugs/io_xv_imview.pbm delete mode 100644 milena/sandbox/bugs/lut.cc delete mode 100644 milena/sandbox/bugs/piter_slice.cc delete mode 100644 milena/sandbox/bugs/piter_slice.solved.cc delete mode 100644 milena/sandbox/camille/.gitignore delete mode 100644 milena/sandbox/camille/Makefile delete mode 100644 milena/sandbox/camille/graph-line-gradient-closing.cc delete mode 100644 milena/sandbox/camille/graph-wst.cc delete mode 100644 milena/sandbox/delmon/growcut/Makefile delete mode 100644 milena/sandbox/delmon/growcut/README delete mode 100755 milena/sandbox/delmon/growcut/check.sh delete mode 100644 milena/sandbox/delmon/growcut/keep_color.cc delete mode 100644 milena/sandbox/delmon/growcut/main.cc delete mode 100644 milena/sandbox/delmon/growcut/main_bw.cc delete mode 100644 milena/sandbox/delmon/growcut/remove_if_blue.cc delete mode 100644 milena/sandbox/delmon/minsurf/Makefile delete mode 100644 milena/sandbox/delmon/minsurf/README delete mode 100755 milena/sandbox/delmon/minsurf/check.sh delete mode 100644 milena/sandbox/delmon/minsurf/keep_object.cc delete mode 100644 milena/sandbox/delmon/minsurf/main.cc delete mode 100644 milena/sandbox/duhamel/abr.cc delete mode 100644 milena/sandbox/duhamel/abr.hh delete mode 100644 milena/sandbox/duhamel/abr_to_image.cc delete mode 100644 milena/sandbox/duhamel/border_duplicate.cc delete mode 100644 milena/sandbox/duhamel/border_duplicate.hh delete mode 100644 milena/sandbox/duhamel/border_fill.cc delete mode 100644 milena/sandbox/duhamel/border_fill.hh delete mode 100644 milena/sandbox/duhamel/border_mirror.cc delete mode 100644 milena/sandbox/duhamel/border_mirror.hh delete mode 100644 milena/sandbox/duhamel/canvas_chamfer.hh delete mode 100644 milena/sandbox/duhamel/canvas_labeling.hh delete mode 100644 milena/sandbox/duhamel/chamfer.cc delete mode 100644 milena/sandbox/duhamel/chamfer.hh delete mode 100644 milena/sandbox/duhamel/color_sub.cc delete mode 100644 milena/sandbox/duhamel/color_sub.hh delete mode 100755 milena/sandbox/duhamel/compil.cmd delete mode 100644 milena/sandbox/duhamel/debug_print_3d_with_border.hh delete mode 100644 milena/sandbox/duhamel/draw_mesh.hh delete mode 100644 milena/sandbox/duhamel/extract_array.cc delete mode 100644 milena/sandbox/duhamel/fill.hh delete mode 100644 milena/sandbox/duhamel/fills_test.cc delete mode 100644 milena/sandbox/duhamel/graph.hh delete mode 100644 milena/sandbox/duhamel/graph.hxx delete mode 100644 milena/sandbox/duhamel/graph_labeling.cc delete mode 100644 milena/sandbox/duhamel/graph_labeling.hh delete mode 100644 milena/sandbox/duhamel/graph_labeling2.cc delete mode 100644 milena/sandbox/duhamel/labeling.hh delete mode 100644 milena/sandbox/duhamel/labeling_algo.cc delete mode 100644 milena/sandbox/duhamel/labeling_algo.hh delete mode 100644 milena/sandbox/duhamel/labeling_cpy_from_mln.hh delete mode 100644 milena/sandbox/duhamel/labeling_level.hh delete mode 100644 milena/sandbox/duhamel/labeling_level_fast.cc delete mode 100644 milena/sandbox/duhamel/labeling_level_fast_10000x1000.cc delete mode 100644 milena/sandbox/duhamel/labeling_level_generic_10000x1000.cc delete mode 100644 milena/sandbox/duhamel/level.hh delete mode 100644 milena/sandbox/duhamel/level_cpy_from_mln.hh delete mode 100644 milena/sandbox/duhamel/log.txt delete mode 100644 milena/sandbox/duhamel/main.cc delete mode 100644 milena/sandbox/duhamel/main_mesh_image.cc delete mode 100644 milena/sandbox/duhamel/mem.hh delete mode 100644 milena/sandbox/duhamel/mesh_image.hh delete mode 100644 milena/sandbox/duhamel/mesh_p.hh delete mode 100644 milena/sandbox/duhamel/mesh_psite.hh delete mode 100644 milena/sandbox/duhamel/paste.hh delete mode 100644 milena/sandbox/duhamel/queue_p_fast.hh delete mode 100644 milena/sandbox/duhamel/queue_p_priority.cc delete mode 100644 milena/sandbox/duhamel/queue_p_priority.hh delete mode 100644 milena/sandbox/duhamel/slow_seed2tiling.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image1d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image1d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image1d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image1d_4.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image1d_5.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image2d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image2d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image2d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image2d_4.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image3d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image3d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image3d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_duplicate_image3d_4.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image1d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image1d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image1d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image1d_4.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image1d_5.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image2d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image2d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image2d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image2d_4.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image3d_1.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image3d_2.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image3d_3.cc delete mode 100644 milena/sandbox/duhamel/test_border_fill_image3d_4.cc delete mode 100644 milena/sandbox/duhamel/test_debug_iota_3d.cc delete mode 100644 milena/sandbox/duhamel/translate_image.cc delete mode 100644 milena/sandbox/duhamel/translate_image.hh delete mode 100644 milena/sandbox/edwin/Makefile delete mode 100644 milena/sandbox/edwin/exec/benchmark/Makefile delete mode 100644 milena/sandbox/edwin/exec/benchmark/newv.cc delete mode 100644 milena/sandbox/edwin/exec/benchmark/oldv.cc delete mode 100644 milena/sandbox/edwin/exec/color_distance.hh delete mode 100644 milena/sandbox/edwin/exec/color_internal_gradient.hh delete mode 100644 milena/sandbox/edwin/exec/color_labeling_mean.hh delete mode 100644 milena/sandbox/edwin/exec/give_me_the_curve.cc delete mode 100644 milena/sandbox/edwin/exec/internal_gradient.cc delete mode 100644 milena/sandbox/edwin/exec/mask_colorize.cc delete mode 100644 milena/sandbox/edwin/exec/mask_fill_mean_color.cc delete mode 100644 milena/sandbox/edwin/exec/max_delta_colormean_obj.cc delete mode 100644 milena/sandbox/edwin/exec/pgm_gradient.cc delete mode 100644 milena/sandbox/edwin/exec/plot.conf delete mode 100644 milena/sandbox/edwin/exec/score.hh delete mode 100644 milena/sandbox/edwin/exec/sharpest_obj_reconstruction.cc delete mode 100644 milena/sandbox/edwin/exec/tree_debug.cc delete mode 100644 milena/sandbox/edwin/exec/wst_from_reconstructed.cc delete mode 100644 milena/sandbox/edwin/exec/zi.cc delete mode 100644 milena/sandbox/edwin/exec/zi.hh delete mode 100644 milena/sandbox/edwin/mln/core/concept/dindex_site.hh delete mode 100644 milena/sandbox/edwin/mln/core/concept/index_site.hh delete mode 100644 milena/sandbox/edwin/mln/core/concept/tree.hh delete mode 100644 milena/sandbox/edwin/mln/core/dindex_site.hh delete mode 100644 milena/sandbox/edwin/mln/core/image/attribute_image.hh delete mode 100644 milena/sandbox/edwin/mln/core/internal/index_site_base.hh delete mode 100644 milena/sandbox/edwin/mln/core/site_set/p_run_idx.hh delete mode 100644 milena/sandbox/edwin/mln/core/site_set/p_run_idx_piter.hh delete mode 100644 milena/sandbox/edwin/mln/debug/ctree.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/attribute/bbox.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/attribute/mysharpness.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/attribute/occupation.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/component_tree.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/components.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/components_debug.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/compute_attribute_image.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/debug.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/impl/dual_hqueue.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/impl/dual_union_find.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/impl/union_find.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/propagate.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/propagate_node.hh delete mode 100644 milena/sandbox/edwin/mln/morpho/tree/propagate_node_debug.hh delete mode 100644 milena/sandbox/edwin/mln/util/ctree/ctree.hh delete mode 100644 milena/sandbox/edwin/mln/util/ctree/internal/tree_base.hh delete mode 100644 milena/sandbox/edwin/mln/util/ctree/node.hh delete mode 100755 milena/sandbox/edwin/move_accu.sh delete mode 100755 milena/sandbox/edwin/rush/exo2/configure delete mode 100755 milena/sandbox/edwin/rush/exo2/test.cc delete mode 100644 milena/sandbox/edwin/rush/exo2/wst_from_closing.cc delete mode 100644 milena/sandbox/edwin/rush/granulometry/granulometry.hh delete mode 100644 milena/sandbox/edwin/rush/granulometry/test.cc delete mode 100644 milena/sandbox/edwin/rush/leaves/Makefile delete mode 100755 milena/sandbox/edwin/rush/leaves/chain.sh delete mode 100755 milena/sandbox/edwin/rush/leaves/configure delete mode 100644 milena/sandbox/edwin/rush/leaves/export_leaves.hh delete mode 100644 milena/sandbox/edwin/rush/leaves/get_leaves.cc delete mode 100755 milena/sandbox/edwin/rush/leaves/splot.sh delete mode 100644 milena/sandbox/edwin/rush/leaves/test/Makefile delete mode 100755 milena/sandbox/edwin/rush/leaves/test/configure delete mode 100644 milena/sandbox/edwin/rush/leaves/test/export.cc delete mode 100644 milena/sandbox/edwin/tests/sharp.cc delete mode 100644 milena/sandbox/edwin/tests/sharpness_attribute.cc delete mode 100755 milena/sandbox/edwin/tools/make_the_curves.sh delete mode 100644 milena/sandbox/edwin/tree/Makefile delete mode 100644 milena/sandbox/edwin/tree/accumulator/arg_max.hh delete mode 100755 milena/sandbox/edwin/tree/configure delete mode 100644 milena/sandbox/edwin/tree/propagation.cc delete mode 100644 milena/sandbox/edwin/tree/run.hh delete mode 100644 milena/sandbox/edwin/tree/tree.cc delete mode 100644 milena/sandbox/exec/Makefile delete mode 100644 milena/sandbox/exec/bw_negate_in_color.cc delete mode 100644 milena/sandbox/exec/filetype.hh delete mode 100644 milena/sandbox/exec/histo_save.cc delete mode 100644 milena/sandbox/fabien/README delete mode 100644 milena/sandbox/fabien/bin/Makefile delete mode 100644 milena/sandbox/fabien/bin/dicom2dump.cc delete mode 100644 milena/sandbox/fabien/bin/dicom2pgm.cc delete mode 100644 milena/sandbox/fabien/bin/dicom_mask.cc delete mode 100644 milena/sandbox/fabien/bin/dump2pbm.cc delete mode 100644 milena/sandbox/fabien/bin/dump2pgm.cc delete mode 100644 milena/sandbox/fabien/bin/dump2pgm8b.cc delete mode 100644 milena/sandbox/fabien/bin/dump2ppm.cc delete mode 100644 milena/sandbox/fabien/bin/dump_mask.cc delete mode 100644 milena/sandbox/fabien/bin/dumpi12_to_pgm.cc delete mode 100644 milena/sandbox/fabien/bin/dumpl16_to_colorize.cc delete mode 100644 milena/sandbox/fabien/bin/dumpl32_to_colorize.cc delete mode 100644 milena/sandbox/fabien/bin/dumpl8_to_colorize.cc delete mode 100644 milena/sandbox/fabien/bin/filetype.hh delete mode 100644 milena/sandbox/fabien/bin/pnms2dump.cc delete mode 100644 milena/sandbox/fabien/binarization/Makefile delete mode 100644 milena/sandbox/fabien/binarization/test.cc delete mode 100644 milena/sandbox/fabien/dcmtk/Makefile delete mode 100644 milena/sandbox/fabien/dcmtk/dicom.cc delete mode 100644 milena/sandbox/fabien/dcmtk/load.hh delete mode 100644 milena/sandbox/fabien/dcmtk/save.hh delete mode 100644 milena/sandbox/fabien/igr/Makefile delete mode 100644 milena/sandbox/fabien/igr/Makefile.rules delete mode 100755 milena/sandbox/fabien/igr/all_labels2gif.sh delete mode 100755 milena/sandbox/fabien/igr/check.sh delete mode 100755 milena/sandbox/fabien/igr/check2d_wsd.sh delete mode 100755 milena/sandbox/fabien/igr/check3d_wsd.sh delete mode 100755 milena/sandbox/fabien/igr/check_dist.sh delete mode 100755 milena/sandbox/fabien/igr/check_edges.sh delete mode 100755 milena/sandbox/fabien/igr/check_us_morpho.sh delete mode 100644 milena/sandbox/fabien/igr/clo_vol.cc delete mode 100644 milena/sandbox/fabien/igr/color/find_color.cc delete mode 100644 milena/sandbox/fabien/igr/crop.cc delete mode 100644 milena/sandbox/fabien/igr/dist_edges.cc delete mode 100644 milena/sandbox/fabien/igr/filter.cc delete mode 100644 milena/sandbox/fabien/igr/filter_morpho_us.cc delete mode 100644 milena/sandbox/fabien/igr/fixed_seg/Makefile delete mode 100644 milena/sandbox/fabien/igr/fixed_seg/main.cc delete mode 100644 milena/sandbox/fabien/igr/fun_labels.cc delete mode 100755 milena/sandbox/fabien/igr/fun_labels.sh delete mode 100644 milena/sandbox/fabien/igr/grad.cc delete mode 100644 milena/sandbox/fabien/igr/graph.cc delete mode 100644 milena/sandbox/fabien/igr/igr.cc delete mode 100644 milena/sandbox/fabien/igr/label2gif.cc delete mode 100755 milena/sandbox/fabien/igr/launch.sh delete mode 100755 milena/sandbox/fabien/igr/launch2d.sh delete mode 100755 milena/sandbox/fabien/igr/launch3d.sh delete mode 100644 milena/sandbox/fabien/igr/maj.cc delete mode 100644 milena/sandbox/fabien/igr/mat2mln/mat2mln.cc delete mode 100644 milena/sandbox/fabien/igr/mat2mln/mat2raw.cc delete mode 100644 milena/sandbox/fabien/igr/mat2mln/raw2mlndata.cc delete mode 100644 milena/sandbox/fabien/igr/matlab.cc delete mode 100644 milena/sandbox/fabien/igr/mean_median_label.cc delete mode 100644 milena/sandbox/fabien/igr/mean_slices.cc delete mode 100644 milena/sandbox/fabien/igr/med.cc delete mode 100644 milena/sandbox/fabien/igr/min_max_float.cc delete mode 100755 milena/sandbox/fabien/igr/nbasins_check.sh delete mode 100644 milena/sandbox/fabien/igr/nbasins_finder.cc delete mode 100644 milena/sandbox/fabien/igr/norm.cc delete mode 100644 milena/sandbox/fabien/igr/plot_label.hh delete mode 100644 milena/sandbox/fabien/igr/plot_points/Makefile delete mode 100644 milena/sandbox/fabien/igr/plot_points/README delete mode 100644 milena/sandbox/fabien/igr/plot_points/int2rgb.hh delete mode 100644 milena/sandbox/fabien/igr/plot_points/main.cc delete mode 100644 milena/sandbox/fabien/igr/plot_points/plot_points_of_label.cc delete mode 100644 milena/sandbox/fabien/igr/point_filtering/Makefile delete mode 100644 milena/sandbox/fabien/igr/point_filtering/main.cc delete mode 100644 milena/sandbox/fabien/igr/seg2d.cc delete mode 100644 milena/sandbox/fabien/igr/seg3d.cc delete mode 100644 milena/sandbox/fabien/igr/seg_vol_irm.hh delete mode 100755 milena/sandbox/fabien/igr/segment_us_morpho.sh delete mode 100644 milena/sandbox/fabien/igr/smooth_fixed_seg/main.cc delete mode 100644 milena/sandbox/fabien/igr/space_smooth/Makefile delete mode 100644 milena/sandbox/fabien/igr/space_smooth/linear.cc delete mode 100644 milena/sandbox/fabien/igr/space_smooth/median.cc delete mode 100644 milena/sandbox/fabien/igr/space_smooth/morpho.cc delete mode 100644 milena/sandbox/fabien/igr/thres.cc delete mode 100644 milena/sandbox/fabien/igr/time_max.cc delete mode 100644 milena/sandbox/fabien/igr/time_max_norm.cc delete mode 100644 milena/sandbox/fabien/igr/time_smooth/Makefile delete mode 100644 milena/sandbox/fabien/igr/time_smooth/linear.cc delete mode 100644 milena/sandbox/fabien/igr/time_smooth/median.cc delete mode 100644 milena/sandbox/fabien/igr/time_smooth/morpho.cc delete mode 100755 milena/sandbox/fabien/igr/tmax.sh delete mode 100644 milena/sandbox/fabien/igr/watershed.hh delete mode 100644 milena/sandbox/fabien/igr/watershed2d.cc delete mode 100644 milena/sandbox/fabien/igr/watershed3d.cc delete mode 100644 milena/sandbox/fabien/igr/wst.cc delete mode 100644 milena/sandbox/fabien/igr/wst_edges.cc delete mode 100644 milena/sandbox/fabien/magick/Makefile delete mode 100644 milena/sandbox/fabien/magick/magick.cc delete mode 100644 milena/sandbox/fabien/magick/save.cc delete mode 100644 milena/sandbox/fabien/magick/tiled_image.cc delete mode 100644 milena/sandbox/fabien/mln/canvas/browsing/directional.hh delete mode 100644 milena/sandbox/fabien/mln/canvas/browsing/snake.hh delete mode 100644 milena/sandbox/fabien/mln/core/image/cache.hh delete mode 100644 milena/sandbox/fabien/mln/core/image/disk_ima.hh delete mode 100644 milena/sandbox/fabien/mln/core/image/magick_tiled2d.hh delete mode 100644 milena/sandbox/fabien/mln/core/image/page.hh delete mode 100644 milena/sandbox/fabien/mln/core/image/tiled2d.hh delete mode 100644 milena/sandbox/fabien/mln/data/fast_median.hh delete mode 100644 milena/sandbox/fabien/mln/debug/int2rgb.hh delete mode 100644 milena/sandbox/fabien/mln/display/display_region.hh delete mode 100644 milena/sandbox/fabien/mln/io/pnm/load.hh delete mode 100644 milena/sandbox/fabien/mln/io/pnm/load_disk_ima.hh delete mode 100644 milena/sandbox/fabien/mln/test/conversion.hh delete mode 100644 milena/sandbox/fabien/mln/upsampling/hq2x.hh delete mode 100644 milena/sandbox/fabien/mln/upsampling/hq3x.hh delete mode 100644 milena/sandbox/fabien/mln/upsampling/hq4x.hh delete mode 100644 milena/sandbox/fabien/mln/world/inter_pixel/display_region.hh delete mode 100644 milena/sandbox/fabien/mln/world/inter_pixel/is_zero_face.hh delete mode 100644 milena/sandbox/fabien/tests/core/image/Makefile delete mode 100644 milena/sandbox/fabien/tests/core/image/bench.hh delete mode 100755 milena/sandbox/fabien/tests/core/image/bench.sh delete mode 100644 milena/sandbox/fabien/tests/core/image/disk_ima.cc delete mode 100644 milena/sandbox/fabien/tests/core/image/ima2d.cc delete mode 100644 milena/sandbox/fabien/tests/core/image/tiled2d.cc delete mode 100644 milena/sandbox/fabien/tests/display/Makefile delete mode 100644 milena/sandbox/fabien/tests/display/display_region.cc delete mode 100644 milena/sandbox/fabien/tests/test/conversion.cc delete mode 100644 milena/sandbox/fabien/tests/upsampling/Makefile delete mode 100644 milena/sandbox/fabien/tests/upsampling/hq2x.cc delete mode 100644 milena/sandbox/fabien/tests/upsampling/hq3x.cc delete mode 100644 milena/sandbox/fabien/tests/upsampling/hq4x.cc delete mode 100644 milena/sandbox/fabien/tests/world/inter_pixel/Makefile delete mode 100644 milena/sandbox/fabien/tests/world/inter_pixel/display_region.cc delete mode 100644 milena/sandbox/folio/exercices/heritage_conditionnel.cc delete mode 100644 milena/sandbox/folio/exercices/heritage_conditionnel.hh delete mode 100644 milena/sandbox/folio/img/monkeys_april.ppm delete mode 100644 milena/sandbox/folio/mln/dt/canvas_dt.hh delete mode 100644 milena/sandbox/folio/mln/dt/chamfer.hh delete mode 100644 milena/sandbox/folio/mln/dt/cp.hh delete mode 100644 milena/sandbox/folio/mln/dt/dmap.hh delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/canevas_dt.hh delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/chamfer.cc delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/distance_front.cc delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/distance_front_new.hh delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/dt.cc delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/dt.hh delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/dt.spe.hh delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/naive.cc delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/psn.cc delete mode 100644 milena/sandbox/folio/mln/dt/dt_old/psn_log.cc delete mode 100644 milena/sandbox/folio/mln/dt/path.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_cp_fast.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_cp_slow.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_dmap_fast.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_dmap_slow.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_path_fast.hh delete mode 100644 milena/sandbox/folio/mln/dt/raw_path_slow.hh delete mode 100644 milena/sandbox/folio/mln/fun/v2v/hsl_to_hsv.hh delete mode 100644 milena/sandbox/folio/mln/fun/v2v/rgb_to_hsv.hh delete mode 100644 milena/sandbox/folio/mln/histo/classify_with_histo_3d.hh delete mode 100644 milena/sandbox/folio/mln/histo/classify_with_histo_rgb.hh delete mode 100644 milena/sandbox/folio/mln/histo/compute_histo.hh delete mode 100644 milena/sandbox/folio/mln/histo/compute_histo_3d.hh delete mode 100644 milena/sandbox/folio/mln/histo/compute_histo_rgb.hh delete mode 100644 milena/sandbox/folio/mln/histo/project_histo_3d.hh delete mode 100644 milena/sandbox/folio/mln/value/circular.hh delete mode 100644 milena/sandbox/folio/mln/value/hsv.hh delete mode 100644 milena/sandbox/folio/mln/value/pipo.hh delete mode 100644 milena/sandbox/folio/papers/dt_resume.txt delete mode 100644 milena/sandbox/folio/papers/examples.txt delete mode 100644 milena/sandbox/folio/test/dt/canvas/dt.hh delete mode 100644 milena/sandbox/folio/test/dt/canvas/dt.spe.hh delete mode 100644 milena/sandbox/folio/test/dt/chamfer.cc delete mode 100644 milena/sandbox/folio/test/dt/dt.cc delete mode 100644 milena/sandbox/folio/test/dt/dt_bench.cc delete mode 100644 milena/sandbox/folio/test/dt/dt_maze.cc delete mode 100644 milena/sandbox/folio/test/dt/naive.cc delete mode 100644 milena/sandbox/folio/test/dt/psn.cc delete mode 100644 milena/sandbox/folio/test/dt/psn_log.cc delete mode 100644 milena/sandbox/folio/test/dt/tmp.ppm delete mode 100644 milena/sandbox/folio/test/histo/compute_histo_3d.cc delete mode 100644 milena/sandbox/folio/test/histo/compute_histo_rgb.cc delete mode 100644 milena/sandbox/folio/test/histo/compute_histo_rgb_from_ppm.cc delete mode 100644 milena/sandbox/folio/test/histo/plot_lena.cc delete mode 100644 milena/sandbox/folio/test/histo/plot_lena_3d.cc delete mode 100644 milena/sandbox/folio/test/histo/plot_lena_rgb.cc delete mode 100644 milena/sandbox/folio/test/histo/project_histo_3d_add.cc delete mode 100644 milena/sandbox/folio/test/histo/project_histo_3d_mean.cc delete mode 100644 milena/sandbox/folio/test/histo/project_screen.cc delete mode 100644 milena/sandbox/folio/test/histo/projected.cc delete mode 100644 milena/sandbox/folio/test/histo/projected3d.cc delete mode 100644 milena/sandbox/folio/test/value/circular.cc delete mode 100644 milena/sandbox/folio/test/value/comp.cc delete mode 100644 milena/sandbox/folio/test/value/hsv.cc delete mode 100644 milena/sandbox/folio/test/value/pipo.cc delete mode 100644 milena/sandbox/folio/tools/histo/classify_with_histo_gs.cc delete mode 100644 milena/sandbox/folio/tools/histo/projected_histo_classified_color_maj.cc delete mode 100644 milena/sandbox/folio/tools/histo/projected_histo_classified_gs.cc delete mode 100644 milena/sandbox/folio/tools/histo/projected_histo_gs.cc delete mode 100644 milena/sandbox/fred/fun/abs.hh delete mode 100644 milena/sandbox/fred/fun/assignability.hh delete mode 100644 milena/sandbox/fred/fun/binary.hh delete mode 100644 milena/sandbox/fred/fun/compose.hh delete mode 100644 milena/sandbox/fred/fun/composition.hh delete mode 100644 milena/sandbox/fred/fun/cos.cc delete mode 100644 milena/sandbox/fred/fun/cos.hh delete mode 100644 milena/sandbox/fred/fun/fun.cc delete mode 100644 milena/sandbox/fred/fun/inc.hh delete mode 100644 milena/sandbox/fred/fun/meta_function.hh delete mode 100644 milena/sandbox/fred/fun/norm.hh delete mode 100644 milena/sandbox/fred/fun/nsolve.hh delete mode 100644 milena/sandbox/fred/fun/nsolve_binary.hh delete mode 100644 milena/sandbox/fred/fun/nsolve_unary.hh delete mode 100644 milena/sandbox/fred/fun/red.hh delete mode 100644 milena/sandbox/fred/fun/thru.cc delete mode 100644 milena/sandbox/fred/fun/thru_morpher.hh delete mode 100644 milena/sandbox/fred/fun/unary.hh delete mode 100644 milena/sandbox/fred/functions.html delete mode 100644 milena/sandbox/fred/functions.mkdown delete mode 100644 milena/sandbox/fred/old/accu_trait.hh delete mode 100644 milena/sandbox/fred/old/accuprops.cc delete mode 100644 milena/sandbox/fred/old/accuprops2.cc delete mode 100644 milena/sandbox/fred/old/algebraic.cc delete mode 100644 milena/sandbox/fred/old/closing_area.cc delete mode 100644 milena/sandbox/fred/old/connected_filter.hh delete mode 100644 milena/sandbox/fred/old/leveling.cc delete mode 100644 milena/sandbox/fred/old/leveling_filter.hh delete mode 100644 milena/sandbox/fred/old/mean.hh delete mode 100644 milena/sandbox/fred/old/meantest.cc delete mode 100644 milena/sandbox/fred/old/overload.cc delete mode 100644 milena/sandbox/fred/old/p2p/Makefile delete mode 100644 milena/sandbox/fred/old/p2p/compose_p2p.hh delete mode 100644 milena/sandbox/fred/old/p2p/p2p_morpher.hh delete mode 100644 milena/sandbox/fred/old/p2p/symmetry_p2p.hh delete mode 100644 milena/sandbox/fred/old/p2p/test_morph_image.cc delete mode 100644 milena/sandbox/fred/old/p2p/translate_p2p.hh delete mode 100644 milena/sandbox/fred/old/site_wrapper.hh delete mode 100644 milena/sandbox/fred/old/value.cc delete mode 100644 milena/sandbox/fred/old/value_wrapper.hh delete mode 100644 milena/sandbox/fred/tests/Makefile delete mode 100644 milena/sandbox/fred/tests/cos.cc delete mode 100644 milena/sandbox/fred/tests/fun.cc delete mode 100644 milena/sandbox/fred/tests/thru.cc delete mode 100644 milena/sandbox/fred/tests/wip.cc delete mode 100644 milena/sandbox/garrigues/TODO delete mode 100644 milena/sandbox/garrigues/area_filter_auto_dual.cc delete mode 100644 milena/sandbox/garrigues/factures/extract_array.cc delete mode 100644 milena/sandbox/garrigues/factures/extract_array_highlight.cc delete mode 100644 milena/sandbox/garrigues/fllt/compute_level_set.hh delete mode 100644 milena/sandbox/garrigues/fllt/compute_level_set_fast.hh delete mode 100644 milena/sandbox/garrigues/fllt/compute_level_set_fast2.hh delete mode 100644 milena/sandbox/garrigues/fllt/debug.hh delete mode 100644 milena/sandbox/garrigues/fllt/doc.hh delete mode 100644 milena/sandbox/garrigues/fllt/essai.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt.hh delete mode 100644 milena/sandbox/garrigues/fllt/fllt_doc.hh delete mode 100644 milena/sandbox/garrigues/fllt/fllt_merge.hh delete mode 100644 milena/sandbox/garrigues/fllt/fllt_optimized.hh delete mode 100644 milena/sandbox/garrigues/fllt/fllt_simple.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt_simple.svg.1.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt_simple.svg.2.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt_simple.svg.3.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt_theo.cc delete mode 100644 milena/sandbox/garrigues/fllt/fllt_types.hh delete mode 100644 milena/sandbox/garrigues/fllt/give_confs.cc delete mode 100644 milena/sandbox/garrigues/fllt/local_configurations.hh delete mode 100644 milena/sandbox/garrigues/fllt/lower.hh delete mode 100644 milena/sandbox/garrigues/fllt/merge.hh delete mode 100644 milena/sandbox/garrigues/fllt/test.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt10.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt10_inv.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt12.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt13.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt15.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt2.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt3.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt3_inv.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt4.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt5.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt6.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt7.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt7_inv.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt8.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt9.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt_lena.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt_lena_tiles.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_fllt_tiny.cc delete mode 100644 milena/sandbox/garrigues/fllt/test_flltb.cc delete mode 100644 milena/sandbox/garrigues/fllt/types.hh delete mode 100644 milena/sandbox/garrigues/fllt/upper.hh delete mode 100644 milena/sandbox/garrigues/image_identity/image_domain_morpher.hh delete mode 100644 milena/sandbox/garrigues/image_identity/image_identity.cc delete mode 100644 milena/sandbox/garrigues/image_identity/image_identity.hh delete mode 100644 milena/sandbox/garrigues/image_identity/image_value_morpher.hh delete mode 100644 milena/sandbox/garrigues/image_identity/interpolated.cc delete mode 100644 milena/sandbox/garrigues/image_identity/interpolated.hh delete mode 100644 milena/sandbox/garrigues/level_set.hh delete mode 100644 milena/sandbox/garrigues/log delete mode 100644 milena/sandbox/garrigues/lower.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/backend/file.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/backend/ios.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/backend/mmap.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/block.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/context.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/all.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/image2d/all.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/image2d/lrtb.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/image2d/tblr.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/layout2d.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/page2d/all.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/page2d/lrtb.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/layout/page2d/tblr.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/page.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/paged_image.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/support/lru.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/support/simple.hh delete mode 100644 milena/sandbox/garrigues/tiled_image2d/tiled_image2d.cc delete mode 100644 milena/sandbox/garrigues/tiled_image2d/tiled_image2d.hh delete mode 100644 milena/sandbox/garrigues/union_find/Makefile delete mode 100644 milena/sandbox/garrigues/union_find/canvas/find_root.hh delete mode 100644 milena/sandbox/garrigues/union_find/canvas/reconstruction_on_function.hh delete mode 100644 milena/sandbox/garrigues/union_find/canvas/reconstruction_on_set.hh delete mode 100644 milena/sandbox/garrigues/union_find/canvas/self_dual_reconstruction.hh delete mode 100644 milena/sandbox/garrigues/union_find/images/marker_to_dilate.pbm delete mode 100644 milena/sandbox/garrigues/union_find/images/marker_to_erode.pbm delete mode 100644 milena/sandbox/garrigues/union_find/images/mask.pbm delete mode 100644 milena/sandbox/garrigues/union_find/reconstructions_on_function.cc delete mode 100644 milena/sandbox/garrigues/union_find/reconstructions_on_function.hh delete mode 100644 milena/sandbox/garrigues/union_find/reconstructions_on_set.cc delete mode 100644 milena/sandbox/garrigues/union_find/reconstructions_on_set.hh delete mode 100644 milena/sandbox/garrigues/union_find/reunion_avec_theo delete mode 100644 milena/sandbox/garrigues/union_find/self_dual_reconstruction.cc delete mode 100644 milena/sandbox/garrigues/union_find/self_dual_reconstruction.hh delete mode 100644 milena/sandbox/garrigues/upper.hh delete mode 100644 milena/sandbox/garrigues/value_behavior.cc delete mode 100644 milena/sandbox/green/README delete mode 100644 milena/sandbox/green/bench/transform/distance/Makefile.am delete mode 100644 milena/sandbox/green/bench/transform/distance/distance.cc delete mode 100644 milena/sandbox/green/bug/labeling/mean_values/Makefile.am delete mode 100644 milena/sandbox/green/bug/labeling/mean_values/label.pgm delete mode 100644 milena/sandbox/green/bug/labeling/mean_values/mean_values.cc delete mode 100644 milena/sandbox/green/demo/accu/stat/histo2d/Makefile.am delete mode 100644 milena/sandbox/green/demo/accu/stat/histo2d/histo2d.cc delete mode 100644 milena/sandbox/green/demo/annotating/bic/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/bic/bic.cc delete mode 100644 milena/sandbox/green/demo/annotating/hsv/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/hsv/hsv.cc delete mode 100644 milena/sandbox/green/demo/annotating/lep/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/lep/lep.cc delete mode 100644 milena/sandbox/green/demo/annotating/nb_color/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/nb_color/nb_color.cc delete mode 100644 milena/sandbox/green/demo/annotating/project/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/project/project.cc delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64/rgb_64.cc delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color/stddev_color.cc delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/Makefile.am delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc delete mode 100644 milena/sandbox/green/demo/clustering/kmean1d/Makefile.am delete mode 100644 milena/sandbox/green/demo/clustering/kmean1d/kmean1d.cc delete mode 100644 milena/sandbox/green/demo/clustering/kmean2d/Makefile.am delete mode 100644 milena/sandbox/green/demo/clustering/kmean2d/kmean2d.cc delete mode 100644 milena/sandbox/green/demo/clustering/kmean3d/Makefile.am delete mode 100644 milena/sandbox/green/demo/clustering/kmean3d/kmean3d.cc delete mode 100644 milena/sandbox/green/demo/clustering/kmean_rgb/Makefile.am delete mode 100644 milena/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc delete mode 100644 milena/sandbox/green/demo/labeling/regional_maxima/Makefile.am delete mode 100644 milena/sandbox/green/demo/labeling/regional_maxima/regional_maxima.cc delete mode 100644 milena/sandbox/green/demo/labeling/regional_maxima/thresholds.txt delete mode 100644 milena/sandbox/green/doc/annotating/class.txt delete mode 100644 milena/sandbox/green/doc/annotating/syntheseMillet2008.txt delete mode 100644 milena/sandbox/green/doc/annotating/testMillet2008 delete mode 100644 milena/sandbox/green/doc/examples/accu_color/accu_color.cc delete mode 100644 milena/sandbox/green/doc/examples/frac/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/frac/frac.cc delete mode 100644 milena/sandbox/green/doc/examples/frac/frac.hh delete mode 100644 milena/sandbox/green/doc/examples/frac/gcd.hh delete mode 100644 milena/sandbox/green/doc/examples/frac/sign_prod.hh delete mode 100644 milena/sandbox/green/doc/examples/hello_milena/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/hello_milena/hello_milena.cc delete mode 100644 milena/sandbox/green/doc/examples/hello_world/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/hello_world/hello_world.cc delete mode 100644 milena/sandbox/green/doc/examples/hello_world/print.cc delete mode 100644 milena/sandbox/green/doc/examples/io/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/io/io.cc delete mode 100644 milena/sandbox/green/doc/examples/learn_milena/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/learn_milena/learn_milena.cc delete mode 100644 milena/sandbox/green/doc/examples/otsu/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/otsu/otsu.cc delete mode 100644 milena/sandbox/green/doc/examples/stats/Makefile.am delete mode 100644 milena/sandbox/green/doc/examples/stats/stats.cc delete mode 100644 milena/sandbox/green/doc/formulae/formulae.tex delete mode 100644 milena/sandbox/green/doc/quick_tour/quick_tour.tex delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h0_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_mean.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_merge.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_mean.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_merge.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_mean.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_merge.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_mean.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_merge.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_mean.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_merge.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_mean.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_merge.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_mean.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_merge.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_mean.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_merge.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l2_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l3_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l4_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l5_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/reponse_theo.eml delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s2_histo.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s3_histo.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s4_histo.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s5_histo.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/synthese.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h0_input.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q2.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q3.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q6.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q7.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q8.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q2.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q3.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q6.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q7.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q8.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q2.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q3.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q6.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q7.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q8.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q2.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q3.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q6.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q7.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q8.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q2.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q3.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q6.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q7.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q8.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q2.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q3.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q4.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q5.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q6.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q7.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q8.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/synthese.txt delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.ppm.gz delete mode 100755 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.sh.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thick.pbm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thin.pbm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q4.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q5.dump.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q4.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q5.pgm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q4.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q5.ppm.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q4.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q5.txt.gz delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/synthese.txt.gz delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/achromastism.cc delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-color.txt delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-img.txt delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-only.txt delete mode 100644 milena/sandbox/green/exp/annotating/bench/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/bench/bench.cc delete mode 100644 milena/sandbox/green/exp/annotating/error/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/error/error.cc delete mode 100644 milena/sandbox/green/exp/annotating/histo/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/histo/histo.cc delete mode 100644 milena/sandbox/green/exp/annotating/hsv/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/hsv/hsv.cc delete mode 100644 milena/sandbox/green/exp/annotating/hue/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/hue/hue.cc delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-color.txt delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-img.txt delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-only.txt delete mode 100644 milena/sandbox/green/exp/annotating/nb_color/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/nb_color/nb_color.cc delete mode 100644 milena/sandbox/green/exp/annotating/saturation/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/saturation/saturation.cc delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-color.txt delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-img.txt delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-only.txt delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color/stddev_color.cc delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc delete mode 100644 milena/sandbox/green/exp/annotating/value/Makefile.am delete mode 100644 milena/sandbox/green/exp/annotating/value/text-color.txt delete mode 100644 milena/sandbox/green/exp/annotating/value/text-img.txt delete mode 100644 milena/sandbox/green/exp/annotating/value/text-only.txt delete mode 100644 milena/sandbox/green/exp/annotating/value/value.cc delete mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/Makefile.am delete mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/regional_maxima.cc delete mode 100644 milena/sandbox/green/mln/accu/stat/histo1d.hh delete mode 100644 milena/sandbox/green/mln/accu/stat/histo2d.hh delete mode 100644 milena/sandbox/green/mln/accu/stat/histo3d_hsl.hh delete mode 100644 milena/sandbox/green/mln/accu/stat/histo3d_rgb.hh delete mode 100644 milena/sandbox/green/mln/clustering/k_mean.hh delete mode 100644 milena/sandbox/green/mln/clustering/kmean1d.hh delete mode 100644 milena/sandbox/green/mln/clustering/kmean2d.hh delete mode 100644 milena/sandbox/green/mln/clustering/kmean3d.hh delete mode 100644 milena/sandbox/green/mln/clustering/kmean_rgb.hh delete mode 100644 milena/sandbox/green/mln/display/display_histo.hh delete mode 100644 milena/sandbox/green/mln/display/project_histo.hh delete mode 100644 milena/sandbox/green/mln/fun/p2b/achromatic.hh delete mode 100644 milena/sandbox/green/mln/fun/p2b/component_equals.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/achromatism.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/hue_concentration.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/int_u16_to_int_u14.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/log.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rg_to_rgb.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_rg.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh delete mode 100644 milena/sandbox/green/mln/img_path.hh delete mode 100644 milena/sandbox/green/mln/io/plot/save_histo_sh.hh delete mode 100644 milena/sandbox/green/mln/io/plot/save_image_sh.hh delete mode 100644 milena/sandbox/green/mln/math/ceil.hh delete mode 100644 milena/sandbox/green/mln/math/floor.hh delete mode 100644 milena/sandbox/green/mln/value/hsv.hh delete mode 100644 milena/sandbox/green/mln/value/rg.hh delete mode 100644 milena/sandbox/green/tests/accu/stat/histo1d/Makefile.am delete mode 100755 milena/sandbox/green/tests/accu/stat/histo1d/gaussian.sh delete mode 100644 milena/sandbox/green/tests/accu/stat/histo1d/histo1d.cc delete mode 100644 milena/sandbox/green/tests/accu/stat/histo2d/Makefile.am delete mode 100755 milena/sandbox/green/tests/accu/stat/histo2d/gaussian2d.sh delete mode 100644 milena/sandbox/green/tests/accu/stat/histo3d_hsl/Makefile.am delete mode 100644 milena/sandbox/green/tests/accu/stat/histo3d_hsl/histo3d_hsl.cc delete mode 100644 milena/sandbox/green/tests/accu/stat/histo3d_rgb/Makefile.am delete mode 100644 milena/sandbox/green/tests/accu/stat/histo3d_rgb/histo3d_rgb.cc delete mode 100644 milena/sandbox/green/tests/clustering/k_mean/Makefile.am delete mode 100644 milena/sandbox/green/tests/clustering/k_mean/k_mean.cc delete mode 100644 milena/sandbox/green/tests/clustering/kmean1d/Makefile.am delete mode 100644 milena/sandbox/green/tests/clustering/kmean1d/kmean1d.cc delete mode 100644 milena/sandbox/green/tests/io/plot/save_image_sh/Makefile.am delete mode 100644 milena/sandbox/green/tests/io/plot/save_image_sh/save_image_sh.cc delete mode 100644 milena/sandbox/green/tools/annotating/histo/Makefile.am delete mode 100644 milena/sandbox/green/tools/annotating/histo/histo.cc delete mode 100644 milena/sandbox/green/tools/annotating/iz/Makefile.am delete mode 100644 milena/sandbox/green/tools/annotating/iz/iz.cc delete mode 100644 milena/sandbox/green/tools/annotating/opening/Makefile.am delete mode 100644 milena/sandbox/green/tools/annotating/opening/opening.cc delete mode 100644 milena/sandbox/green/tools/annotating/regmax/Makefile.am delete mode 100644 milena/sandbox/green/tools/annotating/regmax/regmax.cc delete mode 100644 milena/sandbox/icdar/2009/README delete mode 100644 milena/sandbox/icdar/2009/dibco/binarization.cc delete mode 100644 milena/sandbox/icdar/2009/dibco/quasi.cc delete mode 100644 milena/sandbox/icdar/2009/dibco/svg.1.binarization.cc delete mode 100644 milena/sandbox/icdar/2009/dibco/svg.2.binarization.cc delete mode 100644 milena/sandbox/icdar/2009/dibco/svg.3.binarization.cc delete mode 100755 milena/sandbox/icdar/2009/dibco/wst-based.sh delete mode 100644 milena/sandbox/icdar/2009/hsc/clean_input.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/clean_input.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/clean_lines.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/clean_lines_with_grouped_bboxes.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/dummy_input_to_words_dat.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/boxes.cc delete mode 100755 milena/sandbox/icdar/2009/hsc/first_attempts/dist.sh delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/exec/iz_lines.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/exec/relabel_lines.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/exec/show_lines.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/exec/show_lines_pbm.cc delete mode 100755 milena/sandbox/icdar/2009/hsc/first_attempts/fuzzy.sh delete mode 100644 milena/sandbox/icdar/2009/hsc/first_attempts/main.cc delete mode 100755 milena/sandbox/icdar/2009/hsc/first_attempts/reduce.sh delete mode 100755 milena/sandbox/icdar/2009/hsc/first_attempts/words.sh delete mode 100755 milena/sandbox/icdar/2009/hsc/first_attempts/words_25p.sh delete mode 100644 milena/sandbox/icdar/2009/hsc/get_line_images.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/icdar2ppm.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/icdar2ppm.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/icdar_io.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/input_lines_to_lines.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/input_to_lines.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/input_to_lines_dat.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/input_to_words_dat.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/input_to_ws.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/input_to_wsl.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/io/icdar/load.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/io/icdar/save.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/label_maj.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/line_to_words.hh delete mode 100644 milena/sandbox/icdar/2009/hsc/lines_to_boxes.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/lines_to_words.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/old_input_to_lines.cc delete mode 100644 milena/sandbox/icdar/2009/hsc/ws_to_wsl.hh delete mode 100644 milena/sandbox/icdar/2009/pscomp/iz.cc delete mode 100644 milena/sandbox/icdar/2009/pscomp/rect_filter.cc delete mode 100644 milena/sandbox/igr/code/test.cc delete mode 100644 milena/sandbox/inim/2009/binarization/binarization.cc delete mode 100644 milena/sandbox/inim/2009/binarization/binarization.hh delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/ChangeLog delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/Makefile delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/build/Makefile delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/build/configure.in delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/check/Makefile delete mode 100755 milena/sandbox/inim/2009/binarization/proof-of-concept/check/graph.sh delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/check/histo.gp delete mode 100755 milena/sandbox/inim/2009/binarization/proof-of-concept/configure delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/configure.in delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/scripts/flower delete mode 100755 milena/sandbox/inim/2009/binarization/proof-of-concept/scripts/init_tar.sh delete mode 100755 milena/sandbox/inim/2009/binarization/proof-of-concept/scripts/todo.sh delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/src/basic.cc delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/src/gradient.cc delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/src/snake2d.hh delete mode 100644 milena/sandbox/inim/2009/binarization/proof-of-concept/src/util.hxx delete mode 100644 milena/sandbox/inim/2009/binarization/snake2d.cc delete mode 100644 milena/sandbox/inim/2009/binarization/snake2d.hh delete mode 100644 milena/sandbox/inim/2009/classif/Makefile delete mode 100644 milena/sandbox/inim/2009/classif/plotscript delete mode 100644 milena/sandbox/inim/2009/classif/src/display.hh delete mode 100644 milena/sandbox/inim/2009/classif/src/iccvg04.cc delete mode 100644 milena/sandbox/inim/2009/classif/src/max_tree.hh delete mode 100644 milena/sandbox/inim/2009/classif/src/proj.hh delete mode 100644 milena/sandbox/inim/2009/classif/src/v2.cc delete mode 100644 milena/sandbox/inim/2009/color/README delete mode 100644 milena/sandbox/inim/2009/color/laplacien.cc delete mode 100644 milena/sandbox/inim/2009/color/min_tree_area_filter.cc delete mode 100644 milena/sandbox/inim/2009/color/min_tree_color.cc delete mode 100644 milena/sandbox/inim/2009/color/min_tree_color_v2.cc delete mode 100644 milena/sandbox/inim/2009/color/min_tree_height_filter.cc delete mode 100644 milena/sandbox/inim/2009/color/min_tree_volume_filter.cc delete mode 100644 milena/sandbox/inim/2009/color/reference.cc delete mode 100644 milena/sandbox/inim/2009/color/reference2.cc delete mode 100644 milena/sandbox/inim/2009/color/src/convert.hh delete mode 100644 milena/sandbox/inim/2009/color/src/distance.hh delete mode 100644 milena/sandbox/inim/2009/color/src/graph.hh delete mode 100644 milena/sandbox/inim/2009/color/src/io.hh delete mode 100644 milena/sandbox/inim/2009/nature/Makefile delete mode 100644 milena/sandbox/inim/2009/nature/closing.cc delete mode 100644 milena/sandbox/inim/2009/nature/co_occurence.hh delete mode 100644 milena/sandbox/inim/2009/nature/erosion.cc delete mode 100644 milena/sandbox/inim/2009/nature/fft.cc delete mode 100644 milena/sandbox/inim/2009/nature/gradient.cc delete mode 100644 milena/sandbox/inim/2009/nature/histo_hsi.cc delete mode 100644 milena/sandbox/inim/2009/nature/hom.cc delete mode 100644 milena/sandbox/inim/2009/nature/mco.cc delete mode 100644 milena/sandbox/inim/2009/nature/nature.cc delete mode 100644 milena/sandbox/inim/2009/nature/opening.cc delete mode 100644 milena/sandbox/inim/2009/nature/proj.cc delete mode 100644 milena/sandbox/inim/2009/nature/proj.hh delete mode 100755 milena/sandbox/inim/2009/nature/test.sh delete mode 100644 milena/sandbox/inim/2009/ocr/Makefile delete mode 100755 milena/sandbox/inim/2009/ocr/check.sh delete mode 100644 milena/sandbox/inim/2009/ocr/check_simple_point.cc delete mode 100644 milena/sandbox/inim/2009/ocr/compute_local_configurations.cc delete mode 100644 milena/sandbox/inim/2009/ocr/enlarge.hh delete mode 100644 milena/sandbox/inim/2009/ocr/ocr_with_preprocess.cc delete mode 100644 milena/sandbox/inim/2009/ocr/ocr_without_preprocess.cc delete mode 100644 milena/sandbox/inim/2009/ocr/resize.hh delete mode 100644 milena/sandbox/inim/2009/ocr/simple_point.cc delete mode 100644 milena/sandbox/inim/2009/ocr/simple_point.hh delete mode 100644 milena/sandbox/inim/2009/ocr/skeleton.hh delete mode 100644 milena/sandbox/inim/2009/ocr/skeleton.old.cc delete mode 100644 milena/sandbox/inim/2009/ocr/skeleton.old.hh delete mode 100644 milena/sandbox/inim/2009/ocr/tesseract_wrap.hh delete mode 100644 milena/sandbox/inim/2010/blur/AUTHORS delete mode 100644 milena/sandbox/inim/2010/blur/Makefile delete mode 100644 milena/sandbox/inim/2010/blur/README delete mode 100644 milena/sandbox/inim/2010/blur/advance_iterator.hh delete mode 100644 milena/sandbox/inim/2010/blur/advance_iterator.hxx delete mode 100644 milena/sandbox/inim/2010/blur/cuttor.hh delete mode 100644 milena/sandbox/inim/2010/blur/cuttor.hxx delete mode 100644 milena/sandbox/inim/2010/blur/main.cc delete mode 100644 milena/sandbox/inim/2010/blur/vect_it.hh delete mode 100644 milena/sandbox/inim/2010/blur/vect_it.hxx delete mode 100644 milena/sandbox/inim/2010/blur/vect_it_OLD.hxx delete mode 100644 milena/sandbox/inim/2010/blur/vector.hh delete mode 100644 milena/sandbox/inim/2010/blur/vector.hxx delete mode 100644 milena/sandbox/inim/2010/boxes/Makefile delete mode 100644 milena/sandbox/inim/2010/boxes/boxes.cc delete mode 100755 milena/sandbox/inim/2010/boxes/configure delete mode 100644 milena/sandbox/inim/2010/cag/Makefile delete mode 100644 milena/sandbox/inim/2010/cag/README delete mode 100644 milena/sandbox/inim/2010/cag/get_lines.hh delete mode 100644 milena/sandbox/inim/2010/cag/graph.hh delete mode 100644 milena/sandbox/inim/2010/cag/main.cc delete mode 100644 milena/sandbox/inim/2010/cag/superpose.hh delete mode 100644 milena/sandbox/inim/2010/morpho/README delete mode 100755 milena/sandbox/inim/2010/morpho/configure delete mode 100644 milena/sandbox/inim/2010/morpho/dilation-n.hh delete mode 100644 milena/sandbox/inim/2010/morpho/erosion-n.hh delete mode 100644 milena/sandbox/inim/2010/morpho/main_dilation-n.cc delete mode 100644 milena/sandbox/inim/2010/morpho/morpho.cc delete mode 100755 milena/sandbox/inim/2010/morpho/run.sh delete mode 100644 milena/sandbox/inim/2010/page/AUTHORS delete mode 100644 milena/sandbox/inim/2010/page/Makefile delete mode 100644 milena/sandbox/inim/2010/page/README delete mode 100644 milena/sandbox/inim/2010/page/binarization/binarization.hh delete mode 100644 milena/sandbox/inim/2010/page/binarization/binarization.hxx delete mode 100644 milena/sandbox/inim/2010/page/binarization/functors.hh delete mode 100644 milena/sandbox/inim/2010/page/binarization/functors.hxx delete mode 100644 milena/sandbox/inim/2010/page/binarization/grayscale.hh delete mode 100644 milena/sandbox/inim/2010/page/binarization/grayscale.hxx delete mode 100644 milena/sandbox/inim/2010/page/binarization/integral-image.hh delete mode 100644 milena/sandbox/inim/2010/page/binarization/integral-image.hxx delete mode 100644 milena/sandbox/inim/2010/page/check_size_functor.hh delete mode 100644 milena/sandbox/inim/2010/page/main.cc delete mode 100644 milena/sandbox/inim/2010/page/white.hh delete mode 100644 milena/sandbox/inim/2010/page/white.hxx delete mode 100644 milena/sandbox/inim/2010/rag/Makefile delete mode 100644 milena/sandbox/inim/2010/rag/center_weight.hh delete mode 100644 milena/sandbox/inim/2010/rag/dijkstra.hh delete mode 100644 milena/sandbox/inim/2010/rag/p_vertices_with_accu.hh delete mode 100644 milena/sandbox/inim/2010/rag/rag.cc delete mode 100644 milena/sandbox/inim/2010/rag/rag.hh delete mode 100644 milena/sandbox/inim/2011/fredwin/Makefile delete mode 100755 milena/sandbox/inim/2011/fredwin/configure delete mode 100644 milena/sandbox/inim/2011/fredwin/inim.cc delete mode 100644 milena/sandbox/jardonnet/TODO delete mode 100644 milena/sandbox/jardonnet/array/Makefile delete mode 100644 milena/sandbox/jardonnet/array/array.cc delete mode 100644 milena/sandbox/jardonnet/array/array.hh delete mode 100644 milena/sandbox/jardonnet/array/old/1d.hh delete mode 100644 milena/sandbox/jardonnet/array/old/1d.hxx delete mode 100644 milena/sandbox/jardonnet/array/old/2d.hh delete mode 100644 milena/sandbox/jardonnet/array/old/2d.hxx delete mode 100644 milena/sandbox/jardonnet/array/old/3d.hh delete mode 100644 milena/sandbox/jardonnet/array/old/3d.hxx delete mode 100644 milena/sandbox/jardonnet/array/old/all.hh delete mode 100644 milena/sandbox/jardonnet/array/old/nd.hh delete mode 100644 milena/sandbox/jardonnet/array/old/objs.hh delete mode 100644 milena/sandbox/jardonnet/icc.txt delete mode 100644 milena/sandbox/jardonnet/igr/Makefile delete mode 100755 milena/sandbox/jardonnet/igr/check/check delete mode 100644 milena/sandbox/jardonnet/igr/check/s7.ppm delete mode 100644 milena/sandbox/jardonnet/igr/check/tiny.ppm delete mode 100644 milena/sandbox/jardonnet/igr/src/igr.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/Makefile delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/mg_ima.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/test.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/test2.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/test3.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/test4.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/check/tiny.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/diff_ref_fused_on_small delete mode 100644 milena/sandbox/jardonnet/n_cmpt/fused delete mode 100644 milena/sandbox/jardonnet/n_cmpt/fused_filter.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt2.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt2.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt3.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt3.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt4.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt4.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt5.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/n_cmpt5.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/nwst.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/nwst.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/prob.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/ref delete mode 100644 milena/sandbox/jardonnet/n_cmpt/ref_filter.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/seg15.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/test3.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/test_attribute_watershed.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/tikz.cc delete mode 100644 milena/sandbox/jardonnet/n_cmpt/tikz.hh delete mode 100644 milena/sandbox/jardonnet/n_cmpt/tiny_seg15.pgm delete mode 100644 milena/sandbox/jardonnet/n_cmpt/wst.cc delete mode 100755 milena/sandbox/jardonnet/perl/hxx.pl delete mode 100644 milena/sandbox/jardonnet/perl/test/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/c.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/cast.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/i2v/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/i2v/all_to.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/i2v/array.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/internal/selector.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/internal/x2x_linear_impl.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/ops.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2b/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2b/chess.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2b/has.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2v/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2v/elifs.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2v/iota.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/p2v/ternary.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2b/threshold.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/abs.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/cast.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/dec.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/enc.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/id.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/inc.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/linear.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/norm.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/rgb_to_hsi.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/v2v/saturate.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/vv2v/max.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/vv2v/min.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/all.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/geom/composed.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/geom/rotation.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/geom/translation.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/interpol/bilinear.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/interpol/linear.hh delete mode 100644 milena/sandbox/jardonnet/perl/test/x2x/interpol/test.cc delete mode 100644 milena/sandbox/jardonnet/registration/center.hh delete mode 100644 milena/sandbox/jardonnet/registration/chamfer.hh delete mode 100644 milena/sandbox/jardonnet/registration/cloud.hh delete mode 100644 milena/sandbox/jardonnet/registration/cov.hh delete mode 100644 milena/sandbox/jardonnet/registration/cross_cov.hh delete mode 100644 milena/sandbox/jardonnet/registration/exp_val.hh delete mode 100644 milena/sandbox/jardonnet/registration/final_qk.hh delete mode 100644 milena/sandbox/jardonnet/registration/frankel_young.hh delete mode 100644 milena/sandbox/jardonnet/registration/icp.hh delete mode 100644 milena/sandbox/jardonnet/registration/icp_ref.hh delete mode 100644 milena/sandbox/jardonnet/registration/interpolation.hh delete mode 100644 milena/sandbox/jardonnet/registration/jacobi.hh delete mode 100644 milena/sandbox/jardonnet/registration/misc.hh delete mode 100644 milena/sandbox/jardonnet/registration/multiscale.hh delete mode 100644 milena/sandbox/jardonnet/registration/power_it.hh delete mode 100644 milena/sandbox/jardonnet/registration/projection.hh delete mode 100644 milena/sandbox/jardonnet/registration/quat7.hh delete mode 100644 milena/sandbox/jardonnet/registration/registration.hh delete mode 100644 milena/sandbox/jardonnet/registration/rotation.hh delete mode 100644 milena/sandbox/jardonnet/registration/save.hh delete mode 100644 milena/sandbox/jardonnet/registration/tools.hh delete mode 100644 milena/sandbox/jardonnet/registration/update_qk.hh delete mode 100644 milena/sandbox/jardonnet/registration/variance.hh delete mode 100644 milena/sandbox/jardonnet/subsampling/gaussian_subsampling.hh delete mode 100644 milena/sandbox/jardonnet/subsampling/sub_sampled_image.hh delete mode 100644 milena/sandbox/jardonnet/test/Makefile delete mode 100644 milena/sandbox/jardonnet/test/bench delete mode 100755 milena/sandbox/jardonnet/test/bench.rb delete mode 100644 milena/sandbox/jardonnet/test/big_chess.cc delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk2_1.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk2_2.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk_1.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk_1_c1_x1.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk_2.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk_2_c1_x1.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/final_qk_3.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/no_final.ppm delete mode 100644 milena/sandbox/jardonnet/test/final/no_final_1_c1_x1.ppm delete mode 100644 milena/sandbox/jardonnet/test/gaussian.cc delete mode 100644 milena/sandbox/jardonnet/test/gaussian_subsampling.cc delete mode 100644 milena/sandbox/jardonnet/test/icp.cc delete mode 100644 milena/sandbox/jardonnet/test/icp_ref.cc delete mode 100644 milena/sandbox/jardonnet/test/img/c0.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c1.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c10.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c11.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c2.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c3.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c4.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c5.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c55.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c6.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c7.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c8.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/c9.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x0.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x1.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x10.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x11.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x2.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x3.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x4.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x5.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x6.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x7.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x8.pbm delete mode 100644 milena/sandbox/jardonnet/test/img/x9.pbm delete mode 100644 milena/sandbox/jardonnet/test/length.ppm delete mode 100644 milena/sandbox/jardonnet/test/no_final.ppm delete mode 100644 milena/sandbox/jardonnet/test/plotscript delete mode 100644 milena/sandbox/jardonnet/test/reduce.cc delete mode 100644 milena/sandbox/jardonnet/test/registration.cc delete mode 100644 milena/sandbox/jardonnet/test/script_latex.plot delete mode 100644 milena/sandbox/jardonnet/test/subsampling.cc delete mode 100644 milena/sandbox/jardonnet/test/test.cc delete mode 100644 milena/sandbox/jardonnet/test/test.rb delete mode 100644 milena/sandbox/jardonnet/test/type.cc delete mode 100644 milena/sandbox/jardonnet/virtual/Makefile delete mode 100644 milena/sandbox/jardonnet/virtual/access.cc delete mode 100644 milena/sandbox/jardonnet/virtual/access.hh delete mode 100644 milena/sandbox/jardonnet/virtual/bilinear.ppm delete mode 100644 milena/sandbox/jardonnet/virtual/lena.pgm delete mode 100644 milena/sandbox/jardonnet/virtual/lena.ppm delete mode 100644 milena/sandbox/jardonnet/virtual/nn.ppm delete mode 100644 milena/sandbox/laurent/ismm2009.cc delete mode 100644 milena/sandbox/laurent/ismm2009.hh delete mode 100644 milena/sandbox/laurent/memo/ismm2009.v0.cc delete mode 100644 milena/sandbox/laurent/memo/ismm2009.v1.cc delete mode 100644 milena/sandbox/laurent/memo/ismm2009.v2.cc delete mode 100644 milena/sandbox/laurent/playing_with_attributes.cc delete mode 100644 milena/sandbox/lazzara/afp/micro_films/Makefile delete mode 100755 milena/sandbox/lazzara/afp/micro_films/demat_mf_afp.sh delete mode 100644 milena/sandbox/lazzara/afp/micro_films/extract_mf.cc delete mode 100644 milena/sandbox/lazzara/afp/micro_films/keep_background.cc delete mode 100644 milena/sandbox/lazzara/afp/micro_films/split_image.cc delete mode 100644 milena/sandbox/lazzara/csv2vtk/csv2vtk.cc delete mode 100644 milena/sandbox/lazzara/fonctionnalites_milena.ods delete mode 100644 milena/sandbox/lazzara/igr/gui/Makefile.am delete mode 100644 milena/sandbox/lazzara/igr/gui/demo.pro delete mode 100644 milena/sandbox/lazzara/igr/gui/src/bak/mainwindow.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/bak/mainwindow.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/display.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/display.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/display_seg.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/display_seg.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/edit_seg.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/edit_seg.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/image_viewer.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/image_viewer.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/internal/interactive_scene.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/internal/interactive_scene.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/main.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/main_window.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/src/main_window.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/to_qimage.hh delete mode 100644 milena/sandbox/lazzara/igr/gui/src/widgets.cc delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/bak/mainwindow.ui delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/display.ui delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/display_seg.ui delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/edit_seg.ui delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/image_viewer.ui delete mode 100644 milena/sandbox/lazzara/igr/gui/ui/main_window.ui delete mode 100644 milena/sandbox/lazzara/igr/igr-biggest-comp.cc delete mode 100644 milena/sandbox/lazzara/igr/igr-cloud.cc delete mode 100644 milena/sandbox/lazzara/igr/igr.cc delete mode 100644 milena/sandbox/lazzara/igr/irm/grad_clo_and_wshd.cc delete mode 100644 milena/sandbox/lazzara/igr/irm/hsl_grad_and_wst.cc delete mode 100644 milena/sandbox/lazzara/igr/irm/wst_rag.cc delete mode 100644 milena/sandbox/lazzara/igr/irm/wst_rag_hsl.cc delete mode 100644 milena/sandbox/lazzara/igr/irm_seg_with_mm_and_rag.mine.cc delete mode 100644 milena/sandbox/lazzara/igr/registration_3d.cc delete mode 100644 milena/sandbox/lazzara/igr/tr_image.cc delete mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/main.cc delete mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/toto.cc delete mode 100644 milena/sandbox/lazzara/scribo/fill_holes/main.cc delete mode 100644 milena/sandbox/lazzara/scribo/separateurs_materialises/lines_pattern.cc delete mode 100644 milena/sandbox/lazzara/scribo/skeleton_crest/main.cc delete mode 100644 milena/sandbox/markov/T_gen.hh delete mode 100644 milena/sandbox/markov/approx_exp.hh delete mode 100644 milena/sandbox/markov/markov.cc delete mode 100644 milena/sandbox/markov/markov.hh delete mode 100644 milena/sandbox/markov/random.hh delete mode 100644 milena/sandbox/markov/random.hxx delete mode 100644 milena/sandbox/modules/icdar/lines.cc delete mode 100644 milena/sandbox/modules/icdar/words.cc delete mode 100644 milena/sandbox/nivault/dmap.hh delete mode 100644 milena/sandbox/nivault/dmap.hxx delete mode 100644 milena/sandbox/nivault/dyn_line.hh delete mode 100644 milena/sandbox/nivault/extract_character.cc delete mode 100644 milena/sandbox/nivault/extract_score.cc delete mode 100644 milena/sandbox/nivault/log delete mode 100644 milena/sandbox/nivault/median.hh delete mode 100644 milena/sandbox/nivault/plugin-gimp/.gitignore delete mode 100644 milena/sandbox/nivault/plugin-gimp/AUTHORS delete mode 100644 milena/sandbox/nivault/plugin-gimp/COPYING delete mode 100644 milena/sandbox/nivault/plugin-gimp/ChangeLog delete mode 100644 milena/sandbox/nivault/plugin-gimp/HACKING delete mode 100644 milena/sandbox/nivault/plugin-gimp/INSTALL delete mode 100644 milena/sandbox/nivault/plugin-gimp/Makefile.am delete mode 100644 milena/sandbox/nivault/plugin-gimp/TODO delete mode 100755 milena/sandbox/nivault/plugin-gimp/autogen.sh delete mode 100644 milena/sandbox/nivault/plugin-gimp/configure.ac delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/Makefile.am delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/en/Makefile.am delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/en/gimp-help.xml delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/en/index.html delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/images/Makefile.am delete mode 100644 milena/sandbox/nivault/plugin-gimp/help/images/wilber.png delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/ChangeLog delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/az.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/de.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/fr.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/sk.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/sv.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/po/zh_TW.po delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/Makefile.am delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/build-image.hh delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/build-image.hxx delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/gimp-image.hh delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/interface.hh delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/interface.hxx delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/main.cc delete mode 100644 milena/sandbox/nivault/plugin-gimp/src/plugin-intl.hh delete mode 100644 milena/sandbox/nivault/rotation.cc delete mode 100644 milena/sandbox/nivault/tests/pouet.cc delete mode 100755 milena/sandbox/nivault/tests/test delete mode 100644 milena/sandbox/nivault/vec.hh delete mode 100644 milena/sandbox/pellegrin/Makefile delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/Makefile delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/concept/point_set.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/internal/multi_set.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/internal/point_set_base.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/internal/uni_set.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/p_array.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/p_set.hh delete mode 100644 milena/sandbox/pellegrin/cond_inheritance/test_cond_inherit.cc delete mode 100644 milena/sandbox/pellegrin/first_test.cc delete mode 100644 milena/sandbox/pellegrin/set/core/concept/point_set.hh delete mode 100644 milena/sandbox/pellegrin/set/core/internal/multi_set.hh delete mode 100644 milena/sandbox/pellegrin/set/core/internal/uni_set.hh delete mode 100644 milena/sandbox/pellegrin/set/core/line2d.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_array.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_bgraph.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_graph.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_line_graph.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_priority_queue.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_priority_queue_fast.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_priority_queue_fast_with_array.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_queue.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_queue_fast.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_run.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_runs.hh delete mode 100644 milena/sandbox/pellegrin/set/core/p_set.hh delete mode 100644 milena/sandbox/pellegrin/set/core/pset_if.hh delete mode 100644 milena/sandbox/pellegrin/set/test/Makefile delete mode 100755 milena/sandbox/pellegrin/set/test/detest.sh delete mode 100644 milena/sandbox/pellegrin/set/test/p_bgraph.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_priority_queue.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_priority_queue_fast.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_priority_queue_fast_with_array.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_queue.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_queue_fast.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_runs.cc delete mode 100644 milena/sandbox/pellegrin/set/test/p_set.cc delete mode 100644 milena/sandbox/pellegrin/set/test/pset_if.cc delete mode 100755 milena/sandbox/pellegrin/set/test/test.sh delete mode 100644 milena/sandbox/pellegrin/set/trait/point_set.hh delete mode 100644 milena/sandbox/pellegrin/set/types_de_points.txt delete mode 100644 milena/sandbox/roland/.gitignore delete mode 100644 milena/sandbox/roland/Makefile delete mode 100644 milena/sandbox/roland/double.cc delete mode 100644 milena/sandbox/roland/min-max.cc delete mode 100644 milena/sandbox/roland/morpho/lower_completion.hh delete mode 100644 milena/sandbox/roland/morpho/shortest_path_watershed.hh delete mode 100644 milena/sandbox/theo/Rd/debase.union_find.hh delete mode 100644 milena/sandbox/theo/Rd/deco.cc delete mode 100644 milena/sandbox/theo/Rd/diff.cc delete mode 100644 milena/sandbox/theo/Rd/diff_pgm.cc delete mode 100644 milena/sandbox/theo/Rd/hybrid.cc delete mode 100644 milena/sandbox/theo/Rd/hybrid.hh delete mode 100644 milena/sandbox/theo/Rd/min.cc delete mode 100644 milena/sandbox/theo/Rd/parallel.cc delete mode 100644 milena/sandbox/theo/Rd/parallel.hh delete mode 100644 milena/sandbox/theo/Rd/parallel_wo.cc delete mode 100644 milena/sandbox/theo/Rd/queue_based.cc delete mode 100644 milena/sandbox/theo/Rd/queue_based.hh delete mode 100644 milena/sandbox/theo/Rd/sequential.cc delete mode 100644 milena/sandbox/theo/Rd/sequential.hh delete mode 100644 milena/sandbox/theo/Rd/sequential_bench.cc delete mode 100644 milena/sandbox/theo/Rd/sequential_bench.hh delete mode 100644 milena/sandbox/theo/Rd/svg.queue_based.hh delete mode 100644 milena/sandbox/theo/Rd/union_find.cc delete mode 100644 milena/sandbox/theo/Rd/union_find.hh delete mode 100644 milena/sandbox/theo/Rd/utils.hh delete mode 100644 milena/sandbox/theo/browsing/fwd.cc delete mode 100644 milena/sandbox/theo/browsing/fwd.hh delete mode 100644 milena/sandbox/theo/color/blen_pix.hh delete mode 100644 milena/sandbox/theo/color/change_attributes.hh delete mode 100644 milena/sandbox/theo/color/filter_blen_rgb_edges.cc delete mode 100644 milena/sandbox/theo/color/filter_meandist_rgb_pixels.cc delete mode 100644 milena/sandbox/theo/color/mean_rgb_pix.hh delete mode 100644 milena/sandbox/theo/color/segment.hh delete mode 100644 milena/sandbox/theo/color/segment_gl_pixels.cc delete mode 100644 milena/sandbox/theo/color/segment_rgb_edges.cc delete mode 100644 milena/sandbox/theo/color/segment_rgb_pixels.cc delete mode 100644 milena/sandbox/theo/color/sum_pix.hh delete mode 100644 milena/sandbox/theo/compute_parent_more.hh delete mode 100644 milena/sandbox/theo/cs2d/cs2d.cc delete mode 100644 milena/sandbox/theo/cs2d/cs2d.hh delete mode 100644 milena/sandbox/theo/cs2d/cs2d_morpho.hh delete mode 100644 milena/sandbox/theo/cs2d/cs2d_utils.hh delete mode 100644 milena/sandbox/theo/cs2d/dbl_neighb.hh delete mode 100644 milena/sandbox/theo/cs2d/kruskal.cc delete mode 100644 milena/sandbox/theo/cs2d/tuto.cc delete mode 100644 milena/sandbox/theo/csi/edwin.cc delete mode 100644 milena/sandbox/theo/csi/fred.cc delete mode 100644 milena/sandbox/theo/dead/inplace.hh delete mode 100644 milena/sandbox/theo/dead/instant.hh delete mode 100644 milena/sandbox/theo/dmap.cc delete mode 100644 milena/sandbox/theo/dmap.txt delete mode 100644 milena/sandbox/theo/esiee/jean/pfg2d.cc delete mode 100644 milena/sandbox/theo/esiee/jean/pfg3d.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/cplx2d.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/extinct_attributes.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/lca.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/main.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/main.ext.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/pseudo_tree.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/topo_wst.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/trash.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/ismm09/util.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/presentation/classif.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/presentation/segmentation.hh delete mode 100644 milena/sandbox/theo/esiee/laurent/presentation/wst2d.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/presentation/wst3d.cc delete mode 100644 milena/sandbox/theo/esiee/laurent/presentation/wst_edge.cc delete mode 100644 milena/sandbox/theo/esiee/slides_2009_may/dilation.hh delete mode 100644 milena/sandbox/theo/esiee/slides_2009_may/main.cc delete mode 100644 milena/sandbox/theo/estimate.hh delete mode 100644 milena/sandbox/theo/exec/clean_holes.cc delete mode 100644 milena/sandbox/theo/exec/closing_area.cc delete mode 100644 milena/sandbox/theo/exec/closing_height.cc delete mode 100644 milena/sandbox/theo/exec/closing_isotropic.cc delete mode 100644 milena/sandbox/theo/exec/closing_rectangle.cc delete mode 100644 milena/sandbox/theo/exec/closing_volume.cc delete mode 100644 milena/sandbox/theo/exec/color_internal_gradient.cc delete mode 100644 milena/sandbox/theo/exec/color_labeling_mean.cc delete mode 100644 milena/sandbox/theo/exec/diff_abs.cc delete mode 100644 milena/sandbox/theo/exec/distance_thick.cc delete mode 100644 milena/sandbox/theo/exec/dump2cloud.cc delete mode 100644 milena/sandbox/theo/exec/dump2pnm.cc delete mode 100644 milena/sandbox/theo/exec/dump_12bit_to_pgm.cc delete mode 100644 milena/sandbox/theo/exec/elementary_gradient.cc delete mode 100644 milena/sandbox/theo/exec/filetype.hh delete mode 100644 milena/sandbox/theo/exec/gaussian_directional_2d.cc delete mode 100644 milena/sandbox/theo/exec/gaussian_directional_2d.hh delete mode 100644 milena/sandbox/theo/exec/gaussian_directional_2d__float.cc delete mode 100644 milena/sandbox/theo/exec/opening_rectangle.cc delete mode 100644 milena/sandbox/theo/exec/pnms2dump.cc delete mode 100644 milena/sandbox/theo/exec/rank_rectangle.cc delete mode 100644 milena/sandbox/theo/exec/subsample.cc delete mode 100644 milena/sandbox/theo/exec/superpose.cc delete mode 100644 milena/sandbox/theo/exec/threshold_low.cc delete mode 100644 milena/sandbox/theo/exec/watershed_flooding.cc delete mode 100644 milena/sandbox/theo/exec/watershed_superpose.cc delete mode 100644 milena/sandbox/theo/experimental/depeche/col.cc delete mode 100644 milena/sandbox/theo/experimental/depeche/homogen.cc delete mode 100644 milena/sandbox/theo/experimental/depeche/row.cc delete mode 100644 milena/sandbox/theo/experimental/depeche/row_mm.cc delete mode 100644 milena/sandbox/theo/experimental/histo_image.cc delete mode 100644 milena/sandbox/theo/experimental/op_pw_value_pw_cst.cc delete mode 100644 milena/sandbox/theo/experimental/projected_histo.cc delete mode 100644 milena/sandbox/theo/fllt.cc delete mode 100644 milena/sandbox/theo/fllt.svg.6.cc delete mode 100644 milena/sandbox/theo/fllt.svg.7.hh delete mode 100644 milena/sandbox/theo/fllt/compute_fllt.cc delete mode 100644 milena/sandbox/theo/fllt/connected_filters/area_filter.cc delete mode 100644 milena/sandbox/theo/fllt/connected_filters/area_filter.hh delete mode 100644 milena/sandbox/theo/fllt/connected_filters/canonize_tree.hh delete mode 100644 milena/sandbox/theo/fllt/connected_filters/pseudo_flat_zones.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.hh delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.1.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.2.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.3.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.4.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.5.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.6.cc delete mode 100644 milena/sandbox/theo/fllt/fllt.svg.7.hh delete mode 100644 milena/sandbox/theo/fllt/fllt_test.hh delete mode 100644 milena/sandbox/theo/fllt/fllt_tree_to_image.hh delete mode 100644 milena/sandbox/theo/fllt/simple_tests.cc delete mode 100644 milena/sandbox/theo/igr/dump_cut.cc delete mode 100644 milena/sandbox/theo/igr/dump_to_dist.cc delete mode 100644 milena/sandbox/theo/igr/irm_anat_segm.cc delete mode 100644 milena/sandbox/theo/igr/irm_anat_segm__2D_ONLY.cc delete mode 100644 milena/sandbox/theo/igr/irm_seg_with_mm_and_rag.cc delete mode 100644 milena/sandbox/theo/igr/melimage/irm_perf/dynaparam7.m delete mode 100644 milena/sandbox/theo/igr/pgms2pgm.cc delete mode 100644 milena/sandbox/theo/igr/segment_2d_t.cc delete mode 100644 milena/sandbox/theo/mln/browsing/window_sliding.cc delete mode 100644 milena/sandbox/theo/mln/core/concept/walue.hh delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/f_and_g.pbm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/g.pbm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/internal/find_root.hh delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/lena.pgm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/lena_blurred.pgm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/lena_min.pgm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/one_domain.cc delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/reconstruction_on_set.cc delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/reconstruction_on_set.hh delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/reconstruction_on_set_tiny.cc delete mode 100644 milena/sandbox/theo/mln/morpho/canvas/regminid.pbm.gz delete mode 100644 milena/sandbox/theo/mln/morpho/conditional/dilation.cc delete mode 100644 milena/sandbox/theo/mln/morpho/conditional/dilation.hh delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation.cc delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation.hh delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation_permissive.cc delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation_permissive.hh delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation_permissive_bench.cc delete mode 100644 milena/sandbox/theo/mln/morpho/geodesic/dilation_permissive_n.cc delete mode 100644 milena/sandbox/theo/mln/morpho/max.hh delete mode 100644 milena/sandbox/theo/mln/morpho/reconstruction/by_dilation.cc delete mode 100644 milena/sandbox/theo/mln/morpho/reconstruction/by_dilation.hh delete mode 100644 milena/sandbox/theo/mln/morpho/reconstruction/by_dilation_tiny.cc delete mode 100644 milena/sandbox/theo/mln/subsampling/debase.cc delete mode 100644 milena/sandbox/theo/mln/subsampling/debase.hh delete mode 100644 milena/sandbox/theo/mln/subsampling/in.pgm.gz delete mode 100644 milena/sandbox/theo/mln/subsampling/integral.cc delete mode 100644 milena/sandbox/theo/mln/subsampling/integral.hh delete mode 100644 milena/sandbox/theo/mln/subsampling/sizes.cc delete mode 100644 milena/sandbox/theo/mln/walue/approx_equal.hh delete mode 100644 milena/sandbox/theo/mln/walue/color.hh delete mode 100644 milena/sandbox/theo/mln/walue/gl.cc delete mode 100644 milena/sandbox/theo/mln/walue/gl.hh delete mode 100644 milena/sandbox/theo/mln/walue/gl16.hh delete mode 100644 milena/sandbox/theo/mln/walue/gl8.hh delete mode 100644 milena/sandbox/theo/mln/walue/glf.cc delete mode 100644 milena/sandbox/theo/mln/walue/glf.hh delete mode 100644 milena/sandbox/theo/mln/walue/int_u.cc delete mode 100644 milena/sandbox/theo/mln/walue/int_u.hh delete mode 100644 milena/sandbox/theo/mln/walue/internal/rgb_base.hh delete mode 100644 milena/sandbox/theo/mln/walue/rgb.hh delete mode 100644 milena/sandbox/theo/mln/walue/rgb_3x8.cc delete mode 100644 milena/sandbox/theo/mln/walue/rgb_3x8.hh delete mode 100644 milena/sandbox/theo/mln/walue/rgb_3xn.hh delete mode 100644 milena/sandbox/theo/mln/walue/rgb_t.hh delete mode 100644 milena/sandbox/theo/mln/walue/set_encoding.hh delete mode 100644 milena/sandbox/theo/p_runs__with_dedicated_piter.hh delete mode 100644 milena/sandbox/theo/publis/icip2009/compute_a.cc delete mode 100644 milena/sandbox/theo/publis/icip2009/regmin_count.cc delete mode 100644 milena/sandbox/theo/rush/exo2/Makefile delete mode 100644 milena/sandbox/theo/rush/exo2/exo2.cc delete mode 100755 milena/sandbox/theo/rush/exo2/exo2.sh delete mode 100644 milena/sandbox/theo/rush/exo2/propagate.hh delete mode 100644 milena/sandbox/theo/rush/exo3/Makefile delete mode 100644 milena/sandbox/theo/rush/exo3/assignable.cc delete mode 100644 milena/sandbox/theo/rush/exo3/exo3_fun_area.cc delete mode 100644 milena/sandbox/theo/rush/exo3/exo3_fun_generator.cc delete mode 100644 milena/sandbox/theo/skel.cc delete mode 100644 milena/sandbox/theo/test_attribute.cc delete mode 100644 milena/sandbox/theo/tufa_2008/closed_gradient.cc delete mode 100644 milena/sandbox/theo/tufa_2008/closing.cc delete mode 100644 milena/sandbox/theo/tufa_2008/experiment.cc delete mode 100644 milena/sandbox/theo/tufa_2008/filter.cc delete mode 100644 milena/sandbox/theo/tufa_2008/filter_n.cc delete mode 100644 milena/sandbox/theo/tufa_2008/fz_count.cc delete mode 100644 milena/sandbox/theo/tufa_2008/gradient.cc delete mode 100644 milena/sandbox/theo/tufa_2008/n_cmpt.cc delete mode 100644 milena/sandbox/theo/tufa_2008/opening.cc delete mode 100644 milena/sandbox/theo/tufa_2008/steps.0.cc delete mode 100644 milena/sandbox/theo/tufa_2008/steps.1.cc delete mode 100644 milena/sandbox/theo/tufa_2008/steps.2.cc delete mode 100644 milena/sandbox/theo/tufa_2008/steps.2b.cc delete mode 100644 milena/sandbox/theo/tufa_2008/steps.3.cc delete mode 100644 milena/sandbox/theo/tufa_2008/wst.cc delete mode 100644 milena/sandbox/theo/tufa_2008/wst_f_equal_wst_a.cc delete mode 100644 milena/sandbox/theo/win_fun.cc delete mode 100644 milena/sandbox/theo/win_fun.hh delete mode 100644 milena/sandbox/vigouroux/cmy/fun.hh delete mode 100644 milena/sandbox/vigouroux/cmy/get_blue.hh delete mode 100644 milena/sandbox/vigouroux/cmy/get_green.hh delete mode 100644 milena/sandbox/vigouroux/cmy/my_cmy.hh delete mode 100644 milena/sandbox/vigouroux/cmy/rgb_to_cmy.hh delete mode 100644 milena/sandbox/vigouroux/cmy/test.cc delete mode 100644 milena/sandbox/vigouroux/cmy/testfun.cc delete mode 100644 milena/sandbox/vigouroux/color.cc delete mode 100644 milena/sandbox/vigouroux/color.hh delete mode 100644 milena/sandbox/vigouroux/color/color.hh delete mode 100644 milena/sandbox/vigouroux/color/hsi.hh delete mode 100644 milena/sandbox/vigouroux/color/hsl.hh delete mode 100644 milena/sandbox/vigouroux/color/hsv.hh delete mode 100644 milena/sandbox/vigouroux/color/is_HSI.cc delete mode 100644 milena/sandbox/vigouroux/color/my_cmy.hh delete mode 100644 milena/sandbox/vigouroux/color/my_hsi.hh delete mode 100644 milena/sandbox/vigouroux/color/my_hsl.hh delete mode 100644 milena/sandbox/vigouroux/color/my_hsv.hh delete mode 100644 milena/sandbox/vigouroux/color/my_xyz.hh delete mode 100644 milena/sandbox/vigouroux/color/my_yiq.hh delete mode 100644 milena/sandbox/vigouroux/color/my_yuv.hh delete mode 100644 milena/sandbox/vigouroux/color/nrgb.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_cmy.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_hsi.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_hsl.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_hsv.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_xyz.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_yiq.hh delete mode 100644 milena/sandbox/vigouroux/color/rgb_to_yuv.hh delete mode 100644 milena/sandbox/vigouroux/color/tests.cc delete mode 100644 milena/sandbox/vigouroux/color/xyz.hh delete mode 100644 milena/sandbox/vigouroux/color/yiq.hh delete mode 100644 milena/sandbox/vigouroux/color/yuv.hh delete mode 100644 milena/sandbox/vigouroux/conv/getred.hh delete mode 100644 milena/sandbox/vigouroux/conv/rgbto.hh delete mode 100644 milena/sandbox/vigouroux/conv/test.cc delete mode 100644 milena/sandbox/vigouroux/conv/tored.hh delete mode 100644 milena/sandbox/vigouroux/conv/torgb.hh delete mode 100644 milena/sandbox/vigouroux/convert/abstract/colorconv.hh delete mode 100644 milena/sandbox/vigouroux/convert/abstract/conversion.hh delete mode 100644 milena/sandbox/vigouroux/convert/basics.hh delete mode 100644 milena/sandbox/vigouroux/convert/bound.hh delete mode 100644 milena/sandbox/vigouroux/convert/cast.hh delete mode 100644 milena/sandbox/vigouroux/convert/conversion.hh delete mode 100644 milena/sandbox/vigouroux/convert/conversion_ng_se.hh delete mode 100644 milena/sandbox/vigouroux/convert/force.hh delete mode 100644 milena/sandbox/vigouroux/convert/nrgbxyz.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbhsi.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbhsl.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbhsv.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbnrgb.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbxyz.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbyiq.hh delete mode 100644 milena/sandbox/vigouroux/convert/rgbyuv.hh delete mode 100644 milena/sandbox/vigouroux/convert/stretch.hh delete mode 100644 milena/sandbox/vigouroux/convert/value_to_point.hh delete mode 100644 milena/sandbox/vigouroux/function.hh delete mode 100644 milena/sandbox/vigouroux/gradation.hh delete mode 100644 milena/sandbox/vigouroux/hsi/get_blue.hh delete mode 100644 milena/sandbox/vigouroux/hsi/get_green.hh delete mode 100644 milena/sandbox/vigouroux/hsi/get_red.hh delete mode 100644 milena/sandbox/vigouroux/hsi/my_hsi.hh delete mode 100644 milena/sandbox/vigouroux/hsi/rgb_to_hsi.hh delete mode 100644 milena/sandbox/vigouroux/lap.cc delete mode 100644 milena/sandbox/vigouroux/lap.hh delete mode 100644 milena/sandbox/vigouroux/literal/black.hh delete mode 100644 milena/sandbox/vigouroux/literal/blue.hh delete mode 100644 milena/sandbox/vigouroux/literal/brown.hh delete mode 100644 milena/sandbox/vigouroux/literal/cyan.hh delete mode 100644 milena/sandbox/vigouroux/literal/darkgray.hh delete mode 100644 milena/sandbox/vigouroux/literal/gray.hh delete mode 100644 milena/sandbox/vigouroux/literal/green.hh delete mode 100644 milena/sandbox/vigouroux/literal/lightgray.hh delete mode 100644 milena/sandbox/vigouroux/literal/lime.hh delete mode 100644 milena/sandbox/vigouroux/literal/magenta.hh delete mode 100644 milena/sandbox/vigouroux/literal/olive.hh delete mode 100644 milena/sandbox/vigouroux/literal/orange.hh delete mode 100644 milena/sandbox/vigouroux/literal/pink.hh delete mode 100644 milena/sandbox/vigouroux/literal/purple.hh delete mode 100644 milena/sandbox/vigouroux/literal/red.hh delete mode 100644 milena/sandbox/vigouroux/literal/teal.hh delete mode 100644 milena/sandbox/vigouroux/literal/violet.hh delete mode 100644 milena/sandbox/vigouroux/literal/white.hh delete mode 100644 milena/sandbox/vigouroux/literal/yellow.hh delete mode 100644 milena/sandbox/vigouroux/load.cc delete mode 100644 milena/sandbox/vigouroux/moyenne.cc delete mode 100644 milena/sandbox/vigouroux/testfun.cc delete mode 100644 milena/sandbox/vigouroux/tests.cc delete mode 100644 milena/sandbox/vigouroux/xyz/get_blue.hh delete mode 100644 milena/sandbox/vigouroux/xyz/get_green.hh delete mode 100644 milena/sandbox/vigouroux/xyz/get_red.hh delete mode 100644 milena/sandbox/vigouroux/xyz/my_xyz.hh delete mode 100644 milena/sandbox/vigouroux/xyz/rgb_to_xyz.hh delete mode 100644 milena/sandbox/vigouroux/xyz/test.cc delete mode 100644 milena/sandbox/vigouroux/xyz/testfun.cc delete mode 100644 milena/sandbox/vigouroux/yiq/get_blue.hh delete mode 100644 milena/sandbox/vigouroux/yiq/get_green.hh delete mode 100644 milena/sandbox/vigouroux/yiq/get_red.hh delete mode 100644 milena/sandbox/vigouroux/yiq/my_yiq.hh delete mode 100644 milena/sandbox/vigouroux/yiq/rgb_to_yiq.hh delete mode 100644 milena/sandbox/vigouroux/yiq/test.cc delete mode 100644 milena/sandbox/vigouroux/yiq/testfun.cc delete mode 100644 milena/sandbox/vigouroux/yuv/get_blue.hh delete mode 100644 milena/sandbox/vigouroux/yuv/get_green.hh delete mode 100644 milena/sandbox/vigouroux/yuv/get_red.hh delete mode 100644 milena/sandbox/vigouroux/yuv/my_yuv.hh delete mode 100644 milena/sandbox/vigouroux/yuv/rgb_to_yuv.hh delete mode 100644 milena/sandbox/vigouroux/yuv/test.cc delete mode 100644 milena/sandbox/vigouroux/yuv/testfun.cc delete mode 100644 milena/tests/convert/to_hsl.cc delete mode 100644 milena/tests/extract/blue.cc delete mode 100644 milena/tests/extract/green.cc delete mode 100644 milena/tests/extract/hue.cc delete mode 100644 milena/tests/extract/lum.cc delete mode 100644 milena/tests/extract/red.cc delete mode 100644 milena/tests/extract/sat.cc delete mode 100644 milena/tests/fun/v2v/component.cc delete mode 100644 milena/tests/linear/gaussian/filter.cc delete mode 100644 milena/tests/registration/registration.cc delete mode 100644 milena/tests/value/stack.cc delete mode 100644 milena/vcs/milena.rb create mode 100644 scribo/common.mk delete mode 100644 scribo/nodist-headers delete mode 100644 scribo/sandbox/ChangeLog delete mode 100644 scribo/sandbox/green/ChangeLog delete mode 100644 scribo/sandbox/green/README delete mode 100644 scribo/sandbox/green/README.green delete mode 100644 scribo/sandbox/green/README.img delete mode 100644 scribo/sandbox/green/README.result delete mode 100644 scribo/sandbox/green/bench/clustering/distance/Makefile.am delete mode 100644 scribo/sandbox/green/bench/clustering/distance/distance.cc delete mode 100644 scribo/sandbox/green/demo/annotating/bic/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc delete mode 100644 scribo/sandbox/green/demo/annotating/hsv/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc delete mode 100644 scribo/sandbox/green/demo/annotating/lep/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc delete mode 100644 scribo/sandbox/green/demo/annotating/nb_color/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc delete mode 100644 scribo/sandbox/green/demo/annotating/project/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc delete mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc delete mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc delete mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc delete mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/Makefile.am delete mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc delete mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am delete mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/kmean1d.cc delete mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/Makefile.am delete mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/kmean2d.cc delete mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/Makefile.am delete mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/kmean3d.cc delete mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/Makefile.am delete mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc delete mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/Makefile.am delete mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/regional_maxima.cc delete mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/thresholds.txt delete mode 100644 scribo/sandbox/green/demo/labeling/watershed/Makefile.am delete mode 100755 scribo/sandbox/green/demo/labeling/watershed/gaussian.sh delete mode 100644 scribo/sandbox/green/demo/labeling/watershed/watershed.cc delete mode 100644 scribo/sandbox/green/doc/annotating/class.txt delete mode 100644 scribo/sandbox/green/doc/annotating/syntheseMillet2008.txt delete mode 100644 scribo/sandbox/green/doc/annotating/testMillet2008 delete mode 100644 scribo/sandbox/green/doc/examples/accu_color/accu_color.cc delete mode 100644 scribo/sandbox/green/doc/examples/frac/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/frac/frac.cc delete mode 100644 scribo/sandbox/green/doc/examples/frac/frac.hh delete mode 100644 scribo/sandbox/green/doc/examples/frac/gcd.hh delete mode 100644 scribo/sandbox/green/doc/examples/frac/sign_prod.hh delete mode 100644 scribo/sandbox/green/doc/examples/hello_milena/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/hello_milena/hello_milena.cc delete mode 100644 scribo/sandbox/green/doc/examples/hello_world/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/hello_world/hello_world.cc delete mode 100644 scribo/sandbox/green/doc/examples/hello_world/print.cc delete mode 100644 scribo/sandbox/green/doc/examples/io/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/io/io.cc delete mode 100644 scribo/sandbox/green/doc/examples/learn_milena/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/learn_milena/learn_milena.cc delete mode 100644 scribo/sandbox/green/doc/examples/otsu/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/otsu/otsu.cc delete mode 100644 scribo/sandbox/green/doc/examples/stats/Makefile.am delete mode 100644 scribo/sandbox/green/doc/examples/stats/stats.cc delete mode 100644 scribo/sandbox/green/doc/formulae/formulae.tex delete mode 100644 scribo/sandbox/green/doc/quick_tour/quick_tour.tex delete mode 100644 scribo/sandbox/green/exp/annotating/achromastism/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc delete mode 100644 scribo/sandbox/green/exp/annotating/achromastism/text-color.txt delete mode 100644 scribo/sandbox/green/exp/annotating/achromastism/text-img.txt delete mode 100644 scribo/sandbox/green/exp/annotating/achromastism/text-only.txt delete mode 100644 scribo/sandbox/green/exp/annotating/bench/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc delete mode 100644 scribo/sandbox/green/exp/annotating/error/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc delete mode 100644 scribo/sandbox/green/exp/annotating/histo/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc delete mode 100644 scribo/sandbox/green/exp/annotating/hsv/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc delete mode 100644 scribo/sandbox/green/exp/annotating/hue/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc delete mode 100644 scribo/sandbox/green/exp/annotating/hue/text-color.txt delete mode 100644 scribo/sandbox/green/exp/annotating/hue/text-img.txt delete mode 100644 scribo/sandbox/green/exp/annotating/hue/text-only.txt delete mode 100644 scribo/sandbox/green/exp/annotating/nb_color/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc delete mode 100644 scribo/sandbox/green/exp/annotating/saturation/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc delete mode 100644 scribo/sandbox/green/exp/annotating/saturation/text-color.txt delete mode 100644 scribo/sandbox/green/exp/annotating/saturation/text-img.txt delete mode 100644 scribo/sandbox/green/exp/annotating/saturation/text-only.txt delete mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc delete mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc delete mode 100644 scribo/sandbox/green/exp/annotating/value/Makefile.am delete mode 100644 scribo/sandbox/green/exp/annotating/value/text-color.txt delete mode 100644 scribo/sandbox/green/exp/annotating/value/text-img.txt delete mode 100644 scribo/sandbox/green/exp/annotating/value/text-only.txt delete mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc delete mode 100644 scribo/sandbox/green/exp/regional_maxima/Makefile.am delete mode 100644 scribo/sandbox/green/exp/regional_maxima/regional_maxima.cc delete mode 100644 scribo/sandbox/green/exp/regional_maxima/thresholds.txt delete mode 100755 scribo/sandbox/green/gaussian.sh delete mode 100755 scribo/sandbox/green/gaussian2d.sh delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo1d.hh delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo2d.hh delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh delete mode 100644 scribo/sandbox/green/mln/clustering/k_mean.hh delete mode 100644 scribo/sandbox/green/mln/clustering/kmean1d.hh delete mode 100644 scribo/sandbox/green/mln/clustering/kmean2d.hh delete mode 100644 scribo/sandbox/green/mln/clustering/kmean3d.hh delete mode 100644 scribo/sandbox/green/mln/clustering/kmean_rgb.hh delete mode 100644 scribo/sandbox/green/mln/display/display_histo.hh delete mode 100644 scribo/sandbox/green/mln/display/project_histo.hh delete mode 100644 scribo/sandbox/green/mln/fun/p2b/achromatic.hh delete mode 100644 scribo/sandbox/green/mln/fun/p2b/component_equals.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/achromatism.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/int_u16_to_int_u14.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/log.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh delete mode 100644 scribo/sandbox/green/mln/img_path.hh delete mode 100644 scribo/sandbox/green/mln/io/plot/save_image_sh.hh delete mode 100644 scribo/sandbox/green/mln/math/ceil.hh delete mode 100644 scribo/sandbox/green/mln/math/floor.hh delete mode 100644 scribo/sandbox/green/mln/value/hsv.hh delete mode 100644 scribo/sandbox/green/mln/value/rg.hh delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh delete mode 100644 scribo/sandbox/green/ok/mln/img_path.hh delete mode 100755 scribo/sandbox/green/ok/test/accu/histo/gaussian.sh delete mode 100755 scribo/sandbox/green/ok/test/accu/histo/histo1d delete mode 100644 scribo/sandbox/green/ok/test/accu/histo/histo1d.cc delete mode 100644 scribo/sandbox/green/test_labelling.cc delete mode 100644 scribo/sandbox/green/test_labelling_2.cc delete mode 100644 scribo/sandbox/green/test_labelling_3.cc delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/Makefile.am delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/histo1d.cc delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/Makefile.am delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/histo3d_hsl.cc delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/Makefile.am delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/histo3d_rgb.cc delete mode 100644 scribo/sandbox/green/tests/clustering/k_mean/Makefile.am delete mode 100644 scribo/sandbox/green/tests/clustering/k_mean/k_mean.cc delete mode 100644 scribo/sandbox/green/tests/clustering/kmean1d/Makefile.am delete mode 100644 scribo/sandbox/green/tests/clustering/kmean1d/kmean1d.cc delete mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/Makefile.am delete mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/save_image_sh.cc delete mode 100644 scribo/sandbox/green/tools/labeling/histo/Makefile.am delete mode 100644 scribo/sandbox/green/tools/labeling/histo/histo.cc delete mode 100644 scribo/sandbox/green/tools/labeling/iz/Makefile.am delete mode 100644 scribo/sandbox/green/tools/labeling/iz/iz.cc delete mode 100644 scribo/sandbox/green/tools/labeling/opening/Makefile.am delete mode 100644 scribo/sandbox/green/tools/labeling/opening/opening.cc delete mode 100644 scribo/sandbox/green/tools/labeling/regmax/Makefile.am delete mode 100644 scribo/sandbox/green/tools/labeling/regmax/regmax.cc delete mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/Makefile.am delete mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/histo1d.cc delete mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/Makefile.am delete mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/histo2d.cc delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/Makefile.am delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/Makefile.am delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc delete mode 100644 scribo/sandbox/green/use/clustering/k_mean/Makefile.am delete mode 100644 scribo/sandbox/green/use/clustering/k_mean/k_mean.cc delete mode 100644 scribo/sandbox/green/use/clustering/kmean1d/Makefile.am delete mode 100644 scribo/sandbox/green/use/clustering/kmean1d/kmean1d.cc delete mode 100644 scribo/sandbox/green/use/clustering/kmean2d/Makefile.am delete mode 100644 scribo/sandbox/green/use/clustering/kmean2d/kmean2d.cc delete mode 100644 scribo/sandbox/green/use/clustering/kmean3d/Makefile.am delete mode 100644 scribo/sandbox/green/use/clustering/kmean3d/kmean3d.cc delete mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/Makefile.am delete mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/kmean_rgb.cc delete mode 100644 scribo/sandbox/green/use/display/display_histo/Makefile.am delete mode 100644 scribo/sandbox/green/use/display/display_histo/display_histo.cc delete mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/Makefile.am delete mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/Makefile.am delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/Makefile.am delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc delete mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/Makefile.am delete mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/save_image_sh.cc delete mode 100644 scribo/sandbox/green/use/value/rg/Makefile.am delete mode 100644 scribo/sandbox/green/use/value/rg/rg.cc delete mode 100644 scribo/sandbox/z/white_spaces/hom_sep.cc delete mode 100644 scribo/sandbox/z/white_spaces/white_space_closing.cc delete mode 100644 scribo/sandbox/z/white_spaces/white_spaces.cc delete mode 100644 scribo/vcs/scribo.rb create mode 100644 swilena/int_u24.i delete mode 100644 vcs/oln.rb hooks/post-receive -- Olena, a generic and efficient image processing platform
11 years, 10 months
1
0
0
0
olena-2.0-224-g69a8bfc tests/unit_test/unit-tests.mk: Update.
by Guillaume Lazzara
--- milena/ChangeLog | 4 + milena/tests/unit_test/unit-tests.mk | 1335 +--------------------------------- 2 files changed, 7 insertions(+), 1332 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index 40a1673..4d53dd4 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,9 @@ 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + * tests/unit_test/unit-tests.mk: Update. + +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + * tests/data.hh.in: Rename guards. 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> diff --git a/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk index 814bdfb..9093aa3 100644 --- a/milena/tests/unit_test/unit-tests.mk +++ b/milena/tests/unit_test/unit-tests.mk @@ -111,6 +111,7 @@ mln_accu_math_all \ mln_accu_math_count \ mln_accu_math_essential \ mln_accu_math_sum \ +mln_accu_math_sumpow \ mln_accu_max_site \ mln_accu_nil \ mln_accu_p \ @@ -481,6 +482,7 @@ mln_data_approx_essential \ mln_data_approx_median \ mln_data_compare \ mln_data_compute \ +mln_data_compute_in_window \ mln_data_convert \ mln_data_essential \ mln_data_fast_median \ @@ -1032,6 +1034,7 @@ mln_pw_image \ mln_pw_internal_image_base \ mln_pw_value \ mln_pw_var \ +mln_registration_icp \ mln_set_all \ mln_set_card \ mln_set_compute \ @@ -1346,1336 +1349,4 @@ mln_world_inter_pixel_neighb2d \ mln_world_inter_pixel_separator_to_pixels \ mln_world_rgb_invert -<<<<<<< HEAD -mln_accu_all_SOURCES = mln_accu_all.cc -mln_accu_center_SOURCES = mln_accu_center.cc -mln_accu_compute_SOURCES = mln_accu_compute.cc -mln_accu_convolve_SOURCES = mln_accu_convolve.cc -mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc -mln_accu_count_labels_SOURCES = mln_accu_count_labels.cc -mln_accu_count_value_SOURCES = mln_accu_count_value.cc -mln_accu_essential_SOURCES = mln_accu_essential.cc -mln_accu_histo_SOURCES = mln_accu_histo.cc -mln_accu_image_all_SOURCES = mln_accu_image_all.cc -mln_accu_image_essential_SOURCES = mln_accu_image_essential.cc -mln_accu_image_init_SOURCES = mln_accu_image_init.cc -mln_accu_image_set_value_SOURCES = mln_accu_image_set_value.cc -mln_accu_image_take_SOURCES = mln_accu_image_take.cc -mln_accu_image_take_as_init_SOURCES = mln_accu_image_take_as_init.cc -mln_accu_image_take_n_times_SOURCES = mln_accu_image_take_n_times.cc -mln_accu_image_to_result_SOURCES = mln_accu_image_to_result.cc -mln_accu_image_untake_SOURCES = mln_accu_image_untake.cc -mln_accu_internal_base_SOURCES = mln_accu_internal_base.cc -mln_accu_internal_couple_SOURCES = mln_accu_internal_couple.cc -mln_accu_label_used_SOURCES = mln_accu_label_used.cc -mln_accu_line_SOURCES = mln_accu_line.cc -mln_accu_logic_all_SOURCES = mln_accu_logic_all.cc -mln_accu_logic_land_SOURCES = mln_accu_logic_land.cc -mln_accu_logic_land_basic_SOURCES = mln_accu_logic_land_basic.cc -mln_accu_logic_lor_SOURCES = mln_accu_logic_lor.cc -mln_accu_logic_lor_basic_SOURCES = mln_accu_logic_lor_basic.cc -mln_accu_maj_h_SOURCES = mln_accu_maj_h.cc -mln_accu_math_all_SOURCES = mln_accu_math_all.cc -mln_accu_math_count_SOURCES = mln_accu_math_count.cc -mln_accu_math_essential_SOURCES = mln_accu_math_essential.cc -mln_accu_math_inf_SOURCES = mln_accu_math_inf.cc -mln_accu_math_sum_SOURCES = mln_accu_math_sum.cc -mln_accu_math_sup_SOURCES = mln_accu_math_sup.cc -mln_accu_max_site_SOURCES = mln_accu_max_site.cc -mln_accu_nil_SOURCES = mln_accu_nil.cc -mln_accu_p_SOURCES = mln_accu_p.cc -mln_accu_pair_SOURCES = mln_accu_pair.cc -mln_accu_rms_SOURCES = mln_accu_rms.cc -mln_accu_shape_all_SOURCES = mln_accu_shape_all.cc -mln_accu_shape_bbox_SOURCES = mln_accu_shape_bbox.cc -mln_accu_shape_essential_SOURCES = mln_accu_shape_essential.cc -mln_accu_shape_height_SOURCES = mln_accu_shape_height.cc -mln_accu_shape_volume_SOURCES = mln_accu_shape_volume.cc -mln_accu_site_set_all_SOURCES = mln_accu_site_set_all.cc -mln_accu_site_set_essential_SOURCES = mln_accu_site_set_essential.cc -mln_accu_site_set_rectangularity_SOURCES = mln_accu_site_set_rectangularity.cc -mln_accu_stat_all_SOURCES = mln_accu_stat_all.cc -mln_accu_stat_deviation_SOURCES = mln_accu_stat_deviation.cc -mln_accu_stat_essential_SOURCES = mln_accu_stat_essential.cc -mln_accu_stat_histo3d_rgb_SOURCES = mln_accu_stat_histo3d_rgb.cc -mln_accu_stat_max_SOURCES = mln_accu_stat_max.cc -mln_accu_stat_max_h_SOURCES = mln_accu_stat_max_h.cc -mln_accu_stat_mean_SOURCES = mln_accu_stat_mean.cc -mln_accu_stat_median_alt_SOURCES = mln_accu_stat_median_alt.cc -mln_accu_stat_median_h_SOURCES = mln_accu_stat_median_h.cc -mln_accu_stat_min_SOURCES = mln_accu_stat_min.cc -mln_accu_stat_min_h_SOURCES = mln_accu_stat_min_h.cc -mln_accu_stat_min_max_SOURCES = mln_accu_stat_min_max.cc -mln_accu_stat_rank_SOURCES = mln_accu_stat_rank.cc -mln_accu_stat_rank_bool_SOURCES = mln_accu_stat_rank_bool.cc -mln_accu_stat_rank_high_quant_SOURCES = mln_accu_stat_rank_high_quant.cc -mln_accu_stat_var_SOURCES = mln_accu_stat_var.cc -mln_accu_stat_variance_SOURCES = mln_accu_stat_variance.cc -mln_accu_take_SOURCES = mln_accu_take.cc -mln_accu_transform_SOURCES = mln_accu_transform.cc -mln_accu_transform_diagonal_SOURCES = mln_accu_transform_diagonal.cc -mln_accu_transform_directional_SOURCES = mln_accu_transform_directional.cc -mln_accu_transform_line_SOURCES = mln_accu_transform_line.cc -mln_accu_transform_snake_SOURCES = mln_accu_transform_snake.cc -mln_accu_transform_stop_SOURCES = mln_accu_transform_stop.cc -mln_accu_v_SOURCES = mln_accu_v.cc -mln_algebra_all_SOURCES = mln_algebra_all.cc -mln_algebra_essential_SOURCES = mln_algebra_essential.cc -mln_algebra_h_mat_SOURCES = mln_algebra_h_mat.cc -mln_algebra_h_vec_SOURCES = mln_algebra_h_vec.cc -mln_algebra_mat_SOURCES = mln_algebra_mat.cc -mln_algebra_quat_SOURCES = mln_algebra_quat.cc -mln_algebra_vec_SOURCES = mln_algebra_vec.cc -mln_all_SOURCES = mln_all.cc -mln_arith_all_SOURCES = mln_arith_all.cc -mln_arith_diff_abs_SOURCES = mln_arith_diff_abs.cc -mln_arith_div_SOURCES = mln_arith_div.cc -mln_arith_essential_SOURCES = mln_arith_essential.cc -mln_arith_includes_SOURCES = mln_arith_includes.cc -mln_arith_min_SOURCES = mln_arith_min.cc -mln_arith_minus_SOURCES = mln_arith_minus.cc -mln_arith_plus_SOURCES = mln_arith_plus.cc -mln_arith_revert_SOURCES = mln_arith_revert.cc -mln_arith_times_SOURCES = mln_arith_times.cc -mln_binarization_all_SOURCES = mln_binarization_all.cc -mln_binarization_binarization_SOURCES = mln_binarization_binarization.cc -mln_binarization_essential_SOURCES = mln_binarization_essential.cc -mln_binarization_includes_SOURCES = mln_binarization_includes.cc -mln_binarization_threshold_SOURCES = mln_binarization_threshold.cc -mln_border_adjust_SOURCES = mln_border_adjust.cc -mln_border_all_SOURCES = mln_border_all.cc -mln_border_duplicate_SOURCES = mln_border_duplicate.cc -mln_border_equalize_SOURCES = mln_border_equalize.cc -mln_border_essential_SOURCES = mln_border_essential.cc -mln_border_fill_SOURCES = mln_border_fill.cc -mln_border_find_SOURCES = mln_border_find.cc -mln_border_get_SOURCES = mln_border_get.cc -mln_border_mirror_SOURCES = mln_border_mirror.cc -mln_border_resize_SOURCES = mln_border_resize.cc -mln_border_resize_equal_SOURCES = mln_border_resize_equal.cc -mln_border_thickness_SOURCES = mln_border_thickness.cc -mln_canvas_all_SOURCES = mln_canvas_all.cc -mln_canvas_browsing_all_SOURCES = mln_canvas_browsing_all.cc -mln_canvas_browsing_backdiagonal2d_SOURCES = mln_canvas_browsing_backdiagonal2d.cc -mln_canvas_browsing_breadth_first_search_SOURCES = mln_canvas_browsing_breadth_first_search.cc -mln_canvas_browsing_depth_first_search_SOURCES = mln_canvas_browsing_depth_first_search.cc -mln_canvas_browsing_diagonal2d_SOURCES = mln_canvas_browsing_diagonal2d.cc -mln_canvas_browsing_dir_struct_elt_incr_update_SOURCES = mln_canvas_browsing_dir_struct_elt_incr_update.cc -mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc -mln_canvas_browsing_essential_SOURCES = mln_canvas_browsing_essential.cc -mln_canvas_browsing_fwd_SOURCES = mln_canvas_browsing_fwd.cc -mln_canvas_browsing_hyper_directional_SOURCES = mln_canvas_browsing_hyper_directional.cc -mln_canvas_browsing_internal_graph_first_search_SOURCES = mln_canvas_browsing_internal_graph_first_search.cc -mln_canvas_browsing_snake_fwd_SOURCES = mln_canvas_browsing_snake_fwd.cc -mln_canvas_browsing_snake_generic_SOURCES = mln_canvas_browsing_snake_generic.cc -mln_canvas_browsing_snake_vert_SOURCES = mln_canvas_browsing_snake_vert.cc -mln_canvas_chamfer_SOURCES = mln_canvas_chamfer.cc -mln_canvas_distance_front_SOURCES = mln_canvas_distance_front.cc -mln_canvas_distance_geodesic_SOURCES = mln_canvas_distance_geodesic.cc -mln_canvas_essential_SOURCES = mln_canvas_essential.cc -mln_canvas_labeling_all_SOURCES = mln_canvas_labeling_all.cc -mln_canvas_labeling_blobs_SOURCES = mln_canvas_labeling_blobs.cc -mln_canvas_labeling_essential_SOURCES = mln_canvas_labeling_essential.cc -mln_canvas_labeling_generic_SOURCES = mln_canvas_labeling_generic.cc -mln_canvas_labeling_internal_find_root_fastest_SOURCES = mln_canvas_labeling_internal_find_root_fastest.cc -mln_canvas_labeling_internal_tests_SOURCES = mln_canvas_labeling_internal_tests.cc -mln_canvas_labeling_sorted_SOURCES = mln_canvas_labeling_sorted.cc -mln_canvas_labeling_video_SOURCES = mln_canvas_labeling_video.cc -mln_canvas_morpho_all_SOURCES = mln_canvas_morpho_all.cc -mln_canvas_morpho_attribute_filter_SOURCES = mln_canvas_morpho_attribute_filter.cc -mln_canvas_morpho_essential_SOURCES = mln_canvas_morpho_essential.cc -mln_canvas_morpho_internal_find_root_SOURCES = mln_canvas_morpho_internal_find_root.cc -mln_clustering_kmean_rgb_SOURCES = mln_clustering_kmean_rgb.cc -mln_convert_all_SOURCES = mln_convert_all.cc -mln_convert_essential_SOURCES = mln_convert_essential.cc -mln_convert_from_to_SOURCES = mln_convert_from_to.cc -mln_convert_impl_all_SOURCES = mln_convert_impl_all.cc -mln_convert_impl_from_double_to_value_SOURCES = mln_convert_impl_from_double_to_value.cc -mln_convert_impl_from_float_to_value_SOURCES = mln_convert_impl_from_float_to_value.cc -mln_convert_impl_from_image_to_site_set_SOURCES = mln_convert_impl_from_image_to_site_set.cc -mln_convert_impl_from_int_to_value_SOURCES = mln_convert_impl_from_int_to_value.cc -mln_convert_impl_from_site_set_to_image_SOURCES = mln_convert_impl_from_site_set_to_image.cc -mln_convert_impl_from_unsigned_to_value_SOURCES = mln_convert_impl_from_unsigned_to_value.cc -mln_convert_impl_from_value_to_value_SOURCES = mln_convert_impl_from_value_to_value.cc -mln_convert_to_SOURCES = mln_convert_to.cc -mln_convert_to_dpoint_SOURCES = mln_convert_to_dpoint.cc -mln_convert_to_fun_SOURCES = mln_convert_to_fun.cc -mln_convert_to_image_SOURCES = mln_convert_to_image.cc -mln_convert_to_p_array_SOURCES = mln_convert_to_p_array.cc -mln_convert_to_p_set_SOURCES = mln_convert_to_p_set.cc -mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc -mln_convert_to_window_SOURCES = mln_convert_to_window.cc -mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc -mln_core_alias_all_SOURCES = mln_core_alias_all.cc -mln_core_alias_box1d_SOURCES = mln_core_alias_box1d.cc -mln_core_alias_box2d_SOURCES = mln_core_alias_box2d.cc -mln_core_alias_box2d_h_SOURCES = mln_core_alias_box2d_h.cc -mln_core_alias_box3d_SOURCES = mln_core_alias_box3d.cc -mln_core_alias_complex_geometry_SOURCES = mln_core_alias_complex_geometry.cc -mln_core_alias_complex_image_SOURCES = mln_core_alias_complex_image.cc -mln_core_alias_dpoint1d_SOURCES = mln_core_alias_dpoint1d.cc -mln_core_alias_dpoint2d_SOURCES = mln_core_alias_dpoint2d.cc -mln_core_alias_dpoint2d_h_SOURCES = mln_core_alias_dpoint2d_h.cc -mln_core_alias_dpoint3d_SOURCES = mln_core_alias_dpoint3d.cc -mln_core_alias_neighb1d_SOURCES = mln_core_alias_neighb1d.cc -mln_core_alias_neighb2d_SOURCES = mln_core_alias_neighb2d.cc -mln_core_alias_neighb3d_SOURCES = mln_core_alias_neighb3d.cc -mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc -mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc -mln_core_alias_point1d_SOURCES = mln_core_alias_point1d.cc -mln_core_alias_point2d_SOURCES = mln_core_alias_point2d.cc -mln_core_alias_point2d_h_SOURCES = mln_core_alias_point2d_h.cc -mln_core_alias_point3d_SOURCES = mln_core_alias_point3d.cc -mln_core_alias_vec2d_SOURCES = mln_core_alias_vec2d.cc -mln_core_alias_vec3d_SOURCES = mln_core_alias_vec3d.cc -mln_core_alias_w_window1d_float_SOURCES = mln_core_alias_w_window1d_float.cc -mln_core_alias_w_window1d_int_SOURCES = mln_core_alias_w_window1d_int.cc -mln_core_alias_w_window2d_float_SOURCES = mln_core_alias_w_window2d_float.cc -mln_core_alias_w_window2d_int_SOURCES = mln_core_alias_w_window2d_int.cc -mln_core_alias_w_window3d_float_SOURCES = mln_core_alias_w_window3d_float.cc -mln_core_alias_w_window3d_int_SOURCES = mln_core_alias_w_window3d_int.cc -mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc -mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc -mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc -mln_core_all_SOURCES = mln_core_all.cc -mln_core_box_runend_piter_SOURCES = mln_core_box_runend_piter.cc -mln_core_box_runstart_piter_SOURCES = mln_core_box_runstart_piter.cc -mln_core_category_SOURCES = mln_core_category.cc -mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc -mln_core_concept_all_SOURCES = mln_core_concept_all.cc -mln_core_concept_box_SOURCES = mln_core_concept_box.cc -mln_core_concept_browsing_SOURCES = mln_core_concept_browsing.cc -mln_core_concept_delta_point_site_SOURCES = mln_core_concept_delta_point_site.cc -mln_core_concept_dpoint_SOURCES = mln_core_concept_dpoint.cc -mln_core_concept_function_SOURCES = mln_core_concept_function.cc -mln_core_concept_gdpoint_SOURCES = mln_core_concept_gdpoint.cc -mln_core_concept_generalized_pixel_SOURCES = mln_core_concept_generalized_pixel.cc -mln_core_concept_gpoint_SOURCES = mln_core_concept_gpoint.cc -mln_core_concept_graph_SOURCES = mln_core_concept_graph.cc -mln_core_concept_image_SOURCES = mln_core_concept_image.cc -mln_core_concept_iterator_SOURCES = mln_core_concept_iterator.cc -mln_core_concept_literal_SOURCES = mln_core_concept_literal.cc -mln_core_concept_mesh_SOURCES = mln_core_concept_mesh.cc -mln_core_concept_meta_accumulator_SOURCES = mln_core_concept_meta_accumulator.cc -mln_core_concept_meta_function_SOURCES = mln_core_concept_meta_function.cc -mln_core_concept_neighborhood_SOURCES = mln_core_concept_neighborhood.cc -mln_core_concept_object_SOURCES = mln_core_concept_object.cc -mln_core_concept_pixel_iterator_SOURCES = mln_core_concept_pixel_iterator.cc -mln_core_concept_point_SOURCES = mln_core_concept_point.cc -mln_core_concept_point_site_SOURCES = mln_core_concept_point_site.cc -mln_core_concept_proxy_SOURCES = mln_core_concept_proxy.cc -mln_core_concept_pseudo_site_SOURCES = mln_core_concept_pseudo_site.cc -mln_core_concept_regular_grid_SOURCES = mln_core_concept_regular_grid.cc -mln_core_concept_site_SOURCES = mln_core_concept_site.cc -mln_core_concept_site_iterator_SOURCES = mln_core_concept_site_iterator.cc -mln_core_concept_site_proxy_SOURCES = mln_core_concept_site_proxy.cc -mln_core_concept_site_set_SOURCES = mln_core_concept_site_set.cc -mln_core_concept_value_SOURCES = mln_core_concept_value.cc -mln_core_concept_value_iterator_SOURCES = mln_core_concept_value_iterator.cc -mln_core_concept_value_set_SOURCES = mln_core_concept_value_set.cc -mln_core_concept_weighted_window_SOURCES = mln_core_concept_weighted_window.cc -mln_core_concept_window_SOURCES = mln_core_concept_window.cc -mln_core_contract_SOURCES = mln_core_contract.cc -mln_core_def_all_SOURCES = mln_core_def_all.cc -mln_core_def_coord_SOURCES = mln_core_def_coord.cc -mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc -mln_core_def_essential_SOURCES = mln_core_def_essential.cc -mln_core_def_low_quant_nbits_SOURCES = mln_core_def_low_quant_nbits.cc -mln_core_dpoint_SOURCES = mln_core_dpoint.cc -mln_core_dpoints_pixter_SOURCES = mln_core_dpoints_pixter.cc -mln_core_dpsites_piter_SOURCES = mln_core_dpsites_piter.cc -mln_core_essential_SOURCES = mln_core_essential.cc -mln_core_faces_psite_SOURCES = mln_core_faces_psite.cc -mln_core_grids_SOURCES = mln_core_grids.cc -mln_core_image_all_SOURCES = mln_core_image_all.cc -mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc -mln_core_image_complex_image_SOURCES = mln_core_image_complex_image.cc -mln_core_image_complex_neighborhood_piter_SOURCES = mln_core_image_complex_neighborhood_piter.cc -mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc -mln_core_image_complex_window_piter_SOURCES = mln_core_image_complex_window_piter.cc -mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc -mln_core_image_dmorph_all_SOURCES = mln_core_image_dmorph_all.cc -mln_core_image_dmorph_extended_SOURCES = mln_core_image_dmorph_extended.cc -mln_core_image_dmorph_extension_fun_SOURCES = mln_core_image_dmorph_extension_fun.cc -mln_core_image_dmorph_extension_ima_SOURCES = mln_core_image_dmorph_extension_ima.cc -mln_core_image_dmorph_extension_val_SOURCES = mln_core_image_dmorph_extension_val.cc -mln_core_image_dmorph_hexa_SOURCES = mln_core_image_dmorph_hexa.cc -mln_core_image_dmorph_hexa_piter_SOURCES = mln_core_image_dmorph_hexa_piter.cc -mln_core_image_dmorph_image2d_h_SOURCES = mln_core_image_dmorph_image2d_h.cc -mln_core_image_dmorph_image_if_SOURCES = mln_core_image_dmorph_image_if.cc -mln_core_image_dmorph_p2p_image_SOURCES = mln_core_image_dmorph_p2p_image.cc -mln_core_image_dmorph_slice_image_SOURCES = mln_core_image_dmorph_slice_image.cc -mln_core_image_dmorph_sub_image_SOURCES = mln_core_image_dmorph_sub_image.cc -mln_core_image_dmorph_sub_image_if_SOURCES = mln_core_image_dmorph_sub_image_if.cc -mln_core_image_dmorph_transformed_image_SOURCES = mln_core_image_dmorph_transformed_image.cc -mln_core_image_dmorph_unproject_image_SOURCES = mln_core_image_dmorph_unproject_image.cc -mln_core_image_edge_image_SOURCES = mln_core_image_edge_image.cc -mln_core_image_essential_SOURCES = mln_core_image_essential.cc -mln_core_image_flat_image_SOURCES = mln_core_image_flat_image.cc -mln_core_image_graph_elt_mixed_neighborhood_SOURCES = mln_core_image_graph_elt_mixed_neighborhood.cc -mln_core_image_graph_elt_mixed_window_SOURCES = mln_core_image_graph_elt_mixed_window.cc -mln_core_image_graph_elt_neighborhood_SOURCES = mln_core_image_graph_elt_neighborhood.cc -mln_core_image_graph_elt_neighborhood_if_SOURCES = mln_core_image_graph_elt_neighborhood_if.cc -mln_core_image_graph_elt_window_SOURCES = mln_core_image_graph_elt_window.cc -mln_core_image_graph_elt_window_if_SOURCES = mln_core_image_graph_elt_window_if.cc -mln_core_image_graph_window_if_piter_SOURCES = mln_core_image_graph_window_if_piter.cc -mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc -mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc -mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc -mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc -mln_core_image_imorph_all_SOURCES = mln_core_image_imorph_all.cc -mln_core_image_imorph_decorated_image_SOURCES = mln_core_image_imorph_decorated_image.cc -mln_core_image_imorph_interpolated_SOURCES = mln_core_image_imorph_interpolated.cc -mln_core_image_imorph_labeled_image_SOURCES = mln_core_image_imorph_labeled_image.cc -mln_core_image_imorph_lazy_image_SOURCES = mln_core_image_imorph_lazy_image.cc -mln_core_image_imorph_plain_SOURCES = mln_core_image_imorph_plain.cc -mln_core_image_imorph_safe_SOURCES = mln_core_image_imorph_safe.cc -mln_core_image_imorph_tr_image_SOURCES = mln_core_image_imorph_tr_image.cc -mln_core_image_vertex_image_SOURCES = mln_core_image_vertex_image.cc -mln_core_image_vmorph_all_SOURCES = mln_core_image_vmorph_all.cc -mln_core_image_vmorph_cast_image_SOURCES = mln_core_image_vmorph_cast_image.cc -mln_core_image_vmorph_fun_image_SOURCES = mln_core_image_vmorph_fun_image.cc -mln_core_image_vmorph_thru_image_SOURCES = mln_core_image_vmorph_thru_image.cc -mln_core_image_vmorph_thrubin_image_SOURCES = mln_core_image_vmorph_thrubin_image.cc -mln_core_image_vmorph_violent_cast_image_SOURCES = mln_core_image_vmorph_violent_cast_image.cc -mln_core_internal_box_impl_SOURCES = mln_core_internal_box_impl.cc -mln_core_internal_check_image_all_SOURCES = mln_core_internal_check_image_all.cc -mln_core_internal_check_image_fastest_SOURCES = mln_core_internal_check_image_fastest.cc -mln_core_internal_classical_window_base_SOURCES = mln_core_internal_classical_window_base.cc -mln_core_internal_complex_neighborhood_base_SOURCES = mln_core_internal_complex_neighborhood_base.cc -mln_core_internal_complex_window_base_SOURCES = mln_core_internal_complex_window_base.cc -mln_core_internal_complex_window_p_base_SOURCES = mln_core_internal_complex_window_p_base.cc -mln_core_internal_coord_impl_SOURCES = mln_core_internal_coord_impl.cc -mln_core_internal_data_SOURCES = mln_core_internal_data.cc -mln_core_internal_exact_SOURCES = mln_core_internal_exact.cc -mln_core_internal_exact_gcc_2_95_SOURCES = mln_core_internal_exact_gcc_2_95.cc -mln_core_internal_fixme_SOURCES = mln_core_internal_fixme.cc -mln_core_internal_force_exact_SOURCES = mln_core_internal_force_exact.cc -mln_core_internal_geom_bbox_SOURCES = mln_core_internal_geom_bbox.cc -mln_core_internal_graph_psite_base_SOURCES = mln_core_internal_graph_psite_base.cc -mln_core_internal_graph_window_base_SOURCES = mln_core_internal_graph_window_base.cc -mln_core_internal_image_base_SOURCES = mln_core_internal_image_base.cc -mln_core_internal_image_domain_morpher_SOURCES = mln_core_internal_image_domain_morpher.cc -mln_core_internal_image_identity_SOURCES = mln_core_internal_image_identity.cc -mln_core_internal_image_morpher_SOURCES = mln_core_internal_image_morpher.cc -mln_core_internal_image_primary_SOURCES = mln_core_internal_image_primary.cc -mln_core_internal_image_value_morpher_SOURCES = mln_core_internal_image_value_morpher.cc -mln_core_internal_is_masked_impl_selector_SOURCES = mln_core_internal_is_masked_impl_selector.cc -mln_core_internal_labeled_image_base_SOURCES = mln_core_internal_labeled_image_base.cc -mln_core_internal_morpher_lvalue_SOURCES = mln_core_internal_morpher_lvalue.cc -mln_core_internal_neighb_base_SOURCES = mln_core_internal_neighb_base.cc -mln_core_internal_neighb_niter_base_SOURCES = mln_core_internal_neighb_niter_base.cc -mln_core_internal_neighb_niter_impl_SOURCES = mln_core_internal_neighb_niter_impl.cc -mln_core_internal_neighborhood_base_SOURCES = mln_core_internal_neighborhood_base.cc -mln_core_internal_p_complex_piter_base_SOURCES = mln_core_internal_p_complex_piter_base.cc -mln_core_internal_piter_adaptor_SOURCES = mln_core_internal_piter_adaptor.cc -mln_core_internal_piter_identity_SOURCES = mln_core_internal_piter_identity.cc -mln_core_internal_pixel_impl_SOURCES = mln_core_internal_pixel_impl.cc -mln_core_internal_pixel_iterator_base_SOURCES = mln_core_internal_pixel_iterator_base.cc -mln_core_internal_pseudo_site_base_SOURCES = mln_core_internal_pseudo_site_base.cc -mln_core_internal_run_image_SOURCES = mln_core_internal_run_image.cc -mln_core_internal_set_of_SOURCES = mln_core_internal_set_of.cc -mln_core_internal_site_iterator_base_SOURCES = mln_core_internal_site_iterator_base.cc -mln_core_internal_site_relative_iterator_base_SOURCES = mln_core_internal_site_relative_iterator_base.cc -mln_core_internal_site_set_base_SOURCES = mln_core_internal_site_set_base.cc -mln_core_internal_site_set_impl_SOURCES = mln_core_internal_site_set_impl.cc -mln_core_internal_site_set_iterator_base_SOURCES = mln_core_internal_site_set_iterator_base.cc -mln_core_internal_weighted_window_base_SOURCES = mln_core_internal_weighted_window_base.cc -mln_core_internal_window_base_SOURCES = mln_core_internal_window_base.cc -mln_core_macros_SOURCES = mln_core_macros.cc -mln_core_mixed_neighb_SOURCES = mln_core_mixed_neighb.cc -mln_core_neighb_SOURCES = mln_core_neighb.cc -mln_core_pixel_SOURCES = mln_core_pixel.cc -mln_core_pixter1d_SOURCES = mln_core_pixter1d.cc -mln_core_pixter2d_SOURCES = mln_core_pixter2d.cc -mln_core_pixter3d_SOURCES = mln_core_pixter3d.cc -mln_core_point_SOURCES = mln_core_point.cc -mln_core_routine_all_SOURCES = mln_core_routine_all.cc -mln_core_routine_duplicate_SOURCES = mln_core_routine_duplicate.cc -mln_core_routine_essential_SOURCES = mln_core_routine_essential.cc -mln_core_routine_exact_SOURCES = mln_core_routine_exact.cc -mln_core_routine_extend_SOURCES = mln_core_routine_extend.cc -mln_core_routine_init_SOURCES = mln_core_routine_init.cc -mln_core_routine_initialize_SOURCES = mln_core_routine_initialize.cc -mln_core_routine_ops_SOURCES = mln_core_routine_ops.cc -mln_core_routine_primary_SOURCES = mln_core_routine_primary.cc -mln_core_site_set_all_SOURCES = mln_core_site_set_all.cc -mln_core_site_set_attic_p_complex_faces_piter_SOURCES = mln_core_site_set_attic_p_complex_faces_piter.cc -mln_core_site_set_attic_p_faces_piter_SOURCES = mln_core_site_set_attic_p_faces_piter.cc -mln_core_site_set_box_SOURCES = mln_core_site_set_box.cc -mln_core_site_set_box_piter_SOURCES = mln_core_site_set_box_piter.cc -mln_core_site_set_complex_psite_SOURCES = mln_core_site_set_complex_psite.cc -mln_core_site_set_essential_SOURCES = mln_core_site_set_essential.cc -mln_core_site_set_operators_SOURCES = mln_core_site_set_operators.cc -mln_core_site_set_p_array_SOURCES = mln_core_site_set_p_array.cc -mln_core_site_set_p_centered_SOURCES = mln_core_site_set_p_centered.cc -mln_core_site_set_p_complex_SOURCES = mln_core_site_set_p_complex.cc -mln_core_site_set_p_complex_piter_SOURCES = mln_core_site_set_p_complex_piter.cc -mln_core_site_set_p_double_SOURCES = mln_core_site_set_p_double.cc -mln_core_site_set_p_edges_SOURCES = mln_core_site_set_p_edges.cc -mln_core_site_set_p_edges_psite_SOURCES = mln_core_site_set_p_edges_psite.cc -mln_core_site_set_p_faces_SOURCES = mln_core_site_set_p_faces.cc -mln_core_site_set_p_graph_piter_SOURCES = mln_core_site_set_p_graph_piter.cc -mln_core_site_set_p_if_SOURCES = mln_core_site_set_p_if.cc -mln_core_site_set_p_if_piter_SOURCES = mln_core_site_set_p_if_piter.cc -mln_core_site_set_p_image_SOURCES = mln_core_site_set_p_image.cc -mln_core_site_set_p_key_SOURCES = mln_core_site_set_p_key.cc -mln_core_site_set_p_line2d_SOURCES = mln_core_site_set_p_line2d.cc -mln_core_site_set_p_mutable_array_of_SOURCES = mln_core_site_set_p_mutable_array_of.cc -mln_core_site_set_p_n_faces_piter_SOURCES = mln_core_site_set_p_n_faces_piter.cc -mln_core_site_set_p_priority_SOURCES = mln_core_site_set_p_priority.cc -mln_core_site_set_p_queue_SOURCES = mln_core_site_set_p_queue.cc -mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc -mln_core_site_set_p_run_SOURCES = mln_core_site_set_p_run.cc -mln_core_site_set_p_run_piter_SOURCES = mln_core_site_set_p_run_piter.cc -mln_core_site_set_p_set_SOURCES = mln_core_site_set_p_set.cc -mln_core_site_set_p_set_of_SOURCES = mln_core_site_set_p_set_of.cc -mln_core_site_set_p_transformed_SOURCES = mln_core_site_set_p_transformed.cc -mln_core_site_set_p_transformed_piter_SOURCES = mln_core_site_set_p_transformed_piter.cc -mln_core_site_set_p_vaccess_SOURCES = mln_core_site_set_p_vaccess.cc -mln_core_site_set_p_vertices_SOURCES = mln_core_site_set_p_vertices.cc -mln_core_site_set_p_vertices_psite_SOURCES = mln_core_site_set_p_vertices_psite.cc -mln_core_tags_SOURCES = mln_core_tags.cc -mln_core_trait_all_SOURCES = mln_core_trait_all.cc -mln_core_trait_essential_SOURCES = mln_core_trait_essential.cc -mln_core_trait_op_mult_SOURCES = mln_core_trait_op_mult.cc -mln_core_trait_pixter_SOURCES = mln_core_trait_pixter.cc -mln_core_trait_qlf_value_SOURCES = mln_core_trait_qlf_value.cc -mln_core_var_SOURCES = mln_core_var.cc -mln_core_w_window_SOURCES = mln_core_w_window.cc -mln_core_window_SOURCES = mln_core_window.cc -mln_data_abs_SOURCES = mln_data_abs.cc -mln_data_all_SOURCES = mln_data_all.cc -mln_data_apply_SOURCES = mln_data_apply.cc -mln_data_approx_all_SOURCES = mln_data_approx_all.cc -mln_data_approx_essential_SOURCES = mln_data_approx_essential.cc -mln_data_approx_median_SOURCES = mln_data_approx_median.cc -mln_data_compare_SOURCES = mln_data_compare.cc -mln_data_compute_SOURCES = mln_data_compute.cc -mln_data_convert_SOURCES = mln_data_convert.cc -mln_data_essential_SOURCES = mln_data_essential.cc -mln_data_fast_median_SOURCES = mln_data_fast_median.cc -mln_data_fill_SOURCES = mln_data_fill.cc -mln_data_fill_with_image_SOURCES = mln_data_fill_with_image.cc -mln_data_fill_with_value_SOURCES = mln_data_fill_with_value.cc -mln_data_median_SOURCES = mln_data_median.cc -mln_data_memcpy__SOURCES = mln_data_memcpy_.cc -mln_data_memset__SOURCES = mln_data_memset_.cc -mln_data_naive_all_SOURCES = mln_data_naive_all.cc -mln_data_naive_essential_SOURCES = mln_data_naive_essential.cc -mln_data_naive_median_SOURCES = mln_data_naive_median.cc -mln_data_paste_SOURCES = mln_data_paste.cc -mln_data_paste_without_localization_SOURCES = mln_data_paste_without_localization.cc -mln_data_replace_SOURCES = mln_data_replace.cc -mln_data_saturate_SOURCES = mln_data_saturate.cc -mln_data_sort_offsets_SOURCES = mln_data_sort_offsets.cc -mln_data_sort_psites_SOURCES = mln_data_sort_psites.cc -mln_data_split_SOURCES = mln_data_split.cc -mln_data_stretch_SOURCES = mln_data_stretch.cc -mln_data_to_enc_SOURCES = mln_data_to_enc.cc -mln_data_transform_SOURCES = mln_data_transform.cc -mln_data_transform_inplace_SOURCES = mln_data_transform_inplace.cc -mln_data_update_SOURCES = mln_data_update.cc -mln_data_was_median_SOURCES = mln_data_was_median.cc -mln_data_wrap_SOURCES = mln_data_wrap.cc -mln_debug_all_SOURCES = mln_debug_all.cc -mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc -mln_debug_essential_SOURCES = mln_debug_essential.cc -mln_debug_filename_SOURCES = mln_debug_filename.cc -mln_debug_format_SOURCES = mln_debug_format.cc -mln_debug_histo_SOURCES = mln_debug_histo.cc -mln_debug_iota_SOURCES = mln_debug_iota.cc -mln_debug_mosaic_SOURCES = mln_debug_mosaic.cc -mln_debug_println_SOURCES = mln_debug_println.cc -mln_debug_println_with_border_SOURCES = mln_debug_println_with_border.cc -mln_debug_put_word_SOURCES = mln_debug_put_word.cc -mln_debug_quiet_SOURCES = mln_debug_quiet.cc -mln_debug_slices_2d_SOURCES = mln_debug_slices_2d.cc -mln_debug_superpose_SOURCES = mln_debug_superpose.cc -mln_debug_z_order_SOURCES = mln_debug_z_order.cc -mln_display_all_SOURCES = mln_display_all.cc -mln_display_essential_SOURCES = mln_display_essential.cc -mln_draw_all_SOURCES = mln_draw_all.cc -mln_draw_box_SOURCES = mln_draw_box.cc -mln_draw_box_plain_SOURCES = mln_draw_box_plain.cc -mln_draw_dashed_line_SOURCES = mln_draw_dashed_line.cc -mln_draw_essential_SOURCES = mln_draw_essential.cc -mln_draw_line_SOURCES = mln_draw_line.cc -mln_draw_plot_SOURCES = mln_draw_plot.cc -mln_draw_polygon_SOURCES = mln_draw_polygon.cc -mln_draw_site_set_SOURCES = mln_draw_site_set.cc -mln_essential_1d_SOURCES = mln_essential_1d.cc -mln_essential_2d_SOURCES = mln_essential_2d.cc -mln_essential_3d_SOURCES = mln_essential_3d.cc -mln_essential_routine_SOURCES = mln_essential_routine.cc -mln_estim_all_SOURCES = mln_estim_all.cc -mln_estim_essential_SOURCES = mln_estim_essential.cc -mln_estim_mean_SOURCES = mln_estim_mean.cc -mln_estim_min_max_SOURCES = mln_estim_min_max.cc -mln_estim_sum_SOURCES = mln_estim_sum.cc -mln_extension_adjust_SOURCES = mln_extension_adjust.cc -mln_extension_adjust_duplicate_SOURCES = mln_extension_adjust_duplicate.cc -mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc -mln_extension_all_SOURCES = mln_extension_all.cc -mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc -mln_extension_essential_SOURCES = mln_extension_essential.cc -mln_extension_fill_SOURCES = mln_extension_fill.cc -mln_extract_all_SOURCES = mln_extract_all.cc -mln_extract_blue_SOURCES = mln_extract_blue.cc -mln_extract_essential_SOURCES = mln_extract_essential.cc -mln_extract_green_SOURCES = mln_extract_green.cc -mln_extract_hue_SOURCES = mln_extract_hue.cc -mln_extract_lum_SOURCES = mln_extract_lum.cc -mln_extract_red_SOURCES = mln_extract_red.cc -mln_extract_sat_SOURCES = mln_extract_sat.cc -mln_fun_access_all_SOURCES = mln_fun_access_all.cc -mln_fun_access_mean_SOURCES = mln_fun_access_mean.cc -mln_fun_accu_result_SOURCES = mln_fun_accu_result.cc -mln_fun_all_SOURCES = mln_fun_all.cc -mln_fun_binary_SOURCES = mln_fun_binary.cc -mln_fun_binary_param_SOURCES = mln_fun_binary_param.cc -mln_fun_c_SOURCES = mln_fun_c.cc -mln_fun_cast_SOURCES = mln_fun_cast.cc -mln_fun_component_blue_SOURCES = mln_fun_component_blue.cc -mln_fun_component_comp_SOURCES = mln_fun_component_comp.cc -mln_fun_component_comp_count_SOURCES = mln_fun_component_comp_count.cc -mln_fun_component_green_SOURCES = mln_fun_component_green.cc -mln_fun_component_ithcomp_SOURCES = mln_fun_component_ithcomp.cc -mln_fun_component_red_SOURCES = mln_fun_component_red.cc -mln_fun_component_rgb_SOURCES = mln_fun_component_rgb.cc -mln_fun_component_scomp_SOURCES = mln_fun_component_scomp.cc -mln_fun_compose_SOURCES = mln_fun_compose.cc -mln_fun_composition_SOURCES = mln_fun_composition.cc -mln_fun_essential_SOURCES = mln_fun_essential.cc -mln_fun_from_accu_SOURCES = mln_fun_from_accu.cc -mln_fun_i2v_all_SOURCES = mln_fun_i2v_all.cc -mln_fun_i2v_all_to_SOURCES = mln_fun_i2v_all_to.cc -mln_fun_i2v_array_SOURCES = mln_fun_i2v_array.cc -mln_fun_i2v_essential_SOURCES = mln_fun_i2v_essential.cc -mln_fun_i2v_value_at_index_SOURCES = mln_fun_i2v_value_at_index.cc -mln_fun_internal_ch_function_value_impl_SOURCES = mln_fun_internal_ch_function_value_impl.cc -mln_fun_internal_resolve_SOURCES = mln_fun_internal_resolve.cc -mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc -mln_fun_internal_x2x_linear_impl_SOURCES = mln_fun_internal_x2x_linear_impl.cc -mln_fun_math_abs_SOURCES = mln_fun_math_abs.cc -mln_fun_math_cos_SOURCES = mln_fun_math_cos.cc -mln_fun_math_inf_SOURCES = mln_fun_math_inf.cc -mln_fun_math_norm_SOURCES = mln_fun_math_norm.cc -mln_fun_math_sup_SOURCES = mln_fun_math_sup.cc -mln_fun_meta_all_SOURCES = mln_fun_meta_all.cc -mln_fun_meta_blue_SOURCES = mln_fun_meta_blue.cc -mln_fun_meta_essential_SOURCES = mln_fun_meta_essential.cc -mln_fun_meta_first_SOURCES = mln_fun_meta_first.cc -mln_fun_meta_green_SOURCES = mln_fun_meta_green.cc -mln_fun_meta_hue_SOURCES = mln_fun_meta_hue.cc -mln_fun_meta_impl_SOURCES = mln_fun_meta_impl.cc -mln_fun_meta_inty_SOURCES = mln_fun_meta_inty.cc -mln_fun_meta_lum_SOURCES = mln_fun_meta_lum.cc -mln_fun_meta_red_SOURCES = mln_fun_meta_red.cc -mln_fun_meta_sat_SOURCES = mln_fun_meta_sat.cc -mln_fun_meta_second_SOURCES = mln_fun_meta_second.cc -mln_fun_meta_to_enc_SOURCES = mln_fun_meta_to_enc.cc -mln_fun_n2v_all_SOURCES = mln_fun_n2v_all.cc -mln_fun_n2v_white_gaussian_SOURCES = mln_fun_n2v_white_gaussian.cc -mln_fun_ops_SOURCES = mln_fun_ops.cc -mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc -mln_fun_p2b_antilogy_SOURCES = mln_fun_p2b_antilogy.cc -mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc -mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc -mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc -mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc -mln_fun_p2b_tautology_SOURCES = mln_fun_p2b_tautology.cc -mln_fun_p2p_all_SOURCES = mln_fun_p2p_all.cc -mln_fun_p2p_fold_SOURCES = mln_fun_p2p_fold.cc -mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc -mln_fun_p2p_translation_SOURCES = mln_fun_p2p_translation.cc -mln_fun_p2v_all_SOURCES = mln_fun_p2v_all.cc -mln_fun_p2v_elifs_SOURCES = mln_fun_p2v_elifs.cc -mln_fun_p2v_essential_SOURCES = mln_fun_p2v_essential.cc -mln_fun_p2v_iota_SOURCES = mln_fun_p2v_iota.cc -mln_fun_p2v_ternary_SOURCES = mln_fun_p2v_ternary.cc -mln_fun_param_SOURCES = mln_fun_param.cc -mln_fun_point_col_SOURCES = mln_fun_point_col.cc -mln_fun_point_row_SOURCES = mln_fun_point_row.cc -mln_fun_point_sli_SOURCES = mln_fun_point_sli.cc -mln_fun_spe_binary_SOURCES = mln_fun_spe_binary.cc -mln_fun_spe_unary_SOURCES = mln_fun_spe_unary.cc -mln_fun_stat_all_SOURCES = mln_fun_stat_all.cc -mln_fun_stat_mahalanobis_SOURCES = mln_fun_stat_mahalanobis.cc -mln_fun_unary_SOURCES = mln_fun_unary.cc -mln_fun_unary_param_SOURCES = mln_fun_unary_param.cc -mln_fun_v2b_all_SOURCES = mln_fun_v2b_all.cc -mln_fun_v2b_essential_SOURCES = mln_fun_v2b_essential.cc -mln_fun_v2b_lnot_SOURCES = mln_fun_v2b_lnot.cc -mln_fun_v2b_threshold_ge_SOURCES = mln_fun_v2b_threshold_ge.cc -mln_fun_v2b_threshold_le_SOURCES = mln_fun_v2b_threshold_le.cc -mln_fun_v2i_all_SOURCES = mln_fun_v2i_all.cc -mln_fun_v2i_index_of_value_SOURCES = mln_fun_v2i_index_of_value.cc -mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc -mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc -mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc -mln_fun_v2v_ch_function_value_SOURCES = mln_fun_v2v_ch_function_value.cc -mln_fun_v2v_component_SOURCES = mln_fun_v2v_component.cc -mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc -mln_fun_v2v_dec_SOURCES = mln_fun_v2v_dec.cc -mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc -mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc -mln_fun_v2v_hsi_to_rgb_SOURCES = mln_fun_v2v_hsi_to_rgb.cc -mln_fun_v2v_hsl_to_rgb_SOURCES = mln_fun_v2v_hsl_to_rgb.cc -mln_fun_v2v_id_SOURCES = mln_fun_v2v_id.cc -mln_fun_v2v_inc_SOURCES = mln_fun_v2v_inc.cc -mln_fun_v2v_linear_SOURCES = mln_fun_v2v_linear.cc -mln_fun_v2v_norm_SOURCES = mln_fun_v2v_norm.cc -mln_fun_v2v_projection_SOURCES = mln_fun_v2v_projection.cc -mln_fun_v2v_qt_rgb_to_int_u_SOURCES = mln_fun_v2v_qt_rgb_to_int_u.cc -mln_fun_v2v_rgb8_to_rgbn_SOURCES = mln_fun_v2v_rgb8_to_rgbn.cc -mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc -mln_fun_v2v_rgb_to_hsl_SOURCES = mln_fun_v2v_rgb_to_hsl.cc -mln_fun_v2v_rgb_to_int_u_SOURCES = mln_fun_v2v_rgb_to_int_u.cc -mln_fun_v2v_rgb_to_luma_SOURCES = mln_fun_v2v_rgb_to_luma.cc -mln_fun_v2v_saturate_SOURCES = mln_fun_v2v_saturate.cc -mln_fun_v2v_wrap_SOURCES = mln_fun_v2v_wrap.cc -mln_fun_v2w2v_all_SOURCES = mln_fun_v2w2v_all.cc -mln_fun_v2w2v_cos_SOURCES = mln_fun_v2w2v_cos.cc -mln_fun_v2w_w2v_all_SOURCES = mln_fun_v2w_w2v_all.cc -mln_fun_v2w_w2v_norm_SOURCES = mln_fun_v2w_w2v_norm.cc -mln_fun_vv2b_all_SOURCES = mln_fun_vv2b_all.cc -mln_fun_vv2b_eq_SOURCES = mln_fun_vv2b_eq.cc -mln_fun_vv2b_ge_SOURCES = mln_fun_vv2b_ge.cc -mln_fun_vv2b_gt_SOURCES = mln_fun_vv2b_gt.cc -mln_fun_vv2b_implies_SOURCES = mln_fun_vv2b_implies.cc -mln_fun_vv2b_le_SOURCES = mln_fun_vv2b_le.cc -mln_fun_vv2b_lt_SOURCES = mln_fun_vv2b_lt.cc -mln_fun_vv2v_all_SOURCES = mln_fun_vv2v_all.cc -mln_fun_vv2v_diff_abs_SOURCES = mln_fun_vv2v_diff_abs.cc -mln_fun_vv2v_essential_SOURCES = mln_fun_vv2v_essential.cc -mln_fun_vv2v_land_SOURCES = mln_fun_vv2v_land.cc -mln_fun_vv2v_land_not_SOURCES = mln_fun_vv2v_land_not.cc -mln_fun_vv2v_lor_SOURCES = mln_fun_vv2v_lor.cc -mln_fun_vv2v_lxor_SOURCES = mln_fun_vv2v_lxor.cc -mln_fun_vv2v_macros_SOURCES = mln_fun_vv2v_macros.cc -mln_fun_vv2v_max_SOURCES = mln_fun_vv2v_max.cc -mln_fun_vv2v_min_SOURCES = mln_fun_vv2v_min.cc -mln_fun_vv2v_vec_SOURCES = mln_fun_vv2v_vec.cc -mln_fun_x2p_all_SOURCES = mln_fun_x2p_all.cc -mln_fun_x2p_closest_point_SOURCES = mln_fun_x2p_closest_point.cc -mln_fun_x2p_essential_SOURCES = mln_fun_x2p_essential.cc -mln_fun_x2v_all_SOURCES = mln_fun_x2v_all.cc -mln_fun_x2v_bilinear_SOURCES = mln_fun_x2v_bilinear.cc -mln_fun_x2v_essential_SOURCES = mln_fun_x2v_essential.cc -mln_fun_x2v_l1_norm_SOURCES = mln_fun_x2v_l1_norm.cc -mln_fun_x2v_linear_SOURCES = mln_fun_x2v_linear.cc -mln_fun_x2v_nneighbor_SOURCES = mln_fun_x2v_nneighbor.cc -mln_fun_x2v_trilinear_SOURCES = mln_fun_x2v_trilinear.cc -mln_fun_x2x_all_SOURCES = mln_fun_x2x_all.cc -mln_fun_x2x_composed_SOURCES = mln_fun_x2x_composed.cc -mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc -mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc -mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc -mln_geom_all_SOURCES = mln_geom_all.cc -mln_geom_bbox_SOURCES = mln_geom_bbox.cc -mln_geom_chamfer_SOURCES = mln_geom_chamfer.cc -mln_geom_complex_geometry_SOURCES = mln_geom_complex_geometry.cc -mln_geom_crop_SOURCES = mln_geom_crop.cc -mln_geom_crop_without_localization_SOURCES = mln_geom_crop_without_localization.cc -mln_geom_delta_SOURCES = mln_geom_delta.cc -mln_geom_essential_SOURCES = mln_geom_essential.cc -mln_geom_horizontal_symmetry_SOURCES = mln_geom_horizontal_symmetry.cc -mln_geom_max_col_SOURCES = mln_geom_max_col.cc -mln_geom_max_ind_SOURCES = mln_geom_max_ind.cc -mln_geom_max_row_SOURCES = mln_geom_max_row.cc -mln_geom_max_sli_SOURCES = mln_geom_max_sli.cc -mln_geom_min_col_SOURCES = mln_geom_min_col.cc -mln_geom_min_ind_SOURCES = mln_geom_min_ind.cc -mln_geom_min_row_SOURCES = mln_geom_min_row.cc -mln_geom_min_sli_SOURCES = mln_geom_min_sli.cc -mln_geom_ncols_SOURCES = mln_geom_ncols.cc -mln_geom_ninds_SOURCES = mln_geom_ninds.cc -mln_geom_nrows_SOURCES = mln_geom_nrows.cc -mln_geom_nsites_SOURCES = mln_geom_nsites.cc -mln_geom_nslis_SOURCES = mln_geom_nslis.cc -mln_geom_pmin_pmax_SOURCES = mln_geom_pmin_pmax.cc -mln_geom_rotate_SOURCES = mln_geom_rotate.cc -mln_geom_seeds2tiling_SOURCES = mln_geom_seeds2tiling.cc -mln_geom_seeds2tiling_roundness_SOURCES = mln_geom_seeds2tiling_roundness.cc -mln_geom_size1d_SOURCES = mln_geom_size1d.cc -mln_geom_size2d_SOURCES = mln_geom_size2d.cc -mln_geom_size3d_SOURCES = mln_geom_size3d.cc -mln_geom_translate_SOURCES = mln_geom_translate.cc -mln_geom_vertical_symmetry_SOURCES = mln_geom_vertical_symmetry.cc -mln_graph_all_SOURCES = mln_graph_all.cc -mln_graph_attribute_card_SOURCES = mln_graph_attribute_card.cc -mln_graph_attribute_representative_SOURCES = mln_graph_attribute_representative.cc -mln_graph_compute_SOURCES = mln_graph_compute.cc -mln_graph_essential_SOURCES = mln_graph_essential.cc -mln_graph_labeling_SOURCES = mln_graph_labeling.cc -mln_graph_to_neighb_SOURCES = mln_graph_to_neighb.cc -mln_graph_to_win_SOURCES = mln_graph_to_win.cc -mln_histo_all_SOURCES = mln_histo_all.cc -mln_histo_array_SOURCES = mln_histo_array.cc -mln_histo_compute_SOURCES = mln_histo_compute.cc -mln_histo_equalize_SOURCES = mln_histo_equalize.cc -mln_histo_essential_SOURCES = mln_histo_essential.cc -mln_histo_point_from_value_SOURCES = mln_histo_point_from_value.cc -mln_io_abort_SOURCES = mln_io_abort.cc -mln_io_all_SOURCES = mln_io_all.cc -mln_io_cloud_all_SOURCES = mln_io_cloud_all.cc -mln_io_cloud_load_SOURCES = mln_io_cloud_load.cc -mln_io_cloud_save_SOURCES = mln_io_cloud_save.cc -mln_io_dump_all_SOURCES = mln_io_dump_all.cc -mln_io_dump_get_header_SOURCES = mln_io_dump_get_header.cc -mln_io_dump_load_SOURCES = mln_io_dump_load.cc -mln_io_dump_save_SOURCES = mln_io_dump_save.cc -mln_io_essential_SOURCES = mln_io_essential.cc -mln_io_fld_all_SOURCES = mln_io_fld_all.cc -mln_io_fld_header_SOURCES = mln_io_fld_header.cc -mln_io_fld_load_SOURCES = mln_io_fld_load.cc -mln_io_fld_load_header_SOURCES = mln_io_fld_load_header.cc -mln_io_fld_max_components_SOURCES = mln_io_fld_max_components.cc -mln_io_fld_save_SOURCES = mln_io_fld_save.cc -mln_io_fld_write_header_SOURCES = mln_io_fld_write_header.cc -mln_io_off_all_SOURCES = mln_io_off_all.cc -mln_io_off_load_SOURCES = mln_io_off_load.cc -mln_io_off_save_SOURCES = mln_io_off_save.cc -mln_io_pbm_all_SOURCES = mln_io_pbm_all.cc -mln_io_pbm_load_SOURCES = mln_io_pbm_load.cc -mln_io_pbm_save_SOURCES = mln_io_pbm_save.cc -mln_io_pbms_all_SOURCES = mln_io_pbms_all.cc -mln_io_pbms_load_SOURCES = mln_io_pbms_load.cc -mln_io_pfm_all_SOURCES = mln_io_pfm_all.cc -mln_io_pfm_load_SOURCES = mln_io_pfm_load.cc -mln_io_pfm_save_SOURCES = mln_io_pfm_save.cc -mln_io_pgm_all_SOURCES = mln_io_pgm_all.cc -mln_io_pgm_load_SOURCES = mln_io_pgm_load.cc -mln_io_pgm_save_SOURCES = mln_io_pgm_save.cc -mln_io_pgms_all_SOURCES = mln_io_pgms_all.cc -mln_io_pgms_load_SOURCES = mln_io_pgms_load.cc -mln_io_plot_all_SOURCES = mln_io_plot_all.cc -mln_io_plot_load_SOURCES = mln_io_plot_load.cc -mln_io_plot_save_SOURCES = mln_io_plot_save.cc -mln_io_pnm_all_SOURCES = mln_io_pnm_all.cc -mln_io_pnm_load_SOURCES = mln_io_pnm_load.cc -mln_io_pnm_load_header_SOURCES = mln_io_pnm_load_header.cc -mln_io_pnm_macros_SOURCES = mln_io_pnm_macros.cc -mln_io_pnm_max_component_SOURCES = mln_io_pnm_max_component.cc -mln_io_pnm_save_SOURCES = mln_io_pnm_save.cc -mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc -mln_io_pnms_all_SOURCES = mln_io_pnms_all.cc -mln_io_pnms_load_SOURCES = mln_io_pnms_load.cc -mln_io_ppm_all_SOURCES = mln_io_ppm_all.cc -mln_io_ppm_load_SOURCES = mln_io_ppm_load.cc -mln_io_ppm_save_SOURCES = mln_io_ppm_save.cc -mln_io_ppms_all_SOURCES = mln_io_ppms_all.cc -mln_io_ppms_load_SOURCES = mln_io_ppms_load.cc -mln_io_raw_all_SOURCES = mln_io_raw_all.cc -mln_io_raw_get_header_SOURCES = mln_io_raw_get_header.cc -mln_io_raw_load_SOURCES = mln_io_raw_load.cc -mln_io_raw_save_SOURCES = mln_io_raw_save.cc -mln_io_txt_all_SOURCES = mln_io_txt_all.cc -mln_io_txt_save_SOURCES = mln_io_txt_save.cc -mln_labeling_all_SOURCES = mln_labeling_all.cc -mln_labeling_background_SOURCES = mln_labeling_background.cc -mln_labeling_blobs_SOURCES = mln_labeling_blobs.cc -mln_labeling_blobs_and_compute_SOURCES = mln_labeling_blobs_and_compute.cc -mln_labeling_colorize_SOURCES = mln_labeling_colorize.cc -mln_labeling_compute_SOURCES = mln_labeling_compute.cc -mln_labeling_compute_image_SOURCES = mln_labeling_compute_image.cc -mln_labeling_essential_SOURCES = mln_labeling_essential.cc -mln_labeling_fill_holes_SOURCES = mln_labeling_fill_holes.cc -mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc -mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc -mln_labeling_mean_values_SOURCES = mln_labeling_mean_values.cc -mln_labeling_n_max_SOURCES = mln_labeling_n_max.cc -mln_labeling_pack_SOURCES = mln_labeling_pack.cc -mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc -mln_labeling_regional_minima_SOURCES = mln_labeling_regional_minima.cc -mln_labeling_relabel_SOURCES = mln_labeling_relabel.cc -mln_labeling_superpose_SOURCES = mln_labeling_superpose.cc -mln_labeling_value_SOURCES = mln_labeling_value.cc -mln_labeling_value_and_compute_SOURCES = mln_labeling_value_and_compute.cc -mln_labeling_wrap_SOURCES = mln_labeling_wrap.cc -mln_linear_all_SOURCES = mln_linear_all.cc -mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc -mln_linear_convolve_SOURCES = mln_linear_convolve.cc -mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc -mln_linear_convolve_directional_SOURCES = mln_linear_convolve_directional.cc -mln_linear_essential_SOURCES = mln_linear_essential.cc -mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc -mln_linear_gaussian_filter_SOURCES = mln_linear_gaussian_filter.cc -mln_linear_gaussian_impl_SOURCES = mln_linear_gaussian_impl.cc -mln_linear_gaussian_internal_coefficients_SOURCES = mln_linear_gaussian_internal_coefficients.cc -mln_linear_gaussian_1d_SOURCES = mln_linear_gaussian_1d.cc -mln_linear_gaussian_directional_2d_SOURCES = mln_linear_gaussian_directional_2d.cc -mln_linear_lap_SOURCES = mln_linear_lap.cc -mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc -mln_linear_log_SOURCES = mln_linear_log.cc -mln_linear_sobel_2d_SOURCES = mln_linear_sobel_2d.cc -mln_literal_all_SOURCES = mln_literal_all.cc -mln_literal_black_SOURCES = mln_literal_black.cc -mln_literal_colors_SOURCES = mln_literal_colors.cc -mln_literal_essential_SOURCES = mln_literal_essential.cc -mln_literal_grays_SOURCES = mln_literal_grays.cc -mln_literal_identity_SOURCES = mln_literal_identity.cc -mln_literal_max_SOURCES = mln_literal_max.cc -mln_literal_min_SOURCES = mln_literal_min.cc -mln_literal_one_SOURCES = mln_literal_one.cc -mln_literal_ops_SOURCES = mln_literal_ops.cc -mln_literal_origin_SOURCES = mln_literal_origin.cc -mln_literal_white_SOURCES = mln_literal_white.cc -mln_literal_zero_SOURCES = mln_literal_zero.cc -mln_logical_all_SOURCES = mln_logical_all.cc -mln_logical_and_SOURCES = mln_logical_and.cc -mln_logical_and_not_SOURCES = mln_logical_and_not.cc -mln_logical_essential_SOURCES = mln_logical_essential.cc -mln_logical_includes_SOURCES = mln_logical_includes.cc -mln_logical_not_SOURCES = mln_logical_not.cc -mln_logical_or_SOURCES = mln_logical_or.cc -mln_logical_xor_SOURCES = mln_logical_xor.cc -mln_make_all_SOURCES = mln_make_all.cc -mln_make_attachment_SOURCES = mln_make_attachment.cc -mln_make_box1d_SOURCES = mln_make_box1d.cc -mln_make_box2d_SOURCES = mln_make_box2d.cc -mln_make_box2d_h_SOURCES = mln_make_box2d_h.cc -mln_make_box3d_SOURCES = mln_make_box3d.cc -mln_make_cell_SOURCES = mln_make_cell.cc -mln_make_detachment_SOURCES = mln_make_detachment.cc -mln_make_double_neighb2d_SOURCES = mln_make_double_neighb2d.cc -mln_make_dpoint2d_h_SOURCES = mln_make_dpoint2d_h.cc -mln_make_dual_neighb_SOURCES = mln_make_dual_neighb.cc -mln_make_dummy_p_edges_SOURCES = mln_make_dummy_p_edges.cc -mln_make_dummy_p_vertices_SOURCES = mln_make_dummy_p_vertices.cc -mln_make_edge_image_SOURCES = mln_make_edge_image.cc -mln_make_essential_SOURCES = mln_make_essential.cc -mln_make_h_mat_SOURCES = mln_make_h_mat.cc -mln_make_image_SOURCES = mln_make_image.cc -mln_make_image2d_SOURCES = mln_make_image2d.cc -mln_make_image3d_SOURCES = mln_make_image3d.cc -mln_make_influence_zone_adjacency_graph_SOURCES = mln_make_influence_zone_adjacency_graph.cc -mln_make_mat_SOURCES = mln_make_mat.cc -mln_make_neighb2d_SOURCES = mln_make_neighb2d.cc -mln_make_p_edges_with_mass_centers_SOURCES = mln_make_p_edges_with_mass_centers.cc -mln_make_p_vertices_with_mass_centers_SOURCES = mln_make_p_vertices_with_mass_centers.cc -mln_make_pix_SOURCES = mln_make_pix.cc -mln_make_pixel_SOURCES = mln_make_pixel.cc -mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc -mln_make_rag_and_labeled_wsl_SOURCES = mln_make_rag_and_labeled_wsl.cc -mln_make_region_adjacency_graph_SOURCES = mln_make_region_adjacency_graph.cc -mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc -mln_make_vec_SOURCES = mln_make_vec.cc -mln_make_vertex_image_SOURCES = mln_make_vertex_image.cc -mln_make_voronoi_SOURCES = mln_make_voronoi.cc -mln_make_w_window_SOURCES = mln_make_w_window.cc -mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc -mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc -mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc -mln_make_w_window2d_int_SOURCES = mln_make_w_window2d_int.cc -mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc -mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc -mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc -mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc -mln_math_abs_SOURCES = mln_math_abs.cc -mln_math_acos_SOURCES = mln_math_acos.cc -mln_math_all_SOURCES = mln_math_all.cc -mln_math_cos_SOURCES = mln_math_cos.cc -mln_math_diff_abs_SOURCES = mln_math_diff_abs.cc -mln_math_essential_SOURCES = mln_math_essential.cc -mln_math_jacobi_SOURCES = mln_math_jacobi.cc -mln_math_max_SOURCES = mln_math_max.cc -mln_math_min_SOURCES = mln_math_min.cc -mln_math_pi_SOURCES = mln_math_pi.cc -mln_math_round_SOURCES = mln_math_round.cc -mln_math_round_sat_SOURCES = mln_math_round_sat.cc -mln_math_sign_SOURCES = mln_math_sign.cc -mln_math_sin_SOURCES = mln_math_sin.cc -mln_math_sqr_SOURCES = mln_math_sqr.cc -mln_math_sqrt_SOURCES = mln_math_sqrt.cc -mln_metal_abort_SOURCES = mln_metal_abort.cc -mln_metal_all_SOURCES = mln_metal_all.cc -mln_metal_ands_SOURCES = mln_metal_ands.cc -mln_metal_array_SOURCES = mln_metal_array.cc -mln_metal_array1d_SOURCES = mln_metal_array1d.cc -mln_metal_array2d_SOURCES = mln_metal_array2d.cc -mln_metal_array3d_SOURCES = mln_metal_array3d.cc -mln_metal_bexpr_SOURCES = mln_metal_bexpr.cc -mln_metal_bool_SOURCES = mln_metal_bool.cc -mln_metal_const_SOURCES = mln_metal_const.cc -mln_metal_converts_to_SOURCES = mln_metal_converts_to.cc -mln_metal_equal_SOURCES = mln_metal_equal.cc -mln_metal_essential_SOURCES = mln_metal_essential.cc -mln_metal_fix_return_SOURCES = mln_metal_fix_return.cc -mln_metal_goes_to_SOURCES = mln_metal_goes_to.cc -mln_metal_if_SOURCES = mln_metal_if.cc -mln_metal_int_SOURCES = mln_metal_int.cc -mln_metal_is_SOURCES = mln_metal_is.cc -mln_metal_is_a_SOURCES = mln_metal_is_a.cc -mln_metal_is_const_SOURCES = mln_metal_is_const.cc -mln_metal_is_not_SOURCES = mln_metal_is_not.cc -mln_metal_is_not_a_SOURCES = mln_metal_is_not_a.cc -mln_metal_is_not_const_SOURCES = mln_metal_is_not_const.cc -mln_metal_is_not_ref_SOURCES = mln_metal_is_not_ref.cc -mln_metal_is_ref_SOURCES = mln_metal_is_ref.cc -mln_metal_is_unqualif_SOURCES = mln_metal_is_unqualif.cc -mln_metal_mat_SOURCES = mln_metal_mat.cc -mln_metal_math_all_SOURCES = mln_metal_math_all.cc -mln_metal_math_max_SOURCES = mln_metal_math_max.cc -mln_metal_math_pow_SOURCES = mln_metal_math_pow.cc -mln_metal_math_root_SOURCES = mln_metal_math_root.cc -mln_metal_math_sqrt_SOURCES = mln_metal_math_sqrt.cc -mln_metal_none_SOURCES = mln_metal_none.cc -mln_metal_not_equal_SOURCES = mln_metal_not_equal.cc -mln_metal_ref_SOURCES = mln_metal_ref.cc -mln_metal_ret_SOURCES = mln_metal_ret.cc -mln_metal_same_coord_SOURCES = mln_metal_same_coord.cc -mln_metal_same_point_SOURCES = mln_metal_same_point.cc -mln_metal_templated_by_SOURCES = mln_metal_templated_by.cc -mln_metal_unconst_SOURCES = mln_metal_unconst.cc -mln_metal_unptr_SOURCES = mln_metal_unptr.cc -mln_metal_unqualif_SOURCES = mln_metal_unqualif.cc -mln_metal_unref_SOURCES = mln_metal_unref.cc -mln_metal_vec_SOURCES = mln_metal_vec.cc -mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc -mln_morpho_algebraic_filter_SOURCES = mln_morpho_algebraic_filter.cc -mln_morpho_all_SOURCES = mln_morpho_all.cc -mln_morpho_approx_all_SOURCES = mln_morpho_approx_all.cc -mln_morpho_approx_dilation_SOURCES = mln_morpho_approx_dilation.cc -mln_morpho_approx_erosion_SOURCES = mln_morpho_approx_erosion.cc -mln_morpho_attribute_all_SOURCES = mln_morpho_attribute_all.cc -mln_morpho_attribute_card_SOURCES = mln_morpho_attribute_card.cc -mln_morpho_attribute_count_adjacent_vertices_SOURCES = mln_morpho_attribute_count_adjacent_vertices.cc -mln_morpho_attribute_height_SOURCES = mln_morpho_attribute_height.cc -mln_morpho_attribute_sharpness_SOURCES = mln_morpho_attribute_sharpness.cc -mln_morpho_attribute_sum_SOURCES = mln_morpho_attribute_sum.cc -mln_morpho_attribute_volume_SOURCES = mln_morpho_attribute_volume.cc -mln_morpho_closing_algebraic_SOURCES = mln_morpho_closing_algebraic.cc -mln_morpho_closing_all_SOURCES = mln_morpho_closing_all.cc -mln_morpho_closing_approx_all_SOURCES = mln_morpho_closing_approx_all.cc -mln_morpho_closing_approx_structural_SOURCES = mln_morpho_closing_approx_structural.cc -mln_morpho_closing_area_SOURCES = mln_morpho_closing_area.cc -mln_morpho_closing_area_on_vertices_SOURCES = mln_morpho_closing_area_on_vertices.cc -mln_morpho_closing_essential_SOURCES = mln_morpho_closing_essential.cc -mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc -mln_morpho_closing_leveling_SOURCES = mln_morpho_closing_leveling.cc -mln_morpho_closing_structural_SOURCES = mln_morpho_closing_structural.cc -mln_morpho_closing_sum_SOURCES = mln_morpho_closing_sum.cc -mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc -mln_morpho_complementation_SOURCES = mln_morpho_complementation.cc -mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc -mln_morpho_dilation_SOURCES = mln_morpho_dilation.cc -mln_morpho_elementary_all_SOURCES = mln_morpho_elementary_all.cc -mln_morpho_elementary_closing_SOURCES = mln_morpho_elementary_closing.cc -mln_morpho_elementary_dilation_SOURCES = mln_morpho_elementary_dilation.cc -mln_morpho_elementary_erosion_SOURCES = mln_morpho_elementary_erosion.cc -mln_morpho_elementary_essential_SOURCES = mln_morpho_elementary_essential.cc -mln_morpho_elementary_gradient_SOURCES = mln_morpho_elementary_gradient.cc -mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc -mln_morpho_elementary_gradient_internal_SOURCES = mln_morpho_elementary_gradient_internal.cc -mln_morpho_elementary_laplacian_SOURCES = mln_morpho_elementary_laplacian.cc -mln_morpho_elementary_like_ero_fun_SOURCES = mln_morpho_elementary_like_ero_fun.cc -mln_morpho_elementary_like_ero_set_SOURCES = mln_morpho_elementary_like_ero_set.cc -mln_morpho_elementary_opening_SOURCES = mln_morpho_elementary_opening.cc -mln_morpho_elementary_top_hat_SOURCES = mln_morpho_elementary_top_hat.cc -mln_morpho_erosion_SOURCES = mln_morpho_erosion.cc -mln_morpho_essential_SOURCES = mln_morpho_essential.cc -mln_morpho_general_SOURCES = mln_morpho_general.cc -mln_morpho_gradient_SOURCES = mln_morpho_gradient.cc -mln_morpho_hit_or_miss_SOURCES = mln_morpho_hit_or_miss.cc -mln_morpho_includes_SOURCES = mln_morpho_includes.cc -mln_morpho_internal_elementary_SOURCES = mln_morpho_internal_elementary.cc -mln_morpho_laplacian_SOURCES = mln_morpho_laplacian.cc -mln_morpho_leveling_filter_SOURCES = mln_morpho_leveling_filter.cc -mln_morpho_line_gradient_SOURCES = mln_morpho_line_gradient.cc -mln_morpho_meyer_wst_SOURCES = mln_morpho_meyer_wst.cc -mln_morpho_min_SOURCES = mln_morpho_min.cc -mln_morpho_minus_SOURCES = mln_morpho_minus.cc -mln_morpho_opening_algebraic_SOURCES = mln_morpho_opening_algebraic.cc -mln_morpho_opening_all_SOURCES = mln_morpho_opening_all.cc -mln_morpho_opening_approx_all_SOURCES = mln_morpho_opening_approx_all.cc -mln_morpho_opening_approx_structural_SOURCES = mln_morpho_opening_approx_structural.cc -mln_morpho_opening_area_SOURCES = mln_morpho_opening_area.cc -mln_morpho_opening_area_on_vertices_SOURCES = mln_morpho_opening_area_on_vertices.cc -mln_morpho_opening_essential_SOURCES = mln_morpho_opening_essential.cc -mln_morpho_opening_height_SOURCES = mln_morpho_opening_height.cc -mln_morpho_opening_leveling_SOURCES = mln_morpho_opening_leveling.cc -mln_morpho_opening_structural_SOURCES = mln_morpho_opening_structural.cc -mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc -mln_morpho_plus_SOURCES = mln_morpho_plus.cc -mln_morpho_rank_filter_SOURCES = mln_morpho_rank_filter.cc -mln_morpho_reconstruction_all_SOURCES = mln_morpho_reconstruction_all.cc -mln_morpho_reconstruction_by_dilation_all_SOURCES = mln_morpho_reconstruction_by_dilation_all.cc -mln_morpho_reconstruction_by_dilation_union_find_SOURCES = mln_morpho_reconstruction_by_dilation_union_find.cc -mln_morpho_reconstruction_by_erosion_all_SOURCES = mln_morpho_reconstruction_by_erosion_all.cc -mln_morpho_reconstruction_by_erosion_union_find_SOURCES = mln_morpho_reconstruction_by_erosion_union_find.cc -mln_morpho_skeleton_constrained_SOURCES = mln_morpho_skeleton_constrained.cc -mln_morpho_thick_miss_SOURCES = mln_morpho_thick_miss.cc -mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc -mln_morpho_thin_fit_SOURCES = mln_morpho_thin_fit.cc -mln_morpho_thinning_SOURCES = mln_morpho_thinning.cc -mln_morpho_top_hat_SOURCES = mln_morpho_top_hat.cc -mln_morpho_tree_all_SOURCES = mln_morpho_tree_all.cc -mln_morpho_tree_component_tree_SOURCES = mln_morpho_tree_component_tree.cc -mln_morpho_tree_compute_attribute_image_SOURCES = mln_morpho_tree_compute_attribute_image.cc -mln_morpho_tree_compute_parent_SOURCES = mln_morpho_tree_compute_parent.cc -mln_morpho_tree_data_SOURCES = mln_morpho_tree_data.cc -mln_morpho_tree_dual_input_tree_SOURCES = mln_morpho_tree_dual_input_tree.cc -mln_morpho_tree_filter_all_SOURCES = mln_morpho_tree_filter_all.cc -mln_morpho_tree_filter_direct_SOURCES = mln_morpho_tree_filter_direct.cc -mln_morpho_tree_filter_filter_SOURCES = mln_morpho_tree_filter_filter.cc -mln_morpho_tree_filter_max_SOURCES = mln_morpho_tree_filter_max.cc -mln_morpho_tree_filter_min_SOURCES = mln_morpho_tree_filter_min.cc -mln_morpho_tree_filter_subtractive_SOURCES = mln_morpho_tree_filter_subtractive.cc -mln_morpho_tree_impl_dual_hqueue_SOURCES = mln_morpho_tree_impl_dual_hqueue.cc -mln_morpho_tree_impl_dual_union_find_SOURCES = mln_morpho_tree_impl_dual_union_find.cc -mln_morpho_tree_max_SOURCES = mln_morpho_tree_max.cc -mln_morpho_tree_propagate_if_SOURCES = mln_morpho_tree_propagate_if.cc -mln_morpho_tree_propagate_node_SOURCES = mln_morpho_tree_propagate_node.cc -mln_morpho_tree_propagate_representative_SOURCES = mln_morpho_tree_propagate_representative.cc -mln_morpho_tree_utils_SOURCES = mln_morpho_tree_utils.cc -mln_morpho_watershed_all_SOURCES = mln_morpho_watershed_all.cc -mln_morpho_watershed_flooding_SOURCES = mln_morpho_watershed_flooding.cc -mln_morpho_watershed_superpose_SOURCES = mln_morpho_watershed_superpose.cc -mln_morpho_watershed_topological_SOURCES = mln_morpho_watershed_topological.cc -mln_norm_all_SOURCES = mln_norm_all.cc -mln_norm_essential_SOURCES = mln_norm_essential.cc -mln_norm_l1_SOURCES = mln_norm_l1.cc -mln_norm_l2_SOURCES = mln_norm_l2.cc -mln_norm_linfty_SOURCES = mln_norm_linfty.cc -mln_opt_all_SOURCES = mln_opt_all.cc -mln_opt_at_SOURCES = mln_opt_at.cc -mln_opt_element_SOURCES = mln_opt_element.cc -mln_opt_essential_SOURCES = mln_opt_essential.cc -mln_opt_value_SOURCES = mln_opt_value.cc -mln_pw_all_SOURCES = mln_pw_all.cc -mln_pw_cst_SOURCES = mln_pw_cst.cc -mln_pw_essential_SOURCES = mln_pw_essential.cc -mln_pw_image_SOURCES = mln_pw_image.cc -mln_pw_internal_image_base_SOURCES = mln_pw_internal_image_base.cc -mln_pw_value_SOURCES = mln_pw_value.cc -mln_pw_var_SOURCES = mln_pw_var.cc -mln_registration_all_SOURCES = mln_registration_all.cc -mln_registration_essential_SOURCES = mln_registration_essential.cc -mln_registration_get_rot_SOURCES = mln_registration_get_rot.cc -mln_registration_get_rtransf_SOURCES = mln_registration_get_rtransf.cc -mln_registration_icp_SOURCES = mln_registration_icp.cc -mln_registration_internal_rms_SOURCES = mln_registration_internal_rms.cc -mln_registration_registration_SOURCES = mln_registration_registration.cc -mln_set_all_SOURCES = mln_set_all.cc -mln_set_card_SOURCES = mln_set_card.cc -mln_set_compute_SOURCES = mln_set_compute.cc -mln_set_compute_with_weights_SOURCES = mln_set_compute_with_weights.cc -mln_set_diff_SOURCES = mln_set_diff.cc -mln_set_essential_SOURCES = mln_set_essential.cc -mln_set_get_SOURCES = mln_set_get.cc -mln_set_has_SOURCES = mln_set_has.cc -mln_set_inter_SOURCES = mln_set_inter.cc -mln_set_sym_diff_SOURCES = mln_set_sym_diff.cc -mln_set_uni_SOURCES = mln_set_uni.cc -mln_set_unique_SOURCES = mln_set_unique.cc -mln_subsampling_all_SOURCES = mln_subsampling_all.cc -mln_subsampling_antialiased_SOURCES = mln_subsampling_antialiased.cc -mln_subsampling_essential_SOURCES = mln_subsampling_essential.cc -mln_subsampling_gaussian_subsampling_SOURCES = mln_subsampling_gaussian_subsampling.cc -mln_subsampling_subsampling_SOURCES = mln_subsampling_subsampling.cc -mln_tag_all_SOURCES = mln_tag_all.cc -mln_tag_essential_SOURCES = mln_tag_essential.cc -mln_tag_init_SOURCES = mln_tag_init.cc -mln_tag_skeleton_SOURCES = mln_tag_skeleton.cc -mln_test_all_SOURCES = mln_test_all.cc -mln_test_essential_SOURCES = mln_test_essential.cc -mln_test_positive_SOURCES = mln_test_positive.cc -mln_test_predicate_SOURCES = mln_test_predicate.cc -mln_topo_adj_higher_dim_connected_n_face_iter_SOURCES = mln_topo_adj_higher_dim_connected_n_face_iter.cc -mln_topo_adj_higher_face_iter_SOURCES = mln_topo_adj_higher_face_iter.cc -mln_topo_adj_lower_dim_connected_n_face_iter_SOURCES = mln_topo_adj_lower_dim_connected_n_face_iter.cc -mln_topo_adj_lower_face_iter_SOURCES = mln_topo_adj_lower_face_iter.cc -mln_topo_adj_lower_higher_face_iter_SOURCES = mln_topo_adj_lower_higher_face_iter.cc -mln_topo_adj_m_face_iter_SOURCES = mln_topo_adj_m_face_iter.cc -mln_topo_algebraic_face_SOURCES = mln_topo_algebraic_face.cc -mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc -mln_topo_all_SOURCES = mln_topo_all.cc -mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc -mln_topo_center_only_iter_SOURCES = mln_topo_center_only_iter.cc -mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc -mln_topo_complex_SOURCES = mln_topo_complex.cc -mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc -mln_topo_detach_SOURCES = mln_topo_detach.cc -mln_topo_essential_SOURCES = mln_topo_essential.cc -mln_topo_face_SOURCES = mln_topo_face.cc -mln_topo_face_data_SOURCES = mln_topo_face_data.cc -mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc -mln_topo_internal_complex_iterator_base_SOURCES = mln_topo_internal_complex_iterator_base.cc -mln_topo_internal_complex_relative_iterator_base_SOURCES = mln_topo_internal_complex_relative_iterator_base.cc -mln_topo_internal_complex_relative_iterator_sequence_SOURCES = mln_topo_internal_complex_relative_iterator_sequence.cc -mln_topo_internal_complex_set_iterator_base_SOURCES = mln_topo_internal_complex_set_iterator_base.cc -mln_topo_is_facet_SOURCES = mln_topo_is_facet.cc -mln_topo_is_n_face_SOURCES = mln_topo_is_n_face.cc -mln_topo_is_simple_2d_SOURCES = mln_topo_is_simple_2d.cc -mln_topo_is_simple_cell_SOURCES = mln_topo_is_simple_cell.cc -mln_topo_n_face_SOURCES = mln_topo_n_face.cc -mln_topo_n_face_iter_SOURCES = mln_topo_n_face_iter.cc -mln_topo_n_faces_set_SOURCES = mln_topo_n_faces_set.cc -mln_topo_skeleton_breadth_first_thinning_SOURCES = mln_topo_skeleton_breadth_first_thinning.cc -mln_topo_skeleton_crest_SOURCES = mln_topo_skeleton_crest.cc -mln_topo_skeleton_is_simple_point_SOURCES = mln_topo_skeleton_is_simple_point.cc -mln_topo_static_n_face_iter_SOURCES = mln_topo_static_n_face_iter.cc -mln_trace_all_SOURCES = mln_trace_all.cc -mln_trace_entering_SOURCES = mln_trace_entering.cc -mln_trace_essential_SOURCES = mln_trace_essential.cc -mln_trace_exiting_SOURCES = mln_trace_exiting.cc -mln_trace_quiet_SOURCES = mln_trace_quiet.cc -mln_trace_resume_SOURCES = mln_trace_resume.cc -mln_trace_stop_SOURCES = mln_trace_stop.cc -mln_trace_warning_SOURCES = mln_trace_warning.cc -mln_trait_accumulator_print_SOURCES = mln_trait_accumulator_print.cc -mln_trait_accumulator_props_SOURCES = mln_trait_accumulator_props.cc -mln_trait_accumulators_SOURCES = mln_trait_accumulators.cc -mln_trait_all_SOURCES = mln_trait_all.cc -mln_trait_ch_function_value_SOURCES = mln_trait_ch_function_value.cc -mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc -mln_trait_concrete_SOURCES = mln_trait_concrete.cc -mln_trait_essential_SOURCES = mln_trait_essential.cc -mln_trait_functions_SOURCES = mln_trait_functions.cc -mln_trait_image_print_SOURCES = mln_trait_image_print.cc -mln_trait_image_props_SOURCES = mln_trait_image_props.cc -mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc -mln_trait_images_SOURCES = mln_trait_images.cc -mln_trait_neighborhood_SOURCES = mln_trait_neighborhood.cc -mln_trait_next_solve_SOURCES = mln_trait_next_solve.cc -mln_trait_next_solve_binary_SOURCES = mln_trait_next_solve_binary.cc -mln_trait_next_solve_proxy_SOURCES = mln_trait_next_solve_proxy.cc -mln_trait_next_solve_unary_SOURCES = mln_trait_next_solve_unary.cc -mln_trait_op_all_SOURCES = mln_trait_op_all.cc -mln_trait_op_and_SOURCES = mln_trait_op_and.cc -mln_trait_op_decl_SOURCES = mln_trait_op_decl.cc -mln_trait_op_div_SOURCES = mln_trait_op_div.cc -mln_trait_op_eq_SOURCES = mln_trait_op_eq.cc -mln_trait_op_essential_SOURCES = mln_trait_op_essential.cc -mln_trait_op_geq_SOURCES = mln_trait_op_geq.cc -mln_trait_op_greater_SOURCES = mln_trait_op_greater.cc -mln_trait_op_leq_SOURCES = mln_trait_op_leq.cc -mln_trait_op_less_SOURCES = mln_trait_op_less.cc -mln_trait_op_lor_SOURCES = mln_trait_op_lor.cc -mln_trait_op_minus_SOURCES = mln_trait_op_minus.cc -mln_trait_op_mod_SOURCES = mln_trait_op_mod.cc -mln_trait_op_neq_SOURCES = mln_trait_op_neq.cc -mln_trait_op_not_SOURCES = mln_trait_op_not.cc -mln_trait_op_or_SOURCES = mln_trait_op_or.cc -mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc -mln_trait_op_plus_SOURCES = mln_trait_op_plus.cc -mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc -mln_trait_op_postinc_SOURCES = mln_trait_op_postinc.cc -mln_trait_op_predec_SOURCES = mln_trait_op_predec.cc -mln_trait_op_preinc_SOURCES = mln_trait_op_preinc.cc -mln_trait_op_times_SOURCES = mln_trait_op_times.cc -mln_trait_op_uminus_SOURCES = mln_trait_op_uminus.cc -mln_trait_op_uplus_SOURCES = mln_trait_op_uplus.cc -mln_trait_op_xor_SOURCES = mln_trait_op_xor.cc -mln_trait_promote_SOURCES = mln_trait_promote.cc -mln_trait_site_set_print_SOURCES = mln_trait_site_set_print.cc -mln_trait_site_set_props_SOURCES = mln_trait_site_set_props.cc -mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc -mln_trait_solve_SOURCES = mln_trait_solve.cc -mln_trait_solve_binary_SOURCES = mln_trait_solve_binary.cc -mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc -mln_trait_undef_SOURCES = mln_trait_undef.cc -mln_trait_value_all_SOURCES = mln_trait_value_all.cc -mln_trait_value_comp_SOURCES = mln_trait_value_comp.cc -mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc -mln_trait_value_internal_all_SOURCES = mln_trait_value_internal_all.cc -mln_trait_value_internal_comp_SOURCES = mln_trait_value_internal_comp.cc -mln_trait_value_kind_SOURCES = mln_trait_value_kind.cc -mln_trait_value_nature_SOURCES = mln_trait_value_nature.cc -mln_trait_value_print_SOURCES = mln_trait_value_print.cc -mln_trait_value_quant_SOURCES = mln_trait_value_quant.cc -mln_trait_value__SOURCES = mln_trait_value_.cc -mln_trait_window_print_SOURCES = mln_trait_window_print.cc -mln_trait_window_props_SOURCES = mln_trait_window_props.cc -mln_trait_windows_SOURCES = mln_trait_windows.cc -mln_transform_all_SOURCES = mln_transform_all.cc -mln_transform_distance_and_closest_point_geodesic_SOURCES = mln_transform_distance_and_closest_point_geodesic.cc -mln_transform_distance_and_influence_zone_geodesic_SOURCES = mln_transform_distance_and_influence_zone_geodesic.cc -mln_transform_distance_front_SOURCES = mln_transform_distance_front.cc -mln_transform_distance_geodesic_SOURCES = mln_transform_distance_geodesic.cc -mln_transform_essential_SOURCES = mln_transform_essential.cc -mln_transform_hough_SOURCES = mln_transform_hough.cc -mln_transform_influence_zone_front_SOURCES = mln_transform_influence_zone_front.cc -mln_transform_influence_zone_geodesic_SOURCES = mln_transform_influence_zone_geodesic.cc -mln_transform_influence_zone_geodesic_saturated_SOURCES = mln_transform_influence_zone_geodesic_saturated.cc -mln_transform_internal_all_SOURCES = mln_transform_internal_all.cc -mln_transform_internal_closest_point_functor_SOURCES = mln_transform_internal_closest_point_functor.cc -mln_transform_internal_distance_functor_SOURCES = mln_transform_internal_distance_functor.cc -mln_transform_internal_influence_zone_functor_SOURCES = mln_transform_internal_influence_zone_functor.cc -mln_upscaling_art_scale2x_SOURCES = mln_upscaling_art_scale2x.cc -mln_upscaling_art_scale3x_SOURCES = mln_upscaling_art_scale3x.cc -mln_util_adjacency_matrix_SOURCES = mln_util_adjacency_matrix.cc -mln_util_all_SOURCES = mln_util_all.cc -mln_util_array_SOURCES = mln_util_array.cc -mln_util_branch_iter_SOURCES = mln_util_branch_iter.cc -mln_util_branch_iter_ind_SOURCES = mln_util_branch_iter_ind.cc -mln_util_couple_SOURCES = mln_util_couple.cc -mln_util_dindex_SOURCES = mln_util_dindex.cc -mln_util_eat_SOURCES = mln_util_eat.cc -mln_util_edge_SOURCES = mln_util_edge.cc -mln_util_essential_SOURCES = mln_util_essential.cc -mln_util_fibonacci_heap_SOURCES = mln_util_fibonacci_heap.cc -mln_util_graph_SOURCES = mln_util_graph.cc -mln_util_graph_ids_SOURCES = mln_util_graph_ids.cc -mln_util_greater_point_SOURCES = mln_util_greater_point.cc -mln_util_greater_psite_SOURCES = mln_util_greater_psite.cc -mln_util_hqueues_SOURCES = mln_util_hqueues.cc -mln_util_ignore_SOURCES = mln_util_ignore.cc -mln_util_index_SOURCES = mln_util_index.cc -mln_util_internal_edge_impl_SOURCES = mln_util_internal_edge_impl.cc -mln_util_internal_graph_base_SOURCES = mln_util_internal_graph_base.cc -mln_util_internal_graph_iter_SOURCES = mln_util_internal_graph_iter.cc -mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc -mln_util_internal_graph_nbh_iter_SOURCES = mln_util_internal_graph_nbh_iter.cc -mln_util_internal_graph_nbh_iter_base_SOURCES = mln_util_internal_graph_nbh_iter_base.cc -mln_util_internal_id2element_SOURCES = mln_util_internal_id2element.cc -mln_util_internal_vertex_impl_SOURCES = mln_util_internal_vertex_impl.cc -mln_util_lazy_set_SOURCES = mln_util_lazy_set.cc -mln_util_lemmings_SOURCES = mln_util_lemmings.cc -mln_util_line_graph_SOURCES = mln_util_line_graph.cc -mln_util_max_SOURCES = mln_util_max.cc -mln_util_multi_site_SOURCES = mln_util_multi_site.cc -mln_util_nil_SOURCES = mln_util_nil.cc -mln_util_object_id_SOURCES = mln_util_object_id.cc -mln_util_ord_SOURCES = mln_util_ord.cc -mln_util_ord_pair_SOURCES = mln_util_ord_pair.cc -mln_util_pix_SOURCES = mln_util_pix.cc -mln_util_set_SOURCES = mln_util_set.cc -mln_util_site_pair_SOURCES = mln_util_site_pair.cc -mln_util_soft_heap_SOURCES = mln_util_soft_heap.cc -mln_util_timer_SOURCES = mln_util_timer.cc -mln_util_tracked_ptr_SOURCES = mln_util_tracked_ptr.cc -mln_util_tree_SOURCES = mln_util_tree.cc -mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc -mln_util_tree_fast_to_image_SOURCES = mln_util_tree_fast_to_image.cc -mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc -mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc -mln_util_vertex_SOURCES = mln_util_vertex.cc -mln_util_yes_SOURCES = mln_util_yes.cc -mln_value_aliases_SOURCES = mln_value_aliases.cc -mln_value_all_SOURCES = mln_value_all.cc -mln_value_builtin_all_SOURCES = mln_value_builtin_all.cc -mln_value_builtin_carrays_SOURCES = mln_value_builtin_carrays.cc -mln_value_builtin_essential_SOURCES = mln_value_builtin_essential.cc -mln_value_builtin_floatings_SOURCES = mln_value_builtin_floatings.cc -mln_value_builtin_integers_SOURCES = mln_value_builtin_integers.cc -mln_value_builtin_ops_SOURCES = mln_value_builtin_ops.cc -mln_value_builtin_promotions_SOURCES = mln_value_builtin_promotions.cc -mln_value_builtin_symbolics_SOURCES = mln_value_builtin_symbolics.cc -mln_value_cast_SOURCES = mln_value_cast.cc -mln_value_concept_all_SOURCES = mln_value_concept_all.cc -mln_value_concept_built_in_SOURCES = mln_value_concept_built_in.cc -mln_value_concept_data_SOURCES = mln_value_concept_data.cc -mln_value_concept_essential_SOURCES = mln_value_concept_essential.cc -mln_value_concept_floating_SOURCES = mln_value_concept_floating.cc -mln_value_concept_integer_SOURCES = mln_value_concept_integer.cc -mln_value_concept_scalar_SOURCES = mln_value_concept_scalar.cc -mln_value_concept_structured_SOURCES = mln_value_concept_structured.cc -mln_value_concept_symbolic_SOURCES = mln_value_concept_symbolic.cc -mln_value_concept_vectorial_SOURCES = mln_value_concept_vectorial.cc -mln_value_equiv_SOURCES = mln_value_equiv.cc -mln_value_essential_SOURCES = mln_value_essential.cc -mln_value_float01_SOURCES = mln_value_float01.cc -mln_value_float01__SOURCES = mln_value_float01_.cc -mln_value_float01_16_SOURCES = mln_value_float01_16.cc -mln_value_float01_8_SOURCES = mln_value_float01_8.cc -mln_value_float01_f_SOURCES = mln_value_float01_f.cc -mln_value_gl16_SOURCES = mln_value_gl16.cc -mln_value_gl8_SOURCES = mln_value_gl8.cc -mln_value_glf_SOURCES = mln_value_glf.cc -mln_value_graylevel_SOURCES = mln_value_graylevel.cc -mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc -mln_value_hsi_SOURCES = mln_value_hsi.cc -mln_value_hsl_SOURCES = mln_value_hsl.cc -mln_value_int_s_SOURCES = mln_value_int_s.cc -mln_value_int_s16_SOURCES = mln_value_int_s16.cc -mln_value_int_s32_SOURCES = mln_value_int_s32.cc -mln_value_int_s8_SOURCES = mln_value_int_s8.cc -mln_value_int_u_SOURCES = mln_value_int_u.cc -mln_value_int_u12_SOURCES = mln_value_int_u12.cc -mln_value_int_u16_SOURCES = mln_value_int_u16.cc -mln_value_int_u32_SOURCES = mln_value_int_u32.cc -mln_value_int_u8_SOURCES = mln_value_int_u8.cc -mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc -mln_value_internal_all_SOURCES = mln_value_internal_all.cc -mln_value_internal_convert_SOURCES = mln_value_internal_convert.cc -mln_value_internal_encoding_SOURCES = mln_value_internal_encoding.cc -mln_value_internal_essential_SOURCES = mln_value_internal_essential.cc -mln_value_internal_gray__SOURCES = mln_value_internal_gray_.cc -mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc -mln_value_internal_integer_SOURCES = mln_value_internal_integer.cc -mln_value_internal_iterable_set_SOURCES = mln_value_internal_iterable_set.cc -mln_value_internal_limits_SOURCES = mln_value_internal_limits.cc -mln_value_internal_make_generic_name_SOURCES = mln_value_internal_make_generic_name.cc -mln_value_internal_value_like_SOURCES = mln_value_internal_value_like.cc -mln_value_interval_SOURCES = mln_value_interval.cc -mln_value_label_SOURCES = mln_value_label.cc -mln_value_label_16_SOURCES = mln_value_label_16.cc -mln_value_label_32_SOURCES = mln_value_label_32.cc -mln_value_label_8_SOURCES = mln_value_label_8.cc -mln_value_lut_vec_SOURCES = mln_value_lut_vec.cc -mln_value_mixin_SOURCES = mln_value_mixin.cc -mln_value_next_SOURCES = mln_value_next.cc -mln_value_ops_SOURCES = mln_value_ops.cc -mln_value_other_SOURCES = mln_value_other.cc -mln_value_proxy_SOURCES = mln_value_proxy.cc -mln_value_qt_rgb32_SOURCES = mln_value_qt_rgb32.cc -mln_value_rgb_SOURCES = mln_value_rgb.cc -mln_value_rgb16_SOURCES = mln_value_rgb16.cc -mln_value_rgb8_SOURCES = mln_value_rgb8.cc -mln_value_scalar_SOURCES = mln_value_scalar.cc -mln_value_set_SOURCES = mln_value_set.cc -mln_value_shell_SOURCES = mln_value_shell.cc -mln_value_sign_SOURCES = mln_value_sign.cc -mln_value_stack_SOURCES = mln_value_stack.cc -mln_value_super_value_SOURCES = mln_value_super_value.cc -mln_value_value_array_SOURCES = mln_value_value_array.cc -mln_value_viter_SOURCES = mln_value_viter.cc -mln_win_all_SOURCES = mln_win_all.cc -mln_win_backdiag2d_SOURCES = mln_win_backdiag2d.cc -mln_win_ball_SOURCES = mln_win_ball.cc -mln_win_cube3d_SOURCES = mln_win_cube3d.cc -mln_win_cuboid3d_SOURCES = mln_win_cuboid3d.cc -mln_win_diag2d_SOURCES = mln_win_diag2d.cc -mln_win_diff_SOURCES = mln_win_diff.cc -mln_win_disk2d_SOURCES = mln_win_disk2d.cc -mln_win_essential_SOURCES = mln_win_essential.cc -mln_win_hline2d_SOURCES = mln_win_hline2d.cc -mln_win_inter_SOURCES = mln_win_inter.cc -mln_win_line_SOURCES = mln_win_line.cc -mln_win_multiple_SOURCES = mln_win_multiple.cc -mln_win_multiple_size_SOURCES = mln_win_multiple_size.cc -mln_win_octagon2d_SOURCES = mln_win_octagon2d.cc -mln_win_rectangle2d_SOURCES = mln_win_rectangle2d.cc -mln_win_segment1d_SOURCES = mln_win_segment1d.cc -mln_win_shift_SOURCES = mln_win_shift.cc -mln_win_sline3d_SOURCES = mln_win_sline3d.cc -mln_win_sphere3d_SOURCES = mln_win_sphere3d.cc -mln_win_sym_SOURCES = mln_win_sym.cc -mln_win_vline2d_SOURCES = mln_win_vline2d.cc -mln_world_all_SOURCES = mln_world_all.cc -mln_world_binary_2d_all_SOURCES = mln_world_binary_2d_all.cc -mln_world_binary_2d_enlarge_SOURCES = mln_world_binary_2d_enlarge.cc -mln_world_binary_2d_projected_histo_SOURCES = mln_world_binary_2d_projected_histo.cc -mln_world_binary_2d_subsample_SOURCES = mln_world_binary_2d_subsample.cc -mln_world_inter_pixel_all_SOURCES = mln_world_inter_pixel_all.cc -mln_world_inter_pixel_compute_SOURCES = mln_world_inter_pixel_compute.cc -mln_world_inter_pixel_dim2_all_SOURCES = mln_world_inter_pixel_dim2_all.cc -mln_world_inter_pixel_dim2_is_dot_SOURCES = mln_world_inter_pixel_dim2_is_dot.cc -mln_world_inter_pixel_dim2_is_edge_SOURCES = mln_world_inter_pixel_dim2_is_edge.cc -mln_world_inter_pixel_dim2_is_pixel_SOURCES = mln_world_inter_pixel_dim2_is_pixel.cc -mln_world_inter_pixel_dim2_is_row_odd_SOURCES = mln_world_inter_pixel_dim2_is_row_odd.cc -mln_world_inter_pixel_dim2_make_edge_image_SOURCES = mln_world_inter_pixel_dim2_make_edge_image.cc -mln_world_inter_pixel_display_edge_SOURCES = mln_world_inter_pixel_display_edge.cc -mln_world_inter_pixel_full2image_SOURCES = mln_world_inter_pixel_full2image.cc -mln_world_inter_pixel_immerse_SOURCES = mln_world_inter_pixel_immerse.cc -mln_world_inter_pixel_is_pixel_SOURCES = mln_world_inter_pixel_is_pixel.cc -mln_world_inter_pixel_is_separator_SOURCES = mln_world_inter_pixel_is_separator.cc -mln_world_inter_pixel_neighb2d_SOURCES = mln_world_inter_pixel_neighb2d.cc -mln_world_inter_pixel_separator_to_pixels_SOURCES = mln_world_inter_pixel_separator_to_pixels.cc -mln_world_rgb_invert_SOURCES = mln_world_rgb_invert.cc -======= ->>>>>>> next -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-223-gaca68d9 tests/unit_test/unit-tests.mk: Update.
by Guillaume Lazzara
--- scribo/ChangeLog | 4 + scribo/tests/unit_test/unit-tests.mk | 257 ---------------------------------- 2 files changed, 4 insertions(+), 257 deletions(-) diff --git a/scribo/ChangeLog b/scribo/ChangeLog index 1e2239b..c4bdcfc 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,5 +1,9 @@ 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + * tests/unit_test/unit-tests.mk: Update. + +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + Fix call to text_in_doc_preprocess(). * src/content_in_hdoc.cc, diff --git a/scribo/tests/unit_test/unit-tests.mk b/scribo/tests/unit_test/unit-tests.mk index 79ac57f..cb92f21 100644 --- a/scribo/tests/unit_test/unit-tests.mk +++ b/scribo/tests/unit_test/unit-tests.mk @@ -437,261 +437,4 @@ scribo_util_color_to_hex \ scribo_util_component_precise_outline \ scribo_util_hex_to_color -<<<<<<< HEAD -scribo_all_SOURCES = scribo_all.cc -scribo_binarization_all_SOURCES = scribo_binarization_all.cc -scribo_binarization_global_threshold_SOURCES = scribo_binarization_global_threshold.cc -scribo_binarization_global_threshold_auto_SOURCES = scribo_binarization_global_threshold_auto.cc -scribo_binarization_internal_compute_local_threshold_SOURCES = scribo_binarization_internal_compute_local_threshold.cc -scribo_binarization_internal_first_pass_functor_SOURCES = scribo_binarization_internal_first_pass_functor.cc -scribo_binarization_internal_local_threshold_debug_SOURCES = scribo_binarization_internal_local_threshold_debug.cc -scribo_binarization_internal_niblack_formula_SOURCES = scribo_binarization_internal_niblack_formula.cc -scribo_binarization_internal_sauvola_formula_SOURCES = scribo_binarization_internal_sauvola_formula.cc -scribo_binarization_local_threshold_SOURCES = scribo_binarization_local_threshold.cc -scribo_binarization_niblack_SOURCES = scribo_binarization_niblack.cc -scribo_binarization_niblack_threshold_SOURCES = scribo_binarization_niblack_threshold.cc -scribo_binarization_otsu_SOURCES = scribo_binarization_otsu.cc -scribo_binarization_otsu_threshold_SOURCES = scribo_binarization_otsu_threshold.cc -scribo_binarization_sauvola_SOURCES = scribo_binarization_sauvola.cc -scribo_binarization_sauvola_ms_SOURCES = scribo_binarization_sauvola_ms.cc -scribo_binarization_sauvola_ms_split_SOURCES = scribo_binarization_sauvola_ms_split.cc -scribo_binarization_sauvola_threshold_SOURCES = scribo_binarization_sauvola_threshold.cc -scribo_canvas_integral_browsing_SOURCES = scribo_canvas_integral_browsing.cc -scribo_convert_to_base64_SOURCES = scribo_convert_to_base64.cc -scribo_core_all_SOURCES = scribo_core_all.cc -scribo_core_central_sites_SOURCES = scribo_core_central_sites.cc -scribo_core_component_features_data_SOURCES = scribo_core_component_features_data.cc -scribo_core_component_info_SOURCES = scribo_core_component_info.cc -scribo_core_component_set_SOURCES = scribo_core_component_set.cc -scribo_core_concept_dmax_functor_SOURCES = scribo_core_concept_dmax_functor.cc -scribo_core_concept_link_functor_SOURCES = scribo_core_concept_link_functor.cc -scribo_core_concept_serializable_SOURCES = scribo_core_concept_serializable.cc -scribo_core_concept_serialize_visitor_SOURCES = scribo_core_concept_serialize_visitor.cc -scribo_core_def_color_type_SOURCES = scribo_core_def_color_type.cc -scribo_core_def_lbl_type_SOURCES = scribo_core_def_lbl_type.cc -scribo_core_erase_objects_SOURCES = scribo_core_erase_objects.cc -scribo_core_group_info_SOURCES = scribo_core_group_info.cc -scribo_core_init_integral_image_SOURCES = scribo_core_init_integral_image.cc -scribo_core_internal_sort_comp_ids_SOURCES = scribo_core_internal_sort_comp_ids.cc -scribo_core_line_info_SOURCES = scribo_core_line_info.cc -scribo_core_line_links_SOURCES = scribo_core_line_links.cc -scribo_core_line_set_SOURCES = scribo_core_line_set.cc -scribo_core_macros_SOURCES = scribo_core_macros.cc -scribo_core_object_groups_SOURCES = scribo_core_object_groups.cc -scribo_core_object_links_SOURCES = scribo_core_object_links.cc -scribo_core_paragraph_info_SOURCES = scribo_core_paragraph_info.cc -scribo_core_paragraph_set_SOURCES = scribo_core_paragraph_set.cc -scribo_core_stats_SOURCES = scribo_core_stats.cc -scribo_core_tag_anchor_SOURCES = scribo_core_tag_anchor.cc -scribo_core_tag_component_SOURCES = scribo_core_tag_component.cc -scribo_core_tag_line_SOURCES = scribo_core_tag_line.cc -scribo_core_tag_paragraph_SOURCES = scribo_core_tag_paragraph.cc -scribo_debug_alignment_decision_image_SOURCES = scribo_debug_alignment_decision_image.cc -scribo_debug_all_SOURCES = scribo_debug_all.cc -scribo_debug_bboxes_enlarged_image_SOURCES = scribo_debug_bboxes_enlarged_image.cc -scribo_debug_bboxes_image_SOURCES = scribo_debug_bboxes_image.cc -scribo_debug_char_space_image_SOURCES = scribo_debug_char_space_image.cc -scribo_debug_decision_image_SOURCES = scribo_debug_decision_image.cc -scribo_debug_highlight_text_area_SOURCES = scribo_debug_highlight_text_area.cc -scribo_debug_line_info_image_SOURCES = scribo_debug_line_info_image.cc -scribo_debug_linked_bboxes_image_SOURCES = scribo_debug_linked_bboxes_image.cc -scribo_debug_links_decision_image_SOURCES = scribo_debug_links_decision_image.cc -scribo_debug_links_image_SOURCES = scribo_debug_links_image.cc -scribo_debug_logger_SOURCES = scribo_debug_logger.cc -scribo_debug_looks_like_a_text_line_image_SOURCES = scribo_debug_looks_like_a_text_line_image.cc -scribo_debug_mean_and_base_lines_image_SOURCES = scribo_debug_mean_and_base_lines_image.cc -scribo_debug_option_check_SOURCES = scribo_debug_option_check.cc -scribo_debug_option_parser_SOURCES = scribo_debug_option_parser.cc -scribo_debug_save_comp_diff_SOURCES = scribo_debug_save_comp_diff.cc -scribo_debug_save_label_image_SOURCES = scribo_debug_save_label_image.cc -scribo_debug_save_table_image_SOURCES = scribo_debug_save_table_image.cc -scribo_debug_text_areas_image_SOURCES = scribo_debug_text_areas_image.cc -scribo_debug_usage_SOURCES = scribo_debug_usage.cc -scribo_draw_all_SOURCES = scribo_draw_all.cc -scribo_draw_bounding_box_links_SOURCES = scribo_draw_bounding_box_links.cc -scribo_draw_bounding_boxes_SOURCES = scribo_draw_bounding_boxes.cc -scribo_draw_groups_bboxes_SOURCES = scribo_draw_groups_bboxes.cc -scribo_draw_line_components_SOURCES = scribo_draw_line_components.cc -scribo_estim_components_features_SOURCES = scribo_estim_components_features.cc -scribo_estim_font_boldness_SOURCES = scribo_estim_font_boldness.cc -scribo_estim_font_color_SOURCES = scribo_estim_font_color.cc -scribo_estim_internal_compute_skeleton_SOURCES = scribo_estim_internal_compute_skeleton.cc -scribo_estim_object_groups_mean_width_SOURCES = scribo_estim_object_groups_mean_width.cc -scribo_filter_all_SOURCES = scribo_filter_all.cc -scribo_filter_common_objects_photo_SOURCES = scribo_filter_common_objects_photo.cc -scribo_filter_internal_alignment_angle_SOURCES = scribo_filter_internal_alignment_angle.cc -scribo_filter_internal_component_aligned_SOURCES = scribo_filter_internal_component_aligned.cc -scribo_filter_internal_compute_SOURCES = scribo_filter_internal_compute.cc -scribo_filter_line_links_x_height_SOURCES = scribo_filter_line_links_x_height.cc -scribo_filter_object_groups_mean_width_SOURCES = scribo_filter_object_groups_mean_width.cc -scribo_filter_object_groups_size_ratio_SOURCES = scribo_filter_object_groups_size_ratio.cc -scribo_filter_object_groups_small_SOURCES = scribo_filter_object_groups_small.cc -scribo_filter_object_groups_with_holes_SOURCES = scribo_filter_object_groups_with_holes.cc -scribo_filter_object_links_aligned_SOURCES = scribo_filter_object_links_aligned.cc -scribo_filter_object_links_bbox_h_ratio_SOURCES = scribo_filter_object_links_bbox_h_ratio.cc -scribo_filter_object_links_bbox_overlap_SOURCES = scribo_filter_object_links_bbox_overlap.cc -scribo_filter_object_links_bbox_ratio_SOURCES = scribo_filter_object_links_bbox_ratio.cc -scribo_filter_object_links_bbox_w_ratio_SOURCES = scribo_filter_object_links_bbox_w_ratio.cc -scribo_filter_object_links_bottom_aligned_SOURCES = scribo_filter_object_links_bottom_aligned.cc -scribo_filter_object_links_center_aligned_SOURCES = scribo_filter_object_links_center_aligned.cc -scribo_filter_object_links_left_aligned_SOURCES = scribo_filter_object_links_left_aligned.cc -scribo_filter_object_links_non_aligned_simple_SOURCES = scribo_filter_object_links_non_aligned_simple.cc -scribo_filter_object_links_right_aligned_SOURCES = scribo_filter_object_links_right_aligned.cc -scribo_filter_object_links_top_aligned_SOURCES = scribo_filter_object_links_top_aligned.cc -scribo_filter_objects_h_thick_SOURCES = scribo_filter_objects_h_thick.cc -scribo_filter_objects_h_thin_SOURCES = scribo_filter_objects_h_thin.cc -scribo_filter_objects_large_SOURCES = scribo_filter_objects_large.cc -scribo_filter_objects_on_border_SOURCES = scribo_filter_objects_on_border.cc -scribo_filter_objects_size_ratio_SOURCES = scribo_filter_objects_size_ratio.cc -scribo_filter_objects_small_SOURCES = scribo_filter_objects_small.cc -scribo_filter_objects_thick_SOURCES = scribo_filter_objects_thick.cc -scribo_filter_objects_thin_SOURCES = scribo_filter_objects_thin.cc -scribo_filter_objects_v_thick_SOURCES = scribo_filter_objects_v_thick.cc -scribo_filter_objects_v_thin_SOURCES = scribo_filter_objects_v_thin.cc -scribo_filter_objects_with_holes_SOURCES = scribo_filter_objects_with_holes.cc -scribo_filter_paragraphs_bbox_overlap_SOURCES = scribo_filter_paragraphs_bbox_overlap.cc -scribo_fun_v2b_label_to_bool_SOURCES = scribo_fun_v2b_label_to_bool.cc -scribo_fun_v2b_objects_large_filter_SOURCES = scribo_fun_v2b_objects_large_filter.cc -scribo_fun_v2b_objects_on_border_filter_SOURCES = scribo_fun_v2b_objects_on_border_filter.cc -scribo_fun_v2b_objects_small_filter_SOURCES = scribo_fun_v2b_objects_small_filter.cc -scribo_fun_v2v_highlight_SOURCES = scribo_fun_v2v_highlight.cc -scribo_io_img_internal_draw_edges_SOURCES = scribo_io_img_internal_draw_edges.cc -scribo_io_text_boxes_save_SOURCES = scribo_io_text_boxes_save.cc -scribo_io_xml_internal_compute_text_colour_SOURCES = scribo_io_xml_internal_compute_text_colour.cc -scribo_io_xml_internal_print_box_coords_SOURCES = scribo_io_xml_internal_print_box_coords.cc -scribo_io_xml_internal_print_image_coords_SOURCES = scribo_io_xml_internal_print_image_coords.cc -scribo_io_xml_internal_time_info_SOURCES = scribo_io_xml_internal_time_info.cc -scribo_make_all_SOURCES = scribo_make_all.cc -scribo_make_debug_filename_SOURCES = scribo_make_debug_filename.cc -scribo_make_influence_zone_graph_SOURCES = scribo_make_influence_zone_graph.cc -scribo_postprocessing_all_SOURCES = scribo_postprocessing_all.cc -scribo_postprocessing_fill_object_holes_SOURCES = scribo_postprocessing_fill_object_holes.cc -scribo_preprocessing_all_SOURCES = scribo_preprocessing_all.cc -scribo_preprocessing_crop_SOURCES = scribo_preprocessing_crop.cc -scribo_preprocessing_crop_without_localization_SOURCES = scribo_preprocessing_crop_without_localization.cc -scribo_preprocessing_denoise_SOURCES = scribo_preprocessing_denoise.cc -scribo_preprocessing_denoise_bg_SOURCES = scribo_preprocessing_denoise_bg.cc -scribo_preprocessing_denoise_fg_SOURCES = scribo_preprocessing_denoise_fg.cc -scribo_preprocessing_deskew_SOURCES = scribo_preprocessing_deskew.cc -scribo_preprocessing_deskew_crop_SOURCES = scribo_preprocessing_deskew_crop.cc -scribo_preprocessing_homogeneous_contrast_SOURCES = scribo_preprocessing_homogeneous_contrast.cc -scribo_preprocessing_rotate_90_SOURCES = scribo_preprocessing_rotate_90.cc -scribo_preprocessing_split_bg_fg_SOURCES = scribo_preprocessing_split_bg_fg.cc -scribo_primitive_all_SOURCES = scribo_primitive_all.cc -scribo_primitive_extract_all_SOURCES = scribo_primitive_extract_all.cc -scribo_primitive_extract_canvas_SOURCES = scribo_primitive_extract_canvas.cc -scribo_primitive_extract_cells_SOURCES = scribo_primitive_extract_cells.cc -scribo_primitive_extract_components_SOURCES = scribo_primitive_extract_components.cc -scribo_primitive_extract_horizontal_separators_SOURCES = scribo_primitive_extract_horizontal_separators.cc -scribo_primitive_extract_internal_union_SOURCES = scribo_primitive_extract_internal_union.cc -scribo_primitive_extract_lines_discontinued_SOURCES = scribo_primitive_extract_lines_discontinued.cc -scribo_primitive_extract_lines_h_discontinued_SOURCES = scribo_primitive_extract_lines_h_discontinued.cc -scribo_primitive_extract_lines_h_pattern_SOURCES = scribo_primitive_extract_lines_h_pattern.cc -scribo_primitive_extract_lines_h_single_SOURCES = scribo_primitive_extract_lines_h_single.cc -scribo_primitive_extract_lines_h_thick_SOURCES = scribo_primitive_extract_lines_h_thick.cc -scribo_primitive_extract_lines_h_thick_and_single_SOURCES = scribo_primitive_extract_lines_h_thick_and_single.cc -scribo_primitive_extract_lines_h_thick_and_thin_SOURCES = scribo_primitive_extract_lines_h_thick_and_thin.cc -scribo_primitive_extract_lines_pattern_SOURCES = scribo_primitive_extract_lines_pattern.cc -scribo_primitive_extract_lines_thick_SOURCES = scribo_primitive_extract_lines_thick.cc -scribo_primitive_extract_lines_v_discontinued_SOURCES = scribo_primitive_extract_lines_v_discontinued.cc -scribo_primitive_extract_lines_v_pattern_SOURCES = scribo_primitive_extract_lines_v_pattern.cc -scribo_primitive_extract_lines_v_single_SOURCES = scribo_primitive_extract_lines_v_single.cc -scribo_primitive_extract_lines_v_thick_SOURCES = scribo_primitive_extract_lines_v_thick.cc -scribo_primitive_extract_lines_v_thick_and_single_SOURCES = scribo_primitive_extract_lines_v_thick_and_single.cc -scribo_primitive_extract_separators_SOURCES = scribo_primitive_extract_separators.cc -scribo_primitive_extract_separators_nonvisible_SOURCES = scribo_primitive_extract_separators_nonvisible.cc -scribo_primitive_extract_vertical_separators_SOURCES = scribo_primitive_extract_vertical_separators.cc -scribo_primitive_group_all_SOURCES = scribo_primitive_group_all.cc -scribo_primitive_group_apply_SOURCES = scribo_primitive_group_apply.cc -scribo_primitive_group_from_double_link_SOURCES = scribo_primitive_group_from_double_link.cc -scribo_primitive_group_from_double_link_any_SOURCES = scribo_primitive_group_from_double_link_any.cc -scribo_primitive_group_from_graph_SOURCES = scribo_primitive_group_from_graph.cc -scribo_primitive_group_from_single_link_SOURCES = scribo_primitive_group_from_single_link.cc -scribo_primitive_identify_SOURCES = scribo_primitive_identify.cc -scribo_primitive_internal_all_SOURCES = scribo_primitive_internal_all.cc -scribo_primitive_internal_find_graph_link_SOURCES = scribo_primitive_internal_find_graph_link.cc -scribo_primitive_internal_find_root_SOURCES = scribo_primitive_internal_find_root.cc -scribo_primitive_internal_have_link_valid_SOURCES = scribo_primitive_internal_have_link_valid.cc -scribo_primitive_internal_is_link_valid_SOURCES = scribo_primitive_internal_is_link_valid.cc -scribo_primitive_internal_rd_SOURCES = scribo_primitive_internal_rd.cc -scribo_primitive_internal_update_graph_link_SOURCES = scribo_primitive_internal_update_graph_link.cc -scribo_primitive_link_all_SOURCES = scribo_primitive_link_all.cc -scribo_primitive_link_compute_SOURCES = scribo_primitive_link_compute.cc -scribo_primitive_link_internal_compute_anchor_SOURCES = scribo_primitive_link_internal_compute_anchor.cc -scribo_primitive_link_internal_dmax_default_SOURCES = scribo_primitive_link_internal_dmax_default.cc -scribo_primitive_link_internal_dmax_functor_base_SOURCES = scribo_primitive_link_internal_dmax_functor_base.cc -scribo_primitive_link_internal_dmax_hrules_SOURCES = scribo_primitive_link_internal_dmax_hrules.cc -scribo_primitive_link_internal_dmax_width_and_height_SOURCES = scribo_primitive_link_internal_dmax_width_and_height.cc -scribo_primitive_link_internal_dmax_width_only_SOURCES = scribo_primitive_link_internal_dmax_width_only.cc -scribo_primitive_link_internal_find_link_SOURCES = scribo_primitive_link_internal_find_link.cc -scribo_primitive_link_internal_link_functor_base_SOURCES = scribo_primitive_link_internal_link_functor_base.cc -scribo_primitive_link_internal_link_several_dmax_base_SOURCES = scribo_primitive_link_internal_link_several_dmax_base.cc -scribo_primitive_link_internal_link_single_dmax_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_base.cc -scribo_primitive_link_internal_link_single_dmax_ratio_aligned_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_aligned_base.cc -scribo_primitive_link_internal_link_single_dmax_ratio_aligned_delta_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_aligned_delta_base.cc -scribo_primitive_link_internal_link_single_dmax_ratio_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_base.cc -scribo_primitive_link_merge_double_link_SOURCES = scribo_primitive_link_merge_double_link.cc -scribo_primitive_link_merge_double_link_closest_aligned_SOURCES = scribo_primitive_link_merge_double_link_closest_aligned.cc -scribo_primitive_link_with_graph_SOURCES = scribo_primitive_link_with_graph.cc -scribo_primitive_link_with_rag_SOURCES = scribo_primitive_link_with_rag.cc -scribo_primitive_link_with_several_graphes_SOURCES = scribo_primitive_link_with_several_graphes.cc -scribo_primitive_link_with_several_left_links_SOURCES = scribo_primitive_link_with_several_left_links.cc -scribo_primitive_link_with_several_right_links_SOURCES = scribo_primitive_link_with_several_right_links.cc -scribo_primitive_link_with_single_down_link_SOURCES = scribo_primitive_link_with_single_down_link.cc -scribo_primitive_link_with_single_left_link_SOURCES = scribo_primitive_link_with_single_left_link.cc -scribo_primitive_link_with_single_left_link_dmax_ratio_SOURCES = scribo_primitive_link_with_single_left_link_dmax_ratio.cc -scribo_primitive_link_with_single_left_link_dmax_ratio_aligned_SOURCES = scribo_primitive_link_with_single_left_link_dmax_ratio_aligned.cc -scribo_primitive_link_with_single_right_link_SOURCES = scribo_primitive_link_with_single_right_link.cc -scribo_primitive_link_with_single_right_link_bottom_SOURCES = scribo_primitive_link_with_single_right_link_bottom.cc -scribo_primitive_link_with_single_right_link_dmax_ratio_SOURCES = scribo_primitive_link_with_single_right_link_dmax_ratio.cc -scribo_primitive_link_with_single_right_link_dmax_ratio_aligned_SOURCES = scribo_primitive_link_with_single_right_link_dmax_ratio_aligned.cc -scribo_primitive_link_with_single_right_link_top_SOURCES = scribo_primitive_link_with_single_right_link_top.cc -scribo_primitive_link_with_single_up_link_SOURCES = scribo_primitive_link_with_single_up_link.cc -scribo_primitive_merge_components_SOURCES = scribo_primitive_merge_components.cc -scribo_primitive_regroup_from_single_left_link_SOURCES = scribo_primitive_regroup_from_single_left_link.cc -scribo_primitive_regroup_from_single_left_link_wrt_h_ratio_SOURCES = scribo_primitive_regroup_from_single_left_link_wrt_h_ratio.cc -scribo_primitive_remove_separators_SOURCES = scribo_primitive_remove_separators.cc -scribo_subsampling_bilinear_SOURCES = scribo_subsampling_bilinear.cc -scribo_subsampling_integral_SOURCES = scribo_subsampling_integral.cc -scribo_subsampling_integral_single_image_SOURCES = scribo_subsampling_integral_single_image.cc -scribo_table_align_lines_horizontaly_SOURCES = scribo_table_align_lines_horizontaly.cc -scribo_table_align_lines_verticaly_SOURCES = scribo_table_align_lines_verticaly.cc -scribo_table_all_SOURCES = scribo_table_all.cc -scribo_table_connect_horizontal_lines_SOURCES = scribo_table_connect_horizontal_lines.cc -scribo_table_connect_vertical_lines_SOURCES = scribo_table_connect_vertical_lines.cc -scribo_table_erase_SOURCES = scribo_table_erase.cc -scribo_table_extract_SOURCES = scribo_table_extract.cc -scribo_table_internal_align_lines_SOURCES = scribo_table_internal_align_lines.cc -scribo_table_internal_all_SOURCES = scribo_table_internal_all.cc -scribo_table_internal_connect_lines_SOURCES = scribo_table_internal_connect_lines.cc -scribo_table_internal_repair_lines_SOURCES = scribo_table_internal_repair_lines.cc -scribo_table_rebuild_SOURCES = scribo_table_rebuild.cc -scribo_table_repair_horizontal_lines_SOURCES = scribo_table_repair_horizontal_lines.cc -scribo_table_repair_vertical_lines_SOURCES = scribo_table_repair_vertical_lines.cc -scribo_text_all_SOURCES = scribo_text_all.cc -scribo_text_clean_SOURCES = scribo_text_clean.cc -scribo_text_clean_inplace_SOURCES = scribo_text_clean_inplace.cc -scribo_text_extract_lines_SOURCES = scribo_text_extract_lines.cc -scribo_text_extract_lines_with_features_SOURCES = scribo_text_extract_lines_with_features.cc -scribo_text_extract_paragraphs_SOURCES = scribo_text_extract_paragraphs.cc -scribo_text_extract_paragraphs_hdoc_SOURCES = scribo_text_extract_paragraphs_hdoc.cc -scribo_text_link_lines_SOURCES = scribo_text_link_lines.cc -scribo_text_look_like_text_lines_SOURCES = scribo_text_look_like_text_lines.cc -scribo_text_merging_SOURCES = scribo_text_merging.cc -scribo_text_merging_hdoc_SOURCES = scribo_text_merging_hdoc.cc -scribo_text_paragraphs_closing_SOURCES = scribo_text_paragraphs_closing.cc -scribo_toolchain_internal_text_in_doc_preprocess_functor_SOURCES = scribo_toolchain_internal_text_in_doc_preprocess_functor.cc -scribo_toolchain_internal_text_in_picture_functor_SOURCES = scribo_toolchain_internal_text_in_picture_functor.cc -scribo_toolchain_internal_toolchain_functor_SOURCES = scribo_toolchain_internal_toolchain_functor.cc -scribo_toolchain_text_in_doc_preprocess_SOURCES = scribo_toolchain_text_in_doc_preprocess.cc -scribo_toolchain_text_in_picture_SOURCES = scribo_toolchain_text_in_picture.cc -scribo_upsampling_bs2x_SOURCES = scribo_upsampling_bs2x.cc -scribo_upsampling_eagle_SOURCES = scribo_upsampling_eagle.cc -scribo_util_box_intersection_SOURCES = scribo_util_box_intersection.cc -scribo_util_box_is_included_SOURCES = scribo_util_box_is_included.cc -scribo_util_color_to_hex_SOURCES = scribo_util_color_to_hex.cc -scribo_util_component_precise_outline_SOURCES = scribo_util_component_precise_outline.cc -scribo_util_hex_to_color_SOURCES = scribo_util_hex_to_color.cc -======= ->>>>>>> next -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-222-g94d5458 Fix call to text_in_doc_preprocess().
by Guillaume Lazzara
* src/content_in_hdoc.cc, * src/contest/hdlac-2011/content_in_hdoc_hdlac.cc, * src/non_text_components.cc, * src/text_in_doc_preprocess.cc: Here. --- scribo/ChangeLog | 9 +++++++++ scribo/src/content_in_hdoc.cc | 4 ++-- .../contest/hdlac-2011/content_in_hdoc_hdlac.cc | 8 ++++++++ scribo/src/non_text_components.cc | 2 +- scribo/src/text_in_doc_preprocess.cc | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/scribo/ChangeLog b/scribo/ChangeLog index 37b1518..1e2239b 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,5 +1,14 @@ 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + Fix call to text_in_doc_preprocess(). + + * src/content_in_hdoc.cc, + * src/contest/hdlac-2011/content_in_hdoc_hdlac.cc, + * src/non_text_components.cc, + * src/text_in_doc_preprocess.cc: Here. + +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + Fix various warnings. * scribo/binarization/otsu_threshold.hh: Fix comparisons between diff --git a/scribo/src/content_in_hdoc.cc b/scribo/src/content_in_hdoc.cc index 650c436..c9760fb 100644 --- a/scribo/src/content_in_hdoc.cc +++ b/scribo/src/content_in_hdoc.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2010, 2011, 2012 EPITA Research and Development +// Copyright (C) 2010, 2011, 2012, 2013 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -118,7 +118,7 @@ int main(int argc, char* argv[]) std::cout << "Using K = " << K << std::endl; } - input_preproc = toolchain::text_in_doc_preprocess(input, false, K, + input_preproc = toolchain::text_in_doc_preprocess(input, false, 0, K, false, false); // Cleanup components on borders diff --git a/scribo/src/contest/hdlac-2011/content_in_hdoc_hdlac.cc b/scribo/src/contest/hdlac-2011/content_in_hdoc_hdlac.cc index deb5bdd..21a7732 100644 --- a/scribo/src/contest/hdlac-2011/content_in_hdoc_hdlac.cc +++ b/scribo/src/contest/hdlac-2011/content_in_hdoc_hdlac.cc @@ -87,6 +87,8 @@ int main(int argc, char* argv[]) image2d<value::rgb8> input; mln::io::magick::load(input, argv[1]); + mln::debug::internal::filename_prefix = basename(argv[1]); + // Preprocess document image2d<bool> input_preproc; { @@ -133,5 +135,11 @@ int main(int argc, char* argv[]) scribo::io::xml::save(doc, argv[2], scribo::io::xml::Page); std::cout << "End of process - " << t << std::endl; + scribo::io::img::save(doc, mln::debug::filename("debug_wo_image.png"), + scribo::io::img::DebugWoImage); + scribo::io::img::save(doc, mln::debug::filename("debug_with_image.png"), + scribo::io::img::DebugWithImage); + + trace::exiting("main"); } diff --git a/scribo/src/non_text_components.cc b/scribo/src/non_text_components.cc index 27884f8..e6db89b 100644 --- a/scribo/src/non_text_components.cc +++ b/scribo/src/non_text_components.cc @@ -93,7 +93,7 @@ int main(int argc, char* argv[]) // Preprocess document image2d<bool> - input_preproc = toolchain::text_in_doc_preprocess(input, false, 0.34, + input_preproc = toolchain::text_in_doc_preprocess(input, false, 0, 0.34, false, false); diff --git a/scribo/src/text_in_doc_preprocess.cc b/scribo/src/text_in_doc_preprocess.cc index 57dd800..39b48bb 100644 --- a/scribo/src/text_in_doc_preprocess.cc +++ b/scribo/src/text_in_doc_preprocess.cc @@ -91,7 +91,7 @@ int main(int argc, char* argv[]) image2d<bool> output; output = toolchain::text_in_doc_preprocess(input_rgb, fg_extraction, - lambda, 0.34, verbose); + lambda, 0.34, false, verbose); mln::io::pbm::save(output, options.arg("output.pbm")); } -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-221-g6c791fe Fix various warnings.
by Guillaume Lazzara
* scribo/binarization/otsu_threshold.hh: Fix comparisons between different types. * scribo/io/xml/load.hh: Convert to float. * scribo/text/paragraphs_closing.hh, * scribo/text/recognition.hh, * src/afp/components.hh: Remove unused variables. * src/binarization/otsu.cc: Silent warning. * src/misc/morpho.cc: Check number of arguments. --- scribo/ChangeLog | 17 +++++++++++++++++ scribo/scribo/binarization/otsu_threshold.hh | 7 ++++--- scribo/scribo/io/xml/load.hh | 2 +- scribo/scribo/text/paragraphs_closing.hh | 5 +---- scribo/scribo/text/recognition.hh | 2 -- scribo/src/afp/components.hh | 6 +++--- scribo/src/binarization/otsu.cc | 4 +++- scribo/src/misc/morpho.cc | 9 ++++++++- 8 files changed, 37 insertions(+), 15 deletions(-) diff --git a/scribo/ChangeLog b/scribo/ChangeLog index c9d045a..37b1518 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,5 +1,22 @@ 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + Fix various warnings. + + * scribo/binarization/otsu_threshold.hh: Fix comparisons between + different types. + + * scribo/io/xml/load.hh: Convert to float. + + * scribo/text/paragraphs_closing.hh, + * scribo/text/recognition.hh, + * src/afp/components.hh: Remove unused variables. + + * src/binarization/otsu.cc: Silent warning. + + * src/misc/morpho.cc: Check number of arguments. + +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + * common.mk: Fix include paths order. 2012-11-27 Guillaume Lazzara <z(a)lrde.epita.fr> diff --git a/scribo/scribo/binarization/otsu_threshold.hh b/scribo/scribo/binarization/otsu_threshold.hh index ab663d0..526b801 100644 --- a/scribo/scribo/binarization/otsu_threshold.hh +++ b/scribo/scribo/binarization/otsu_threshold.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -78,7 +79,7 @@ namespace scribo /* calculation of probability density */ util::array<double> pdf(hist.nvalues()); //probability distribution - for(int i = 0; i< maxval; ++i) + for(unsigned i = 0; i< maxval; ++i) pdf[i] = (double)hist[i] / nsites; @@ -89,7 +90,7 @@ namespace scribo cdf[0] = pdf[0]; myu[0] = 0.0; /* 0.0 times prob[0] equals zero */ - for(int i = 1; i < maxval; ++i) + for(unsigned i = 1; i < maxval; ++i) { cdf[i] = cdf[i-1] + pdf[i]; myu[i] = myu[i-1] + i*pdf[i]; diff --git a/scribo/scribo/io/xml/load.hh b/scribo/scribo/io/xml/load.hh index 62ad4a2..0ba7aab 100644 --- a/scribo/scribo/io/xml/load.hh +++ b/scribo/scribo/io/xml/load.hh @@ -284,7 +284,7 @@ namespace scribo line_data = new scribo::internal::line_info_data<L>(lines, mln::util::array<component_id_t>()); line_data->text_ = atts.value("text").toUtf8().constData(); - line_data->text_confidence_ = atts.value("textConfidence").toUtf8().constData(); + line_data->text_confidence_ = atof(atts.value("textConfidence").toUtf8().constData()); line_data->hidden_ = false; line_data->tag_ = static_cast<line::Tag>(atts.value("tag").toInt()); diff --git a/scribo/scribo/text/paragraphs_closing.hh b/scribo/scribo/text/paragraphs_closing.hh index e513970..e29e1c8 100644 --- a/scribo/scribo/text/paragraphs_closing.hh +++ b/scribo/scribo/text/paragraphs_closing.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2009, 2010, 2011 EPITA Research and Development +// Copyright (C) 2009, 2010, 2011, 2013 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -209,7 +209,6 @@ namespace scribo const paragraph_info<L>& current_par = parset(p); const mln::util::array<line_id_t>& line_ids = current_par.line_ids(); - line_id_t last_id = line_ids[0]; for_all_elements(i, line_ids) { const line_id_t& line_id = line_ids(i); @@ -233,8 +232,6 @@ namespace scribo last_comp = c; } - // mln::draw::line(debug, current_line.bbox().pcenter(), lines(last_id).bbox().pcenter(), p); - // last_id = line_id; } int delta_baseline = current_par.delta_baseline(); diff --git a/scribo/scribo/text/recognition.hh b/scribo/scribo/text/recognition.hh index b5e48f1..27cea10 100644 --- a/scribo/scribo/text/recognition.hh +++ b/scribo/scribo/text/recognition.hh @@ -385,8 +385,6 @@ namespace scribo if (!output_file.empty()) file.open(output_file.c_str()); - mln_domain(I) box = line.domain(); - // Recognize characters. char* s = tess.TesseractRect( (unsigned char*) &line(line.domain().pmin()), diff --git a/scribo/src/afp/components.hh b/scribo/src/afp/components.hh index f8a67e6..7e4e102 100644 --- a/scribo/src/afp/components.hh +++ b/scribo/src/afp/components.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2010, 2013 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -132,7 +133,7 @@ namespace mln image2d<info> data; image2d<V> label; V current_label = 0; - int N, dp_border; + int dp_border; // util::timer time; // time.start(); @@ -140,7 +141,6 @@ namespace mln // init { extension::adjust(input, nbh); - N = input.nelements(); dp_border = 2 * input.border(); extension::fill(input, false); initialize(data, input); diff --git a/scribo/src/binarization/otsu.cc b/scribo/src/binarization/otsu.cc index 7673363..38c217a 100644 --- a/scribo/src/binarization/otsu.cc +++ b/scribo/src/binarization/otsu.cc @@ -1,4 +1,5 @@ -// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -83,6 +84,7 @@ int main(int argc, char *argv[]) trace::entering("main"); bool verbose = options.is_set("verbose"); + (void) verbose; image2d<value::rgb8> input; io::magick::load(input, options.arg("input.*")); diff --git a/scribo/src/misc/morpho.cc b/scribo/src/misc/morpho.cc index cdab36e..3c6dd21 100644 --- a/scribo/src/misc/morpho.cc +++ b/scribo/src/misc/morpho.cc @@ -1,4 +1,5 @@ -// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2009, 2013 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -61,6 +62,12 @@ int main(int argc, char *argv[]) using value::label_8; using value::rgb8; + if (argc != 2) + { + std::cout << "Usage: " << argv[0] << " <input.pbm>" << std::endl; + return 1; + } + image2d<bool> input; io::pbm::load(input, argv[1]); -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-219-ge27c410 tests/data.hh.in: Rename guards.
by Guillaume Lazzara
--- milena/ChangeLog | 4 ++++ milena/tests/data.hh.in | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index 2078514..40a1673 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,9 @@ 2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + * tests/data.hh.in: Rename guards. + +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + Fix a warning. * mln/canvas/labeling/sorted.hh, diff --git a/milena/tests/data.hh.in b/milena/tests/data.hh.in index 1953989..fe3034b 100644 --- a/milena/tests/data.hh.in +++ b/milena/tests/data.hh.in @@ -1,5 +1,5 @@ -// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory -// (LRDE) +// Copyright (C) 2008, 2009, 2013 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // @@ -24,8 +24,8 @@ // exception does not however invalidate any other reasons why the // executable file might be covered by the GNU General Public License. -#ifndef TESTS_DATA_HH -# define TESTS_DATA_HH +#ifndef MILENA_TESTS_DATA_HH +# define MILENA_TESTS_DATA_HH # include <string> @@ -41,4 +41,4 @@ /// The absolute path to the mesh directory of Milena. # define MLN_MESH_DIR "@abs_top_srcdir@/milena/mesh" -#endif // ! TESTS_DATA_HH +#endif // ! MILENA_TESTS_DATA_HH -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-218-g096f327 Fix a warning.
by Guillaume Lazzara
* mln/canvas/labeling/sorted.hh, * mln/canvas/labeling/video.hh: Remove unused attribute. --- milena/ChangeLog | 7 +++++++ milena/mln/canvas/labeling/sorted.hh | 6 ++---- milena/mln/canvas/labeling/video.hh | 5 +---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index 024e441..2078514 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,3 +1,10 @@ +2013-02-26 Guillaume Lazzara <z(a)lrde.epita.fr> + + Fix a warning. + + * mln/canvas/labeling/sorted.hh, + * mln/canvas/labeling/video.hh: Remove unused attribute. + 2012-09-28 Guillaume Lazzara <z(a)lrde.epita.fr> * mln/debug/draw_graph.hh: Add a new overload and fix comments. diff --git a/milena/mln/canvas/labeling/sorted.hh b/milena/mln/canvas/labeling/sorted.hh index 69f2181..6eb2ab0 100644 --- a/milena/mln/canvas/labeling/sorted.hh +++ b/milena/mln/canvas/labeling/sorted.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2009, 2013 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -96,7 +97,6 @@ namespace mln // Output. mln_ch_value(I, L) output; - bool status; // FIXME: Is-it useful? // Initialization. { @@ -167,7 +167,6 @@ namespace mln { if (nlabels == mln_max(L)) { - status = false; trace::warning("labeling aborted! Too many labels \ for this label type: nlabels > \ max(label_type)."); @@ -179,7 +178,6 @@ namespace mln else output.element(p) = output.element(parent.element(p)); } - status = true; } trace::exiting("canvas::impl::labeling::sorted_fastest"); diff --git a/milena/mln/canvas/labeling/video.hh b/milena/mln/canvas/labeling/video.hh index b46e930..9735772 100644 --- a/milena/mln/canvas/labeling/video.hh +++ b/milena/mln/canvas/labeling/video.hh @@ -1,4 +1,4 @@ -// Copyright (C) 2007, 2008, 2009 EPITA Research and Development +// Copyright (C) 2007, 2008, 2009, 2013 EPITA Research and Development // Laboratory (LRDE) // // This file is part of Olena. @@ -87,7 +87,6 @@ namespace mln // Output. mln_ch_value(I, L) output; - bool status; // Initialization. { @@ -155,7 +154,6 @@ namespace mln { if (nlabels == mln_max(L)) { - status = false; trace::warning("labeling aborted! Too many labels for \ this label type: nlabels > \ max(label_type)."); @@ -172,7 +170,6 @@ namespace mln f.set_label_(p, lbl); } } - status = true; } f.finalize(); -- 1.7.2.5
11 years, 10 months
1
0
0
0
olena-2.0-217-g4d0f7e2 Merge branch 'next' into unstable/scribo
by Guillaume Lazzara
This is a merge commit message of the following branches: Merge: a6aaffe d8df2a5 Conflicts: ChangeLog configure.ac milena/ChangeLog milena/apps/papers/levillain.09.ismm/graph.cc milena/doc/examples/tuto4_genericity_and_algorithms.cc milena/mln/canvas/browsing/diagonal2d.hh milena/mln/io/plot/save.hh milena/mln/labeling/value_and_compute.hh milena/mln/morpho/watershed/topological.hh milena/mln/registration/icp.hh milena/mln/subsampling/antialiased.hh milena/mln/util/object_id.hh milena/tests/core/alias/point1d.cc milena/tests/data/Makefile.am milena/tests/literal/Makefile.am milena/tests/unit_test/unit-tests.mk scribo/ChangeLog scribo/scribo/text/recognition.hh scribo/scribo/toolchain/text_in_doc_preprocess.hh scribo/src/Makefile.am scribo/src/binarization/Makefile.am scribo/tests/binarization/Makefile.am scribo/tests/unit_test/unit-tests.mk ChangeLog | 273 +- HACKING | 92 +- Makefile.am | 99 +- README | 15 - bootstrap | 25 +- build-aux/.gitignore | 1 + build-aux/build_unit_test.sh | 4 +- build-aux/generate_dist_headers.sh | 44 +- build-aux/strip-lrde | 23 - build-aux/tests-recursive.mk | 32 + build-aux/texi2dvi | 146 +- configure.ac | 43 +- dynamic-use-of-static-c++/.vcs | 23 - .../vcs/dynamic_static_bridge_vcs.rb | 15 - external/Makefile.am | 21 - external/README | 71 - external/trimesh/.gitignore | 6 - external/trimesh/COPYING | 302 - external/trimesh/ChangeLog | 95 - external/trimesh/Makedefs.Darwin | 53 - external/trimesh/Makedefs.Linux | 59 - external/trimesh/Makedefs.Linux64 | 59 - external/trimesh/Makedefs.SunOS | 50 - external/trimesh/Makedefs.Win32 | 69 - external/trimesh/Makefile.am | 19 - external/trimesh/Makerules | 80 - external/trimesh/README | 144 - external/trimesh/configure.ac | 62 - external/trimesh/gluit/COPYING.freeglut | 27 - external/trimesh/gluit/COPYING.glui | 504 - external/trimesh/gluit/Makefile.am | 91 - external/trimesh/gluit/freeglut_callbacks.c | 336 - external/trimesh/gluit/freeglut_cursor.c | 270 - external/trimesh/gluit/freeglut_display.c | 99 - external/trimesh/gluit/freeglut_ext.c | 205 - external/trimesh/gluit/freeglut_font.c | 368 - external/trimesh/gluit/freeglut_font_data.c | 2024 - external/trimesh/gluit/freeglut_gamemode.c | 598 - external/trimesh/gluit/freeglut_geometry.c | 1147 - .../trimesh/gluit/freeglut_glutfont_definitions.c | 77 - external/trimesh/gluit/freeglut_init.c | 899 - external/trimesh/gluit/freeglut_internal.h | 854 - external/trimesh/gluit/freeglut_joystick.c | 1805 - external/trimesh/gluit/freeglut_main.c | 1982 - external/trimesh/gluit/freeglut_menu.c | 949 - external/trimesh/gluit/freeglut_misc.c | 179 - external/trimesh/gluit/freeglut_overlay.c | 49 - external/trimesh/gluit/freeglut_state.c | 694 - .../trimesh/gluit/freeglut_stroke_mono_roman.c | 2821 - external/trimesh/gluit/freeglut_stroke_roman.c | 2821 - external/trimesh/gluit/freeglut_structure.c | 651 - external/trimesh/gluit/freeglut_teapot.c | 207 - external/trimesh/gluit/freeglut_teapot_data.h | 2428 - external/trimesh/gluit/freeglut_videoresize.c | 54 - external/trimesh/gluit/freeglut_window.c | 1092 - external/trimesh/gluit/glui.cc | 1960 - external/trimesh/gluit/glui_add_controls.cc | 742 - external/trimesh/gluit/glui_algebra3.cc | 1037 - external/trimesh/gluit/glui_algebra3.h | 474 - external/trimesh/gluit/glui_arcball.cc | 223 - external/trimesh/gluit/glui_arcball.h | 80 - external/trimesh/gluit/glui_bitmap_img_data.cc | 22 - external/trimesh/gluit/glui_bitmaps.cc | 104 - external/trimesh/gluit/glui_button.cc | 208 - external/trimesh/gluit/glui_checkbox.cc | 313 - external/trimesh/gluit/glui_column.cc | 76 - external/trimesh/gluit/glui_control.cc | 1223 - external/trimesh/gluit/glui_edittext.cc | 1045 - external/trimesh/gluit/glui_img_checkbox_0.c | 38 - external/trimesh/gluit/glui_img_checkbox_0_dis.c | 38 - external/trimesh/gluit/glui_img_checkbox_1.c | 38 - external/trimesh/gluit/glui_img_checkbox_1_dis.c | 38 - external/trimesh/gluit/glui_img_downarrow.c | 56 - external/trimesh/gluit/glui_img_leftarrow.c | 56 - external/trimesh/gluit/glui_img_listbox_down.c | 42 - external/trimesh/gluit/glui_img_listbox_up.c | 42 - external/trimesh/gluit/glui_img_listbox_up_dis.c | 42 - external/trimesh/gluit/glui_img_radiobutton_0.c | 44 - .../trimesh/gluit/glui_img_radiobutton_0_dis.c | 44 - external/trimesh/gluit/glui_img_radiobutton_1.c | 44 - .../trimesh/gluit/glui_img_radiobutton_1_dis.c | 44 - external/trimesh/gluit/glui_img_rightarrow.c | 56 - external/trimesh/gluit/glui_img_spindown_0.c | 24 - external/trimesh/gluit/glui_img_spindown_1.c | 24 - external/trimesh/gluit/glui_img_spindown_dis.c | 24 - external/trimesh/gluit/glui_img_spinup_0.c | 24 - external/trimesh/gluit/glui_img_spinup_1.c | 24 - external/trimesh/gluit/glui_img_spinup_dis.c | 24 - external/trimesh/gluit/glui_img_uparrow.c | 56 - external/trimesh/gluit/glui_listbox.cc | 445 - external/trimesh/gluit/glui_mouse_iaction.cc | 212 - external/trimesh/gluit/glui_node.cc | 175 - external/trimesh/gluit/glui_panel.cc | 178 - external/trimesh/gluit/glui_quaternion.cc | 229 - external/trimesh/gluit/glui_quaternion.h | 97 - external/trimesh/gluit/glui_radio.cc | 341 - external/trimesh/gluit/glui_rollout.cc | 286 - external/trimesh/gluit/glui_rotation.cc | 389 - external/trimesh/gluit/glui_separator.cc | 60 - external/trimesh/gluit/glui_slider.cc | 725 - external/trimesh/gluit/glui_spinner.cc | 579 - external/trimesh/gluit/glui_statictext.cc | 124 - external/trimesh/gluit/glui_stdinc.h | 131 - external/trimesh/gluit/glui_translation.cc | 518 - external/trimesh/gluit/gluit.mk | 16 - external/trimesh/include/Color.h | 107 - external/trimesh/include/GL/freeglut.h | 22 - external/trimesh/include/GL/freeglut_ext.h | 124 - external/trimesh/include/GL/freeglut_std.h | 579 - external/trimesh/include/GL/glui.h | 1767 - external/trimesh/include/GL/glut.h | 29 - external/trimesh/include/GLCamera.h | 74 - external/trimesh/include/ICP.h | 40 - external/trimesh/include/KDtree.h | 46 - external/trimesh/include/Makefile.am | 21 - external/trimesh/include/TriMesh.h | 161 - external/trimesh/include/TriMesh_algo.h | 145 - external/trimesh/include/Vec.h | 459 - external/trimesh/include/XForm.h | 317 - external/trimesh/include/bsphere.h | 273 - external/trimesh/include/lineqn.h | 358 - external/trimesh/include/mempool.h | 88 - external/trimesh/include/noise3d.h | 127 - external/trimesh/include/timestamp.h | 69 - external/trimesh/libsrc/GLCamera.cc | 378 - external/trimesh/libsrc/ICP.cc | 859 - external/trimesh/libsrc/KDtree.cc | 299 - external/trimesh/libsrc/Makefile.am | 34 - external/trimesh/libsrc/TriMesh_bounding.cc | 135 - external/trimesh/libsrc/TriMesh_connectivity.cc | 124 - external/trimesh/libsrc/TriMesh_curvature.cc | 325 - external/trimesh/libsrc/TriMesh_grid.cc | 109 - external/trimesh/libsrc/TriMesh_io.cc | 1925 - external/trimesh/libsrc/TriMesh_normals.cc | 118 - external/trimesh/libsrc/TriMesh_pointareas.cc | 77 - external/trimesh/libsrc/TriMesh_stats.cc | 46 - external/trimesh/libsrc/TriMesh_tstrips.cc | 245 - external/trimesh/libsrc/diffuse.cc | 353 - external/trimesh/libsrc/edgeflip.cc | 176 - external/trimesh/libsrc/faceflip.cc | 30 - external/trimesh/libsrc/filter.cc | 491 - external/trimesh/libsrc/lmsmooth.cc | 76 - external/trimesh/libsrc/mesh_align.cc | 78 - external/trimesh/libsrc/mesh_view.cc | 599 - external/trimesh/libsrc/remove.cc | 137 - external/trimesh/libsrc/reorder_verts.cc | 210 - external/trimesh/libsrc/subdiv.cc | 396 - external/trimesh/utilsrc/Makefile.am | 26 - external/trimesh/utilsrc/mesh_align.cc | 91 - external/trimesh/utilsrc/mesh_cat.cc | 84 - external/trimesh/utilsrc/mesh_cc.cc | 333 - external/trimesh/utilsrc/mesh_filter.cc | 394 - external/trimesh/utilsrc/mesh_make.cc | 976 - external/trimesh/utilsrc/mesh_shade.cc | 508 - external/trimesh/utilsrc/mesh_view.cc | 598 - milena/ChangeLog | 621 +- milena/Makefile.am | 14 +- milena/apps/Makefile.am | 5 +- milena/apps/constrained-connectivity/Makefile.am | 5 +- milena/apps/graph-morpho/Makefile.am | 8 +- milena/apps/mesh-segm-skel/Makefile.am | 79 +- milena/apps/mesh-segm-skel/io.hh | 205 - .../mesh-segm-skel/mesh-complex-max-curv-segm.cc | 2 +- .../apps/mesh-segm-skel/mesh-complex-max-curv.cc | 2 +- milena/apps/mesh-segm-skel/mesh-max-curv.cc | 125 - milena/apps/mesh-segm-skel/mesh-pinv-curv.cc | 105 - milena/apps/mesh-segm-skel/mesh-segm.cc | 230 - milena/apps/mesh-segm-skel/mesh-skel.cc | 207 - milena/apps/mesh-segm-skel/misc.hh | 661 + milena/apps/mesh-segm-skel/test-mesh-max-curv.in | 23 - milena/apps/mesh-segm-skel/test-mesh-segm.in | 26 - milena/apps/mesh-segm-skel/trimesh/README | 4 - milena/apps/mesh-segm-skel/trimesh/misc.hh | 660 - milena/apps/morphers/Makefile.am | 71 + milena/apps/morphers/image2d-skel.hh | 137 + milena/apps/morphers/iz.cc | 173 + milena/apps/morphers/iz_input.pbm | Bin 0 -> 21890 bytes milena/apps/morphers/lazy_recorder.cc | 62 + milena/apps/morphers/lazy_recorder.hh | 206 + milena/apps/morphers/mask+channel.cc | 67 + milena/apps/morphers/mask+recorder.cc | 65 + milena/apps/morphers/recorder-bft.cc | 114 + milena/apps/morphers/recorder-wst.cc | 106 + milena/apps/morphers/recorder.cc | 61 + milena/apps/morphers/recorder.hh | 182 + milena/apps/papers/levillain.09.ismm/Makefile.am | 30 +- .../papers/levillain.09.ismm/classif-1complex.cc | 307 + .../apps/papers/levillain.09.ismm/classif-graph.cc | 287 + .../apps/papers/levillain.09.ismm/classseedsi.pbm | 6415 + milena/apps/papers/levillain.09.ismm/graph.cc | 255 +- .../papers/levillain.09.ismm/influence_zones.hh | 84 + milena/apps/papers/levillain.09.ismm/io.hh | 242 + milena/common.mk | 22 + .../examples/tuto4_genericity_and_algorithms.cc | 5 +- milena/doc/tools/split_sample.sh | 6 +- milena/headers.mk | 111 +- milena/mln/accu/math/all.hh | 5 - milena/mln/accu/math/inf.hh | 178 - milena/mln/accu/math/sup.hh | 180 - milena/mln/accu/site_set/rectangularity.hh | 19 +- milena/mln/all.hh | 12 +- milena/mln/canvas/browsing/diagonal2d.hh | 7 +- milena/mln/canvas/browsing/snake_fwd.hh | 2 +- milena/mln/canvas/browsing/snake_vert.hh | 2 +- milena/mln/clustering/kmean_rgb.hh | 18 +- milena/mln/core/concept/proxy.hxx | 26 +- milena/mln/core/image/imorph/decorated_image.hh | 26 + milena/mln/core/image/vmorph/all.hh | 5 +- milena/mln/core/image/vmorph/fun_image.hh | 4 +- milena/mln/core/image/vmorph/thrubin_image.hh | 254 - milena/mln/data/all.hh | 4 +- milena/mln/data/was.median.hh | 207 - milena/mln/essential/routine.hh | 12 +- milena/mln/extract/all.hh | 51 - milena/mln/extract/blue.hh | 63 - milena/mln/extract/essential.hh | 36 - milena/mln/extract/green.hh | 63 - milena/mln/extract/hue.hh | 63 - milena/mln/extract/lum.hh | 63 - milena/mln/extract/red.hh | 63 - milena/mln/extract/sat.hh | 63 - milena/mln/fun/access/all.hh | 50 - milena/mln/fun/access/mean.hh | 89 - milena/mln/fun/accu_result.hh | 70 - milena/mln/fun/all.hh | 8 +- milena/mln/fun/binary.hh | 92 - milena/mln/fun/binary_param.hh | 100 - milena/mln/fun/component/comp.hh | 108 - milena/mln/fun/component/comp_count.hh | 96 - milena/mln/fun/component/ithcomp.hh | 80 - milena/mln/fun/component/scomp.hh | 87 - milena/mln/fun/compose.hh | 115 - milena/mln/fun/composition.hh | 221 - milena/mln/fun/essential.hh | 4 +- milena/mln/fun/from_accu.hh | 136 - milena/mln/fun/math/abs.hh | 67 - milena/mln/fun/math/cos.hh | 89 - milena/mln/fun/math/inf.hh | 67 - milena/mln/fun/math/norm.hh | 117 - milena/mln/fun/math/sup.hh | 67 - milena/mln/fun/meta/all.hh | 51 - milena/mln/fun/meta/blue.hh | 90 - milena/mln/fun/meta/essential.hh | 31 - milena/mln/fun/meta/first.hh | 90 - milena/mln/fun/meta/green.hh | 90 - milena/mln/fun/meta/hue.hh | 119 - milena/mln/fun/meta/inty.hh | 88 - milena/mln/fun/meta/lum.hh | 88 - milena/mln/fun/meta/red.hh | 90 - milena/mln/fun/meta/sat.hh | 122 - milena/mln/fun/meta/second.hh | 90 - milena/mln/fun/meta/to_enc.hh | 77 - milena/mln/fun/point/col.hh | 83 - milena/mln/fun/point/row.hh | 81 - milena/mln/fun/point/sli.hh | 81 - milena/mln/fun/spe/binary.hh | 145 - milena/mln/fun/unary_param.hh | 100 - milena/mln/fun/v2v/all.hh | 10 +- milena/mln/fun/v2v/essential.hh | 4 +- milena/mln/fun/v2v/hsi_to_rgb.hh | 134 - milena/mln/fun/v2v/rgb_to_hsi.hh | 124 - milena/mln/geom/seeds2tiling_roundness.hh | 3 +- milena/mln/io/plot/save.hh | 6 +- milena/mln/labeling/value_and_compute.hh | 15 +- milena/mln/linear/all.hh | 12 - milena/mln/linear/gaussian/filter.hh | 140 - milena/mln/linear/gaussian/impl.hh | 460 - .../mln/linear/gaussian/internal/coefficients.hh | 298 - milena/mln/metal/math/pow.hh | 7 +- milena/mln/metal/math/root.hh | 5 +- milena/mln/morpho/tree/propagate_node.hh | 4 +- milena/mln/morpho/watershed/topological.hh | 6 +- milena/mln/registration/all.hh | 48 - milena/mln/registration/essential.hh | 36 - milena/mln/registration/get_rot.hh | 151 - milena/mln/registration/get_rtransf.hh | 94 - milena/mln/registration/internal/rms.hh | 80 - milena/mln/registration/registration.hh | 391 - milena/mln/subsampling/all.hh | 47 - milena/mln/subsampling/antialiased.hh | 3 +- milena/mln/subsampling/essential.hh | 35 - milena/mln/subsampling/gaussian_subsampling.hh | 90 - milena/mln/subsampling/subsampling.hh | 114 - milena/mln/tag/init.hh | 3 + milena/mln/topo/complex.hh | 54 +- milena/mln/topo/face_iter.hh | 7 +- milena/mln/topo/n_face_iter.hh | 5 +- milena/mln/trait/all.hh | 6 - milena/mln/trait/ch_value.hh | 19 - milena/mln/util/object_id.hh | 4 +- milena/mln/util/tracked_ptr.hh | 32 +- milena/mln/value/all.hh | 8 - milena/mln/value/essential.hh | 5 - milena/mln/value/graylevel.hh | 23 +- milena/mln/value/graylevel_f.hh | 255 +- milena/mln/value/graylevel_f.hxx | 319 + milena/mln/value/hsi.hh | 113 - milena/mln/value/int_s24.hh | 49 + milena/mln/value/int_u24.hh | 49 + milena/mln/value/internal/gray_f.hh | 320 +- milena/mln/value/internal/gray_f.hxx | 160 + milena/mln/value/shell.hh | 164 - milena/mln/value/stack.hh | 334 - .../mln/world/inter_pixel/dim2/make_edge_image.hh | 3 +- milena/mln/world/rgb/invert.hh | 6 +- milena/new-header | 155 + milena/nodist-headers | 84 - milena/sandbox/ChangeLog |12247 -- milena/sandbox/abraham/README | 11 - milena/sandbox/abraham/img/dots.pgm | Bin 452 -> 0 bytes milena/sandbox/abraham/img/lena.pgm | 5 - milena/sandbox/abraham/img/lena.ppm | 5 - milena/sandbox/abraham/img/little_test.pgm | 5 - milena/sandbox/abraham/img/test.pgm | Bin 243 -> 0 bytes .../abraham/mln/core/site_set/p_priority_queue.hh | 352 - milena/sandbox/abraham/mln/fun/v2v/rgb_to_hsi.hh | 175 - milena/sandbox/abraham/mln/io/tikz/save.hh | 254 - milena/sandbox/abraham/mln/io/tikz/save_header.hh | 90 - milena/sandbox/abraham/mln/level/thru.hh | 115 - .../abraham/mln/morpho/autarkical_leveling.hh | 156 - milena/sandbox/abraham/mln/morpho/basic_najman.hh | 893 - milena/sandbox/abraham/mln/morpho/hit_or_miss.hh | 84 - .../mln/morpho/images/result_m_watershed.pgm | Bin 177 -> 0 bytes .../mln/morpho/images/result_topo_watershed.pgm | Bin 177 -> 0 bytes .../sandbox/abraham/mln/morpho/images/test_2.pgm | 5 - .../sandbox/abraham/mln/morpho/images/test_3.pgm | 29 - .../sandbox/abraham/mln/morpho/images/test_4.pgm | 5 - .../mln/morpho/images/test_component_mapping.pgm | 5 - .../mln/morpho/images/test_component_tree.pgm | Bin 65 -> 0 bytes .../abraham/mln/morpho/images/test_watershed.pgm | Bin 177 -> 0 bytes milena/sandbox/abraham/mln/morpho/najman_wst.hh | 791 - milena/sandbox/abraham/mln/morpho/topo_wst.hh | 768 - milena/sandbox/abraham/mln/morpho/vector_median.hh | 129 - milena/sandbox/abraham/mln/morpho/vmt.hh | 126 - milena/sandbox/abraham/mln/trait/images.hh | 239 - milena/sandbox/abraham/mln/transform/fft.hh | 693 - .../sandbox/abraham/mln/value/builtin/symbolics.hh | 76 - milena/sandbox/abraham/tests/core/concept/test.cc | 75 - .../abraham/tests/core/image/fun_image_const.cc | 65 - .../abraham/tests/core/image/fun_image_norm.cc | 64 - .../abraham/tests/core/image/fun_image_v2v.cc | 57 - .../abraham/tests/core/image/fun_image_v2w2v.cc | 64 - .../sandbox/abraham/tests/core/image/thru_const.cc | 65 - .../sandbox/abraham/tests/core/image/thru_norm.cc | 59 - .../sandbox/abraham/tests/core/image/thru_v2v.cc | 57 - .../sandbox/abraham/tests/core/image/thru_v2w2v.cc | 65 - .../abraham/tests/core/image/violent_cast_image.cc | 56 - milena/sandbox/abraham/tests/fun/meta/red.cc | 67 - milena/sandbox/abraham/tests/fun/v2w2v/cos.cc | 41 - milena/sandbox/abraham/tests/fun/v2w_w2v/norm.cc | 71 - milena/sandbox/abraham/tests/io/tikz/Makefile | 33 - milena/sandbox/abraham/tests/io/tikz/tikz.cc | 44 - milena/sandbox/abraham/tests/morpho/Makefile | 22 - .../sandbox/abraham/tests/morpho/images/+irm6.pgm | Bin 262159 -> 0 bytes .../tests/morpho/images/+test_watershed.pgm | Bin 177 -> 0 bytes .../tests/morpho/images/result_m_watershed.pgm | Bin 177 -> 0 bytes .../tests/morpho/images/result_topo_watershed.pgm | Bin 177 -> 0 bytes .../sandbox/abraham/tests/morpho/images/test_2.pgm | 5 - .../sandbox/abraham/tests/morpho/images/test_3.pgm | 29 - .../sandbox/abraham/tests/morpho/images/test_4.pgm | 5 - .../tests/morpho/images/test_component_mapping.pgm | 5 - .../tests/morpho/images/test_component_tree.pgm | Bin 65 -> 0 bytes .../abraham/tests/morpho/images/test_watershed.pgm | Bin 177 -> 0 bytes milena/sandbox/abraham/tests/morpho/levelings.cc | 49 - milena/sandbox/abraham/tests/morpho/red_erosion.cc | 41 - .../sandbox/abraham/tests/morpho/red_erosion3.cc | 65 - milena/sandbox/abraham/tests/morpho/ref/Makefile | 52 - .../tests/morpho/ref/include/lattribheight.h | 4 - .../abraham/tests/morpho/ref/include/lwshedtopo.h | 4 - .../abraham/tests/morpho/ref/include/mccodimage.h | 100 - .../abraham/tests/morpho/ref/include/mccomptree.h | 79 - .../tests/morpho/ref/include/mcfahsalembier.h | 64 - .../abraham/tests/morpho/ref/include/mcimage.h | 98 - .../abraham/tests/morpho/ref/include/mcindic.h | 27 - .../abraham/tests/morpho/ref/include/mclifo.h | 48 - .../abraham/tests/morpho/ref/include/mcunionfind.h | 24 - .../abraham/tests/morpho/ref/include/mcutil.h | 31 - .../abraham/tests/morpho/ref/src/com/wshedtopo.c | 97 - .../abraham/tests/morpho/ref/src/lib/lattrib.c | 1754 - .../tests/morpho/ref/src/lib/lattribheight.c | 717 - .../abraham/tests/morpho/ref/src/lib/lwshedtopo.c | 1011 - .../abraham/tests/morpho/ref/src/lib/mccodimage.c | 586 - .../abraham/tests/morpho/ref/src/lib/mccomptree.c | 805 - .../tests/morpho/ref/src/lib/mcfahsalembier.c | 236 - .../abraham/tests/morpho/ref/src/lib/mcimage.c | 2219 - .../abraham/tests/morpho/ref/src/lib/mcindic.c | 76 - .../abraham/tests/morpho/ref/src/lib/mclifo.c | 155 - .../abraham/tests/morpho/ref/src/lib/mcunionfind.c | 188 - .../sandbox/abraham/tests/morpho/ref/test/UrOx.pgm | 6 - .../sandbox/abraham/tests/morpho/test_watershed.cc | 51 - .../abraham/tests/morpho/test_watershed_topo.cc | 42 - milena/sandbox/abraham/tests/transform/fft.cc | 34 - milena/sandbox/abraham/tests/transform/fft_.cc | 92 - milena/sandbox/abraham/tests/value/mixin.cc | 98 - .../aroumougame/retin/headers/Trimesh/Color.h | 105 - .../aroumougame/retin/headers/Trimesh/KDtree.h | 47 - .../aroumougame/retin/headers/Trimesh/TriMesh.h | 133 - .../retin/headers/Trimesh/TriMesh_algo.h | 77 - .../retin/headers/Trimesh/TriMesh_bounding.h | 1 - .../retin/headers/Trimesh/TriMesh_connectivity.h | 1 - .../retin/headers/Trimesh/TriMesh_normals.h | 1 - .../retin/headers/Trimesh/TriMesh_pointareas.h | 1 - .../retin/headers/Trimesh/TriMesh_stats.h | 1 - .../retin/headers/Trimesh/TriMesh_tstrips.h | 1 - .../aroumougame/retin/headers/Trimesh/Vec.h | 396 - .../aroumougame/retin/headers/Trimesh/XForm.h | 303 - .../aroumougame/retin/headers/Trimesh/bsphere.h | 273 - .../aroumougame/retin/headers/Trimesh/lineqn.h | 358 - .../aroumougame/retin/headers/Trimesh/mempool.h | 88 - .../retin/headers/Trimesh/mesh_filter.h | 7 - .../aroumougame/retin/headers/Trimesh/mesh_shade.h | 6 - .../aroumougame/retin/headers/Trimesh/remove.h | 1 - .../retin/headers/Trimesh/reorder_verts.h | 1 - .../aroumougame/retin/headers/Trimesh/timestamp.h | 69 - .../sandbox/aroumougame/retin/headers/WRL/Coin.h | 53 - .../retin/headers/WRL/MaillageTriangulaire.h | 58 - .../retin/headers/WRL/MailleTriangulaire.h | 35 - milena/sandbox/aroumougame/retin/headers/WRL/OFF.h | 88 - .../aroumougame/retin/headers/WRL/Objet3D.h | 89 - .../retin/headers/WRL/OutilsListePoints.h | 47 - .../aroumougame/retin/headers/WRL/OutilsPoint3D.h | 52 - .../aroumougame/retin/headers/WRL/PreTraitement.h | 53 - milena/sandbox/aroumougame/retin/headers/WRL/WRL.h | 74 - .../sandbox/aroumougame/retin/headers/WRL/calcul.h | 37 - .../aroumougame/retin/headers/binvox/file/Buffer.h | 69 - .../retin/headers/binvox/file/Datafile.h | 115 - .../retin/headers/binvox/file/Tokenfile.h | 113 - .../aroumougame/retin/headers/binvox/geom/Face.h | 76 - .../retin/headers/binvox/geom/Globals.h | 55 - .../aroumougame/retin/headers/binvox/geom/Mesh.h | 122 - .../retin/headers/binvox/geom/MeshFile.h | 69 - .../retin/headers/binvox/geom/MeshFileIdentifier.h | 82 - .../retin/headers/binvox/geom/MeshRef.h | 56 - .../retin/headers/binvox/geom/MeshView.h | 59 - .../retin/headers/binvox/geom/ObjMeshFile.h | 53 - .../retin/headers/binvox/geom/OffMeshFile.h | 35 - .../retin/headers/binvox/geom/PlyMeshFile.h | 53 - .../aroumougame/retin/headers/binvox/geom/Vertex.h | 58 - .../retin/headers/binvox/geom/WrlMeshFile.h | 35 - .../retin/headers/binvox/geom/geom_defs.h | 40 - .../aroumougame/retin/headers/binvox/libvox.h | 12 - .../aroumougame/retin/headers/binvox/math/Matrix.h | 100 - .../retin/headers/binvox/math/MyRandom.h | 54 - .../aroumougame/retin/headers/binvox/math/Vector.h | 144 - .../aroumougame/retin/headers/binvox/math/common.h | 92 - .../retin/headers/binvox/ply/ply_gatech.h | 238 - .../retin/headers/binvox/time/WallTimer.h | 71 - .../aroumougame/retin/headers/binvox/ui/Camera.h | 84 - .../retin/headers/binvox/ui/CameraList.h | 68 - .../aroumougame/retin/headers/binvox/ui/GLwindow.h | 124 - .../aroumougame/retin/headers/binvox/ui/View.h | 73 - .../aroumougame/retin/headers/binvox/ui/opengl.h | 49 - .../retin/headers/binvox/voxel/PalagyiFilter.h | 69 - .../retin/headers/binvox/voxel/Template.h | 81 - .../retin/headers/binvox/voxel/Templates.h | 78 - .../retin/headers/binvox/voxel/VoxelFile.h | 105 - .../retin/headers/binvox/voxel/VoxelFilter.h | 51 - .../retin/headers/binvox/voxel/VoxelRef.h | 75 - .../retin/headers/binvox/voxel/Voxelizer.h | 89 - .../retin/headers/binvox/voxel/Voxels.h | 199 - .../retin/headers/binvox/voxel/typedefs.h | 31 - milena/sandbox/aroumougame/retin/headers/cb3dr.h | 5 - .../aroumougame/retin/headers/histogramme/hist.h | 57 - .../retin/headers/histogramme/listeHisto.h | 50 - .../aroumougame/retin/headers/matrice/MatriceF.h | 35 - .../retin/headers/matrice/valeursVecteursPropres.h | 13 - .../aroumougame/retin/sources/Trimesh/KDtree.cpp | 321 - .../retin/sources/Trimesh/TriMesh_bounding.cpp | 133 - .../retin/sources/Trimesh/TriMesh_connectivity.cpp | 124 - .../retin/sources/Trimesh/TriMesh_curvature.cpp | 325 - .../retin/sources/Trimesh/TriMesh_io.cpp | 1814 - .../retin/sources/Trimesh/TriMesh_normals.cpp | 50 - .../retin/sources/Trimesh/TriMesh_pointareas.cpp | 77 - .../retin/sources/Trimesh/TriMesh_stats.cpp | 46 - .../retin/sources/Trimesh/TriMesh_tstrips.cpp | 246 - .../aroumougame/retin/sources/Trimesh/diffuse.cpp | 246 - .../aroumougame/retin/sources/Trimesh/lmsmooth.cpp | 73 - .../retin/sources/Trimesh/mesh_filter.cpp | 470 - .../retin/sources/Trimesh/mesh_shade.cpp | 90 - .../aroumougame/retin/sources/Trimesh/remove.cpp | 212 - .../retin/sources/Trimesh/reorder_verts.cpp | 126 - .../retin/sources/WRL/MaillageTriangulaire.cpp | 281 - .../retin/sources/WRL/MailleTriangulaire.cpp | 94 - .../sandbox/aroumougame/retin/sources/WRL/OFF.cpp | 174 - .../aroumougame/retin/sources/WRL/Objet3D.cpp | 146 - .../retin/sources/WRL/OutilsListePoints.cpp | 198 - .../retin/sources/WRL/OutilsPoint3D.cpp | 247 - .../retin/sources/WRL/PreTraitement.cpp | 213 - .../sandbox/aroumougame/retin/sources/WRL/WRL.cpp | 639 - .../aroumougame/retin/sources/WRL/calcul.cpp | 194 - .../retin/sources/binvox/file/Buffer.cpp | 61 - .../retin/sources/binvox/file/Datafile.cpp | 420 - .../retin/sources/binvox/file/Tokenfile.cpp | 367 - .../aroumougame/retin/sources/binvox/geom/Face.cpp | 201 - .../aroumougame/retin/sources/binvox/geom/Mesh.cpp | 281 - .../retin/sources/binvox/geom/MeshFile.cpp | 54 - .../sources/binvox/geom/MeshFileIdentifier.cpp | 143 - .../retin/sources/binvox/geom/MeshRef.cpp | 42 - .../retin/sources/binvox/geom/MeshView.cpp | 103 - .../retin/sources/binvox/geom/ObjMeshFile.cpp | 179 - .../retin/sources/binvox/geom/OffMeshFile.cpp | 65 - .../retin/sources/binvox/geom/PlyMeshFile.cpp | 197 - .../retin/sources/binvox/geom/Vertex.cpp | 59 - .../retin/sources/binvox/geom/WrlMeshFile.cpp | 96 - .../aroumougame/retin/sources/binvox/libvox.cpp | 190 - .../retin/sources/binvox/math/Matrix.cpp | 510 - .../retin/sources/binvox/math/MyRandom.cpp | 56 - .../retin/sources/binvox/math/Vector.cpp | 543 - .../retin/sources/binvox/math/common.cpp | 139 - .../retin/sources/binvox/ply/ply_gatech.c | 3428 - .../retin/sources/binvox/time/WallTimer.cpp | 158 - .../aroumougame/retin/sources/binvox/ui/Camera.cpp | 192 - .../retin/sources/binvox/ui/CameraList.cpp | 130 - .../retin/sources/binvox/ui/GLwindow.cpp | 333 - .../aroumougame/retin/sources/binvox/ui/View.cpp | 86 - .../aroumougame/retin/sources/binvox/ui/opengl.cpp | 67 - .../retin/sources/binvox/voxel/PalagyiFilter.cpp | 180 - .../retin/sources/binvox/voxel/Template.cpp | 220 - .../retin/sources/binvox/voxel/Templates.cpp | 170 - .../retin/sources/binvox/voxel/VoxelFile.cpp | 721 - .../retin/sources/binvox/voxel/VoxelFilter.cpp | 54 - .../retin/sources/binvox/voxel/VoxelRef.cpp | 101 - .../retin/sources/binvox/voxel/Voxelizer.cpp | 519 - .../retin/sources/binvox/voxel/Voxels.cpp | 1021 - milena/sandbox/aroumougame/retin/sources/cb3dr.cpp | 3 - .../aroumougame/retin/sources/histogramme/hist.cpp | 399 - .../retin/sources/histogramme/listeHisto.cpp | 273 - .../aroumougame/retin/sources/matrice/MatriceF.cpp | 233 - .../sources/matrice/valeursVecteursPropres.cpp | 58 - milena/sandbox/aroumougame/skeleton/io.hh | 157 - milena/sandbox/aroumougame/skeleton/mesh-skel.cc | 216 - .../aroumougame/skeleton/mesh-skel_region.cc | 256 - .../sandbox/aroumougame/skeleton/miscellenous.hh | 142 - .../sandbox/aroumougame/skeleton/neighborhood1.hh | 35 - milena/sandbox/aroumougame/skeleton/sedt.hh | 431 - milena/sandbox/aroumougame/skeleton/test.cc | 100 - .../sandbox/aroumougame/skeleton/test_image2d.cc | 50 - .../sandbox/aroumougame/skeleton/test_image3d.cc | 83 - milena/sandbox/aroumougame/skeleton/thinning.hh | 972 - milena/sandbox/aroumougame/test/m0.wrl |180539 -------------------- milena/sandbox/aroumougame/test/m05.wrl | 806 - milena/sandbox/aroumougame/test/m9l0.wrl |26434 --- milena/sandbox/aroumougame/test/makefile | 402 - milena/sandbox/aroumougame/test/ml0.wrl |173118 ------------------- milena/sandbox/aroumougame/test/ml09.wrl | 2267 - milena/sandbox/aroumougame/test/mmake.sh | 3 - .../aroumougame/test/sources/test_graph.cpp | 263 - milena/sandbox/aroumougame/test/test.off |92102 ---------- milena/sandbox/aroumougame/test/test_graph.cpp | 273 - milena/sandbox/aroumougame/test/test_graph_off.cpp | 243 - milena/sandbox/aroumougame/test/test_graph_wrl.cpp | 303 - milena/sandbox/ballas/compilation_unit.rb | 56 - milena/sandbox/ballas/doc/draft.txt | 370 - milena/sandbox/ballas/doc/image_tours.txt | 885 - milena/sandbox/ballas/doc/image_types/doc.tex | 28 - .../ballas/doc/image_types/include/image_tour.tex | 480 - milena/sandbox/ballas/methods | 104 - milena/sandbox/ballas/refactorization/box2d.hh | 246 - milena/sandbox/ballas/refactorization/concept.hh | 229 - milena/sandbox/ballas/refactorization/exact.hh | 95 - milena/sandbox/ballas/refactorization/image2d.hh | 108 - .../ballas/refactorization/internal/exact.hh | 124 - .../ballas/refactorization/internal/force_exact.hh | 77 - .../ballas/refactorization/internal/image_base.hh | 49 - .../ballas/refactorization/internal/impl.hh | 16 - .../ballas/refactorization/internal/piter_base.hh | 75 - .../ballas/refactorization/internal/pset_base.hh | 49 - .../ballas/refactorization/internal/psite_base.hh | 40 - .../ballas/refactorization/internal/site_base.hh | 21 - .../sandbox/ballas/refactorization/metal/bexpr.hh | 80 - .../sandbox/ballas/refactorization/metal/bool.hh | 99 - .../sandbox/ballas/refactorization/metal/equal.hh | 63 - milena/sandbox/ballas/refactorization/p_run.hh | 286 - milena/sandbox/ballas/refactorization/point2d.hh | 214 - .../sandbox/ballas/refactorization/point2d_impl.hh | 41 - milena/sandbox/ballas/refactorization/rle_image.hh | 118 - milena/sandbox/ballas/refactorization/rle_pset.hh | 308 - milena/sandbox/ballas/refactorization/rle_psite.hh | 137 - .../sandbox/ballas/refactorization/test/box2d.cc | 22 - .../sandbox/ballas/refactorization/test/image2d.cc | 26 - milena/sandbox/ballas/refactorization/test/rle.cc | 62 - milena/sandbox/ballas/test.cc | 69 - milena/sandbox/ballas/vaucanson_bench | 141 - milena/sandbox/beguin/fusion_graph.hh | 60 - milena/sandbox/beguin/graph_link.hh | 37 - milena/sandbox/beguin/irm.cc | 536 - milena/sandbox/beguin/irm.jpg | Bin 84574 -> 0 bytes milena/sandbox/beguin/irm6.pgm | Bin 262159 -> 0 bytes milena/sandbox/beguin/irm_g.cc | 186 - milena/sandbox/beguin/puzzle.jpg | Bin 80492 -> 0 bytes milena/sandbox/beguin/segm_to_pregraph.hh | 66 - milena/sandbox/beguin/try.hh | 69 - milena/sandbox/bench/README_CFLAGS | 8 - milena/sandbox/bench/extract_vertical_lines.cc | 49 - .../bench/fast_components_and_attributes.cc | 402 - milena/sandbox/bench/fast_rows.cc | 247 - milena/sandbox/bench/fast_tiles.cc | 140 - milena/sandbox/bench/fastest.cc | 351 - milena/sandbox/bench/fastest_forall_p_browsing.cc | 384 - .../bench/fastest_statistical_tour_browsing.cc | 168 - .../bench/fastest_statistical_tour_nbh_browsing.cc | 186 - milena/sandbox/bench/input_iz.pgm.gz | Bin 59982 -> 0 bytes milena/sandbox/bench/iz.cc | 386 - milena/sandbox/bench/z_sub_browsing/+inc | 1 - milena/sandbox/bench/z_sub_browsing/README | 5 - milena/sandbox/bench/z_sub_browsing/debase.cc | 23 - milena/sandbox/bench/z_sub_browsing/debase.hh | 351 - milena/sandbox/bench/z_sub_browsing/fast.cc | 139 - milena/sandbox/bench/z_sub_browsing/in.pgm.gz | Bin 3649560 -> 0 bytes milena/sandbox/bench/z_sub_browsing/integral.cc | 23 - milena/sandbox/bench/z_sub_browsing/integral.hh | 165 - milena/sandbox/bin/labeling/colorize.cc | 24 - milena/sandbox/bin/pgm_to_pbm.cc | 39 - milena/sandbox/bin/ppm_negate.cc | 43 - milena/sandbox/bugs/concept_and_assignment.cc | 84 - milena/sandbox/bugs/io_xv_imview.pbm | Bin 13 -> 0 bytes milena/sandbox/bugs/lut.cc | 23 - milena/sandbox/bugs/piter_slice.cc | 33 - milena/sandbox/bugs/piter_slice.solved.cc | 38 - milena/sandbox/camille/.gitignore | 4 - milena/sandbox/camille/Makefile | 9 - .../sandbox/camille/graph-line-gradient-closing.cc | 149 - milena/sandbox/camille/graph-wst.cc | 219 - milena/sandbox/delmon/growcut/Makefile | 30 - milena/sandbox/delmon/growcut/README | 12 - milena/sandbox/delmon/growcut/check.sh | 16 - milena/sandbox/delmon/growcut/keep_color.cc | 34 - milena/sandbox/delmon/growcut/main.cc | 150 - milena/sandbox/delmon/growcut/main_bw.cc | 111 - milena/sandbox/delmon/growcut/remove_if_blue.cc | 34 - milena/sandbox/delmon/minsurf/Makefile | 17 - milena/sandbox/delmon/minsurf/README | 11 - milena/sandbox/delmon/minsurf/check.sh | 9 - milena/sandbox/delmon/minsurf/keep_object.cc | 24 - milena/sandbox/delmon/minsurf/main.cc | 274 - milena/sandbox/duhamel/abr.cc | 54 - milena/sandbox/duhamel/abr.hh | 156 - milena/sandbox/duhamel/abr_to_image.cc | 147 - milena/sandbox/duhamel/border_duplicate.cc | 98 - milena/sandbox/duhamel/border_duplicate.hh | 220 - milena/sandbox/duhamel/border_fill.cc | 114 - milena/sandbox/duhamel/border_fill.hh | 292 - milena/sandbox/duhamel/border_mirror.cc | 61 - milena/sandbox/duhamel/border_mirror.hh | 139 - milena/sandbox/duhamel/canvas_chamfer.hh | 98 - milena/sandbox/duhamel/canvas_labeling.hh | 404 - milena/sandbox/duhamel/chamfer.cc | 51 - milena/sandbox/duhamel/chamfer.hh | 126 - milena/sandbox/duhamel/color_sub.cc | 70 - milena/sandbox/duhamel/color_sub.hh | 64 - milena/sandbox/duhamel/compil.cmd | 1 - .../sandbox/duhamel/debug_print_3d_with_border.hh | 70 - milena/sandbox/duhamel/draw_mesh.hh | 241 - milena/sandbox/duhamel/extract_array.cc | 149 - milena/sandbox/duhamel/fill.hh | 131 - milena/sandbox/duhamel/fills_test.cc | 226 - milena/sandbox/duhamel/graph.hh | 183 - milena/sandbox/duhamel/graph.hxx | 97 - milena/sandbox/duhamel/graph_labeling.cc | 14 - milena/sandbox/duhamel/graph_labeling.hh | 98 - milena/sandbox/duhamel/graph_labeling2.cc | 13 - milena/sandbox/duhamel/labeling.hh | 138 - milena/sandbox/duhamel/labeling_algo.cc | 83 - milena/sandbox/duhamel/labeling_algo.hh | 301 - milena/sandbox/duhamel/labeling_cpy_from_mln.hh | 276 - milena/sandbox/duhamel/labeling_level.hh | 213 - milena/sandbox/duhamel/labeling_level_fast.cc | 63 - .../duhamel/labeling_level_fast_10000x1000.cc | 63 - .../duhamel/labeling_level_generic_10000x1000.cc | 63 - milena/sandbox/duhamel/level.hh | 117 - milena/sandbox/duhamel/level_cpy_from_mln.hh | 147 - milena/sandbox/duhamel/log.txt | 24 - milena/sandbox/duhamel/main.cc | 39 - milena/sandbox/duhamel/main_mesh_image.cc | 65 - milena/sandbox/duhamel/mem.hh | 118 - milena/sandbox/duhamel/mesh_image.hh | 190 - milena/sandbox/duhamel/mesh_p.hh | 159 - milena/sandbox/duhamel/mesh_psite.hh | 55 - milena/sandbox/duhamel/paste.hh | 36 - milena/sandbox/duhamel/queue_p_fast.hh | 275 - milena/sandbox/duhamel/queue_p_priority.cc | 64 - milena/sandbox/duhamel/queue_p_priority.hh | 316 - milena/sandbox/duhamel/slow_seed2tiling.cc | 156 - .../duhamel/test_border_duplicate_image1d_1.cc | 54 - .../duhamel/test_border_duplicate_image1d_2.cc | 53 - .../duhamel/test_border_duplicate_image1d_3.cc | 57 - .../duhamel/test_border_duplicate_image1d_4.cc | 56 - .../duhamel/test_border_duplicate_image1d_5.cc | 56 - .../duhamel/test_border_duplicate_image2d_1.cc | 54 - .../duhamel/test_border_duplicate_image2d_2.cc | 53 - .../duhamel/test_border_duplicate_image2d_3.cc | 54 - .../duhamel/test_border_duplicate_image2d_4.cc | 56 - .../duhamel/test_border_duplicate_image3d_1.cc | 53 - .../duhamel/test_border_duplicate_image3d_2.cc | 52 - .../duhamel/test_border_duplicate_image3d_3.cc | 56 - .../duhamel/test_border_duplicate_image3d_4.cc | 55 - .../sandbox/duhamel/test_border_fill_image1d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image1d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image1d_3.cc | 54 - .../sandbox/duhamel/test_border_fill_image1d_4.cc | 55 - .../sandbox/duhamel/test_border_fill_image1d_5.cc | 54 - .../sandbox/duhamel/test_border_fill_image2d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image2d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image2d_3.cc | 54 - .../sandbox/duhamel/test_border_fill_image2d_4.cc | 54 - .../sandbox/duhamel/test_border_fill_image3d_1.cc | 51 - .../sandbox/duhamel/test_border_fill_image3d_2.cc | 50 - .../sandbox/duhamel/test_border_fill_image3d_3.cc | 53 - .../sandbox/duhamel/test_border_fill_image3d_4.cc | 53 - milena/sandbox/duhamel/test_debug_iota_3d.cc | 50 - milena/sandbox/duhamel/translate_image.cc | 43 - milena/sandbox/duhamel/translate_image.hh | 196 - milena/sandbox/edwin/Makefile | 29 - milena/sandbox/edwin/exec/benchmark/Makefile | 21 - milena/sandbox/edwin/exec/benchmark/newv.cc | 86 - milena/sandbox/edwin/exec/benchmark/oldv.cc | 82 - milena/sandbox/edwin/exec/color_distance.hh | 80 - .../sandbox/edwin/exec/color_internal_gradient.hh | 149 - milena/sandbox/edwin/exec/color_labeling_mean.hh | 70 - milena/sandbox/edwin/exec/give_me_the_curve.cc | 92 - milena/sandbox/edwin/exec/internal_gradient.cc | 41 - milena/sandbox/edwin/exec/mask_colorize.cc | 78 - milena/sandbox/edwin/exec/mask_fill_mean_color.cc | 61 - .../sandbox/edwin/exec/max_delta_colormean_obj.cc | 244 - milena/sandbox/edwin/exec/pgm_gradient.cc | 42 - milena/sandbox/edwin/exec/plot.conf | 3 - milena/sandbox/edwin/exec/score.hh | 287 - .../edwin/exec/sharpest_obj_reconstruction.cc | 145 - milena/sandbox/edwin/exec/tree_debug.cc | 86 - .../sandbox/edwin/exec/wst_from_reconstructed.cc | 85 - milena/sandbox/edwin/exec/zi.cc | 353 - milena/sandbox/edwin/exec/zi.hh | 152 - .../sandbox/edwin/mln/core/concept/dindex_site.hh | 253 - .../sandbox/edwin/mln/core/concept/index_site.hh | 311 - milena/sandbox/edwin/mln/core/concept/tree.hh | 148 - milena/sandbox/edwin/mln/core/dindex_site.hh | 119 - .../edwin/mln/core/image/attribute_image.hh | 435 - .../edwin/mln/core/internal/index_site_base.hh | 254 - .../sandbox/edwin/mln/core/site_set/p_run_idx.hh | 458 - .../edwin/mln/core/site_set/p_run_idx_piter.hh | 222 - milena/sandbox/edwin/mln/debug/ctree.hh | 155 - milena/sandbox/edwin/mln/morpho/attribute/bbox.hh | 203 - .../edwin/mln/morpho/attribute/mysharpness.hh | 59 - .../edwin/mln/morpho/attribute/occupation.hh | 252 - .../edwin/mln/morpho/tree/component_tree.hh | 124 - milena/sandbox/edwin/mln/morpho/tree/components.hh | 322 - .../edwin/mln/morpho/tree/components_debug.hh | 384 - .../mln/morpho/tree/compute_attribute_image.hh | 178 - milena/sandbox/edwin/mln/morpho/tree/debug.hh | 124 - .../edwin/mln/morpho/tree/impl/dual_hqueue.hh | 408 - .../edwin/mln/morpho/tree/impl/dual_union_find.hh | 361 - .../edwin/mln/morpho/tree/impl/union_find.hh | 172 - milena/sandbox/edwin/mln/morpho/tree/propagate.hh | 148 - .../edwin/mln/morpho/tree/propagate_node.hh | 112 - .../edwin/mln/morpho/tree/propagate_node_debug.hh | 217 - milena/sandbox/edwin/mln/util/ctree/ctree.hh | 589 - .../edwin/mln/util/ctree/internal/tree_base.hh | 140 - milena/sandbox/edwin/mln/util/ctree/node.hh | 183 - milena/sandbox/edwin/move_accu.sh | 91 - milena/sandbox/edwin/rush/exo2/configure | 21 - milena/sandbox/edwin/rush/exo2/test.cc | 133 - milena/sandbox/edwin/rush/exo2/wst_from_closing.cc | 127 - .../edwin/rush/granulometry/granulometry.hh | 163 - milena/sandbox/edwin/rush/granulometry/test.cc | 115 - milena/sandbox/edwin/rush/leaves/Makefile | 35 - milena/sandbox/edwin/rush/leaves/chain.sh | 34 - milena/sandbox/edwin/rush/leaves/configure | 21 - milena/sandbox/edwin/rush/leaves/export_leaves.hh | 115 - milena/sandbox/edwin/rush/leaves/get_leaves.cc | 65 - milena/sandbox/edwin/rush/leaves/splot.sh | 10 - milena/sandbox/edwin/rush/leaves/test/Makefile | 41 - milena/sandbox/edwin/rush/leaves/test/configure | 21 - milena/sandbox/edwin/rush/leaves/test/export.cc | 63 - milena/sandbox/edwin/tests/sharp.cc | 311 - milena/sandbox/edwin/tests/sharpness_attribute.cc | 140 - milena/sandbox/edwin/tools/make_the_curves.sh | 15 - milena/sandbox/edwin/tree/Makefile | 1838 - milena/sandbox/edwin/tree/accumulator/arg_max.hh | 160 - milena/sandbox/edwin/tree/configure | 21 - milena/sandbox/edwin/tree/propagation.cc | 104 - milena/sandbox/edwin/tree/run.hh | 271 - milena/sandbox/edwin/tree/tree.cc | 293 - milena/sandbox/exec/Makefile | 7 - milena/sandbox/exec/bw_negate_in_color.cc | 46 - milena/sandbox/exec/filetype.hh | 54 - milena/sandbox/exec/histo_save.cc | 46 - milena/sandbox/fabien/README | 204 - milena/sandbox/fabien/bin/Makefile | 12 - milena/sandbox/fabien/bin/dicom2dump.cc | 32 - milena/sandbox/fabien/bin/dicom2pgm.cc | 34 - milena/sandbox/fabien/bin/dicom_mask.cc | 104 - milena/sandbox/fabien/bin/dump2pbm.cc | 51 - milena/sandbox/fabien/bin/dump2pgm.cc | 37 - milena/sandbox/fabien/bin/dump2pgm8b.cc | 33 - milena/sandbox/fabien/bin/dump2ppm.cc | 35 - milena/sandbox/fabien/bin/dump_mask.cc | 86 - milena/sandbox/fabien/bin/dumpi12_to_pgm.cc | 58 - milena/sandbox/fabien/bin/dumpl16_to_colorize.cc | 64 - milena/sandbox/fabien/bin/dumpl32_to_colorize.cc | 61 - milena/sandbox/fabien/bin/dumpl8_to_colorize.cc | 62 - milena/sandbox/fabien/bin/filetype.hh | 54 - milena/sandbox/fabien/bin/pnms2dump.cc | 98 - milena/sandbox/fabien/binarization/Makefile | 5 - milena/sandbox/fabien/binarization/test.cc | 149 - milena/sandbox/fabien/dcmtk/Makefile | 2 - milena/sandbox/fabien/dcmtk/dicom.cc | 14 - milena/sandbox/fabien/dcmtk/load.hh | 388 - milena/sandbox/fabien/dcmtk/save.hh | 951 - milena/sandbox/fabien/igr/Makefile | 99 - milena/sandbox/fabien/igr/Makefile.rules | 8 - milena/sandbox/fabien/igr/all_labels2gif.sh | 33 - milena/sandbox/fabien/igr/check.sh | 49 - milena/sandbox/fabien/igr/check2d_wsd.sh | 32 - milena/sandbox/fabien/igr/check3d_wsd.sh | 35 - milena/sandbox/fabien/igr/check_dist.sh | 19 - milena/sandbox/fabien/igr/check_edges.sh | 55 - milena/sandbox/fabien/igr/check_us_morpho.sh | 46 - milena/sandbox/fabien/igr/clo_vol.cc | 76 - milena/sandbox/fabien/igr/color/find_color.cc | 100 - milena/sandbox/fabien/igr/crop.cc | 73 - milena/sandbox/fabien/igr/dist_edges.cc | 276 - milena/sandbox/fabien/igr/filter.cc | 151 - milena/sandbox/fabien/igr/filter_morpho_us.cc | 100 - milena/sandbox/fabien/igr/fixed_seg/Makefile | 9 - milena/sandbox/fabien/igr/fixed_seg/main.cc | 321 - milena/sandbox/fabien/igr/fun_labels.cc | 253 - milena/sandbox/fabien/igr/fun_labels.sh | 104 - milena/sandbox/fabien/igr/grad.cc | 66 - milena/sandbox/fabien/igr/graph.cc | 331 - milena/sandbox/fabien/igr/igr.cc | 179 - milena/sandbox/fabien/igr/label2gif.cc | 105 - milena/sandbox/fabien/igr/launch.sh | 4 - milena/sandbox/fabien/igr/launch2d.sh | 32 - milena/sandbox/fabien/igr/launch3d.sh | 28 - milena/sandbox/fabien/igr/maj.cc | 61 - milena/sandbox/fabien/igr/mat2mln/mat2mln.cc | 60 - milena/sandbox/fabien/igr/mat2mln/mat2raw.cc | 52 - milena/sandbox/fabien/igr/mat2mln/raw2mlndata.cc | 130 - milena/sandbox/fabien/igr/matlab.cc | 382 - milena/sandbox/fabien/igr/mean_median_label.cc | 191 - milena/sandbox/fabien/igr/mean_slices.cc | 89 - milena/sandbox/fabien/igr/med.cc | 148 - milena/sandbox/fabien/igr/min_max_float.cc | 89 - milena/sandbox/fabien/igr/nbasins_check.sh | 17 - milena/sandbox/fabien/igr/nbasins_finder.cc | 79 - milena/sandbox/fabien/igr/norm.cc | 105 - milena/sandbox/fabien/igr/plot_label.hh | 58 - milena/sandbox/fabien/igr/plot_points/Makefile | 11 - milena/sandbox/fabien/igr/plot_points/README | 2 - milena/sandbox/fabien/igr/plot_points/int2rgb.hh | 36 - milena/sandbox/fabien/igr/plot_points/main.cc | 77 - .../fabien/igr/plot_points/plot_points_of_label.cc | 95 - milena/sandbox/fabien/igr/point_filtering/Makefile | 9 - milena/sandbox/fabien/igr/point_filtering/main.cc | 83 - milena/sandbox/fabien/igr/seg2d.cc | 55 - milena/sandbox/fabien/igr/seg3d.cc | 57 - milena/sandbox/fabien/igr/seg_vol_irm.hh | 349 - milena/sandbox/fabien/igr/segment_us_morpho.sh | 40 - milena/sandbox/fabien/igr/smooth_fixed_seg/main.cc | 243 - milena/sandbox/fabien/igr/space_smooth/Makefile | 15 - milena/sandbox/fabien/igr/space_smooth/linear.cc | 78 - milena/sandbox/fabien/igr/space_smooth/median.cc | 133 - milena/sandbox/fabien/igr/space_smooth/morpho.cc | 98 - milena/sandbox/fabien/igr/thres.cc | 72 - milena/sandbox/fabien/igr/time_max.cc | 118 - milena/sandbox/fabien/igr/time_max_norm.cc | 117 - milena/sandbox/fabien/igr/time_smooth/Makefile | 15 - milena/sandbox/fabien/igr/time_smooth/linear.cc | 95 - milena/sandbox/fabien/igr/time_smooth/median.cc | 102 - milena/sandbox/fabien/igr/time_smooth/morpho.cc | 102 - milena/sandbox/fabien/igr/tmax.sh | 23 - milena/sandbox/fabien/igr/watershed.hh | 331 - milena/sandbox/fabien/igr/watershed2d.cc | 318 - milena/sandbox/fabien/igr/watershed3d.cc | 330 - milena/sandbox/fabien/igr/wst.cc | 74 - milena/sandbox/fabien/igr/wst_edges.cc | 147 - milena/sandbox/fabien/magick/Makefile | 14 - milena/sandbox/fabien/magick/magick.cc | 27 - milena/sandbox/fabien/magick/save.cc | 23 - milena/sandbox/fabien/magick/tiled_image.cc | 38 - .../fabien/mln/canvas/browsing/directional.hh | 157 - milena/sandbox/fabien/mln/canvas/browsing/snake.hh | 128 - milena/sandbox/fabien/mln/core/image/cache.hh | 200 - milena/sandbox/fabien/mln/core/image/disk_ima.hh | 644 - .../fabien/mln/core/image/magick_tiled2d.hh | 610 - milena/sandbox/fabien/mln/core/image/page.hh | 155 - milena/sandbox/fabien/mln/core/image/tiled2d.hh | 652 - milena/sandbox/fabien/mln/data/fast_median.hh | 180 - milena/sandbox/fabien/mln/debug/int2rgb.hh | 91 - .../sandbox/fabien/mln/display/display_region.hh | 90 - milena/sandbox/fabien/mln/io/pnm/load.hh | 334 - milena/sandbox/fabien/mln/io/pnm/load_disk_ima.hh | 88 - milena/sandbox/fabien/mln/test/conversion.hh | 140 - milena/sandbox/fabien/mln/upsampling/hq2x.hh | 2990 - milena/sandbox/fabien/mln/upsampling/hq3x.hh | 3949 - milena/sandbox/fabien/mln/upsampling/hq4x.hh | 5429 - .../fabien/mln/world/inter_pixel/display_region.hh | 163 - .../fabien/mln/world/inter_pixel/is_zero_face.hh | 90 - milena/sandbox/fabien/tests/core/image/Makefile | 15 - milena/sandbox/fabien/tests/core/image/bench.hh | 19 - milena/sandbox/fabien/tests/core/image/bench.sh | 17 - milena/sandbox/fabien/tests/core/image/disk_ima.cc | 32 - milena/sandbox/fabien/tests/core/image/ima2d.cc | 31 - milena/sandbox/fabien/tests/core/image/tiled2d.cc | 32 - milena/sandbox/fabien/tests/display/Makefile | 7 - .../sandbox/fabien/tests/display/display_region.cc | 64 - milena/sandbox/fabien/tests/test/conversion.cc | 33 - milena/sandbox/fabien/tests/upsampling/Makefile | 12 - milena/sandbox/fabien/tests/upsampling/hq2x.cc | 29 - milena/sandbox/fabien/tests/upsampling/hq3x.cc | 29 - milena/sandbox/fabien/tests/upsampling/hq4x.cc | 29 - .../fabien/tests/world/inter_pixel/Makefile | 7 - .../tests/world/inter_pixel/display_region.cc | 59 - .../folio/exercices/heritage_conditionnel.cc | 7 - .../folio/exercices/heritage_conditionnel.hh | 46 - milena/sandbox/folio/img/monkeys_april.ppm | Bin 3099112 -> 0 bytes milena/sandbox/folio/mln/dt/canvas_dt.hh | 178 - milena/sandbox/folio/mln/dt/chamfer.hh | 156 - milena/sandbox/folio/mln/dt/cp.hh | 121 - milena/sandbox/folio/mln/dt/dmap.hh | 119 - milena/sandbox/folio/mln/dt/dt_old/canevas_dt.hh | 231 - milena/sandbox/folio/mln/dt/dt_old/chamfer.cc | 206 - .../sandbox/folio/mln/dt/dt_old/distance_front.cc | 88 - .../folio/mln/dt/dt_old/distance_front_new.hh | 420 - milena/sandbox/folio/mln/dt/dt_old/dt.cc | 59 - milena/sandbox/folio/mln/dt/dt_old/dt.hh | 101 - milena/sandbox/folio/mln/dt/dt_old/dt.spe.hh | 123 - milena/sandbox/folio/mln/dt/dt_old/naive.cc | 142 - milena/sandbox/folio/mln/dt/dt_old/psn.cc | 204 - milena/sandbox/folio/mln/dt/dt_old/psn_log.cc | 290 - milena/sandbox/folio/mln/dt/path.hh | 121 - milena/sandbox/folio/mln/dt/raw_cp_fast.hh | 173 - milena/sandbox/folio/mln/dt/raw_cp_slow.hh | 155 - milena/sandbox/folio/mln/dt/raw_dmap_fast.hh | 164 - milena/sandbox/folio/mln/dt/raw_dmap_slow.hh | 149 - milena/sandbox/folio/mln/dt/raw_path_fast.hh | 173 - milena/sandbox/folio/mln/dt/raw_path_slow.hh | 155 - milena/sandbox/folio/mln/fun/v2v/hsl_to_hsv.hh | 141 - milena/sandbox/folio/mln/fun/v2v/rgb_to_hsv.hh | 160 - .../folio/mln/histo/classify_with_histo_3d.hh | 59 - .../folio/mln/histo/classify_with_histo_rgb.hh | 39 - milena/sandbox/folio/mln/histo/compute_histo.hh | 69 - milena/sandbox/folio/mln/histo/compute_histo_3d.hh | 67 - .../sandbox/folio/mln/histo/compute_histo_rgb.hh | 43 - milena/sandbox/folio/mln/histo/project_histo_3d.hh | 61 - milena/sandbox/folio/mln/value/circular.hh | 268 - milena/sandbox/folio/mln/value/hsv.hh | 413 - milena/sandbox/folio/mln/value/pipo.hh | 107 - milena/sandbox/folio/papers/dt_resume.txt | 33 - milena/sandbox/folio/papers/examples.txt | 63 - milena/sandbox/folio/test/dt/canvas/dt.hh | 101 - milena/sandbox/folio/test/dt/canvas/dt.spe.hh | 123 - milena/sandbox/folio/test/dt/chamfer.cc | 52 - milena/sandbox/folio/test/dt/dt.cc | 66 - milena/sandbox/folio/test/dt/dt_bench.cc | 53 - milena/sandbox/folio/test/dt/dt_maze.cc | 124 - milena/sandbox/folio/test/dt/naive.cc | 142 - milena/sandbox/folio/test/dt/psn.cc | 204 - milena/sandbox/folio/test/dt/psn_log.cc | 290 - milena/sandbox/folio/test/dt/tmp.ppm | Bin 4966 -> 0 bytes .../sandbox/folio/test/histo/compute_histo_3d.cc | 76 - .../sandbox/folio/test/histo/compute_histo_rgb.cc | 52 - .../folio/test/histo/compute_histo_rgb_from_ppm.cc | 30 - milena/sandbox/folio/test/histo/plot_lena.cc | 55 - milena/sandbox/folio/test/histo/plot_lena_3d.cc | 63 - milena/sandbox/folio/test/histo/plot_lena_rgb.cc | 56 - .../folio/test/histo/project_histo_3d_add.cc | 75 - .../folio/test/histo/project_histo_3d_mean.cc | 80 - milena/sandbox/folio/test/histo/project_screen.cc | 149 - milena/sandbox/folio/test/histo/projected.cc | 49 - milena/sandbox/folio/test/histo/projected3d.cc | 138 - milena/sandbox/folio/test/value/circular.cc | 89 - milena/sandbox/folio/test/value/comp.cc | 9 - milena/sandbox/folio/test/value/hsv.cc | 34 - milena/sandbox/folio/test/value/pipo.cc | 21 - .../folio/tools/histo/classify_with_histo_gs.cc | 110 - .../histo/projected_histo_classified_color_maj.cc | 116 - .../tools/histo/projected_histo_classified_gs.cc | 116 - .../folio/tools/histo/projected_histo_gs.cc | 89 - milena/sandbox/fred/fun/abs.hh | 39 - milena/sandbox/fred/fun/assignability.hh | 103 - milena/sandbox/fred/fun/binary.hh | 137 - milena/sandbox/fred/fun/compose.hh | 71 - milena/sandbox/fred/fun/composition.hh | 210 - milena/sandbox/fred/fun/cos.cc | 34 - milena/sandbox/fred/fun/cos.hh | 48 - milena/sandbox/fred/fun/fun.cc | 108 - milena/sandbox/fred/fun/inc.hh | 43 - milena/sandbox/fred/fun/meta_function.hh | 203 - milena/sandbox/fred/fun/norm.hh | 96 - milena/sandbox/fred/fun/nsolve.hh | 152 - milena/sandbox/fred/fun/nsolve_binary.hh | 302 - milena/sandbox/fred/fun/nsolve_unary.hh | 171 - milena/sandbox/fred/fun/red.hh | 44 - milena/sandbox/fred/fun/thru.cc | 31 - milena/sandbox/fred/fun/thru_morpher.hh | 302 - milena/sandbox/fred/fun/unary.hh | 357 - milena/sandbox/fred/functions.html | 478 - milena/sandbox/fred/functions.mkdown | 441 - milena/sandbox/fred/old/accu_trait.hh | 94 - milena/sandbox/fred/old/accuprops.cc | 331 - milena/sandbox/fred/old/accuprops2.cc | 380 - milena/sandbox/fred/old/algebraic.cc | 406 - milena/sandbox/fred/old/closing_area.cc | 50 - milena/sandbox/fred/old/connected_filter.hh | 123 - milena/sandbox/fred/old/leveling.cc | 47 - milena/sandbox/fred/old/leveling_filter.hh | 381 - milena/sandbox/fred/old/mean.hh | 202 - milena/sandbox/fred/old/meantest.cc | 21 - milena/sandbox/fred/old/overload.cc | 296 - milena/sandbox/fred/old/p2p/Makefile | 12 - milena/sandbox/fred/old/p2p/compose_p2p.hh | 44 - milena/sandbox/fred/old/p2p/p2p_morpher.hh | 284 - milena/sandbox/fred/old/p2p/symmetry_p2p.hh | 47 - milena/sandbox/fred/old/p2p/test_morph_image.cc | 62 - milena/sandbox/fred/old/p2p/translate_p2p.hh | 43 - milena/sandbox/fred/old/site_wrapper.hh | 188 - milena/sandbox/fred/old/value.cc | 24 - milena/sandbox/fred/old/value_wrapper.hh | 188 - milena/sandbox/fred/tests/Makefile | 24 - milena/sandbox/fred/tests/cos.cc | 35 - milena/sandbox/fred/tests/fun.cc | 120 - milena/sandbox/fred/tests/thru.cc | 50 - milena/sandbox/fred/tests/wip.cc | 25 - milena/sandbox/garrigues/TODO | 43 - milena/sandbox/garrigues/area_filter_auto_dual.cc | 268 - milena/sandbox/garrigues/factures/extract_array.cc | 114 - .../garrigues/factures/extract_array_highlight.cc | 164 - milena/sandbox/garrigues/fllt/compute_level_set.hh | 410 - .../garrigues/fllt/compute_level_set_fast.hh | 486 - .../garrigues/fllt/compute_level_set_fast2.hh | 471 - milena/sandbox/garrigues/fllt/debug.hh | 205 - milena/sandbox/garrigues/fllt/doc.hh | 91 - milena/sandbox/garrigues/fllt/essai.cc | 104 - milena/sandbox/garrigues/fllt/fllt.hh | 136 - milena/sandbox/garrigues/fllt/fllt_doc.hh | 86 - milena/sandbox/garrigues/fllt/fllt_merge.hh | 200 - milena/sandbox/garrigues/fllt/fllt_optimized.hh | 193 - milena/sandbox/garrigues/fllt/fllt_simple.cc | 730 - milena/sandbox/garrigues/fllt/fllt_simple.svg.1.cc | 325 - milena/sandbox/garrigues/fllt/fllt_simple.svg.2.cc | 349 - milena/sandbox/garrigues/fllt/fllt_simple.svg.3.cc | 612 - milena/sandbox/garrigues/fllt/fllt_theo.cc | 322 - milena/sandbox/garrigues/fllt/fllt_types.hh | 71 - milena/sandbox/garrigues/fllt/give_confs.cc | 56 - .../sandbox/garrigues/fllt/local_configurations.hh | 144 - milena/sandbox/garrigues/fllt/lower.hh | 90 - milena/sandbox/garrigues/fllt/merge.hh | 216 - milena/sandbox/garrigues/fllt/test.cc | 62 - milena/sandbox/garrigues/fllt/test_fllt.cc | 34 - milena/sandbox/garrigues/fllt/test_fllt10.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt10_inv.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt12.cc | 29 - milena/sandbox/garrigues/fllt/test_fllt13.cc | 30 - milena/sandbox/garrigues/fllt/test_fllt15.cc | 43 - milena/sandbox/garrigues/fllt/test_fllt2.cc | 33 - milena/sandbox/garrigues/fllt/test_fllt3.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt3_inv.cc | 45 - milena/sandbox/garrigues/fllt/test_fllt4.cc | 40 - milena/sandbox/garrigues/fllt/test_fllt5.cc | 40 - milena/sandbox/garrigues/fllt/test_fllt6.cc | 28 - milena/sandbox/garrigues/fllt/test_fllt7.cc | 44 - milena/sandbox/garrigues/fllt/test_fllt7_inv.cc | 31 - milena/sandbox/garrigues/fllt/test_fllt8.cc | 33 - milena/sandbox/garrigues/fllt/test_fllt9.cc | 41 - milena/sandbox/garrigues/fllt/test_fllt_lena.cc | 24 - .../sandbox/garrigues/fllt/test_fllt_lena_tiles.cc | 32 - milena/sandbox/garrigues/fllt/test_fllt_tiny.cc | 19 - milena/sandbox/garrigues/fllt/test_flltb.cc | 40 - milena/sandbox/garrigues/fllt/types.hh | 211 - milena/sandbox/garrigues/fllt/upper.hh | 89 - .../image_identity/image_domain_morpher.hh | 122 - .../garrigues/image_identity/image_identity.cc | 9 - .../garrigues/image_identity/image_identity.hh | 77 - .../image_identity/image_value_morpher.hh | 95 - .../garrigues/image_identity/interpolated.cc | 70 - .../garrigues/image_identity/interpolated.hh | 185 - milena/sandbox/garrigues/level_set.hh | 494 - milena/sandbox/garrigues/log | 35 - milena/sandbox/garrigues/lower.hh | 89 - .../garrigues/tiled_image2d/backend/file.hh | 76 - .../sandbox/garrigues/tiled_image2d/backend/ios.hh | 79 - .../garrigues/tiled_image2d/backend/mmap.hh | 128 - milena/sandbox/garrigues/tiled_image2d/block.hh | 68 - milena/sandbox/garrigues/tiled_image2d/context.hh | 38 - .../sandbox/garrigues/tiled_image2d/layout/all.hh | 8 - .../garrigues/tiled_image2d/layout/image2d/all.hh | 7 - .../garrigues/tiled_image2d/layout/image2d/lrtb.hh | 70 - .../garrigues/tiled_image2d/layout/image2d/tblr.hh | 33 - .../garrigues/tiled_image2d/layout/layout2d.hh | 56 - .../garrigues/tiled_image2d/layout/page2d/all.hh | 7 - .../garrigues/tiled_image2d/layout/page2d/lrtb.hh | 52 - .../garrigues/tiled_image2d/layout/page2d/tblr.hh | 21 - milena/sandbox/garrigues/tiled_image2d/page.hh | 91 - .../sandbox/garrigues/tiled_image2d/paged_image.hh | 56 - .../sandbox/garrigues/tiled_image2d/support/lru.hh | 198 - .../garrigues/tiled_image2d/support/simple.hh | 35 - .../garrigues/tiled_image2d/tiled_image2d.cc | 54 - .../garrigues/tiled_image2d/tiled_image2d.hh | 374 - milena/sandbox/garrigues/union_find/Makefile | 27 - .../garrigues/union_find/canvas/find_root.hh | 61 - .../canvas/reconstruction_on_function.hh | 165 - .../union_find/canvas/reconstruction_on_set.hh | 149 - .../union_find/canvas/self_dual_reconstruction.hh | 217 - .../union_find/images/marker_to_dilate.pbm | 4 - .../union_find/images/marker_to_erode.pbm | Bin 221 -> 0 bytes .../sandbox/garrigues/union_find/images/mask.pbm | 5 - .../union_find/reconstructions_on_function.cc | 66 - .../union_find/reconstructions_on_function.hh | 247 - .../garrigues/union_find/reconstructions_on_set.cc | 90 - .../garrigues/union_find/reconstructions_on_set.hh | 224 - .../sandbox/garrigues/union_find/reunion_avec_theo | 23 - .../union_find/self_dual_reconstruction.cc | 105 - .../union_find/self_dual_reconstruction.hh | 206 - milena/sandbox/garrigues/upper.hh | 89 - milena/sandbox/garrigues/value_behavior.cc | 106 - milena/sandbox/green/README | 301 - .../green/bench/transform/distance/Makefile.am | 150 - .../green/bench/transform/distance/distance.cc | 775 - .../green/bug/labeling/mean_values/Makefile.am | 148 - .../green/bug/labeling/mean_values/label.pgm | Bin 16504 -> 0 bytes .../green/bug/labeling/mean_values/mean_values.cc | 59 - .../green/demo/accu/stat/histo2d/Makefile.am | 148 - .../green/demo/accu/stat/histo2d/histo2d.cc | 155 - .../sandbox/green/demo/annotating/bic/Makefile.am | 150 - milena/sandbox/green/demo/annotating/bic/bic.cc | 87 - .../sandbox/green/demo/annotating/hsv/Makefile.am | 152 - milena/sandbox/green/demo/annotating/hsv/hsv.cc | 607 - .../sandbox/green/demo/annotating/lep/Makefile.am | 150 - milena/sandbox/green/demo/annotating/lep/lep.cc | 92 - .../green/demo/annotating/nb_color/Makefile.am | 150 - .../green/demo/annotating/nb_color/nb_color.cc | 101 - .../green/demo/annotating/project/Makefile.am | 150 - .../green/demo/annotating/project/project.cc | 210 - .../green/demo/annotating/rgb_64/Makefile.am | 150 - .../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 47 - .../green/demo/annotating/rgb_64_9/Makefile.am | 150 - .../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 97 - .../green/demo/annotating/stddev_color/Makefile.am | 150 - .../demo/annotating/stddev_color/stddev_color.cc | 124 - .../demo/annotating/stddev_color_16/Makefile.am | 150 - .../annotating/stddev_color_16/stddev_color_16.cc | 178 - .../green/demo/clustering/kmean1d/Makefile.am | 148 - .../green/demo/clustering/kmean1d/kmean1d.cc | 161 - .../green/demo/clustering/kmean2d/Makefile.am | 148 - .../green/demo/clustering/kmean2d/kmean2d.cc | 440 - .../green/demo/clustering/kmean3d/Makefile.am | 148 - .../green/demo/clustering/kmean3d/kmean3d.cc | 169 - .../green/demo/clustering/kmean_rgb/Makefile.am | 148 - .../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 91 - .../demo/labeling/regional_maxima/Makefile.am | 150 - .../labeling/regional_maxima/regional_maxima.cc | 821 - .../demo/labeling/regional_maxima/thresholds.txt | 42 - milena/sandbox/green/doc/annotating/class.txt | 42 - .../green/doc/annotating/syntheseMillet2008.txt | 283 - milena/sandbox/green/doc/annotating/testMillet2008 | 69 - .../green/doc/examples/accu_color/accu_color.cc | 249 - milena/sandbox/green/doc/examples/frac/Makefile.am | 148 - milena/sandbox/green/doc/examples/frac/frac.cc | 423 - milena/sandbox/green/doc/examples/frac/frac.hh | 793 - milena/sandbox/green/doc/examples/frac/gcd.hh | 91 - .../sandbox/green/doc/examples/frac/sign_prod.hh | 74 - .../green/doc/examples/hello_milena/Makefile.am | 49 - .../doc/examples/hello_milena/hello_milena.cc | 41 - .../green/doc/examples/hello_world/Makefile.am | 49 - .../green/doc/examples/hello_world/hello_world.cc | 9 - .../green/doc/examples/hello_world/print.cc | 6 - milena/sandbox/green/doc/examples/io/Makefile.am | 150 - milena/sandbox/green/doc/examples/io/io.cc | 71 - .../green/doc/examples/learn_milena/Makefile.am | 49 - .../doc/examples/learn_milena/learn_milena.cc | 151 - milena/sandbox/green/doc/examples/otsu/Makefile.am | 49 - milena/sandbox/green/doc/examples/otsu/otsu.cc | 193 - .../sandbox/green/doc/examples/stats/Makefile.am | 49 - milena/sandbox/green/doc/examples/stats/stats.cc | 32 - milena/sandbox/green/doc/formulae/formulae.tex | 1157 - milena/sandbox/green/doc/quick_tour/quick_tour.tex | 115 - .../doc/regional_maxima/cmp_method/h0_input.pgm.gz | Bin 18078 -> 0 bytes .../doc/regional_maxima/cmp_method/h2_mean.pgm.gz | Bin 374 -> 0 bytes .../doc/regional_maxima/cmp_method/h2_merge.pgm.gz | Bin 4491 -> 0 bytes .../doc/regional_maxima/cmp_method/h3_mean.pgm.gz | Bin 391 -> 0 bytes .../doc/regional_maxima/cmp_method/h3_merge.pgm.gz | Bin 10188 -> 0 bytes .../doc/regional_maxima/cmp_method/h4_mean.pgm.gz | Bin 367 -> 0 bytes .../doc/regional_maxima/cmp_method/h4_merge.pgm.gz | Bin 18078 -> 0 bytes .../doc/regional_maxima/cmp_method/h5_mean.pgm.gz | Bin 372 -> 0 bytes .../doc/regional_maxima/cmp_method/h5_merge.pgm.gz | Bin 12777 -> 0 bytes .../doc/regional_maxima/cmp_method/i2_mean.ppm.gz | Bin 566650 -> 0 bytes .../doc/regional_maxima/cmp_method/i2_merge.ppm.gz | Bin 1586150 -> 0 bytes .../doc/regional_maxima/cmp_method/i3_mean.ppm.gz | Bin 573407 -> 0 bytes .../doc/regional_maxima/cmp_method/i3_merge.ppm.gz | Bin 3050979 -> 0 bytes .../doc/regional_maxima/cmp_method/i4_mean.ppm.gz | Bin 663621 -> 0 bytes .../doc/regional_maxima/cmp_method/i4_merge.ppm.gz | Bin 3387044 -> 0 bytes .../doc/regional_maxima/cmp_method/i5_mean.ppm.gz | Bin 653140 -> 0 bytes .../doc/regional_maxima/cmp_method/i5_merge.ppm.gz | Bin 3217839 -> 0 bytes .../doc/regional_maxima/cmp_method/l2_input.pgm.gz | Bin 423612 -> 0 bytes .../doc/regional_maxima/cmp_method/l3_input.pgm.gz | Bin 420801 -> 0 bytes .../doc/regional_maxima/cmp_method/l4_input.pgm.gz | Bin 486206 -> 0 bytes .../doc/regional_maxima/cmp_method/l5_input.pgm.gz | Bin 479055 -> 0 bytes .../regional_maxima/cmp_method/reponse_theo.eml | 106 - .../doc/regional_maxima/cmp_method/s2_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s3_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s4_histo.txt | 31 - .../doc/regional_maxima/cmp_method/s5_histo.txt | 31 - .../doc/regional_maxima/cmp_method/synthese.txt | 223 - .../doc/regional_maxima/cmp_quant/h0_input.pgm.gz | Bin 18078 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q2.pgm.gz | Bin 247 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q3.pgm.gz | Bin 280 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q4.pgm.gz | Bin 319 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q5.pgm.gz | Bin 375 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q6.pgm.gz | Bin 392 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q7.pgm.gz | Bin 383 -> 0 bytes .../regional_maxima/cmp_quant/h5_mean_q8.pgm.gz | Bin 470 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q2.pgm.gz | Bin 18081 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q3.pgm.gz | Bin 18081 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q4.pgm.gz | Bin 16358 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q5.pgm.gz | Bin 12780 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q6.pgm.gz | Bin 9694 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q7.pgm.gz | Bin 6211 -> 0 bytes .../regional_maxima/cmp_quant/h5_merge_q8.pgm.gz | Bin 1564 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q2.ppm.gz | Bin 112779 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q3.ppm.gz | Bin 191264 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q4.ppm.gz | Bin 298062 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q5.ppm.gz | Bin 653143 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q6.ppm.gz | Bin 807617 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q7.ppm.gz | Bin 813222 -> 0 bytes .../regional_maxima/cmp_quant/i5_mean_q8.ppm.gz | Bin 861711 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q2.ppm.gz | Bin 3387047 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q3.ppm.gz | Bin 3387047 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q4.ppm.gz | Bin 3355365 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q5.ppm.gz | Bin 3217842 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q6.ppm.gz | Bin 3033730 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q7.ppm.gz | Bin 2295150 -> 0 bytes .../regional_maxima/cmp_quant/i5_merge_q8.ppm.gz | Bin 1319396 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q2.pgm.gz | Bin 83951 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q3.pgm.gz | Bin 143817 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q4.pgm.gz | Bin 220346 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q5.pgm.gz | Bin 479058 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q6.pgm.gz | Bin 593359 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q7.pgm.gz | Bin 600121 -> 0 bytes .../regional_maxima/cmp_quant/l5_input_q8.pgm.gz | Bin 630760 -> 0 bytes .../doc/regional_maxima/cmp_quant/s5_histo_q2.txt | 3 - .../doc/regional_maxima/cmp_quant/s5_histo_q3.txt | 8 - .../doc/regional_maxima/cmp_quant/s5_histo_q4.txt | 18 - .../doc/regional_maxima/cmp_quant/s5_histo_q5.txt | 33 - .../doc/regional_maxima/cmp_quant/s5_histo_q6.txt | 33 - .../doc/regional_maxima/cmp_quant/s5_histo_q7.txt | 32 - .../doc/regional_maxima/cmp_quant/s5_histo_q8.txt | 75 - .../doc/regional_maxima/cmp_quant/synthese.txt | 205 - .../mp00411c/colormap_all_q4.txt.gz | Bin 187 -> 0 bytes .../mp00411c/colormap_all_q5.txt.gz | Bin 420 -> 0 bytes .../mp00411c/colormap_thick_q4.txt.gz | Bin 159 -> 0 bytes .../mp00411c/colormap_thick_q5.txt.gz | Bin 352 -> 0 bytes .../mp00411c/colormap_thin_q4.txt.gz | Bin 173 -> 0 bytes .../mp00411c/colormap_thin_q5.txt.gz | Bin 366 -> 0 bytes .../regional_maxima/mp00411c/histo_all_q4.dump.gz | Bin 1233 -> 0 bytes .../regional_maxima/mp00411c/histo_all_q5.dump.gz | Bin 4779 -> 0 bytes .../mp00411c/histo_thick_q4.dump.gz | Bin 781 -> 0 bytes .../mp00411c/histo_thick_q5.dump.gz | Bin 2532 -> 0 bytes .../regional_maxima/mp00411c/histo_thin_q4.dump.gz | Bin 901 -> 0 bytes .../regional_maxima/mp00411c/histo_thin_q5.dump.gz | Bin 2976 -> 0 bytes .../doc/regional_maxima/mp00411c/iz_all_q4.dump.gz | Bin 659040 -> 0 bytes .../doc/regional_maxima/mp00411c/iz_all_q5.dump.gz | Bin 1505619 -> 0 bytes .../regional_maxima/mp00411c/iz_thick_q4.dump.gz | Bin 482831 -> 0 bytes .../regional_maxima/mp00411c/iz_thick_q5.dump.gz | Bin 1414258 -> 0 bytes .../regional_maxima/mp00411c/iz_thin_q4.dump.gz | Bin 647722 -> 0 bytes .../regional_maxima/mp00411c/iz_thin_q5.dump.gz | Bin 1458415 -> 0 bytes .../mp00411c/labeled_all_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_all_q5.dump.gz | Bin 343 -> 0 bytes .../mp00411c/labeled_thick_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_thick_q5.dump.gz | Bin 309 -> 0 bytes .../mp00411c/labeled_thin_q4.dump.gz | Bin 149 -> 0 bytes .../mp00411c/labeled_thin_q5.dump.gz | Bin 308 -> 0 bytes .../regional_maxima/mp00411c/mean3_all_q4.ppm.gz | Bin 985276 -> 0 bytes .../regional_maxima/mp00411c/mean3_all_q5.ppm.gz | Bin 1961577 -> 0 bytes .../regional_maxima/mp00411c/mean3_thick_q4.ppm.gz | Bin 865034 -> 0 bytes .../regional_maxima/mp00411c/mean3_thick_q5.ppm.gz | Bin 1831699 -> 0 bytes .../regional_maxima/mp00411c/mean3_thin_q4.ppm.gz | Bin 958289 -> 0 bytes .../regional_maxima/mp00411c/mean3_thin_q5.ppm.gz | Bin 1872271 -> 0 bytes .../regional_maxima/mp00411c/mean4_all_q4.ppm.gz | Bin 772605 -> 0 bytes .../regional_maxima/mp00411c/mean4_all_q5.ppm.gz | Bin 1852455 -> 0 bytes .../regional_maxima/mp00411c/mean4_thick_q4.ppm.gz | Bin 559850 -> 0 bytes .../regional_maxima/mp00411c/mean4_thick_q5.ppm.gz | Bin 1727247 -> 0 bytes .../regional_maxima/mp00411c/mean4_thin_q4.ppm.gz | Bin 760428 -> 0 bytes .../regional_maxima/mp00411c/mean4_thin_q5.ppm.gz | Bin 1781495 -> 0 bytes .../doc/regional_maxima/mp00411c/mp00411c.ppm.gz | Bin 5316204 -> 0 bytes .../doc/regional_maxima/mp00411c/mp00411c.sh.gz | Bin 636 -> 0 bytes .../regional_maxima/mp00411c/mp00411c_thick.pbm.gz | Bin 190478 -> 0 bytes .../regional_maxima/mp00411c/mp00411c_thin.pbm.gz | Bin 248730 -> 0 bytes .../regional_maxima/mp00411c/opened_all_q4.dump.gz | Bin 1159 -> 0 bytes .../regional_maxima/mp00411c/opened_all_q5.dump.gz | Bin 4531 -> 0 bytes .../mp00411c/opened_thick_q4.dump.gz | Bin 747 -> 0 bytes .../mp00411c/opened_thick_q5.dump.gz | Bin 2351 -> 0 bytes .../mp00411c/opened_thin_q4.dump.gz | Bin 848 -> 0 bytes .../mp00411c/opened_thin_q5.dump.gz | Bin 2772 -> 0 bytes .../regional_maxima/mp00411c/proj1_all_q4.pgm.gz | Bin 343 -> 0 bytes .../regional_maxima/mp00411c/proj1_all_q5.pgm.gz | Bin 779 -> 0 bytes .../regional_maxima/mp00411c/proj1_thick_q4.pgm.gz | Bin 312 -> 0 bytes .../regional_maxima/mp00411c/proj1_thick_q5.pgm.gz | Bin 612 -> 0 bytes .../regional_maxima/mp00411c/proj1_thin_q4.pgm.gz | Bin 339 -> 0 bytes .../regional_maxima/mp00411c/proj1_thin_q5.pgm.gz | Bin 718 -> 0 bytes .../regional_maxima/mp00411c/proj2_all_q4.pgm.gz | Bin 338 -> 0 bytes .../regional_maxima/mp00411c/proj2_all_q5.pgm.gz | Bin 750 -> 0 bytes .../regional_maxima/mp00411c/proj2_thick_q4.pgm.gz | Bin 315 -> 0 bytes .../regional_maxima/mp00411c/proj2_thick_q5.pgm.gz | Bin 606 -> 0 bytes .../regional_maxima/mp00411c/proj2_thin_q4.pgm.gz | Bin 331 -> 0 bytes .../regional_maxima/mp00411c/proj2_thin_q5.pgm.gz | Bin 693 -> 0 bytes .../regional_maxima/mp00411c/proj3_all_q4.ppm.gz | Bin 230 -> 0 bytes .../regional_maxima/mp00411c/proj3_all_q5.ppm.gz | Bin 401 -> 0 bytes .../regional_maxima/mp00411c/proj3_thick_q4.ppm.gz | Bin 224 -> 0 bytes .../regional_maxima/mp00411c/proj3_thick_q5.ppm.gz | Bin 343 -> 0 bytes .../regional_maxima/mp00411c/proj3_thin_q4.ppm.gz | Bin 229 -> 0 bytes .../regional_maxima/mp00411c/proj3_thin_q5.ppm.gz | Bin 359 -> 0 bytes .../regional_maxima/mp00411c/proj4_all_q4.ppm.gz | Bin 252 -> 0 bytes .../regional_maxima/mp00411c/proj4_all_q5.ppm.gz | Bin 447 -> 0 bytes .../regional_maxima/mp00411c/proj4_thick_q4.ppm.gz | Bin 221 -> 0 bytes .../regional_maxima/mp00411c/proj4_thick_q5.ppm.gz | Bin 369 -> 0 bytes .../regional_maxima/mp00411c/proj4_thin_q4.ppm.gz | Bin 234 -> 0 bytes .../regional_maxima/mp00411c/proj4_thin_q5.ppm.gz | Bin 415 -> 0 bytes .../doc/regional_maxima/mp00411c/quant_q4.ppm.gz | Bin 2590062 -> 0 bytes .../doc/regional_maxima/mp00411c/quant_q5.ppm.gz | Bin 3775184 -> 0 bytes .../regional_maxima/mp00411c/stats3_all_q4.txt.gz | Bin 292 -> 0 bytes .../regional_maxima/mp00411c/stats3_all_q5.txt.gz | Bin 701 -> 0 bytes .../mp00411c/stats3_thick_q4.txt.gz | Bin 244 -> 0 bytes .../mp00411c/stats3_thick_q5.txt.gz | Bin 584 -> 0 bytes .../regional_maxima/mp00411c/stats3_thin_q4.txt.gz | Bin 262 -> 0 bytes .../regional_maxima/mp00411c/stats3_thin_q5.txt.gz | Bin 606 -> 0 bytes .../regional_maxima/mp00411c/stats4_all_q4.txt.gz | Bin 284 -> 0 bytes .../regional_maxima/mp00411c/stats4_all_q5.txt.gz | Bin 704 -> 0 bytes .../mp00411c/stats4_thick_q4.txt.gz | Bin 234 -> 0 bytes .../mp00411c/stats4_thick_q5.txt.gz | Bin 580 -> 0 bytes .../regional_maxima/mp00411c/stats4_thin_q4.txt.gz | Bin 255 -> 0 bytes .../regional_maxima/mp00411c/stats4_thin_q5.txt.gz | Bin 591 -> 0 bytes .../doc/regional_maxima/mp00411c/synthese.txt.gz | Bin 4062 -> 0 bytes .../green/exp/annotating/achromastism/Makefile.am | 153 - .../exp/annotating/achromastism/achromastism.cc | 113 - .../exp/annotating/achromastism/text-color.txt | 15 - .../green/exp/annotating/achromastism/text-img.txt | 40 - .../exp/annotating/achromastism/text-only.txt | 8 - .../sandbox/green/exp/annotating/bench/Makefile.am | 153 - milena/sandbox/green/exp/annotating/bench/bench.cc | 1213 - .../sandbox/green/exp/annotating/error/Makefile.am | 153 - milena/sandbox/green/exp/annotating/error/error.cc | 700 - .../sandbox/green/exp/annotating/histo/Makefile.am | 153 - milena/sandbox/green/exp/annotating/histo/histo.cc | 306 - .../sandbox/green/exp/annotating/hsv/Makefile.am | 153 - milena/sandbox/green/exp/annotating/hsv/hsv.cc | 652 - .../sandbox/green/exp/annotating/hue/Makefile.am | 153 - milena/sandbox/green/exp/annotating/hue/hue.cc | 291 - .../green/exp/annotating/hue/text-color.txt | 15 - .../sandbox/green/exp/annotating/hue/text-img.txt | 40 - .../sandbox/green/exp/annotating/hue/text-only.txt | 8 - .../green/exp/annotating/nb_color/Makefile.am | 151 - .../green/exp/annotating/nb_color/nb_color.cc | 131 - .../green/exp/annotating/saturation/Makefile.am | 153 - .../green/exp/annotating/saturation/saturation.cc | 119 - .../green/exp/annotating/saturation/text-color.txt | 15 - .../green/exp/annotating/saturation/text-img.txt | 40 - .../green/exp/annotating/saturation/text-only.txt | 8 - .../green/exp/annotating/stddev_color/Makefile.am | 151 - .../exp/annotating/stddev_color/stddev_color.cc | 153 - .../exp/annotating/stddev_color_16/Makefile.am | 151 - .../annotating/stddev_color_16/stddev_color_16.cc | 195 - .../sandbox/green/exp/annotating/value/Makefile.am | 153 - .../green/exp/annotating/value/text-color.txt | 15 - .../green/exp/annotating/value/text-img.txt | 40 - .../green/exp/annotating/value/text-only.txt | 8 - milena/sandbox/green/exp/annotating/value/value.cc | 316 - .../green/exp/labeling/regional_maxima/Makefile.am | 151 - .../labeling/regional_maxima/regional_maxima.cc | 156 - milena/sandbox/green/mln/accu/stat/histo1d.hh | 348 - milena/sandbox/green/mln/accu/stat/histo2d.hh | 346 - milena/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 380 - milena/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 349 - milena/sandbox/green/mln/clustering/k_mean.hh | 672 - milena/sandbox/green/mln/clustering/kmean1d.hh | 1100 - milena/sandbox/green/mln/clustering/kmean2d.hh | 1343 - milena/sandbox/green/mln/clustering/kmean3d.hh | 1347 - milena/sandbox/green/mln/clustering/kmean_rgb.hh | 973 - milena/sandbox/green/mln/display/display_histo.hh | 180 - milena/sandbox/green/mln/display/project_histo.hh | 536 - milena/sandbox/green/mln/fun/p2b/achromatic.hh | 112 - .../sandbox/green/mln/fun/p2b/component_equals.hh | 99 - milena/sandbox/green/mln/fun/v2v/achromatism.hh | 64 - .../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 - .../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 - milena/sandbox/green/mln/fun/v2v/log.hh | 70 - milena/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 70 - milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 - milena/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 82 - .../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 - milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 - milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 - milena/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 70 - .../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 - .../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 - milena/sandbox/green/mln/img_path.hh | 239 - milena/sandbox/green/mln/io/plot/save_histo_sh.hh | 204 - milena/sandbox/green/mln/io/plot/save_image_sh.hh | 1058 - milena/sandbox/green/mln/math/ceil.hh | 64 - milena/sandbox/green/mln/math/floor.hh | 64 - milena/sandbox/green/mln/value/hsv.hh | 424 - milena/sandbox/green/mln/value/rg.hh | 116 - .../green/tests/accu/stat/histo1d/Makefile.am | 148 - .../green/tests/accu/stat/histo1d/gaussian.sh | 12 - .../green/tests/accu/stat/histo1d/histo1d.cc | 706 - .../green/tests/accu/stat/histo2d/Makefile.am | 148 - .../green/tests/accu/stat/histo2d/gaussian2d.sh | 21 - .../green/tests/accu/stat/histo3d_hsl/Makefile.am | 148 - .../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 423 - .../green/tests/accu/stat/histo3d_rgb/Makefile.am | 148 - .../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 398 - .../green/tests/clustering/k_mean/Makefile.am | 148 - .../green/tests/clustering/k_mean/k_mean.cc | 450 - .../green/tests/clustering/kmean1d/Makefile.am | 148 - .../green/tests/clustering/kmean1d/kmean1d.cc | 483 - .../green/tests/io/plot/save_image_sh/Makefile.am | 148 - .../tests/io/plot/save_image_sh/save_image_sh.cc | 662 - .../green/tools/annotating/histo/Makefile.am | 150 - .../sandbox/green/tools/annotating/histo/histo.cc | 143 - .../sandbox/green/tools/annotating/iz/Makefile.am | 150 - milena/sandbox/green/tools/annotating/iz/iz.cc | 373 - .../green/tools/annotating/opening/Makefile.am | 150 - .../green/tools/annotating/opening/opening.cc | 111 - .../green/tools/annotating/regmax/Makefile.am | 150 - .../green/tools/annotating/regmax/regmax.cc | 328 - milena/sandbox/icdar/2009/README | 13 - milena/sandbox/icdar/2009/dibco/binarization.cc | 840 - milena/sandbox/icdar/2009/dibco/quasi.cc | 180 - .../sandbox/icdar/2009/dibco/svg.1.binarization.cc | 466 - .../sandbox/icdar/2009/dibco/svg.2.binarization.cc | 738 - .../sandbox/icdar/2009/dibco/svg.3.binarization.cc | 860 - milena/sandbox/icdar/2009/dibco/wst-based.sh | 8 - milena/sandbox/icdar/2009/hsc/clean_input.cc | 41 - milena/sandbox/icdar/2009/hsc/clean_input.hh | 45 - milena/sandbox/icdar/2009/hsc/clean_lines.hh | 72 - .../2009/hsc/clean_lines_with_grouped_bboxes.hh | 104 - .../icdar/2009/hsc/dummy_input_to_words_dat.cc | 59 - .../sandbox/icdar/2009/hsc/first_attempts/boxes.cc | 109 - .../sandbox/icdar/2009/hsc/first_attempts/dist.sh | 8 - .../icdar/2009/hsc/first_attempts/exec/iz_lines.cc | 106 - .../2009/hsc/first_attempts/exec/relabel_lines.cc | 296 - .../2009/hsc/first_attempts/exec/show_lines.cc | 53 - .../2009/hsc/first_attempts/exec/show_lines_pbm.cc | 44 - .../sandbox/icdar/2009/hsc/first_attempts/fuzzy.sh | 18 - .../sandbox/icdar/2009/hsc/first_attempts/main.cc | 389 - .../icdar/2009/hsc/first_attempts/reduce.sh | 4 - .../sandbox/icdar/2009/hsc/first_attempts/words.sh | 7 - .../icdar/2009/hsc/first_attempts/words_25p.sh | 11 - milena/sandbox/icdar/2009/hsc/get_line_images.hh | 69 - milena/sandbox/icdar/2009/hsc/icdar2ppm.cc | 16 - milena/sandbox/icdar/2009/hsc/icdar2ppm.hh | 35 - milena/sandbox/icdar/2009/hsc/icdar_io.cc | 51 - .../sandbox/icdar/2009/hsc/input_lines_to_lines.cc | 46 - milena/sandbox/icdar/2009/hsc/input_to_lines.hh | 46 - .../sandbox/icdar/2009/hsc/input_to_lines_dat.cc | 88 - .../sandbox/icdar/2009/hsc/input_to_words_dat.cc | 146 - milena/sandbox/icdar/2009/hsc/input_to_ws.hh | 116 - milena/sandbox/icdar/2009/hsc/input_to_wsl.cc | 68 - milena/sandbox/icdar/2009/hsc/io/icdar/load.hh | 96 - milena/sandbox/icdar/2009/hsc/io/icdar/save.hh | 89 - milena/sandbox/icdar/2009/hsc/label_maj.hh | 197 - milena/sandbox/icdar/2009/hsc/line_to_words.hh | 166 - milena/sandbox/icdar/2009/hsc/lines_to_boxes.cc | 54 - milena/sandbox/icdar/2009/hsc/lines_to_words.cc | 50 - .../sandbox/icdar/2009/hsc/old_input_to_lines.cc | 380 - milena/sandbox/icdar/2009/hsc/ws_to_wsl.hh | 451 - milena/sandbox/icdar/2009/pscomp/iz.cc | 174 - milena/sandbox/icdar/2009/pscomp/rect_filter.cc | 165 - milena/sandbox/igr/code/test.cc | 50 - .../sandbox/inim/2009/binarization/binarization.cc | 36 - .../sandbox/inim/2009/binarization/binarization.hh | 78 - .../2009/binarization/proof-of-concept/ChangeLog | 69 - .../2009/binarization/proof-of-concept/Makefile | 87 - .../binarization/proof-of-concept/build/Makefile | 79 - .../proof-of-concept/build/configure.in | 5 - .../binarization/proof-of-concept/check/Makefile | 71 - .../binarization/proof-of-concept/check/graph.sh | 27 - .../binarization/proof-of-concept/check/histo.gp | 19 - .../2009/binarization/proof-of-concept/configure | 264 - .../binarization/proof-of-concept/configure.in | 26 - .../binarization/proof-of-concept/scripts/flower | 33 - .../proof-of-concept/scripts/init_tar.sh | 14 - .../binarization/proof-of-concept/scripts/todo.sh | 26 - .../binarization/proof-of-concept/src/basic.cc | 75 - .../binarization/proof-of-concept/src/gradient.cc | 109 - .../binarization/proof-of-concept/src/snake2d.hh | 190 - .../binarization/proof-of-concept/src/util.hxx | 97 - milena/sandbox/inim/2009/binarization/snake2d.cc | 39 - milena/sandbox/inim/2009/binarization/snake2d.hh | 190 - milena/sandbox/inim/2009/classif/Makefile | 87 - milena/sandbox/inim/2009/classif/plotscript | 4 - milena/sandbox/inim/2009/classif/src/display.hh | 80 - milena/sandbox/inim/2009/classif/src/iccvg04.cc | 171 - milena/sandbox/inim/2009/classif/src/max_tree.hh | 312 - milena/sandbox/inim/2009/classif/src/proj.hh | 139 - milena/sandbox/inim/2009/classif/src/v2.cc | 178 - milena/sandbox/inim/2009/color/README | 83 - milena/sandbox/inim/2009/color/laplacien.cc | 130 - .../inim/2009/color/min_tree_area_filter.cc | 515 - milena/sandbox/inim/2009/color/min_tree_color.cc | 536 - .../sandbox/inim/2009/color/min_tree_color_v2.cc | 533 - .../inim/2009/color/min_tree_height_filter.cc | 553 - .../inim/2009/color/min_tree_volume_filter.cc | 551 - milena/sandbox/inim/2009/color/reference.cc | 557 - milena/sandbox/inim/2009/color/reference2.cc | 408 - milena/sandbox/inim/2009/color/src/convert.hh | 37 - milena/sandbox/inim/2009/color/src/distance.hh | 52 - milena/sandbox/inim/2009/color/src/graph.hh | 62 - milena/sandbox/inim/2009/color/src/io.hh | 57 - milena/sandbox/inim/2009/nature/Makefile | 24 - milena/sandbox/inim/2009/nature/closing.cc | 61 - milena/sandbox/inim/2009/nature/co_occurence.hh | 77 - milena/sandbox/inim/2009/nature/erosion.cc | 60 - milena/sandbox/inim/2009/nature/fft.cc | 61 - milena/sandbox/inim/2009/nature/gradient.cc | 60 - milena/sandbox/inim/2009/nature/histo_hsi.cc | 181 - milena/sandbox/inim/2009/nature/hom.cc | 316 - milena/sandbox/inim/2009/nature/mco.cc | 48 - milena/sandbox/inim/2009/nature/nature.cc | 499 - milena/sandbox/inim/2009/nature/opening.cc | 61 - milena/sandbox/inim/2009/nature/proj.cc | 68 - milena/sandbox/inim/2009/nature/proj.hh | 64 - milena/sandbox/inim/2009/nature/test.sh | 11 - milena/sandbox/inim/2009/ocr/Makefile | 26 - milena/sandbox/inim/2009/ocr/check.sh | 31 - milena/sandbox/inim/2009/ocr/check_simple_point.cc | 61 - .../inim/2009/ocr/compute_local_configurations.cc | 74 - milena/sandbox/inim/2009/ocr/enlarge.hh | 202 - .../sandbox/inim/2009/ocr/ocr_with_preprocess.cc | 173 - .../inim/2009/ocr/ocr_without_preprocess.cc | 90 - milena/sandbox/inim/2009/ocr/resize.hh | 96 - milena/sandbox/inim/2009/ocr/simple_point.cc | 39 - milena/sandbox/inim/2009/ocr/simple_point.hh | 206 - milena/sandbox/inim/2009/ocr/skeleton.hh | 200 - milena/sandbox/inim/2009/ocr/skeleton.old.cc | 30 - milena/sandbox/inim/2009/ocr/skeleton.old.hh | 612 - milena/sandbox/inim/2009/ocr/tesseract_wrap.hh | 91 - milena/sandbox/inim/2010/blur/AUTHORS | 2 - milena/sandbox/inim/2010/blur/Makefile | 29 - milena/sandbox/inim/2010/blur/README | 7 - milena/sandbox/inim/2010/blur/advance_iterator.hh | 55 - milena/sandbox/inim/2010/blur/advance_iterator.hxx | 95 - milena/sandbox/inim/2010/blur/cuttor.hh | 61 - milena/sandbox/inim/2010/blur/cuttor.hxx | 304 - milena/sandbox/inim/2010/blur/main.cc | 39 - milena/sandbox/inim/2010/blur/vect_it.hh | 43 - milena/sandbox/inim/2010/blur/vect_it.hxx | 152 - milena/sandbox/inim/2010/blur/vect_it_OLD.hxx | 145 - milena/sandbox/inim/2010/blur/vector.hh | 43 - milena/sandbox/inim/2010/blur/vector.hxx | 115 - milena/sandbox/inim/2010/boxes/Makefile | 47 - milena/sandbox/inim/2010/boxes/boxes.cc | 221 - milena/sandbox/inim/2010/boxes/configure | 27 - milena/sandbox/inim/2010/cag/Makefile | 7 - milena/sandbox/inim/2010/cag/README | 47 - milena/sandbox/inim/2010/cag/get_lines.hh | 113 - milena/sandbox/inim/2010/cag/graph.hh | 189 - milena/sandbox/inim/2010/cag/main.cc | 113 - milena/sandbox/inim/2010/cag/superpose.hh | 125 - milena/sandbox/inim/2010/morpho/README | 19 - milena/sandbox/inim/2010/morpho/configure | 45 - milena/sandbox/inim/2010/morpho/dilation-n.hh | 41 - milena/sandbox/inim/2010/morpho/erosion-n.hh | 41 - milena/sandbox/inim/2010/morpho/main_dilation-n.cc | 54 - milena/sandbox/inim/2010/morpho/morpho.cc | 129 - milena/sandbox/inim/2010/morpho/run.sh | 21 - milena/sandbox/inim/2010/page/AUTHORS | 3 - milena/sandbox/inim/2010/page/Makefile | 43 - milena/sandbox/inim/2010/page/README | 51 - .../inim/2010/page/binarization/binarization.hh | 36 - .../inim/2010/page/binarization/binarization.hxx | 72 - .../inim/2010/page/binarization/functors.hh | 23 - .../inim/2010/page/binarization/functors.hxx | 33 - .../inim/2010/page/binarization/grayscale.hh | 32 - .../inim/2010/page/binarization/grayscale.hxx | 15 - .../inim/2010/page/binarization/integral-image.hh | 34 - .../inim/2010/page/binarization/integral-image.hxx | 57 - .../sandbox/inim/2010/page/check_size_functor.hh | 30 - milena/sandbox/inim/2010/page/main.cc | 89 - milena/sandbox/inim/2010/page/white.hh | 36 - milena/sandbox/inim/2010/page/white.hxx | 233 - milena/sandbox/inim/2010/rag/Makefile | 25 - milena/sandbox/inim/2010/rag/center_weight.hh | 183 - milena/sandbox/inim/2010/rag/dijkstra.hh | 71 - .../sandbox/inim/2010/rag/p_vertices_with_accu.hh | 115 - milena/sandbox/inim/2010/rag/rag.cc | 29 - milena/sandbox/inim/2010/rag/rag.hh | 246 - milena/sandbox/inim/2011/fredwin/Makefile | 37 - milena/sandbox/inim/2011/fredwin/configure | 21 - milena/sandbox/inim/2011/fredwin/inim.cc | 273 - milena/sandbox/jardonnet/TODO | 6 - milena/sandbox/jardonnet/array/Makefile | 2 - milena/sandbox/jardonnet/array/array.cc | 22 - milena/sandbox/jardonnet/array/array.hh | 300 - milena/sandbox/jardonnet/array/old/1d.hh | 293 - milena/sandbox/jardonnet/array/old/1d.hxx | 237 - milena/sandbox/jardonnet/array/old/2d.hh | 327 - milena/sandbox/jardonnet/array/old/2d.hxx | 283 - milena/sandbox/jardonnet/array/old/3d.hh | 334 - milena/sandbox/jardonnet/array/old/3d.hxx | 293 - milena/sandbox/jardonnet/array/old/all.hh | 36 - milena/sandbox/jardonnet/array/old/nd.hh | 50 - milena/sandbox/jardonnet/array/old/objs.hh | 75 - milena/sandbox/jardonnet/icc.txt | 2 - milena/sandbox/jardonnet/igr/Makefile | 61 - milena/sandbox/jardonnet/igr/check/check | 10 - milena/sandbox/jardonnet/igr/check/s7.ppm | 6001 - milena/sandbox/jardonnet/igr/check/tiny.ppm | 317 - milena/sandbox/jardonnet/igr/src/igr.cc | 109 - milena/sandbox/jardonnet/n_cmpt/Makefile | 46 - milena/sandbox/jardonnet/n_cmpt/check/mg_ima.pgm | Bin 96121 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/check/test2.pgm | Bin 152 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test3.pgm | Bin 152 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/test4.pgm | Bin 114 -> 0 bytes milena/sandbox/jardonnet/n_cmpt/check/tiny.pgm | 193 - .../jardonnet/n_cmpt/diff_ref_fused_on_small | 13 - milena/sandbox/jardonnet/n_cmpt/fused | 26 - milena/sandbox/jardonnet/n_cmpt/fused_filter.cc | 254 - milena/sandbox/jardonnet/n_cmpt/n_cmpt.cc | 43 - milena/sandbox/jardonnet/n_cmpt/n_cmpt.hh | 193 - milena/sandbox/jardonnet/n_cmpt/n_cmpt2.cc | 37 - milena/sandbox/jardonnet/n_cmpt/n_cmpt2.hh | 175 - milena/sandbox/jardonnet/n_cmpt/n_cmpt3.cc | 46 - milena/sandbox/jardonnet/n_cmpt/n_cmpt3.hh | 205 - milena/sandbox/jardonnet/n_cmpt/n_cmpt4.cc | 48 - milena/sandbox/jardonnet/n_cmpt/n_cmpt4.hh | 208 - milena/sandbox/jardonnet/n_cmpt/n_cmpt5.cc | 46 - milena/sandbox/jardonnet/n_cmpt/n_cmpt5.hh | 253 - milena/sandbox/jardonnet/n_cmpt/nwst.cc | 48 - milena/sandbox/jardonnet/n_cmpt/nwst.hh | 200 - milena/sandbox/jardonnet/n_cmpt/prob.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/ref | 22 - milena/sandbox/jardonnet/n_cmpt/ref_filter.cc | 226 - milena/sandbox/jardonnet/n_cmpt/seg15.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/test3.cc | 42 - .../jardonnet/n_cmpt/test_attribute_watershed.cc | 79 - milena/sandbox/jardonnet/n_cmpt/tikz.cc | 63 - milena/sandbox/jardonnet/n_cmpt/tikz.hh | 309 - milena/sandbox/jardonnet/n_cmpt/tiny_seg15.pgm | 5 - milena/sandbox/jardonnet/n_cmpt/wst.cc | 46 - milena/sandbox/jardonnet/perl/hxx.pl | 27 - milena/sandbox/jardonnet/perl/test/all.hh | 63 - milena/sandbox/jardonnet/perl/test/c.hh | 140 - milena/sandbox/jardonnet/perl/test/cast.hh | 85 - milena/sandbox/jardonnet/perl/test/i2v/all.hh | 56 - milena/sandbox/jardonnet/perl/test/i2v/all_to.hh | 108 - milena/sandbox/jardonnet/perl/test/i2v/array.hh | 147 - .../jardonnet/perl/test/internal/selector.hh | 200 - .../perl/test/internal/x2x_linear_impl.hh | 102 - milena/sandbox/jardonnet/perl/test/ops.hh | 199 - milena/sandbox/jardonnet/perl/test/p2b/all.hh | 56 - milena/sandbox/jardonnet/perl/test/p2b/chess.hh | 78 - milena/sandbox/jardonnet/perl/test/p2b/has.hh | 137 - milena/sandbox/jardonnet/perl/test/p2v/all.hh | 58 - milena/sandbox/jardonnet/perl/test/p2v/elifs.hh | 85 - milena/sandbox/jardonnet/perl/test/p2v/iota.hh | 106 - milena/sandbox/jardonnet/perl/test/p2v/ternary.hh | 120 - .../sandbox/jardonnet/perl/test/v2b/threshold.hh | 90 - milena/sandbox/jardonnet/perl/test/v2v/abs.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/all.hh | 61 - milena/sandbox/jardonnet/perl/test/v2v/cast.hh | 81 - milena/sandbox/jardonnet/perl/test/v2v/dec.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/enc.hh | 77 - milena/sandbox/jardonnet/perl/test/v2v/id.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/inc.hh | 78 - milena/sandbox/jardonnet/perl/test/v2v/linear.hh | 94 - milena/sandbox/jardonnet/perl/test/v2v/norm.hh | 130 - .../sandbox/jardonnet/perl/test/v2v/rgb_to_hsi.hh | 143 - milena/sandbox/jardonnet/perl/test/v2v/saturate.hh | 129 - milena/sandbox/jardonnet/perl/test/vv2v/max.hh | 77 - milena/sandbox/jardonnet/perl/test/vv2v/min.hh | 77 - milena/sandbox/jardonnet/perl/test/x2x/all.hh | 66 - .../jardonnet/perl/test/x2x/geom/composed.hh | 285 - .../jardonnet/perl/test/x2x/geom/rotation.hh | 243 - .../jardonnet/perl/test/x2x/geom/translation.hh | 152 - .../jardonnet/perl/test/x2x/interpol/bilinear.hh | 139 - .../jardonnet/perl/test/x2x/interpol/linear.hh | 124 - .../jardonnet/perl/test/x2x/interpol/test.cc | 14 - milena/sandbox/jardonnet/registration/center.hh | 72 - milena/sandbox/jardonnet/registration/chamfer.hh | 189 - milena/sandbox/jardonnet/registration/cloud.hh | 107 - milena/sandbox/jardonnet/registration/cov.hh | 82 - milena/sandbox/jardonnet/registration/cross_cov.hh | 18 - milena/sandbox/jardonnet/registration/exp_val.hh | 73 - milena/sandbox/jardonnet/registration/final_qk.hh | 111 - .../jardonnet/registration/frankel_young.hh | 46 - milena/sandbox/jardonnet/registration/icp.hh | 255 - milena/sandbox/jardonnet/registration/icp_ref.hh | 234 - .../jardonnet/registration/interpolation.hh | 41 - milena/sandbox/jardonnet/registration/jacobi.hh | 116 - milena/sandbox/jardonnet/registration/misc.hh | 19 - .../sandbox/jardonnet/registration/multiscale.hh | 78 - milena/sandbox/jardonnet/registration/power_it.hh | 39 - .../sandbox/jardonnet/registration/projection.hh | 86 - milena/sandbox/jardonnet/registration/quat7.hh | 191 - .../sandbox/jardonnet/registration/registration.hh | 172 - milena/sandbox/jardonnet/registration/rotation.hh | 70 - milena/sandbox/jardonnet/registration/save.hh | 131 - milena/sandbox/jardonnet/registration/tools.hh | 314 - milena/sandbox/jardonnet/registration/update_qk.hh | 74 - milena/sandbox/jardonnet/registration/variance.hh | 27 - .../jardonnet/subsampling/gaussian_subsampling.hh | 93 - .../jardonnet/subsampling/sub_sampled_image.hh | 226 - milena/sandbox/jardonnet/test/Makefile | 57 - milena/sandbox/jardonnet/test/bench | 88 - milena/sandbox/jardonnet/test/bench.rb | 39 - milena/sandbox/jardonnet/test/big_chess.cc | 76 - .../sandbox/jardonnet/test/final/final_qk2_1.ppm | Bin 840120 -> 0 bytes .../sandbox/jardonnet/test/final/final_qk2_2.ppm | Bin 840120 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_1.ppm | Bin 1016184 -> 0 bytes .../jardonnet/test/final/final_qk_1_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_2.ppm | Bin 840120 -> 0 bytes .../jardonnet/test/final/final_qk_2_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/final/final_qk_3.ppm | Bin 1016184 -> 0 bytes milena/sandbox/jardonnet/test/final/no_final.ppm | Bin 840120 -> 0 bytes .../jardonnet/test/final/no_final_1_c1_x1.ppm | Bin 726972 -> 0 bytes milena/sandbox/jardonnet/test/gaussian.cc | 21 - .../sandbox/jardonnet/test/gaussian_subsampling.cc | 21 - milena/sandbox/jardonnet/test/icp.cc | 122 - milena/sandbox/jardonnet/test/icp_ref.cc | 109 - milena/sandbox/jardonnet/test/img/c0.pbm | 5 - milena/sandbox/jardonnet/test/img/c1.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c10.pbm | Bin 1351 -> 0 bytes milena/sandbox/jardonnet/test/img/c11.pbm | 4 - milena/sandbox/jardonnet/test/img/c2.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c3.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/c4.pbm | 5 - milena/sandbox/jardonnet/test/img/c5.pbm | Bin 5050 -> 0 bytes milena/sandbox/jardonnet/test/img/c55.pbm | Bin 5050 -> 0 bytes milena/sandbox/jardonnet/test/img/c6.pbm | 4 - milena/sandbox/jardonnet/test/img/c7.pbm | 4 - milena/sandbox/jardonnet/test/img/c8.pbm | 4 - milena/sandbox/jardonnet/test/img/c9.pbm | 4 - milena/sandbox/jardonnet/test/img/x0.pbm | 5 - milena/sandbox/jardonnet/test/img/x1.pbm | 4 - milena/sandbox/jardonnet/test/img/x10.pbm | Bin 1351 -> 0 bytes milena/sandbox/jardonnet/test/img/x11.pbm | 4 - milena/sandbox/jardonnet/test/img/x2.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x3.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x4.pbm | Bin 20050 -> 0 bytes milena/sandbox/jardonnet/test/img/x5.pbm | 4 - milena/sandbox/jardonnet/test/img/x6.pbm | 4 - milena/sandbox/jardonnet/test/img/x7.pbm | Bin 45050 -> 0 bytes milena/sandbox/jardonnet/test/img/x8.pbm | Bin 45050 -> 0 bytes milena/sandbox/jardonnet/test/img/x9.pbm | 6 - milena/sandbox/jardonnet/test/length.ppm | Bin 840120 -> 0 bytes milena/sandbox/jardonnet/test/no_final.ppm | Bin 1016184 -> 0 bytes milena/sandbox/jardonnet/test/plotscript | 9 - milena/sandbox/jardonnet/test/reduce.cc | 26 - milena/sandbox/jardonnet/test/registration.cc | 71 - milena/sandbox/jardonnet/test/script_latex.plot | 8 - milena/sandbox/jardonnet/test/subsampling.cc | 22 - milena/sandbox/jardonnet/test/test.cc | 12 - milena/sandbox/jardonnet/test/test.rb | 51 - milena/sandbox/jardonnet/test/type.cc | 15 - milena/sandbox/jardonnet/virtual/Makefile | 2 - milena/sandbox/jardonnet/virtual/access.cc | 92 - milena/sandbox/jardonnet/virtual/access.hh | 179 - milena/sandbox/jardonnet/virtual/bilinear.ppm | Bin 786552 -> 0 bytes milena/sandbox/jardonnet/virtual/lena.pgm | 4 - milena/sandbox/jardonnet/virtual/lena.ppm | 541 - milena/sandbox/jardonnet/virtual/nn.ppm | Bin 786552 -> 0 bytes milena/sandbox/laurent/ismm2009.cc | 1178 - milena/sandbox/laurent/ismm2009.hh | 342 - milena/sandbox/laurent/memo/ismm2009.v0.cc | 563 - milena/sandbox/laurent/memo/ismm2009.v1.cc | 745 - milena/sandbox/laurent/memo/ismm2009.v2.cc | 978 - milena/sandbox/laurent/playing_with_attributes.cc | 397 - milena/sandbox/lazzara/afp/micro_films/Makefile | 8 - .../lazzara/afp/micro_films/demat_mf_afp.sh | 52 - .../sandbox/lazzara/afp/micro_films/extract_mf.cc | 126 - .../lazzara/afp/micro_films/keep_background.cc | 85 - .../sandbox/lazzara/afp/micro_films/split_image.cc | 80 - milena/sandbox/lazzara/csv2vtk/csv2vtk.cc | 83 - milena/sandbox/lazzara/fonctionnalites_milena.ods | Bin 21834 -> 0 bytes milena/sandbox/lazzara/igr/gui/Makefile.am | 11 - milena/sandbox/lazzara/igr/gui/demo.pro | 16 - .../sandbox/lazzara/igr/gui/src/bak/mainwindow.cc | 441 - .../sandbox/lazzara/igr/gui/src/bak/mainwindow.hh | 146 - milena/sandbox/lazzara/igr/gui/src/display.cc | 135 - milena/sandbox/lazzara/igr/gui/src/display.hh | 88 - milena/sandbox/lazzara/igr/gui/src/display_seg.cc | 172 - milena/sandbox/lazzara/igr/gui/src/display_seg.hh | 95 - milena/sandbox/lazzara/igr/gui/src/edit_seg.cc | 250 - milena/sandbox/lazzara/igr/gui/src/edit_seg.hh | 89 - milena/sandbox/lazzara/igr/gui/src/image_viewer.cc | 194 - milena/sandbox/lazzara/igr/gui/src/image_viewer.hh | 102 - .../igr/gui/src/internal/interactive_scene.cc | 88 - .../igr/gui/src/internal/interactive_scene.hh | 73 - milena/sandbox/lazzara/igr/gui/src/main.cc | 39 - milena/sandbox/lazzara/igr/gui/src/main_window.cc | 56 - milena/sandbox/lazzara/igr/gui/src/main_window.hh | 60 - milena/sandbox/lazzara/igr/gui/src/to_qimage.hh | 63 - milena/sandbox/lazzara/igr/gui/src/widgets.cc | 4 - .../sandbox/lazzara/igr/gui/ui/bak/mainwindow.ui | 277 - milena/sandbox/lazzara/igr/gui/ui/display.ui | 88 - milena/sandbox/lazzara/igr/gui/ui/display_seg.ui | 108 - milena/sandbox/lazzara/igr/gui/ui/edit_seg.ui | 97 - milena/sandbox/lazzara/igr/gui/ui/image_viewer.ui | 154 - milena/sandbox/lazzara/igr/gui/ui/main_window.ui | 75 - milena/sandbox/lazzara/igr/igr-biggest-comp.cc | 294 - milena/sandbox/lazzara/igr/igr-cloud.cc | 61 - milena/sandbox/lazzara/igr/igr.cc | 295 - .../sandbox/lazzara/igr/irm/grad_clo_and_wshd.cc | 93 - milena/sandbox/lazzara/igr/irm/hsl_grad_and_wst.cc | 142 - milena/sandbox/lazzara/igr/irm/wst_rag.cc | 298 - milena/sandbox/lazzara/igr/irm/wst_rag_hsl.cc | 310 - .../lazzara/igr/irm_seg_with_mm_and_rag.mine.cc | 331 - milena/sandbox/lazzara/igr/registration_3d.cc | 58 - milena/sandbox/lazzara/igr/tr_image.cc | 185 - .../lazzara/scribo/binarization_naive/main.cc | 54 - .../lazzara/scribo/binarization_naive/toto.cc | 28 - milena/sandbox/lazzara/scribo/fill_holes/main.cc | 118 - .../separateurs_materialises/lines_pattern.cc | 69 - .../sandbox/lazzara/scribo/skeleton_crest/main.cc | 52 - milena/sandbox/markov/T_gen.hh | 76 - milena/sandbox/markov/approx_exp.hh | 77 - milena/sandbox/markov/markov.cc | 57 - milena/sandbox/markov/markov.hh | 112 - milena/sandbox/markov/random.hh | 29 - milena/sandbox/markov/random.hxx | 53 - milena/sandbox/modules/icdar/lines.cc | 358 - milena/sandbox/modules/icdar/words.cc | 250 - milena/sandbox/nivault/dmap.hh | 577 - milena/sandbox/nivault/dmap.hxx | 372 - milena/sandbox/nivault/dyn_line.hh | 183 - milena/sandbox/nivault/extract_character.cc | 360 - milena/sandbox/nivault/extract_score.cc | 228 - milena/sandbox/nivault/log | 19 - milena/sandbox/nivault/median.hh | 257 - milena/sandbox/nivault/plugin-gimp/.gitignore | 13 - milena/sandbox/nivault/plugin-gimp/AUTHORS | 2 - milena/sandbox/nivault/plugin-gimp/COPYING | 21 - milena/sandbox/nivault/plugin-gimp/ChangeLog | 347 - milena/sandbox/nivault/plugin-gimp/HACKING | 29 - milena/sandbox/nivault/plugin-gimp/INSTALL | 229 - milena/sandbox/nivault/plugin-gimp/Makefile.am | 15 - milena/sandbox/nivault/plugin-gimp/TODO | 1 - milena/sandbox/nivault/plugin-gimp/autogen.sh | 184 - milena/sandbox/nivault/plugin-gimp/configure.ac | 125 - .../sandbox/nivault/plugin-gimp/help/Makefile.am | 3 - .../nivault/plugin-gimp/help/en/Makefile.am | 9 - .../nivault/plugin-gimp/help/en/gimp-help.xml | 4 - .../sandbox/nivault/plugin-gimp/help/en/index.html | 33 - .../nivault/plugin-gimp/help/images/Makefile.am | 8 - .../nivault/plugin-gimp/help/images/wilber.png | Bin 5022 -> 0 bytes milena/sandbox/nivault/plugin-gimp/po/ChangeLog | 72 - milena/sandbox/nivault/plugin-gimp/po/az.po | 115 - milena/sandbox/nivault/plugin-gimp/po/de.po | 91 - milena/sandbox/nivault/plugin-gimp/po/fr.po | 114 - milena/sandbox/nivault/plugin-gimp/po/sk.po | 115 - milena/sandbox/nivault/plugin-gimp/po/sv.po | 116 - milena/sandbox/nivault/plugin-gimp/po/zh_TW.po | 114 - milena/sandbox/nivault/plugin-gimp/src/Makefile.am | 27 - .../sandbox/nivault/plugin-gimp/src/build-image.hh | 55 - .../nivault/plugin-gimp/src/build-image.hxx | 103 - .../sandbox/nivault/plugin-gimp/src/gimp-image.hh | 620 - .../sandbox/nivault/plugin-gimp/src/interface.hh | 40 - .../sandbox/nivault/plugin-gimp/src/interface.hxx | 94 - milena/sandbox/nivault/plugin-gimp/src/main.cc | 153 - .../sandbox/nivault/plugin-gimp/src/plugin-intl.hh | 45 - milena/sandbox/nivault/rotation.cc | 72 - milena/sandbox/nivault/tests/pouet.cc | 49 - milena/sandbox/nivault/tests/test | 4 - milena/sandbox/nivault/vec.hh | 363 - milena/sandbox/pellegrin/Makefile | 26 - milena/sandbox/pellegrin/cond_inheritance/Makefile | 2 - .../cond_inheritance/concept/point_set.hh | 72 - .../cond_inheritance/internal/multi_set.hh | 72 - .../cond_inheritance/internal/point_set_base.hh | 97 - .../pellegrin/cond_inheritance/internal/uni_set.hh | 70 - .../sandbox/pellegrin/cond_inheritance/p_array.hh | 71 - milena/sandbox/pellegrin/cond_inheritance/p_set.hh | 71 - .../cond_inheritance/test_cond_inherit.cc | 61 - milena/sandbox/pellegrin/first_test.cc | 40 - .../pellegrin/set/core/concept/point_set.hh | 246 - .../pellegrin/set/core/internal/multi_set.hh | 176 - .../sandbox/pellegrin/set/core/internal/uni_set.hh | 176 - milena/sandbox/pellegrin/set/core/line2d.hh | 212 - milena/sandbox/pellegrin/set/core/p_array.hh | 247 - milena/sandbox/pellegrin/set/core/p_bgraph.hh | 235 - milena/sandbox/pellegrin/set/core/p_graph.hh | 263 - milena/sandbox/pellegrin/set/core/p_line_graph.hh | 178 - .../sandbox/pellegrin/set/core/p_priority_queue.hh | 365 - .../pellegrin/set/core/p_priority_queue_fast.hh | 365 - .../set/core/p_priority_queue_fast_with_array.hh | 351 - milena/sandbox/pellegrin/set/core/p_queue.hh | 311 - milena/sandbox/pellegrin/set/core/p_queue_fast.hh | 318 - milena/sandbox/pellegrin/set/core/p_run.hh | 250 - milena/sandbox/pellegrin/set/core/p_runs.hh | 541 - milena/sandbox/pellegrin/set/core/p_set.hh | 195 - milena/sandbox/pellegrin/set/core/pset_if.hh | 227 - milena/sandbox/pellegrin/set/test/Makefile | 16 - milena/sandbox/pellegrin/set/test/detest.sh | 17 - milena/sandbox/pellegrin/set/test/p_bgraph.cc | 85 - .../sandbox/pellegrin/set/test/p_priority_queue.cc | 98 - .../pellegrin/set/test/p_priority_queue_fast.cc | 98 - .../set/test/p_priority_queue_fast_with_array.cc | 105 - milena/sandbox/pellegrin/set/test/p_queue.cc | 57 - milena/sandbox/pellegrin/set/test/p_queue_fast.cc | 57 - milena/sandbox/pellegrin/set/test/p_runs.cc | 82 - milena/sandbox/pellegrin/set/test/p_set.cc | 57 - milena/sandbox/pellegrin/set/test/pset_if.cc | 53 - milena/sandbox/pellegrin/set/test/test.sh | 18 - milena/sandbox/pellegrin/set/trait/point_set.hh | 110 - milena/sandbox/pellegrin/set/types_de_points.txt | 14 - milena/sandbox/roland/.gitignore | 3 - milena/sandbox/roland/Makefile | 25 - milena/sandbox/roland/double.cc | 47 - milena/sandbox/roland/min-max.cc | 48 - milena/sandbox/roland/morpho/lower_completion.hh | 152 - .../roland/morpho/shortest_path_watershed.hh | 221 - milena/sandbox/theo/Rd/debase.union_find.hh | 165 - milena/sandbox/theo/Rd/deco.cc | 71 - milena/sandbox/theo/Rd/diff.cc | 28 - milena/sandbox/theo/Rd/diff_pgm.cc | 43 - milena/sandbox/theo/Rd/hybrid.cc | 53 - milena/sandbox/theo/Rd/hybrid.hh | 117 - milena/sandbox/theo/Rd/min.cc | 42 - milena/sandbox/theo/Rd/parallel.cc | 54 - milena/sandbox/theo/Rd/parallel.hh | 85 - milena/sandbox/theo/Rd/parallel_wo.cc | 46 - milena/sandbox/theo/Rd/queue_based.cc | 51 - milena/sandbox/theo/Rd/queue_based.hh | 124 - milena/sandbox/theo/Rd/sequential.cc | 50 - milena/sandbox/theo/Rd/sequential.hh | 87 - milena/sandbox/theo/Rd/sequential_bench.cc | 51 - milena/sandbox/theo/Rd/sequential_bench.hh | 100 - milena/sandbox/theo/Rd/svg.queue_based.hh | 118 - milena/sandbox/theo/Rd/union_find.cc | 52 - milena/sandbox/theo/Rd/union_find.hh | 166 - milena/sandbox/theo/Rd/utils.hh | 269 - milena/sandbox/theo/browsing/fwd.cc | 515 - milena/sandbox/theo/browsing/fwd.hh | 88 - milena/sandbox/theo/color/blen_pix.hh | 187 - milena/sandbox/theo/color/change_attributes.hh | 360 - milena/sandbox/theo/color/filter_blen_rgb_edges.cc | 387 - .../theo/color/filter_meandist_rgb_pixels.cc | 227 - milena/sandbox/theo/color/mean_rgb_pix.hh | 151 - milena/sandbox/theo/color/segment.hh | 578 - milena/sandbox/theo/color/segment_gl_pixels.cc | 117 - milena/sandbox/theo/color/segment_rgb_edges.cc | 368 - milena/sandbox/theo/color/segment_rgb_pixels.cc | 205 - milena/sandbox/theo/color/sum_pix.hh | 162 - milena/sandbox/theo/compute_parent_more.hh | 191 - milena/sandbox/theo/cs2d/cs2d.cc | 110 - milena/sandbox/theo/cs2d/cs2d.hh | 172 - milena/sandbox/theo/cs2d/cs2d_morpho.hh | 372 - milena/sandbox/theo/cs2d/cs2d_utils.hh | 251 - milena/sandbox/theo/cs2d/dbl_neighb.hh | 167 - milena/sandbox/theo/cs2d/kruskal.cc | 357 - milena/sandbox/theo/cs2d/tuto.cc | 145 - milena/sandbox/theo/csi/edwin.cc | 144 - milena/sandbox/theo/csi/fred.cc | 148 - milena/sandbox/theo/dead/inplace.hh | 66 - milena/sandbox/theo/dead/instant.hh | 168 - milena/sandbox/theo/dmap.cc | 131 - milena/sandbox/theo/dmap.txt | 92 - milena/sandbox/theo/esiee/jean/pfg2d.cc | 51 - milena/sandbox/theo/esiee/jean/pfg3d.cc | 135 - milena/sandbox/theo/esiee/laurent/ismm09/cplx2d.hh | 162 - .../esiee/laurent/ismm09/extinct_attributes.hh | 167 - milena/sandbox/theo/esiee/laurent/ismm09/lca.hh | 173 - milena/sandbox/theo/esiee/laurent/ismm09/main.cc | 140 - .../sandbox/theo/esiee/laurent/ismm09/main.ext.cc | 76 - .../theo/esiee/laurent/ismm09/pseudo_tree.hh | 597 - .../sandbox/theo/esiee/laurent/ismm09/topo_wst.cc | 114 - milena/sandbox/theo/esiee/laurent/ismm09/trash.hh | 106 - milena/sandbox/theo/esiee/laurent/ismm09/util.hh | 72 - .../theo/esiee/laurent/presentation/classif.cc | 419 - .../esiee/laurent/presentation/segmentation.hh | 14 - .../theo/esiee/laurent/presentation/wst2d.cc | 162 - .../theo/esiee/laurent/presentation/wst3d.cc | 79 - .../theo/esiee/laurent/presentation/wst_edge.cc | 409 - .../sandbox/theo/esiee/slides_2009_may/dilation.hh | 70 - milena/sandbox/theo/esiee/slides_2009_may/main.cc | 31 - milena/sandbox/theo/estimate.hh | 90 - milena/sandbox/theo/exec/clean_holes.cc | 66 - milena/sandbox/theo/exec/closing_area.cc | 60 - milena/sandbox/theo/exec/closing_height.cc | 60 - milena/sandbox/theo/exec/closing_isotropic.cc | 81 - milena/sandbox/theo/exec/closing_rectangle.cc | 62 - milena/sandbox/theo/exec/closing_volume.cc | 60 - .../sandbox/theo/exec/color_internal_gradient.cc | 148 - milena/sandbox/theo/exec/color_labeling_mean.cc | 67 - milena/sandbox/theo/exec/diff_abs.cc | 38 - milena/sandbox/theo/exec/distance_thick.cc | 46 - milena/sandbox/theo/exec/dump2cloud.cc | 34 - milena/sandbox/theo/exec/dump2pnm.cc | 93 - milena/sandbox/theo/exec/dump_12bit_to_pgm.cc | 35 - milena/sandbox/theo/exec/elementary_gradient.cc | 90 - milena/sandbox/theo/exec/filetype.hh | 54 - .../sandbox/theo/exec/gaussian_directional_2d.cc | 99 - .../sandbox/theo/exec/gaussian_directional_2d.hh | 475 - .../theo/exec/gaussian_directional_2d__float.cc | 99 - milena/sandbox/theo/exec/opening_rectangle.cc | 62 - milena/sandbox/theo/exec/pnms2dump.cc | 97 - milena/sandbox/theo/exec/rank_rectangle.cc | 52 - milena/sandbox/theo/exec/subsample.cc | 43 - milena/sandbox/theo/exec/superpose.cc | 39 - milena/sandbox/theo/exec/threshold_low.cc | 69 - milena/sandbox/theo/exec/watershed_flooding.cc | 96 - milena/sandbox/theo/exec/watershed_superpose.cc | 36 - milena/sandbox/theo/experimental/depeche/col.cc | 286 - .../sandbox/theo/experimental/depeche/homogen.cc | 43 - milena/sandbox/theo/experimental/depeche/row.cc | 117 - milena/sandbox/theo/experimental/depeche/row_mm.cc | 96 - milena/sandbox/theo/experimental/histo_image.cc | 421 - .../theo/experimental/op_pw_value_pw_cst.cc | 91 - .../sandbox/theo/experimental/projected_histo.cc | 66 - milena/sandbox/theo/fllt.svg.6.cc | 1139 - milena/sandbox/theo/fllt.svg.7.hh | 838 - milena/sandbox/theo/fllt/compute_fllt.cc | 19 - .../theo/fllt/connected_filters/area_filter.cc | 26 - .../theo/fllt/connected_filters/area_filter.hh | 69 - .../theo/fllt/connected_filters/canonize_tree.hh | 51 - .../fllt/connected_filters/pseudo_flat_zones.cc | 44 - milena/sandbox/theo/fllt/fllt.hh | 1017 - milena/sandbox/theo/fllt/fllt.svg.1.cc | 222 - milena/sandbox/theo/fllt/fllt.svg.2.cc | 304 - milena/sandbox/theo/fllt/fllt.svg.3.cc | 313 - milena/sandbox/theo/fllt/fllt.svg.4.cc | 352 - milena/sandbox/theo/fllt/fllt.svg.5.cc | 353 - milena/sandbox/theo/fllt/fllt.svg.6.cc | 1136 - milena/sandbox/theo/fllt/fllt.svg.7.hh | 913 - milena/sandbox/theo/fllt/fllt_test.hh | 874 - milena/sandbox/theo/fllt/fllt_tree_to_image.hh | 30 - milena/sandbox/theo/fllt/simple_tests.cc | 84 - milena/sandbox/theo/igr/dump_cut.cc | 47 - milena/sandbox/theo/igr/dump_to_dist.cc | 160 - milena/sandbox/theo/igr/irm_anat_segm.cc | 69 - milena/sandbox/theo/igr/irm_anat_segm__2D_ONLY.cc | 57 - milena/sandbox/theo/igr/irm_seg_with_mm_and_rag.cc | 178 - .../theo/igr/melimage/irm_perf/dynaparam7.m | 299 - milena/sandbox/theo/igr/pgms2pgm.cc | 41 - milena/sandbox/theo/igr/segment_2d_t.cc | 128 - milena/sandbox/theo/mln/browsing/window_sliding.cc | 52 - milena/sandbox/theo/mln/core/concept/walue.hh | 80 - .../sandbox/theo/mln/morpho/canvas/f_and_g.pbm.gz | Bin 3400 -> 0 bytes milena/sandbox/theo/mln/morpho/canvas/g.pbm.gz | Bin 31955 -> 0 bytes .../theo/mln/morpho/canvas/internal/find_root.hh | 89 - milena/sandbox/theo/mln/morpho/canvas/lena.pgm.gz | Bin 222842 -> 0 bytes .../theo/mln/morpho/canvas/lena_blurred.pgm.gz | Bin 104878 -> 0 bytes .../sandbox/theo/mln/morpho/canvas/lena_min.pgm.gz | Bin 216190 -> 0 bytes .../sandbox/theo/mln/morpho/canvas/one_domain.cc | 569 - .../mln/morpho/canvas/reconstruction_on_set.cc | 376 - .../mln/morpho/canvas/reconstruction_on_set.hh | 356 - .../morpho/canvas/reconstruction_on_set_tiny.cc | 190 - .../sandbox/theo/mln/morpho/canvas/regminid.pbm.gz | Bin 1794 -> 0 bytes .../theo/mln/morpho/conditional/dilation.cc | 29 - .../theo/mln/morpho/conditional/dilation.hh | 111 - .../sandbox/theo/mln/morpho/geodesic/dilation.cc | 31 - .../sandbox/theo/mln/morpho/geodesic/dilation.hh | 88 - .../mln/morpho/geodesic/dilation_permissive.cc | 47 - .../mln/morpho/geodesic/dilation_permissive.hh | 463 - .../morpho/geodesic/dilation_permissive_bench.cc | 60 - .../mln/morpho/geodesic/dilation_permissive_n.cc | 35 - milena/sandbox/theo/mln/morpho/max.hh | 143 - .../theo/mln/morpho/reconstruction/by_dilation.cc | 68 - .../theo/mln/morpho/reconstruction/by_dilation.hh | 776 - .../mln/morpho/reconstruction/by_dilation_tiny.cc | 71 - milena/sandbox/theo/mln/subsampling/debase.cc | 23 - milena/sandbox/theo/mln/subsampling/debase.hh | 351 - milena/sandbox/theo/mln/subsampling/in.pgm.gz | Bin 3649560 -> 0 bytes milena/sandbox/theo/mln/subsampling/integral.cc | 38 - milena/sandbox/theo/mln/subsampling/integral.hh | 295 - milena/sandbox/theo/mln/subsampling/sizes.cc | 45 - milena/sandbox/theo/mln/walue/approx_equal.hh | 98 - milena/sandbox/theo/mln/walue/color.hh | 66 - milena/sandbox/theo/mln/walue/gl.cc | 76 - milena/sandbox/theo/mln/walue/gl.hh | 362 - milena/sandbox/theo/mln/walue/gl16.hh | 50 - milena/sandbox/theo/mln/walue/gl8.hh | 50 - milena/sandbox/theo/mln/walue/glf.cc | 39 - milena/sandbox/theo/mln/walue/glf.hh | 152 - milena/sandbox/theo/mln/walue/int_u.cc | 32 - milena/sandbox/theo/mln/walue/int_u.hh | 170 - milena/sandbox/theo/mln/walue/internal/rgb_base.hh | 240 - milena/sandbox/theo/mln/walue/rgb.hh | 86 - milena/sandbox/theo/mln/walue/rgb_3x8.cc | 26 - milena/sandbox/theo/mln/walue/rgb_3x8.hh | 51 - milena/sandbox/theo/mln/walue/rgb_3xn.hh | 98 - milena/sandbox/theo/mln/walue/rgb_t.hh | 97 - milena/sandbox/theo/mln/walue/set_encoding.hh | 176 - .../sandbox/theo/p_runs__with_dedicated_piter.hh | 758 - milena/sandbox/theo/publis/icip2009/compute_a.cc | 578 - .../sandbox/theo/publis/icip2009/regmin_count.cc | 175 - milena/sandbox/theo/rush/exo2/Makefile | 36 - milena/sandbox/theo/rush/exo2/exo2.cc | 118 - milena/sandbox/theo/rush/exo2/exo2.sh | 16 - milena/sandbox/theo/rush/exo2/propagate.hh | 77 - milena/sandbox/theo/rush/exo3/Makefile | 28 - milena/sandbox/theo/rush/exo3/assignable.cc | 251 - milena/sandbox/theo/rush/exo3/exo3_fun_area.cc | 313 - .../sandbox/theo/rush/exo3/exo3_fun_generator.cc | 366 - milena/sandbox/theo/skel.cc | 106 - milena/sandbox/theo/test_attribute.cc | 122 - milena/sandbox/theo/tufa_2008/closed_gradient.cc | 64 - milena/sandbox/theo/tufa_2008/closing.cc | 64 - milena/sandbox/theo/tufa_2008/experiment.cc | 138 - milena/sandbox/theo/tufa_2008/filter.cc | 169 - milena/sandbox/theo/tufa_2008/filter_n.cc | 341 - milena/sandbox/theo/tufa_2008/fz_count.cc | 160 - milena/sandbox/theo/tufa_2008/gradient.cc | 58 - milena/sandbox/theo/tufa_2008/n_cmpt.cc | 263 - milena/sandbox/theo/tufa_2008/opening.cc | 63 - milena/sandbox/theo/tufa_2008/steps.0.cc | 171 - milena/sandbox/theo/tufa_2008/steps.1.cc | 274 - milena/sandbox/theo/tufa_2008/steps.2.cc | 259 - milena/sandbox/theo/tufa_2008/steps.2b.cc | 185 - milena/sandbox/theo/tufa_2008/steps.3.cc | 186 - milena/sandbox/theo/tufa_2008/wst.cc | 69 - milena/sandbox/theo/tufa_2008/wst_f_equal_wst_a.cc | 140 - milena/sandbox/theo/win_fun.cc | 160 - milena/sandbox/theo/win_fun.hh | 160 - milena/sandbox/vigouroux/cmy/fun.hh | 54 - milena/sandbox/vigouroux/cmy/get_blue.hh | 67 - milena/sandbox/vigouroux/cmy/get_green.hh | 56 - milena/sandbox/vigouroux/cmy/my_cmy.hh | 90 - milena/sandbox/vigouroux/cmy/rgb_to_cmy.hh | 78 - milena/sandbox/vigouroux/cmy/test.cc | 28 - milena/sandbox/vigouroux/cmy/testfun.cc | 30 - milena/sandbox/vigouroux/color.cc | 27 - milena/sandbox/vigouroux/color.hh | 45 - milena/sandbox/vigouroux/color/color.hh | 309 - milena/sandbox/vigouroux/color/hsi.hh | 64 - milena/sandbox/vigouroux/color/hsl.hh | 55 - milena/sandbox/vigouroux/color/hsv.hh | 56 - milena/sandbox/vigouroux/color/is_HSI.cc | 33 - milena/sandbox/vigouroux/color/my_cmy.hh | 65 - milena/sandbox/vigouroux/color/my_hsi.hh | 93 - milena/sandbox/vigouroux/color/my_hsl.hh | 90 - milena/sandbox/vigouroux/color/my_hsv.hh | 90 - milena/sandbox/vigouroux/color/my_xyz.hh | 93 - milena/sandbox/vigouroux/color/my_yiq.hh | 133 - milena/sandbox/vigouroux/color/my_yuv.hh | 133 - milena/sandbox/vigouroux/color/nrgb.hh | 131 - milena/sandbox/vigouroux/color/rgb.hh | 59 - milena/sandbox/vigouroux/color/rgb_to_cmy.hh | 47 - milena/sandbox/vigouroux/color/rgb_to_hsi.hh | 105 - milena/sandbox/vigouroux/color/rgb_to_hsl.hh | 82 - milena/sandbox/vigouroux/color/rgb_to_hsv.hh | 60 - milena/sandbox/vigouroux/color/rgb_to_xyz.hh | 76 - milena/sandbox/vigouroux/color/rgb_to_yiq.hh | 48 - milena/sandbox/vigouroux/color/rgb_to_yuv.hh | 48 - milena/sandbox/vigouroux/color/tests.cc | 31 - milena/sandbox/vigouroux/color/xyz.hh | 55 - milena/sandbox/vigouroux/color/yiq.hh | 65 - milena/sandbox/vigouroux/color/yuv.hh | 64 - milena/sandbox/vigouroux/conv/getred.hh | 76 - milena/sandbox/vigouroux/conv/rgbto.hh | 149 - milena/sandbox/vigouroux/conv/test.cc | 33 - milena/sandbox/vigouroux/conv/tored.hh | 118 - milena/sandbox/vigouroux/conv/torgb.hh | 140 - .../vigouroux/convert/abstract/colorconv.hh | 69 - .../vigouroux/convert/abstract/conversion.hh | 178 - milena/sandbox/vigouroux/convert/basics.hh | 39 - milena/sandbox/vigouroux/convert/bound.hh | 67 - milena/sandbox/vigouroux/convert/cast.hh | 64 - milena/sandbox/vigouroux/convert/conversion.hh | 160 - .../sandbox/vigouroux/convert/conversion_ng_se.hh | 82 - milena/sandbox/vigouroux/convert/force.hh | 63 - milena/sandbox/vigouroux/convert/nrgbxyz.hh | 182 - milena/sandbox/vigouroux/convert/rgbhsi.hh | 154 - milena/sandbox/vigouroux/convert/rgbhsl.hh | 227 - milena/sandbox/vigouroux/convert/rgbhsv.hh | 205 - milena/sandbox/vigouroux/convert/rgbnrgb.hh | 146 - milena/sandbox/vigouroux/convert/rgbxyz.hh | 144 - milena/sandbox/vigouroux/convert/rgbyiq.hh | 142 - milena/sandbox/vigouroux/convert/rgbyuv.hh | 140 - milena/sandbox/vigouroux/convert/stretch.hh | 218 - milena/sandbox/vigouroux/convert/value_to_point.hh | 131 - milena/sandbox/vigouroux/function.hh | 72 - milena/sandbox/vigouroux/gradation.hh | 91 - milena/sandbox/vigouroux/hsi/get_blue.hh | 67 - milena/sandbox/vigouroux/hsi/get_green.hh | 67 - milena/sandbox/vigouroux/hsi/get_red.hh | 67 - milena/sandbox/vigouroux/hsi/my_hsi.hh | 93 - milena/sandbox/vigouroux/hsi/rgb_to_hsi.hh | 110 - milena/sandbox/vigouroux/lap.cc | 49 - milena/sandbox/vigouroux/lap.hh | 77 - milena/sandbox/vigouroux/literal/black.hh | 38 - milena/sandbox/vigouroux/literal/blue.hh | 38 - milena/sandbox/vigouroux/literal/brown.hh | 37 - milena/sandbox/vigouroux/literal/cyan.hh | 44 - milena/sandbox/vigouroux/literal/darkgray.hh | 33 - milena/sandbox/vigouroux/literal/gray.hh | 33 - milena/sandbox/vigouroux/literal/green.hh | 38 - milena/sandbox/vigouroux/literal/lightgray.hh | 33 - milena/sandbox/vigouroux/literal/lime.hh | 37 - milena/sandbox/vigouroux/literal/magenta.hh | 37 - milena/sandbox/vigouroux/literal/olive.hh | 33 - milena/sandbox/vigouroux/literal/orange.hh | 37 - milena/sandbox/vigouroux/literal/pink.hh | 37 - milena/sandbox/vigouroux/literal/purple.hh | 37 - milena/sandbox/vigouroux/literal/red.hh | 38 - milena/sandbox/vigouroux/literal/teal.hh | 37 - milena/sandbox/vigouroux/literal/violet.hh | 37 - milena/sandbox/vigouroux/literal/white.hh | 38 - milena/sandbox/vigouroux/literal/yellow.hh | 37 - milena/sandbox/vigouroux/load.cc | 78 - milena/sandbox/vigouroux/moyenne.cc | 63 - milena/sandbox/vigouroux/testfun.cc | 32 - milena/sandbox/vigouroux/tests.cc | 31 - milena/sandbox/vigouroux/xyz/get_blue.hh | 56 - milena/sandbox/vigouroux/xyz/get_green.hh | 56 - milena/sandbox/vigouroux/xyz/get_red.hh | 52 - milena/sandbox/vigouroux/xyz/my_xyz.hh | 93 - milena/sandbox/vigouroux/xyz/rgb_to_xyz.hh | 76 - milena/sandbox/vigouroux/xyz/test.cc | 28 - milena/sandbox/vigouroux/xyz/testfun.cc | 31 - milena/sandbox/vigouroux/yiq/get_blue.hh | 56 - milena/sandbox/vigouroux/yiq/get_green.hh | 55 - milena/sandbox/vigouroux/yiq/get_red.hh | 54 - milena/sandbox/vigouroux/yiq/my_yiq.hh | 91 - milena/sandbox/vigouroux/yiq/rgb_to_yiq.hh | 78 - milena/sandbox/vigouroux/yiq/test.cc | 28 - milena/sandbox/vigouroux/yiq/testfun.cc | 30 - milena/sandbox/vigouroux/yuv/get_blue.hh | 56 - milena/sandbox/vigouroux/yuv/get_green.hh | 56 - milena/sandbox/vigouroux/yuv/get_red.hh | 58 - milena/sandbox/vigouroux/yuv/my_yuv.hh | 91 - milena/sandbox/vigouroux/yuv/rgb_to_yuv.hh | 79 - milena/sandbox/vigouroux/yuv/test.cc | 28 - milena/sandbox/vigouroux/yuv/testfun.cc | 30 - milena/tests/Makefile.am | 12 +- milena/tests/accu/Makefile.am | 14 - milena/tests/accu/image/Makefile.am | 9 +- milena/tests/accu/math/Makefile.am | 3 +- milena/tests/accu/shape/Makefile.am | 3 +- milena/tests/accu/site_set/Makefile.am | 3 +- milena/tests/accu/stat/Makefile.am | 12 - milena/tests/algebra/Makefile.am | 10 +- milena/tests/algebra/h_vec.cc | 6 +- milena/tests/arith/Makefile.am | 9 +- milena/tests/binarization/Makefile.am | 1 - milena/tests/border/Makefile.am | 24 +- milena/tests/canvas/Makefile.am | 4 +- milena/tests/canvas/browsing/Makefile.am | 11 +- milena/tests/canvas/morpho/Makefile.am | 7 +- milena/tests/convert/Makefile.am | 18 +- milena/tests/convert/impl/Makefile.am | 3 +- milena/tests/convert/to_hsl.cc | 44 - milena/tests/core/alias/Makefile.am | 18 +- milena/tests/core/alias/point1d.cc | 9 +- milena/tests/core/image/Makefile.am | 14 +- milena/tests/core/image/dmorph/Makefile.am | 10 +- milena/tests/core/image/imorph/Makefile.am | 7 +- milena/tests/core/image/vmorph/Makefile.am | 4 +- milena/tests/core/other/Makefile.am | 22 +- milena/tests/core/routine/Makefile.am | 8 +- milena/tests/core/site_set/Makefile.am | 18 +- milena/tests/data/Makefile.am | 29 +- milena/tests/data/approx/Makefile.am | 3 +- milena/tests/data/naive/Makefile.am | 3 +- milena/tests/debug/Makefile.am | 7 +- milena/tests/draw/Makefile.am | 6 +- milena/tests/estim/Makefile.am | 6 +- milena/tests/extension/Makefile.am | 4 +- milena/tests/extract/Makefile.am | 20 +- milena/tests/extract/blue.cc | 47 - milena/tests/extract/green.cc | 47 - milena/tests/extract/hue.cc | 47 - milena/tests/extract/lum.cc | 47 - milena/tests/extract/red.cc | 47 - milena/tests/extract/sat.cc | 47 - milena/tests/fun/Makefile.am | 4 +- milena/tests/fun/i2v/Makefile.am | 6 +- milena/tests/fun/p2b/Makefile.am | 7 +- milena/tests/fun/p2p/Makefile.am | 4 +- milena/tests/fun/p2v/Makefile.am | 7 +- milena/tests/fun/stat/Makefile.am | 3 +- milena/tests/fun/v2i/Makefile.am | 3 +- milena/tests/fun/v2v/Makefile.am | 16 +- milena/tests/fun/v2v/component.cc | 69 - milena/tests/fun/vv2v/Makefile.am | 5 +- milena/tests/fun/x2x/Makefile.am | 7 +- milena/tests/geom/Makefile.am | 23 - milena/tests/graph/Makefile.am | 3 +- milena/tests/graph/attribute/Makefile.am | 4 +- milena/tests/histo/Makefile.am | 5 +- milena/tests/io/dicom/Makefile.am | 3 +- milena/tests/io/dump/Makefile.am | 1 - milena/tests/io/fits/Makefile.am | 1 - milena/tests/io/fld/Makefile.am | 6 +- milena/tests/io/magick/Makefile.am | 2 - milena/tests/io/off/Makefile.am | 3 - milena/tests/io/pbm/Makefile.am | 2 - milena/tests/io/pbms/Makefile.am | 1 - milena/tests/io/pfm/Makefile.am | 7 +- milena/tests/io/pgm/Makefile.am | 5 - milena/tests/io/pgms/Makefile.am | 1 - milena/tests/io/pnm/Makefile.am | 7 +- milena/tests/io/ppm/Makefile.am | 3 - milena/tests/io/ppms/Makefile.am | 1 - milena/tests/io/tiff/Makefile.am | 3 +- milena/tests/labeling/Makefile.am | 19 +- milena/tests/linear/Makefile.am | 21 +- milena/tests/linear/gaussian/Makefile.am | 13 +- milena/tests/linear/gaussian/filter.cc | 48 - milena/tests/linear/local/Makefile.am | 5 +- milena/tests/literal/Makefile.am | 14 +- milena/tests/logical/Makefile.am | 9 +- milena/tests/make/Makefile.am | 18 +- milena/tests/make/p_edges_with_mass_centers.cc | 3 +- milena/tests/make/p_vertices_with_mass_centers.cc | 3 +- milena/tests/math/Makefile.am | 7 +- milena/tests/metal/Makefile.am | 7 +- milena/tests/metal/converts_to.cc | 23 +- milena/tests/metal/make/Makefile.am | 7 +- milena/tests/metal/math/Makefile.am | 6 +- milena/tests/morpho/Makefile.am | 27 +- milena/tests/morpho/approx/Makefile.am | 2 - milena/tests/morpho/attribute/Makefile.am | 6 +- milena/tests/morpho/closing/Makefile.am | 8 - milena/tests/morpho/closing/approx/Makefile.am | 1 - milena/tests/morpho/elementary/Makefile.am | 12 +- milena/tests/morpho/opening/Makefile.am | 8 - milena/tests/morpho/opening/approx/Makefile.am | 1 - .../morpho/reconstruction/by_dilation/Makefile.am | 3 - .../morpho/reconstruction/by_erosion/Makefile.am | 3 - milena/tests/morpho/tree/Makefile.am | 8 +- milena/tests/morpho/tree/filter/Makefile.am | 3 +- milena/tests/morpho/watershed/Makefile.am | 3 - milena/tests/opt/Makefile.am | 4 +- milena/tests/pw/Makefile.am | 6 +- milena/tests/registration/Makefile.am | 9 +- milena/tests/registration/registration.cc | 55 - milena/tests/set/Makefile.am | 12 +- milena/tests/subsampling/Makefile.am | 3 +- milena/tests/tag/Makefile.am | 7 +- milena/tests/test/Makefile.am | 4 +- milena/tests/tests-recursive.mk | 32 - milena/tests/tests.mk | 13 +- milena/tests/topo/Makefile.am | 4 +- milena/tests/topo/skeleton/Makefile.am | 4 +- milena/tests/trace/Makefile.am | 7 +- milena/tests/trait/Makefile.am | 6 +- milena/tests/trait/ch_value.cc | 12 - milena/tests/trait/image/Makefile.am | 5 +- milena/tests/trait/op/Makefile.am | 6 +- milena/tests/trait/op/plus.cc | 41 +- milena/tests/trait/value/Makefile.am | 6 +- milena/tests/transform/Makefile.am | 11 +- milena/tests/unit_test/unit-tests.mk | 83 +- milena/tests/upscaling/art/Makefile.am | 4 +- milena/tests/util/Makefile.am | 20 +- milena/tests/value/Makefile.am | 32 +- milena/tests/value/builtin/Makefile.am | 5 +- milena/tests/value/concept/Makefile.am | 7 +- milena/tests/value/graylevel.cc | 74 +- milena/tests/value/int_s16.cc | 5 +- milena/tests/value/int_u8.cc | 5 +- milena/tests/value/stack.cc | 55 - milena/tests/win/Makefile.am | 20 +- milena/tests/world/binary_2d/Makefile.am | 4 +- milena/tests/world/inter_pixel/Makefile.am | 7 +- milena/tests/world/inter_pixel/dim2/Makefile.am | 3 +- milena/tools/Makefile.am | 6 +- milena/tools/tools.mk | 3 +- milena/vcs/milena.rb | 16 - scribo/ChangeLog | 215 +- scribo/Makefile.am | 16 +- scribo/common.mk | 28 + scribo/headers.mk | 4 - scribo/sandbox/ChangeLog | 219 - scribo/sandbox/green/ChangeLog | 1666 - scribo/sandbox/green/README | 219 - scribo/sandbox/green/README.green | 1211 - scribo/sandbox/green/README.img | 124 - scribo/sandbox/green/README.result | 143 - .../green/bench/clustering/distance/Makefile.am | 153 - .../green/bench/clustering/distance/distance.cc | 842 - .../sandbox/green/demo/annotating/bic/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 - .../sandbox/green/demo/annotating/hsv/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 - .../sandbox/green/demo/annotating/lep/Makefile.am | 153 - scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 - .../green/demo/annotating/nb_color/Makefile.am | 153 - .../green/demo/annotating/nb_color/nb_color.cc | 143 - .../green/demo/annotating/project/Makefile.am | 153 - .../green/demo/annotating/project/project.cc | 275 - .../green/demo/annotating/rgb_64/Makefile.am | 153 - .../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 - .../green/demo/annotating/rgb_64_9/Makefile.am | 153 - .../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 - .../green/demo/annotating/stddev_color/Makefile.am | 153 - .../demo/annotating/stddev_color/stddev_color.cc | 191 - .../demo/annotating/stddev_color_16/Makefile.am | 153 - .../annotating/stddev_color_16/stddev_color_16.cc | 261 - .../green/demo/clustering/kmean1d/Makefile.am | 153 - .../green/demo/clustering/kmean1d/kmean1d.cc | 258 - .../green/demo/clustering/kmean2d/Makefile.am | 153 - .../green/demo/clustering/kmean2d/kmean2d.cc | 278 - .../green/demo/clustering/kmean3d/Makefile.am | 153 - .../green/demo/clustering/kmean3d/kmean3d.cc | 265 - .../green/demo/clustering/kmean_rgb/Makefile.am | 153 - .../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 239 - .../demo/labeling/regional_maxima/Makefile.am | 153 - .../labeling/regional_maxima/regional_maxima.cc | 198 - .../demo/labeling/regional_maxima/thresholds.txt | 42 - .../green/demo/labeling/watershed/Makefile.am | 153 - .../green/demo/labeling/watershed/gaussian.sh | 12 - .../green/demo/labeling/watershed/watershed.cc | 360 - scribo/sandbox/green/doc/annotating/class.txt | 42 - .../green/doc/annotating/syntheseMillet2008.txt | 283 - scribo/sandbox/green/doc/annotating/testMillet2008 | 69 - .../green/doc/examples/accu_color/accu_color.cc | 249 - scribo/sandbox/green/doc/examples/frac/Makefile.am | 148 - scribo/sandbox/green/doc/examples/frac/frac.cc | 423 - scribo/sandbox/green/doc/examples/frac/frac.hh | 793 - scribo/sandbox/green/doc/examples/frac/gcd.hh | 91 - .../sandbox/green/doc/examples/frac/sign_prod.hh | 74 - .../green/doc/examples/hello_milena/Makefile.am | 49 - .../doc/examples/hello_milena/hello_milena.cc | 41 - .../green/doc/examples/hello_world/Makefile.am | 49 - .../green/doc/examples/hello_world/hello_world.cc | 9 - .../green/doc/examples/hello_world/print.cc | 6 - scribo/sandbox/green/doc/examples/io/Makefile.am | 150 - scribo/sandbox/green/doc/examples/io/io.cc | 71 - .../green/doc/examples/learn_milena/Makefile.am | 49 - .../doc/examples/learn_milena/learn_milena.cc | 151 - scribo/sandbox/green/doc/examples/otsu/Makefile.am | 49 - scribo/sandbox/green/doc/examples/otsu/otsu.cc | 193 - .../sandbox/green/doc/examples/stats/Makefile.am | 49 - scribo/sandbox/green/doc/examples/stats/stats.cc | 32 - scribo/sandbox/green/doc/formulae/formulae.tex | 1157 - scribo/sandbox/green/doc/quick_tour/quick_tour.tex | 115 - .../green/exp/annotating/achromastism/Makefile.am | 153 - .../exp/annotating/achromastism/achromastism.cc | 179 - .../exp/annotating/achromastism/text-color.txt | 15 - .../green/exp/annotating/achromastism/text-img.txt | 40 - .../exp/annotating/achromastism/text-only.txt | 8 - .../sandbox/green/exp/annotating/bench/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 - .../sandbox/green/exp/annotating/error/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/error/error.cc | 833 - .../sandbox/green/exp/annotating/histo/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 - .../sandbox/green/exp/annotating/hsv/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 - .../sandbox/green/exp/annotating/hue/Makefile.am | 153 - scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 - .../green/exp/annotating/hue/text-color.txt | 15 - .../sandbox/green/exp/annotating/hue/text-img.txt | 40 - .../sandbox/green/exp/annotating/hue/text-only.txt | 8 - .../green/exp/annotating/nb_color/Makefile.am | 153 - .../green/exp/annotating/nb_color/nb_color.cc | 171 - .../green/exp/annotating/saturation/Makefile.am | 153 - .../green/exp/annotating/saturation/saturation.cc | 175 - .../green/exp/annotating/saturation/text-color.txt | 15 - .../green/exp/annotating/saturation/text-img.txt | 40 - .../green/exp/annotating/saturation/text-only.txt | 8 - .../green/exp/annotating/stddev_color/Makefile.am | 153 - .../exp/annotating/stddev_color/stddev_color.cc | 216 - .../exp/annotating/stddev_color_16/Makefile.am | 153 - .../annotating/stddev_color_16/stddev_color_16.cc | 277 - .../sandbox/green/exp/annotating/value/Makefile.am | 153 - .../green/exp/annotating/value/text-color.txt | 15 - .../green/exp/annotating/value/text-img.txt | 40 - .../green/exp/annotating/value/text-only.txt | 8 - scribo/sandbox/green/exp/annotating/value/value.cc | 468 - .../sandbox/green/exp/regional_maxima/Makefile.am | 153 - .../green/exp/regional_maxima/regional_maxima.cc | 196 - .../green/exp/regional_maxima/thresholds.txt | 42 - scribo/sandbox/green/gaussian.sh | 12 - scribo/sandbox/green/gaussian2d.sh | 21 - scribo/sandbox/green/mln/accu/stat/histo1d.hh | 338 - scribo/sandbox/green/mln/accu/stat/histo2d.hh | 342 - scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 388 - scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 345 - scribo/sandbox/green/mln/clustering/k_mean.hh | 785 - scribo/sandbox/green/mln/clustering/kmean1d.hh | 1082 - scribo/sandbox/green/mln/clustering/kmean2d.hh | 1345 - scribo/sandbox/green/mln/clustering/kmean3d.hh | 1345 - scribo/sandbox/green/mln/clustering/kmean_rgb.hh | 1042 - scribo/sandbox/green/mln/display/display_histo.hh | 295 - scribo/sandbox/green/mln/display/project_histo.hh | 679 - scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 128 - .../sandbox/green/mln/fun/p2b/component_equals.hh | 99 - scribo/sandbox/green/mln/fun/v2v/achromatism.hh | 64 - .../sandbox/green/mln/fun/v2v/hue_concentration.hh | 111 - .../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 - scribo/sandbox/green/mln/fun/v2v/log.hh | 70 - scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 119 - scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 - scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 119 - .../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 81 - scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 162 - scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 - scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 109 - .../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 - .../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 - scribo/sandbox/green/mln/img_path.hh | 239 - scribo/sandbox/green/mln/io/plot/save_image_sh.hh | 1090 - scribo/sandbox/green/mln/math/ceil.hh | 64 - scribo/sandbox/green/mln/math/floor.hh | 64 - scribo/sandbox/green/mln/value/hsv.hh | 424 - scribo/sandbox/green/mln/value/rg.hh | 175 - scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh | 334 - scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh | 346 - scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh | 349 - scribo/sandbox/green/ok/mln/img_path.hh | 239 - .../sandbox/green/ok/test/accu/histo/gaussian.sh | 12 - scribo/sandbox/green/ok/test/accu/histo/histo1d | Bin 802920 -> 0 bytes scribo/sandbox/green/ok/test/accu/histo/histo1d.cc | 726 - scribo/sandbox/green/test_labelling.cc | 336 - scribo/sandbox/green/test_labelling_2.cc | 342 - scribo/sandbox/green/test_labelling_3.cc | 463 - .../green/tests/accu/stat/histo1d/Makefile.am | 153 - .../green/tests/accu/stat/histo1d/histo1d.cc | 507 - .../green/tests/accu/stat/histo3d_hsl/Makefile.am | 153 - .../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 391 - .../green/tests/accu/stat/histo3d_rgb/Makefile.am | 153 - .../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 397 - .../green/tests/clustering/k_mean/Makefile.am | 153 - .../green/tests/clustering/k_mean/k_mean.cc | 547 - .../green/tests/clustering/kmean1d/Makefile.am | 148 - .../green/tests/clustering/kmean1d/kmean1d.cc | 483 - .../green/tests/io/plot/save_image_sh/Makefile.am | 153 - .../tests/io/plot/save_image_sh/save_image_sh.cc | 774 - .../sandbox/green/tools/labeling/histo/Makefile.am | 153 - scribo/sandbox/green/tools/labeling/histo/histo.cc | 204 - scribo/sandbox/green/tools/labeling/iz/Makefile.am | 153 - scribo/sandbox/green/tools/labeling/iz/iz.cc | 495 - .../green/tools/labeling/opening/Makefile.am | 153 - .../green/tools/labeling/opening/opening.cc | 174 - .../green/tools/labeling/regmax/Makefile.am | 153 - .../sandbox/green/tools/labeling/regmax/regmax.cc | 428 - .../green/use/accu/stat/histo1d/Makefile.am | 153 - .../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 50 - .../green/use/accu/stat/histo2d/Makefile.am | 153 - .../sandbox/green/use/accu/stat/histo2d/histo2d.cc | 58 - .../green/use/accu/stat/histo3d_hsl/Makefile.am | 153 - .../green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc | 59 - .../green/use/accu/stat/histo3d_rgb/Makefile.am | 153 - .../green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc | 57 - .../green/use/clustering/k_mean/Makefile.am | 153 - .../sandbox/green/use/clustering/k_mean/k_mean.cc | 55 - .../green/use/clustering/kmean1d/Makefile.am | 153 - .../green/use/clustering/kmean1d/kmean1d.cc | 50 - .../green/use/clustering/kmean2d/Makefile.am | 153 - .../green/use/clustering/kmean2d/kmean2d.cc | 61 - .../green/use/clustering/kmean3d/Makefile.am | 153 - .../green/use/clustering/kmean3d/kmean3d.cc | 63 - .../green/use/clustering/kmean_rgb/Makefile.am | 153 - .../green/use/clustering/kmean_rgb/kmean_rgb.cc | 63 - .../green/use/display/display_histo/Makefile.am | 153 - .../use/display/display_histo/display_histo.cc | 86 - .../green/use/fun/v2v/rg_to_rgb/Makefile.am | 153 - .../green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc | 68 - .../green/use/fun/v2v/rgb8_to_rgbn/Makefile.am | 153 - .../green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc | 57 - .../green/use/fun/v2v/rgb_to_rg/Makefile.am | 153 - .../green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc | 58 - .../green/use/io/plot/save_image_sh/Makefile.am | 153 - .../use/io/plot/save_image_sh/save_image_sh.cc | 53 - scribo/sandbox/green/use/value/rg/Makefile.am | 153 - scribo/sandbox/green/use/value/rg/rg.cc | 58 - scribo/sandbox/z/white_spaces/hom_sep.cc | 133 - .../sandbox/z/white_spaces/white_space_closing.cc | 123 - scribo/sandbox/z/white_spaces/white_spaces.cc | 842 - scribo/scribo.mk | 10 +- scribo/scribo/debug/alignment_decision_image.hh | 6 +- scribo/scribo/debug/bboxes_enlarged_image.hh | 4 +- scribo/scribo/debug/decision_image.hh | 10 +- scribo/scribo/debug/links_decision_image.hh | 6 +- scribo/scribo/debug/links_image.hh | 4 +- .../scribo/debug/looks_like_a_text_line_image.hh | 4 +- scribo/scribo/io/text_boxes/save.hh | 4 +- scribo/scribo/primitive/extract/components.hh | 6 +- .../primitive/link/with_single_right_link.hh | 4 +- scribo/scribo/text/paragraphs_closing.hh | 6 +- scribo/scribo/text/recognition.hh | 8 +- scribo/scribo/toolchain/content_in_doc.hh | 12 +- scribo/scribo/toolchain/content_in_hdoc.hh | 10 +- scribo/scribo/toolchain/text_in_doc.hh | 10 +- scribo/scribo/toolchain/text_in_doc_preprocess.hh | 20 +- scribo/scribo/toolchain/text_in_picture.hh | 6 +- scribo/src/Makefile.am | 9 +- scribo/src/binarization/Makefile.am | 16 +- scribo/src/contest/DAE-2011/Makefile.am | 7 +- scribo/src/contest/DAE-2011/content_in_doc_dae.cc | 2 +- scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc | 2 +- scribo/src/contest/Makefile.am | 3 - scribo/src/contest/hdibco-2010/Makefile.am | 6 +- scribo/src/contest/hdlac-2011/Makefile.am | 6 +- scribo/src/debug/Makefile.am | 39 - scribo/src/debug/show_separators.cc | 5 +- scribo/src/filter/Makefile.am | 7 - scribo/src/misc/Makefile.am | 7 - scribo/src/postprocessing/Makefile.am | 6 +- scribo/src/preprocessing/Makefile.am | 10 - scribo/src/primitive/extract/Makefile.am | 13 +- scribo/src/primitive/find/Makefile.am | 6 - scribo/src/primitive/group/Makefile.am | 9 +- scribo/src/primitive/remove/Makefile.am | 3 +- scribo/src/table/Makefile.am | 5 - scribo/src/text/Makefile.am | 5 - scribo/src/toolchain/nepomuk/Makefile.am | 3 +- scribo/src/util/Makefile.am | 3 +- scribo/src/util/component_precise_outline.cc | 5 +- scribo/tests/binarization/Makefile.am | 12 +- scribo/tests/convert/Makefile.am | 6 +- scribo/tests/core/Makefile.am | 7 +- scribo/tests/estim/Makefile.am | 7 +- scribo/tests/filter/Makefile.am | 18 - scribo/tests/preprocessing/Makefile.am | 5 - scribo/tests/primitive/extract/Makefile.am | 3 +- scribo/tests/primitive/link/Makefile.am | 3 +- scribo/tests/table/Makefile.am | 5 +- scribo/tests/tests.mk | 50 +- scribo/tests/toolchain/nepomuk/Makefile.am | 6 +- scribo/tests/unit_test/unit-tests.mk | 43 +- scribo/tests/util/Makefile.am | 5 +- scribo/vcs/scribo.rb | 16 - swilena/ChangeLog | 15 + swilena/Makefile.am | 4 +- swilena/image2d_int_u8.i | 15 +- swilena/int_u24.i | 40 + swilena/python/Makefile.am | 12 +- vcs/oln.rb | 16 - 2624 files changed, 12235 insertions(+), 868665 deletions(-) diff --cc ChangeLog index 8b27ba6,98a6923..5faf2a3 --- a/ChangeLog +++ b/ChangeLog @@@ -1,22 -1,266 +1,286 @@@ +2011-11-16 Guillaume Lazzara <z(a)lrde.epita.fr> + + * configure.ac: Link to libGraphicsMagick++ if GraphicsMagick++ is + enabled. + +2011-11-16 Guillaume Lazzara <z(a)lrde.epita.fr> + + * m4/oln-with-lib.m4: Lookup for multiple AND single libraries + while checking Tesseract availability. + +2012-06-25 Guillaume Lazzara <z(a)lrde.epita.fr> + + * distrib/macports/Portfile.in: Apply changes required by MacPorts + team. + +2012-05-11 Guillaume Lazzara <z(a)lrde.epita.fr> + + * NEWS: Start populating the changes list. + + 2013-02-13 Roland Levillain <roland(a)lrde.epita.fr> + + Use Automake's silent-rules. + + * configure.ac: Here. + + 2013-02-13 Roland Levillain <roland(a)lrde.epita.fr> + + Disable Automake's extra-portability warnings. + + * configure.ac: Here, so that Automake 1.12 stops complaining + about AM_PROG_AR not being used, while preserving the + compatibility with Automake versions 1.11.2 and earlier. + + 2010-04-26 Roland Levillain <roland(a)lrde.epita.fr> + + Enable parallel tests. + + * configure.ac (AM_INIT_AUTOMAKE): Add option `parallel-tests'. + + 2010-04-22 Roland Levillain <roland(a)lrde.epita.fr> + + Regen unit tests' Makefile fragments. + + * milena/tests/unit_test/unit-tests.mk, + * scribo/tests/unit_test/unit-tests.mk: + Regen. + + 2010-04-22 Roland Levillain <roland(a)lrde.epita.fr> + + Simplify build_unit_test.sh thanks to AM_DEFAULT_SOURCE_EXT. + + * build-aux/build_unit_test.sh: No longer output `*_SOURCES' + variables. + + 2010-02-17 Roland Levillain <roland(a)lrde.epita.fr> + + Require Automake 1.11. + + * bootstrap, configure.ac: Here. + + 2013-02-07 Roland Levillain <roland(a)lrde.epita.fr> + + Always write FIXME with uppercase letters. + + * milena/mln/canvas/browsing/snake_fwd.hh, + * milena/mln/canvas/browsing/snake_vert.hh, + * scribo/scribo/debug/alignment_decision_image.hh, + * scribo/scribo/debug/decision_image.hh, + * scribo/scribo/debug/links_decision_image.hh: + Here. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Equip Scribo with a recursive `tests' target. + + * Makefile.am (LOCAL_RECURSIVE_TARGETS): Remove pretty-check. + ($(LOCAL_RECURSIVE_TARGETS)): Recurse in scribo/ too. + (pretty-check): New target, recursing only in milena/. + * milena/tests/tests-recursive.mk: Move... + * build-aux/tests-recursive.mk: ...here. + * milena/tests/tests.mk: Adjust. + Remove old comments. + * scribo/Makefile.am (tests): New target. + (bin): Use common idioms. + * scribo/tests/tests.mk: Include milena/tests/tests-recursive.mk. + + 2010-10-27 Roland Levillain <roland(a)lrde.epita.fr> + + Add advice about the release process. + + * HACKING (Required Software): Add LaTeX2HTML. + Aesthetic changes. + (Useful Tools): Rename as... + (Useful Developer Tools): ...this. + (Releasing): New section. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Update texi2dvi from upstream. + + * build-aux/texi2dvi: Update from CVS Texinfo. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Remove Trimesh sources from Olena. + + * external/trimesh/, + * external/: + Remove. + * configure.ac, + * README: + Remove anything related to Trimesh. + No longer configure external/Makefile. + * Makefile.am (SUBDIRS): Remove external. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + No longer configure tests of apps depending on Trimesh. + + * configure.ac: No longer configure + milena/apps/mesh-segm-skel/test-mesh-max-curv nor + milena/apps/mesh-segm-skel/test-mesh-segm. + + 2012-06-20 Roland Levillain <roland(a)lrde.epita.fr> + + Ensure `bootstrap -r' regenerates all files. + + * bootstrap: Here. + Aesthetic changes. + + 2012-06-11 Roland Levillain <roland(a)lrde.epita.fr> + + Remove non-distributed headers not required by Milena nor Scribo. + + * build-aux/generate_dist_headers.sh: No longer handle the third + argument (list of non-distributed files). + * milena/Makefile.am, + * scribo/Makefile.am + (regen-am, $(srcdir)/headers.mk): Adjust. + (EXTRA_DIST): Remove nodist-headers. + * milena/headers.mk, + * scribo/headers.mk: + Regen. + * milena/nodist-headers, + * scribo/nodist-headers: + Remove. + * milena/mln/accu/math/inf.hh, + * milena/mln/accu/math/sup.hh, + * milena/mln/core/image/vmorph/thru_image.hh, + * milena/mln/core/image/vmorph/thrubin_image.hh, + * milena/mln/data/was.median.hh, + * milena/mln/extract/all.hh, + * milena/mln/extract/blue.hh, + * milena/mln/extract/essential.hh, + * milena/mln/extract/green.hh, + * milena/mln/extract/hue.hh, + * milena/mln/extract/lum.hh, + * milena/mln/extract/red.hh, + * milena/mln/extract/sat.hh, + * milena/mln/fun/access/all.hh, + * milena/mln/fun/access/mean.hh, + * milena/mln/fun/accu_result.hh, + * milena/mln/fun/binary.hh, + * milena/mln/fun/binary_param.hh, + * milena/mln/fun/component/blue.hh, + * milena/mln/fun/component/comp.hh, + * milena/mln/fun/component/comp_count.hh, + * milena/mln/fun/component/green.hh, + * milena/mln/fun/component/ithcomp.hh, + * milena/mln/fun/component/red.hh, + * milena/mln/fun/component/rgb.hh, + * milena/mln/fun/component/scomp.hh, + * milena/mln/fun/compose.hh, + * milena/mln/fun/composition.hh, + * milena/mln/fun/from_accu.hh, + * milena/mln/fun/math/abs.hh, + * milena/mln/fun/math/cos.hh, + * milena/mln/fun/math/inf.hh, + * milena/mln/fun/math/norm.hh, + * milena/mln/fun/math/sup.hh, + * milena/mln/fun/meta/all.hh, + * milena/mln/fun/meta/blue.hh, + * milena/mln/fun/meta/essential.hh, + * milena/mln/fun/meta/first.hh, + * milena/mln/fun/meta/green.hh, + * milena/mln/fun/meta/hue.hh, + * milena/mln/fun/meta/inty.hh, + * milena/mln/fun/meta/lum.hh, + * milena/mln/fun/meta/red.hh, + * milena/mln/fun/meta/sat.hh, + * milena/mln/fun/meta/second.hh, + * milena/mln/fun/meta/to_enc.hh, + * milena/mln/fun/param.hh, + * milena/mln/fun/point/col.hh, + * milena/mln/fun/point/row.hh, + * milena/mln/fun/point/sli.hh, + * milena/mln/fun/spe/binary.hh, + * milena/mln/fun/spe/unary.hh, + * milena/mln/fun/unary.hh, + * milena/mln/fun/unary_param.hh, + * milena/mln/fun/v2v/hsi_to_rgb.hh, + * milena/mln/fun/v2v/rgb_to_hsi.hh, + * milena/mln/linear/gaussian/filter.hh, + * milena/mln/linear/gaussian/impl.hh, + * milena/mln/linear/gaussian/internal/coefficients.hh, + * milena/mln/registration/all.hh, + * milena/mln/registration/essential.hh, + * milena/mln/registration/get_rot.hh, + * milena/mln/registration/get_rtransf.hh, + * milena/mln/registration/icp.hh, + * milena/mln/registration/internal/rms.hh, + * milena/mln/registration/registration.hh, + * milena/mln/subsampling/all.hh, + * milena/mln/subsampling/essential.hh, + * milena/mln/subsampling/gaussian_subsampling.hh, + * milena/mln/subsampling/subsampling.hh, + * milena/mln/trait/functions.hh, + * milena/mln/trait/next/solve.hh, + * milena/mln/trait/next/solve_binary.hh, + * milena/mln/trait/next/solve_proxy.hh, + * milena/mln/trait/next/solve_unary.hh, + * milena/mln/value/hsi.hh, + * milena/mln/value/shell.hh, + * milena/mln/value/stack.hh, + Remove. + * milena/tests/unit_test/unit-tests.mk: Regen. + + 2012-06-11 Roland Levillain <roland(a)lrde.epita.fr> + + Strip and remove files to match distributed files. + + * configure.ac, + * milena/mln/accu/math/all.hh, + * milena/mln/all.hh, + * milena/mln/core/image/vmorph/all.hh, + * milena/mln/core/image/vmorph/fun_image.hh, + * milena/mln/data/all.hh, + * milena/mln/essential/routine.hh, + * milena/mln/fun/all.hh, + * milena/mln/fun/essential.hh, + * milena/mln/fun/v2v/all.hh, + * milena/mln/fun/v2v/essential.hh, + * milena/mln/linear/all.hh, + * milena/mln/trait/all.hh, + * milena/mln/trait/ch_value.hh, + * milena/mln/value/all.hh, + * milena/mln/value/essential.hh, + * milena/tests/Makefile.am, + * milena/tests/convert/Makefile.am, + * milena/tests/extract/Makefile.am, + * milena/tests/fun/v2v/Makefile.am, + * milena/tests/linear/Makefile.am, + * milena/tests/linear/gaussian/Makefile.am, + * milena/tests/registration/Makefile.am, + * milena/tests/trait/ch_value.cc, + * milena/tests/value/Makefile.am: + Strip (some) parts between tags `<<lrde' and `>>'. + * Makefile.am: Likewise. + (LRDE_STRIPPED_DIST_FILES, LRDE_NODIST_FILES, dist-hook): Remove. + * milena/tests/convert/to_hsl.cc, + * milena/tests/extract/blue.cc, + * milena/tests/extract/green.cc, + * milena/tests/extract/hue.cc, + * milena/tests/extract/lum.cc, + * milena/tests/extract/red.cc, + * milena/tests/extract/sat.cc, + * milena/tests/fun/v2v/component.cc, + * milena/tests/linear/gaussian/filter.cc, + * milena/tests/registration/registration.cc, + * milena/tests/value/stack.cc: + Remove. + * build-aux/strip-lrde: Remove. + + 2011-11-14 Roland Levillain <roland(a)lrde.epita.fr> + + * configure.ac: Configure milena/apps/morphers/Makefile. + + 2011-11-16 Guillaume Lazzara <z(a)lrde.epita.fr> + + * m4/oln-with-lib.m4: Lookup for multiple AND single libraries + while checking Tesseract availability. ++>>>>>>> next + 2011-11-25 Roland Levillain <roland(a)lrde.epita.fr> Update lrde-scmstats.sh. diff --cc milena/ChangeLog index fdc8bd7,de49a76..024e441 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@@ -1,126 -1,591 +1,714 @@@ +2012-09-28 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/debug/draw_graph.hh: Add a new overload and fix comments. + +2012-05-11 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/core/alias/neighb3d.hh: Fix invalid c8_3d neighborhood. + +2012-05-11 Guillaume Lazzara <z(a)lrde.epita.fr> + + Rename point_at_index, delta_index and index_of_point. + + * mln/accu/line.hh, + * mln/accu/transform_line.hh, + * mln/border/duplicate.hh, + * mln/border/fill.hh, + * mln/convert/to_qimage.hh, + * mln/core/concept/doc/image_fastest.hh, + * mln/core/concept/window.hh, + * mln/core/dpoints_pixter.hh, + * mln/core/image/image1d.hh, + * mln/core/image/image2d.hh, + * mln/core/image/image3d.hh, + * mln/core/internal/check/image_fastest.hh, + * mln/core/internal/image_identity.hh, + * mln/core/internal/pixel_impl.hh, + * mln/core/pixel.hh, + * mln/data/fill_with_value.spe.hh, + * mln/data/memset_.hh, + * mln/io/magick/load.hh, + * mln/io/magick/save.hh, + * mln/labeling/value_and_compute.hh, + * mln/linear/gaussian_directional_2d.hh, + * mln/subsampling/antialiased.hh, + * mln/trait/image/props.hh, + * mln/transform/internal/closest_point_functor.hh, + * mln/world/binary_2d/subsample.hh: Rename point_at_index, + delta_index and index_of_point to point_at_offset, delta_offset + and offset_of_point. + +2012-05-10 Guillaume Lazzara <z(a)lrde.epita.fr> + + Rely on Argument-Dependent Lookup (ADL) in from_to_ overloads. + + * mln/accu/count_labels.hh, + * mln/convert/from_to.hxx , + * mln/convert/to.hh, + * mln/core/alias/point1d.hh, + * mln/core/alias/point2d.hh, + * mln/core/alias/point3d.hh, + * mln/core/dpoint.hh, + * mln/core/internal/neighborhood_base.hh, + * mln/core/point.hh, + * mln/core/site_set/p_centered.hh, + * mln/core/site_set/p_vaccess.hh, + * mln/fun/v2v/hsl_to_rgb.hh, + * mln/fun/v2v/rgb_to_hsl.hh, + * mln/io/magick/save.hh, + * mln/io/plot/save.hh, + * mln/labeling/blobs_and_compute.hh, + * mln/labeling/value_and_compute.hh, + * mln/make/w_window2d.hh, + * mln/win/multiple.hh, + * mln/win/multiple_size.hh, + * tests/accu/site_set/rectangularity.cc, + * tests/core/other/graph_elt_neighborhood.cc, + * tests/core/other/graph_elt_window.cc, + * tests/core/other/point_set_compatibility.cc, + * tests/draw/graph.cc: Update forward declarations and includes. + + * mln/algebra/vec.hh, + * mln/convert/from_to.hh, + * mln/convert/impl/from_double_to_value.hh, + * mln/convert/impl/from_float_to_value.hh, + * mln/convert/impl/from_image_to_site_set.hh, + * mln/convert/impl/from_int_to_value.hh, + * mln/convert/impl/from_unsigned_to_value.hh, + * mln/convert/impl/from_value_to_value.hh, + * mln/core/alias/neighb2d.hh, + * mln/core/alias/neighb3d.hh, + * mln/core/alias/window1d.hh, + * mln/core/alias/window2d.hh, + * mln/core/alias/window3d.hh, + * mln/core/concept/accumulator.hh, + * mln/core/concept/gdpoint.hh, + * mln/core/concept/gpoint.hh, + * mln/core/concept/image.hh, + * mln/core/concept/proxy.hh, + * mln/core/concept/site_set.hh, + * mln/core/concept/window.hh, + * mln/core/image/graph_window_if_piter.hh, + * mln/core/image/image1d.hh, + * mln/core/mixed_neighb.hh, + * mln/core/neighb.hh, + * mln/core/site_set/operators.hh, + * mln/core/w_window.hh, + * mln/fun/i2v/array.hh, + * mln/util/object_id.hh, + * mln/value/hsl.hh, + * mln/value/int_u.hh, + * mln/value/label.hh, + * mln/value/qt/rgb32.hh, + * mln/value/rgb.hh, + * mln/histo/array.hh, + * mln/util/array.hh: Move from_to_ overloads in the same namespace + as their first argument. + +2012-05-07 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/registration/icp.hh: Add a missing initialization. + +2012-05-07 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/io/magick/save.hh: Add generic and fast implementations. + +2012-05-07 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/draw/box_plain.hh: Fix unused variable warning. + +2011-11-30 Guillaume Lazzara <z(a)lrde.epita.fr> + + * mln/accu/math/sumpow.hh: New accumulator. + + 2013-02-13 Roland Levillain <roland(a)lrde.epita.fr> + + Simplify more Milena Makefiles thanks to AM_DEFAULT_SOURCE_EXT. + + * apps/morphers/Makefile.am, + * tests/fun/v2v/Makefile.am, + * tests/subsampling/Makefile.am: + Here. + + 2010-04-22 Roland Levillain <roland(a)lrde.epita.fr> + + Use AM_DEFAULT_SOURCE_EXT to simplify Milena's Makefiles. + + * common.mk: New. + Include it... + * tests/tests.mk, + * tools/tools.mk: + ...here. + * tests/Makefile.am, + * tests/accu/Makefile.am, + * tests/accu/image/Makefile.am, + * tests/accu/math/Makefile.am, + * tests/accu/shape/Makefile.am, + * tests/accu/site_set/Makefile.am, + * tests/accu/stat/Makefile.am, + * tests/algebra/Makefile.am, + * tests/arith/Makefile.am, + * tests/binarization/Makefile.am, + * tests/border/Makefile.am, + * tests/canvas/Makefile.am, + * tests/canvas/browsing/Makefile.am, + * tests/canvas/morpho/Makefile.am, + * tests/convert/Makefile.am, + * tests/convert/impl/Makefile.am, + * tests/core/alias/Makefile.am, + * tests/core/image/Makefile.am, + * tests/core/image/dmorph/Makefile.am, + * tests/core/image/imorph/Makefile.am, + * tests/core/image/vmorph/Makefile.am, + * tests/core/other/Makefile.am, + * tests/core/routine/Makefile.am, + * tests/core/site_set/Makefile.am, + * tests/data/Makefile.am, + * tests/data/approx/Makefile.am, + * tests/data/naive/Makefile.am, + * tests/debug/Makefile.am, + * tests/draw/Makefile.am, + * tests/estim/Makefile.am, + * tests/extension/Makefile.am, + * tests/fun/Makefile.am, + * tests/fun/i2v/Makefile.am, + * tests/fun/p2p/Makefile.am, + * tests/fun/stat/Makefile.am, + * tests/fun/v2i/Makefile.am, + * tests/fun/v2v/Makefile.am, + * tests/fun/vv2v/Makefile.am, + * tests/fun/x2x/Makefile.am, + * tests/geom/Makefile.am, + * tests/graph/Makefile.am, + * tests/graph/attribute/Makefile.am, + * tests/histo/Makefile.am, + * tests/io/dicom/Makefile.am, + * tests/io/dump/Makefile.am, + * tests/io/fits/Makefile.am, + * tests/io/fld/Makefile.am, + * tests/io/magick/Makefile.am, + * tests/io/off/Makefile.am, + * tests/io/pbm/Makefile.am, + * tests/io/pbms/Makefile.am, + * tests/io/pgm/Makefile.am, + * tests/io/pgms/Makefile.am, + * tests/io/ppm/Makefile.am, + * tests/io/ppms/Makefile.am, + * tests/io/tiff/Makefile.am, + * tests/labeling/Makefile.am, + * tests/linear/Makefile.am, + * tests/linear/local/Makefile.am, + * tests/literal/Makefile.am, + * tests/logical/Makefile.am, + * tests/make/Makefile.am, + * tests/metal/Makefile.am, + * tests/metal/math/Makefile.am, + * tests/morpho/Makefile.am, + * tests/morpho/approx/Makefile.am, + * tests/morpho/attribute/Makefile.am, + * tests/morpho/closing/Makefile.am, + * tests/morpho/closing/approx/Makefile.am, + * tests/morpho/elementary/Makefile.am, + * tests/morpho/opening/Makefile.am, + * tests/morpho/opening/approx/Makefile.am, + * tests/morpho/reconstruction/by_dilation/Makefile.am, + * tests/morpho/reconstruction/by_erosion/Makefile.am, + * tests/morpho/tree/Makefile.am, + * tests/morpho/tree/filter/Makefile.am, + * tests/morpho/watershed/Makefile.am, + * tests/opt/Makefile.am, + * tests/pw/Makefile.am, + * tests/set/Makefile.am, + * tests/test/Makefile.am, + * tests/topo/Makefile.am, + * tests/topo/skeleton/Makefile.am, + * tests/trait/Makefile.am, + * tests/trait/image/Makefile.am, + * tests/trait/op/Makefile.am, + * tests/trait/value/Makefile.am, + * tests/transform/Makefile.am, + * tests/upscaling/art/Makefile.am, + * tests/util/Makefile.am, + * tests/value/Makefile.am, + * tests/value/builtin/Makefile.am, + * tests/win/Makefile.am, + * tests/world/binary_2d/Makefile.am, + * tests/world/inter_pixel/Makefile.am, + * tests/world/inter_pixel/dim2/Makefile.am: + Remove (now useless) `*_SOURCES' variables using + sed -ri '/^(\s|#)*\S+_SOURCES\s*=\s*\S+.cc\s*$/d'. + * apps/constrained-connectivity/Makefile.am, + * apps/graph-morpho/Makefile.am, + * apps/mesh-segm-skel/Makefile.am, + * apps/papers/levillain.09.ismm/Makefile.am, + * tools/Makefile.am: + Likewise. + Include common.mk. + + 2012-09-28 Roland Levillain <roland(a)lrde.epita.fr> + + Add a script to generate a Milena header file. + + * new-header: New. + * Makefile.am (EXTRA_DIST): Add new-header. + + 2013-02-13 Roland Levillain <roland(a)lrde.epita.fr> + + Add missing TESTS variable to Makefile.am's. + + * tests/canvas/Makefile.am, + * tests/canvas/morpho/Makefile.am, + * tests/fun/Makefile.am, + * tests/fun/p2b/Makefile.am, + * tests/fun/p2v/Makefile.am, + * tests/io/pfm/Makefile.am, + * tests/io/pnm/Makefile.am, + * tests/math/Makefile.am, + * tests/metal/make/Makefile.am, + * tests/tag/Makefile.am, + * tests/trace/Makefile.am, + * tests/value/concept/Makefile.am: + Here. + + 2013-02-07 Roland Levillain <roland(a)lrde.epita.fr> + + Complete and clean up tests/metal/converts_to.cc. + + * tests/metal/converts_to.cc: Remove dead code and add new test + cases. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Fix the generation of code excerpts for the documentation. + + * doc/tools/split_sample.sh: Use $(...) instead of `...` so that + backslashes are interpreted uniformly. + Pass option `-h' to grep to prevent file names from being printed + on OS X. + Remove useless option `-R' passed to grep. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Address warnings reported by clang++ in Milena. + + * mln/canvas/browsing/diagonal2d.hh (diagonal2d_t::operator()) + * mln/clustering/kmean_rgb.hh (internal::kmean_rgb_dispatch) + * mln/labeling/value_and_compute.hh + (internal::value_and_compute_tests) + (impl::process__) + * mln/metal/math/root.hh (impl::root<n, x, lo, hi>::value): Add an + explicit type conversion of operator<'s the right-hand side + operand. + * mln/morpho/watershed/topological.hh (topological) + * mln/world/rgb/invert.hh (internal::invert_dispatch): + Remove unused variables. + Do not name unused arguments. + * mln/util/object_id.hh + (operator==(const object_id<Tag,V>&, const Value<V2>&)): + Add an explicit type conversion of the right-hand side operand. + * mln/world/rgb/invert.hh, + * tests/core/alias/point1d.cc, + * tests/make/p_edges_with_mass_centers.cc, + * tests/make/p_vertices_with_mass_centers.cc, + * tests/value/int_s16.cc, + * tests/value/int_u8.cc: + Shush the compiler about unused variables. + * tests/trait/op/plus.cc (mln::my_image2d<T>): Complete this type + to have it comply with the mln::Image concept. + (mln::dummy_t): New (dummy) type. + (dummy): New (dummy) value. + (main): Do not use uninitialized pointers. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Disambiguate operator- overload resolution with a pow_int_ operand. + + * mln/metal/math/pow.hh (mln::metal::math::impl::pow_int_): + Use static const integers instead of enums. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Revive tests/value/graylevel.cc. + + * mln/value/graylevel.hh: Aesthetic changes in comments. + * tests/value/graylevel.cc (test_conversion): Turn this macro into + a function template. + (main): Ensure all valid comparisons listed in + mln/value/graylevel.hh work. + Remove dead code. + Address warnings. + * tests/value/Makefile.am (check_PROGRAMS): Re-enable graylevel. + (graylevel_SOURCES): Re-enable. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Fix mutual dependencies between floating-point gray-level values. + + * mln/value/graylevel_f.hh, + * mln/value/internal/gray_f.hh: + Move definitions... + * mln/value/graylevel_f.hxx, + * mln/value/internal/gray_f.hxx: + ...here (new files). + * headers.mk (nobase_include_HEADERS): Regen. + + 2013-02-05 Roland Levillain <roland(a)lrde.epita.fr> + + Address more remaining clang++ errors in Milena. + + * mln/core/concept/proxy.hxx: Add and reorder forward + declarations. + * mln/accu/site_set/rectangularity.hh (rectangularity<P>): Do not + re-import base class attributes as protected members, so that the + base class can still access them. + Adjust. + * mln/geom/seeds2tiling_roundness.hh, + * mln/subsampling/antialiased.hh, + * mln/world/inter_pixel/dim2/make_edge_image.hh: + Add missing header inclusions. + * mln/io/plot/save.hh (save) + * mln/morpho/tree/propagate_node.hh + (propagate_node_to_descendants): + Do not provide default arguments twice. + * mln/topo/face_iter.hh, + * mln/topo/n_face_iter.hh: + Add `this->' qualifiers to disambiguate calls to base class + methods. + * tests/metal/converts_to.cc (from_2): Do not rely on + uninitialized data. + (main): Add a test case. + + 2012-03-09 Roland Levillain <roland(a)lrde.epita.fr> + + More clang++ support in Milena. + + * mln/core/concept/proxy.hxx (get_proxy_impl<Subject, E>): Swap + two definitions to help clang++ properly resolve calls to the + overloaded conversion operator. + + 2010-11-29 Roland Levillain <roland(a)lrde.epita.fr> + + Start to work around clang++ deficiencies to compile Milena. + + * mln/util/tracked_ptr.hh (tracked_ptr<T>::operator*): New. + * mln/topo/complex.hh: Decompose complex instructions. + + 2012-10-08 Roland Levillain <roland(a)lrde.epita.fr> + + Revive headers required by the RGB component functors. + + * mln/core/image/vmorph/thru_image.hh, + * mln/fun/component/blue.hh, + * mln/fun/component/green.hh, + * mln/fun/component/red.hh, + * mln/fun/component/rgb.hh, + * mln/fun/param.hh, + * mln/fun/spe/unary.hh, + * mln/fun/unary.hh, + * mln/trait/functions.hh, + * mln/trait/next/solve.hh, + * mln/trait/next/solve_binary.hh, + * mln/trait/next/solve_proxy.hh, + * mln/trait/next/solve_unary.hh: + New. + * headers.mk, + * tests/unit_test/unit-tests.mk: + Regen. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Provide typedefs mln::value::int_s24 and mln::value::int_u24. + + * mln/value/int_s24.hh, + * mln/value/int_u24.hh: + New. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Rename Trimesh reimplementations in apps/mesh-segm-skel/. + + * apps/mesh-segm-skel/trimesh/misc.hh: Move... + * apps/mesh-segm-skel/misc.hh: ...here. + Update comments. + * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc, + * apps/mesh-segm-skel/mesh-complex-max-curv.cc: + Adjust. + * apps/mesh-segm-skel/trimesh/README: Remove. + * apps/mesh-segm-skel/Makefile.am (noinst_HEADERS, EXTRA_DIST): + Adjust. + + 2012-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Remove anything depending on the Trimesh library. + + * apps/mesh-segm-skel/io.hh, + * apps/mesh-segm-skel/mesh-max-curv.cc, + * apps/mesh-segm-skel/mesh-pinv-curv.cc, + * apps/mesh-segm-skel/mesh-segm.cc, + * apps/mesh-segm-skel/mesh-skel.cc, + * apps/mesh-segm-skel/test-mesh-max-curv.in, + * apps/mesh-segm-skel/test-mesh-segm.in: + Remove. + * apps/mesh-segm-skel/Makefile.am: Remove anything related to the + Trimesh library. + + 2012-06-15 Roland Levillain <roland(a)lrde.epita.fr> + + Remove dependencies on suppressed files. + + * doc/examples/tuto4_genericity_and_algorithms.cc: Do not include + mln/extract/green.hh. + + 2012-06-14 Roland Levillain <roland(a)lrde.epita.fr> + + Fix the distcheck target. + + * tests/linear/Makefile.am (MOSTLYCLEANFILES): + Add gaussian-out.pgm. + + 2012-10-08 Roland Levillain <roland(a)lrde.epita.fr> + + Address g++-4.7 compilation errors. + + * apps/morphers/image2d-skel.hh (is_simple_2d::operator()): + Qualify a call to a base class member. + + 2012-09-25 Roland Levillain <roland(a)lrde.epita.fr> + + Fix file names in apps/morphers/recorder-bft. + + * apps/morphers/recorder-bft.cc, + * apps/morphers/Makefile.am (recorder_SOURCES): + s/lena/picasso/. + + 2012-06-21 Roland Levillain <roland(a)lrde.epita.fr> + + Improve the (movie) output of apps/morphers/iz. + + * apps/morphers/iz.cc (save_colorized): Skip consecutive identical + frames. + Swap the frame reconstruction and write operations, so that the + last frame is eventually saved. + * apps/morphers/Makefile.am (tmp_iz.avi): Use a speedup of 50 + instead of 10. + + 2012-06-21 Roland Levillain <roland(a)lrde.epita.fr> + + Use the lazy recorder morpher in apps/morphers/iz. + + * apps/morphers/iz.cc (main): Here. + Save the sequence of recorder images as PNG images using Magick++. + (save_colorized): New function. + * apps/morphers/Makefile.am + (noinst_PROGRAMS, iz_SOURCES) [HAVE_MAGICKXX]: Build `iz' only if + Magick++ is available. + (iz_output.ppm) [HAVE_MAGICKXX]: Likewise. + (iz_CPPFLAGS, iz_LDFLAGS) [HAVE_MAGICKXX]: New. + (tmp_iz.avi) [HAVE_MAGICKXX]: New target. + (MOSTLYCLEANFILES): Add tmp_iz??????.png. + + 2012-06-20 Roland Levillain <roland(a)lrde.epita.fr> + + Add rules to build and run apps/morphers/iz. + + * apps/morphers/Makefile.am (noinst_PROGRAMS): Add iz. + (iz_SOURCES): New. + (EXTRA_DIST): Add iz_input.pbm. + (iz_output.ppm): New target. + (MOSTLYCLEANFILES): Add tmp_clo.pgm, tmp_dmap.pgm, + tmp_ws_superpose.ppm, tmp_ws.ppm, tmp_lab.pgm, tmp_iz.pgm, + tmp_iz.ppm and tmp_iz_input.ppm. + + 2012-06-20 Thierry Geraud <thierry.geraud(a)lrde.epita.fr> + + New example demonstrating the use of influence zones. + + * apps/morphers/iz.cc: New. + * apps/morphers/iz_input.pbm: New. + + 2012-06-21 Roland Levillain <roland(a)lrde.epita.fr> + + New ``lazy'' recorder morpher in apps/morpher. + + * apps/morphers/lazy_recorder.hh: New. + * apps/morphers/lazy_recorder.cc: New test. + * apps/morphers/Makefile.am (noinst_HEADERS): + Add lazy_recorder.hh. + (noinst_PROGRAMS): Add lazy_recorder. + (lazy_recorder_SOURCES): New. + (MOSTLYCLEANFILES): Add lena-fill-lazy??????.ppm. + + 2012-06-21 Roland Levillain <roland(a)lrde.epita.fr> + + Render the recorder morpher more generic. + + * apps/morphers/recorder.hh (recorder<I>::sequence): Store a + sequence of concrete images. + Add missing inline keywords. + Improve the documentation. + + 2011-11-28 Roland Levillain <roland(a)lrde.epita.fr> + + New morpher example: recording a breadth-first thinning. + + * apps/morphers/recorder-bft.cc: New. + * apps/morphers/image2d-skel.hh: New. + * apps/morphers/Makefile.am (noinst_PROGRAMS): Add recorder-bft. + (recorder_wst_SOURCES): New. + (recorder_SOURCES, recorder_wst_SOURCES, mask_recorder_SOURCES): + Move recorder.hh... + (noinst_HEADERS): ...here (new variable). + (MOSTLYCLEANFILES): Add lena-bft??????.pbm. + + 2011-11-24 Roland Levillain <roland(a)lrde.epita.fr> + + New morpher example: recording a watershed transform. + + * apps/morphers/recorder-wst.cc: New. + * apps/morphers/Makefile.am (noinst_PROGRAMS): Add recorder-wst. + (recorder_wst_SOURCES): New. + (MOSTLYCLEANFILES): lena-wst??????.ppm. + + 2011-11-24 Roland Levillain <roland(a)lrde.epita.fr> + + Work around decorated_image's lack of properties, for the recorder. + + * apps/morphers/recorder.hh + (trait::image_< decorated_image<I,D> >): Replace with.. + (trait::image_< decorated_image<I, recorder<I> > >): ...this. + Add a value_storage property. + (ch_value_< decorated_image< image_<I>, data_< recorder<I> > >, V >): + New trait, to handle changes of value types in images decorated + with a recorder. + * apps/morphers/mask+channel.cc, + * apps/morphers/mask+recorder.cc, + * apps/morphers/recorder.cc: + Simplify these programs thanks to the preceding changes. + + 2011-11-24 Roland Levillain <roland(a)lrde.epita.fr> + + Fix the initialization of mln::decorated_image. + + * mln/tag/init.hh (tag::data_t): New tag type. + (tag::data): New tag. + * mln/core/image/imorph/decorated_image.hh + (init_(tag::data_t, D&, const decorated_image<I,D>&)) + (init_(tag::data_t, D&, const decorated_image<I,D2>&)) + (init_(tag::image_t, decorated_image<I,D>&, const J&)): + New functions. + + 2011-11-18 Roland Levillain <roland(a)lrde.epita.fr> + + Simplify some apps/morpher programs using mln::make::box2d. + + * apps/morphers/mask+recorder.cc, + * apps/morphers/mask+channel.cc: + Here. + + 2011-11-18 Roland Levillain <roland(a)lrde.epita.fr> + + Refactor apps/morphers. + + * apps/morphers/recorder.cc, + * apps/morphers/mask+recorder.cc: + Factor common parts... + * apps/morphers/recorder.hh: ...here (new file). + * apps/morphers/Makefile.am + (recorder_SOURCES, mask_recorder_SOURCES): Add recorder.hh. + + 2011-11-14 Roland Levillain <roland(a)lrde.epita.fr> + + Add examples of morphers. + + * apps/morphers/mask+channel.cc, + * apps/morphers/recorder.cc, + * apps/morphers/mask+recorder.cc: + New. + * apps/morphers/Makefile.am: New. + * apps/Makefile.am (SUBDIRS): Add morphers. + + 2011-11-24 Roland Levillain <roland(a)lrde.epita.fr> + + Honor a precondition in classification examples (ISMM 2009). + + * apps/papers/levillain.09.ismm/classif-graph.cc, + * apps/papers/levillain.09.ismm/classif-1complex.cc: + Do not use a value outside the range [0, nbasins] in `canvas_wst' + to prevent a failed precondition in labeling::colorize (when + NDEBUG is not defined). + Reported by David Coeurjolly <david.coeurjolly at liris.cnrs.fr>. + + 2011-10-11 Roland Levillain <roland(a)lrde.epita.fr> + + Graph-based version of the classification example. + + * apps/papers/levillain.09.ismm/classif-graph.cc: New. + * apps/papers/levillain.09.ismm/Makefile.am (noinst_PROGRAMS): + Add classif-graph. + (classif_graph_SOURCES): New. + (noinst_DATA): Add classwst-graph.ppm. + (classwst-graph.ppm): New target. + + 2011-10-10 Roland Levillain <roland(a)lrde.epita.fr> + + Rename apps/papers/levillain.09.ismm/classif.cc. + + * apps/papers/levillain.09.ismm/classif.cc: Rename as... + * apps/papers/levillain.09.ismm/classif-1complex.cc: ...this. + * apps/papers/levillain.09.ismm/Makefile.am + (noinst_PROGRAMS, noinst_DATA): s/classif/classif-1complex/. + (classif_SOURCES, classwst.pnm): Replace by... + (classif_1complex_SOURCES, classwst-1complex.ppm): ...these. + + 2011-10-10 Roland Levillain <roland(a)lrde.epita.fr> + + Aesthetic changes in apps/papers/levillain.09.ismm/classif.cc. + + * apps/papers/levillain.09.ismm/classif.cc: Here. + Remove useless headers inclusions. + Adjust comments. + + 2011-10-05 Roland Levillain <roland(a)lrde.epita.fr> + + Fix and clean up apps/papers/levillain.09.ismm/classif.cc. + + * apps/papers/levillain.09.ismm/classif.cc (main): Actually use + the chain() routine from chain.hh instead of ad hoc code. + Move code related to the construction of the 1-complex (graph) + image on which the processing chain is run... + (make_complex_image): ...here. + * apps/papers/levillain.09.ismm/Makefile.am (classwst.pnm): Change + the lambda (area) parameter to 4. + + 2011-10-04 Roland Levillain <roland(a)lrde.epita.fr> + + Import the WST-based classification in apps/papers/levillain.09.ismm. + + * apps/papers/levillain.09.ismm/Makefile.am + (noinst_PROGRAMS): Add classif. + (classif_SOURCES): Add classif.cc + (dist_noinst_DATA): Add classseedsi.pbm. + (noinst_DATA): Add classwst.pnm. + (classwst.pnm): New target. + * apps/papers/levillain.09.ismm/classif.cc: New. + Copied and adapted from + sandbox/theo/esiee/laurent/presentation/classif.cc. + * apps/papers/levillain.09.ismm/classseedsi.pbm: New. + + 2011-10-04 Roland Levillain <roland(a)lrde.epita.fr> + + Split apps/papers/levillain.09.ismm/graph.cc. + + * apps/papers/levillain.09.ismm/graph.cc: Misc. changes. + (mln::influence_zones) + (mln::io::neato::save): + Move functions... + * apps/papers/levillain.09.ismm/influence_zones.hh, + * apps/papers/levillain.09.ismm/io.hh: + ...here (new files). + * apps/papers/levillain.09.ismm/Makefile.am (noinst_HEADERS): + Add io.hh and influence_zones.hh + 2011-11-29 Guillaume Lazzara <z(a)lrde.epita.fr> Fix the initialization of all global constants (ticket #43) diff --cc milena/doc/examples/tuto4_genericity_and_algorithms.cc index 5639e84,46893bd..4b76869 --- a/milena/doc/examples/tuto4_genericity_and_algorithms.cc +++ b/milena/doc/examples/tuto4_genericity_and_algorithms.cc @@@ -33,12 -32,8 +32,10 @@@ #include <mln/core/var.hh> #include <mln/core/alias/neighb2d.hh> +#include <mln/binarization/binarization.hh> + #include <mln/fun/p2b/chess.hh> - #include <mln/extract/green.hh> - #include <mln/accu/stat/max.hh> #include <mln/geom/all.hh> diff --cc milena/mln/morpho/watershed/topological.hh index 20702e3,d17ece1..6dea02d --- a/milena/mln/morpho/watershed/topological.hh +++ b/milena/mln/morpho/watershed/topological.hh @@@ -670,7 -670,7 +670,7 @@@ namespace ml return w_constructible(tree, p, r); } -- ++ template <class T> typename T::image_t topological(T &tree) @@@ -766,7 -766,7 +766,7 @@@ // the // priority. } -- } ++ } } // while(!l.empty()) for_all(it) diff --cc milena/mln/subsampling/antialiased.hh index 09caeb7,24b7224..2821984 --- a/milena/mln/subsampling/antialiased.hh +++ b/milena/mln/subsampling/antialiased.hh @@@ -1,5 -1,5 +1,5 @@@ - // Copyright (C) 2009, 2010, 2012 EPITA Research and Development -// Copyright (C) 2009, 2010, 2013 EPITA Research and Development Laboratory -// (LRDE) ++// Copyright (C) 2009, 2010, 2013 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // diff --cc milena/mln/util/object_id.hh index 1d2b361,54c12ff..a63bb73 --- a/milena/mln/util/object_id.hh +++ b/milena/mln/util/object_id.hh @@@ -1,5 -1,5 +1,5 @@@ - // Copyright (C) 2009, 2011, 2012 EPITA Research and Development -// Copyright (C) 2009, 2011, 2013 EPITA Research and Development Laboratory -// (LRDE) ++// Copyright (C) 2009, 2011, 2013 EPITA Research and Development +// Laboratory (LRDE) // // This file is part of Olena. // diff --cc milena/tests/core/alias/point1d.cc index 627af52,15373fd..dbf4eaa --- a/milena/tests/core/alias/point1d.cc +++ b/milena/tests/core/alias/point1d.cc @@@ -34,11 -35,9 +35,10 @@@ int main( point1d p, q; - // assignment - p[0] = 4; algebra::vec<1,float> v = p; + mln_assertion(v[0] == 4); + (void) v; p.ind() += 1; mln_assertion(p.ind() == 5 && p[0] == 5); diff --cc milena/tests/data/Makefile.am index 4b04dfb,8fc49d9..b733718 --- a/milena/tests/data/Makefile.am +++ b/milena/tests/data/Makefile.am @@@ -42,32 -42,9 +43,8 @@@ check_PROGRAMS = transform_inplace \ update - abs_SOURCES = abs.cc - apply_SOURCES = apply.cc - compare_SOURCES = compare.cc - compute_SOURCES = compute.cc - compute_in_window_SOURCES = compute_in_window.cc - convert_SOURCES = convert.cc - fill_SOURCES = fill.cc - fill_with_image_SOURCES = fill_with_image.cc - fill_with_value_SOURCES = fill_with_value.cc - median_SOURCES = median.cc - median_fast_SOURCES = median_fast.cc - memcpy__SOURCES = memcpy_.cc - memset__SOURCES = memset_.cc - paste_SOURCES = paste.cc - paste_without_localization_SOURCES = paste_without_localization.cc - saturate_SOURCES = saturate.cc - split_SOURCES = split.cc - sort_psites_SOURCES = sort_psites.cc - stretch_SOURCES = stretch.cc - transform_SOURCES = transform.cc - transform_inplace_SOURCES = transform_inplace.cc - update_SOURCES = update.cc -- # Lengthy tests. - # FIXME: enable it when make full-check is enabled. - #fill_full_SOURCES = fill_full.cc + # FIXME: Enable `fill_full' it when make full-check is enabled. TESTS = $(check_PROGRAMS) diff --cc milena/tests/unit_test/unit-tests.mk index 3a14188,db1c67b..814bdfb --- a/milena/tests/unit_test/unit-tests.mk +++ b/milena/tests/unit_test/unit-tests.mk @@@ -1422,1333 -1343,4 +1346,1336 @@@ mln_world_inter_pixel_neighb2d mln_world_inter_pixel_separator_to_pixels \ mln_world_rgb_invert ++<<<<<<< HEAD +mln_accu_all_SOURCES = mln_accu_all.cc +mln_accu_center_SOURCES = mln_accu_center.cc +mln_accu_compute_SOURCES = mln_accu_compute.cc +mln_accu_convolve_SOURCES = mln_accu_convolve.cc +mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc +mln_accu_count_labels_SOURCES = mln_accu_count_labels.cc +mln_accu_count_value_SOURCES = mln_accu_count_value.cc +mln_accu_essential_SOURCES = mln_accu_essential.cc +mln_accu_histo_SOURCES = mln_accu_histo.cc +mln_accu_image_all_SOURCES = mln_accu_image_all.cc +mln_accu_image_essential_SOURCES = mln_accu_image_essential.cc +mln_accu_image_init_SOURCES = mln_accu_image_init.cc +mln_accu_image_set_value_SOURCES = mln_accu_image_set_value.cc +mln_accu_image_take_SOURCES = mln_accu_image_take.cc +mln_accu_image_take_as_init_SOURCES = mln_accu_image_take_as_init.cc +mln_accu_image_take_n_times_SOURCES = mln_accu_image_take_n_times.cc +mln_accu_image_to_result_SOURCES = mln_accu_image_to_result.cc +mln_accu_image_untake_SOURCES = mln_accu_image_untake.cc +mln_accu_internal_base_SOURCES = mln_accu_internal_base.cc +mln_accu_internal_couple_SOURCES = mln_accu_internal_couple.cc +mln_accu_label_used_SOURCES = mln_accu_label_used.cc +mln_accu_line_SOURCES = mln_accu_line.cc +mln_accu_logic_all_SOURCES = mln_accu_logic_all.cc +mln_accu_logic_land_SOURCES = mln_accu_logic_land.cc +mln_accu_logic_land_basic_SOURCES = mln_accu_logic_land_basic.cc +mln_accu_logic_lor_SOURCES = mln_accu_logic_lor.cc +mln_accu_logic_lor_basic_SOURCES = mln_accu_logic_lor_basic.cc +mln_accu_maj_h_SOURCES = mln_accu_maj_h.cc +mln_accu_math_all_SOURCES = mln_accu_math_all.cc +mln_accu_math_count_SOURCES = mln_accu_math_count.cc +mln_accu_math_essential_SOURCES = mln_accu_math_essential.cc +mln_accu_math_inf_SOURCES = mln_accu_math_inf.cc +mln_accu_math_sum_SOURCES = mln_accu_math_sum.cc +mln_accu_math_sup_SOURCES = mln_accu_math_sup.cc +mln_accu_max_site_SOURCES = mln_accu_max_site.cc +mln_accu_nil_SOURCES = mln_accu_nil.cc +mln_accu_p_SOURCES = mln_accu_p.cc +mln_accu_pair_SOURCES = mln_accu_pair.cc +mln_accu_rms_SOURCES = mln_accu_rms.cc +mln_accu_shape_all_SOURCES = mln_accu_shape_all.cc +mln_accu_shape_bbox_SOURCES = mln_accu_shape_bbox.cc +mln_accu_shape_essential_SOURCES = mln_accu_shape_essential.cc +mln_accu_shape_height_SOURCES = mln_accu_shape_height.cc +mln_accu_shape_volume_SOURCES = mln_accu_shape_volume.cc +mln_accu_site_set_all_SOURCES = mln_accu_site_set_all.cc +mln_accu_site_set_essential_SOURCES = mln_accu_site_set_essential.cc +mln_accu_site_set_rectangularity_SOURCES = mln_accu_site_set_rectangularity.cc +mln_accu_stat_all_SOURCES = mln_accu_stat_all.cc +mln_accu_stat_deviation_SOURCES = mln_accu_stat_deviation.cc +mln_accu_stat_essential_SOURCES = mln_accu_stat_essential.cc +mln_accu_stat_histo3d_rgb_SOURCES = mln_accu_stat_histo3d_rgb.cc +mln_accu_stat_max_SOURCES = mln_accu_stat_max.cc +mln_accu_stat_max_h_SOURCES = mln_accu_stat_max_h.cc +mln_accu_stat_mean_SOURCES = mln_accu_stat_mean.cc +mln_accu_stat_median_alt_SOURCES = mln_accu_stat_median_alt.cc +mln_accu_stat_median_h_SOURCES = mln_accu_stat_median_h.cc +mln_accu_stat_min_SOURCES = mln_accu_stat_min.cc +mln_accu_stat_min_h_SOURCES = mln_accu_stat_min_h.cc +mln_accu_stat_min_max_SOURCES = mln_accu_stat_min_max.cc +mln_accu_stat_rank_SOURCES = mln_accu_stat_rank.cc +mln_accu_stat_rank_bool_SOURCES = mln_accu_stat_rank_bool.cc +mln_accu_stat_rank_high_quant_SOURCES = mln_accu_stat_rank_high_quant.cc +mln_accu_stat_var_SOURCES = mln_accu_stat_var.cc +mln_accu_stat_variance_SOURCES = mln_accu_stat_variance.cc +mln_accu_take_SOURCES = mln_accu_take.cc +mln_accu_transform_SOURCES = mln_accu_transform.cc +mln_accu_transform_diagonal_SOURCES = mln_accu_transform_diagonal.cc +mln_accu_transform_directional_SOURCES = mln_accu_transform_directional.cc +mln_accu_transform_line_SOURCES = mln_accu_transform_line.cc +mln_accu_transform_snake_SOURCES = mln_accu_transform_snake.cc +mln_accu_transform_stop_SOURCES = mln_accu_transform_stop.cc +mln_accu_v_SOURCES = mln_accu_v.cc +mln_algebra_all_SOURCES = mln_algebra_all.cc +mln_algebra_essential_SOURCES = mln_algebra_essential.cc +mln_algebra_h_mat_SOURCES = mln_algebra_h_mat.cc +mln_algebra_h_vec_SOURCES = mln_algebra_h_vec.cc +mln_algebra_mat_SOURCES = mln_algebra_mat.cc +mln_algebra_quat_SOURCES = mln_algebra_quat.cc +mln_algebra_vec_SOURCES = mln_algebra_vec.cc +mln_all_SOURCES = mln_all.cc +mln_arith_all_SOURCES = mln_arith_all.cc +mln_arith_diff_abs_SOURCES = mln_arith_diff_abs.cc +mln_arith_div_SOURCES = mln_arith_div.cc +mln_arith_essential_SOURCES = mln_arith_essential.cc +mln_arith_includes_SOURCES = mln_arith_includes.cc +mln_arith_min_SOURCES = mln_arith_min.cc +mln_arith_minus_SOURCES = mln_arith_minus.cc +mln_arith_plus_SOURCES = mln_arith_plus.cc +mln_arith_revert_SOURCES = mln_arith_revert.cc +mln_arith_times_SOURCES = mln_arith_times.cc +mln_binarization_all_SOURCES = mln_binarization_all.cc +mln_binarization_binarization_SOURCES = mln_binarization_binarization.cc +mln_binarization_essential_SOURCES = mln_binarization_essential.cc +mln_binarization_includes_SOURCES = mln_binarization_includes.cc +mln_binarization_threshold_SOURCES = mln_binarization_threshold.cc +mln_border_adjust_SOURCES = mln_border_adjust.cc +mln_border_all_SOURCES = mln_border_all.cc +mln_border_duplicate_SOURCES = mln_border_duplicate.cc +mln_border_equalize_SOURCES = mln_border_equalize.cc +mln_border_essential_SOURCES = mln_border_essential.cc +mln_border_fill_SOURCES = mln_border_fill.cc +mln_border_find_SOURCES = mln_border_find.cc +mln_border_get_SOURCES = mln_border_get.cc +mln_border_mirror_SOURCES = mln_border_mirror.cc +mln_border_resize_SOURCES = mln_border_resize.cc +mln_border_resize_equal_SOURCES = mln_border_resize_equal.cc +mln_border_thickness_SOURCES = mln_border_thickness.cc +mln_canvas_all_SOURCES = mln_canvas_all.cc +mln_canvas_browsing_all_SOURCES = mln_canvas_browsing_all.cc +mln_canvas_browsing_backdiagonal2d_SOURCES = mln_canvas_browsing_backdiagonal2d.cc +mln_canvas_browsing_breadth_first_search_SOURCES = mln_canvas_browsing_breadth_first_search.cc +mln_canvas_browsing_depth_first_search_SOURCES = mln_canvas_browsing_depth_first_search.cc +mln_canvas_browsing_diagonal2d_SOURCES = mln_canvas_browsing_diagonal2d.cc +mln_canvas_browsing_dir_struct_elt_incr_update_SOURCES = mln_canvas_browsing_dir_struct_elt_incr_update.cc +mln_canvas_browsing_directional_SOURCES = mln_canvas_browsing_directional.cc +mln_canvas_browsing_essential_SOURCES = mln_canvas_browsing_essential.cc +mln_canvas_browsing_fwd_SOURCES = mln_canvas_browsing_fwd.cc +mln_canvas_browsing_hyper_directional_SOURCES = mln_canvas_browsing_hyper_directional.cc +mln_canvas_browsing_internal_graph_first_search_SOURCES = mln_canvas_browsing_internal_graph_first_search.cc +mln_canvas_browsing_snake_fwd_SOURCES = mln_canvas_browsing_snake_fwd.cc +mln_canvas_browsing_snake_generic_SOURCES = mln_canvas_browsing_snake_generic.cc +mln_canvas_browsing_snake_vert_SOURCES = mln_canvas_browsing_snake_vert.cc +mln_canvas_chamfer_SOURCES = mln_canvas_chamfer.cc +mln_canvas_distance_front_SOURCES = mln_canvas_distance_front.cc +mln_canvas_distance_geodesic_SOURCES = mln_canvas_distance_geodesic.cc +mln_canvas_essential_SOURCES = mln_canvas_essential.cc +mln_canvas_labeling_all_SOURCES = mln_canvas_labeling_all.cc +mln_canvas_labeling_blobs_SOURCES = mln_canvas_labeling_blobs.cc +mln_canvas_labeling_essential_SOURCES = mln_canvas_labeling_essential.cc +mln_canvas_labeling_generic_SOURCES = mln_canvas_labeling_generic.cc +mln_canvas_labeling_internal_find_root_fastest_SOURCES = mln_canvas_labeling_internal_find_root_fastest.cc +mln_canvas_labeling_internal_tests_SOURCES = mln_canvas_labeling_internal_tests.cc +mln_canvas_labeling_sorted_SOURCES = mln_canvas_labeling_sorted.cc +mln_canvas_labeling_video_SOURCES = mln_canvas_labeling_video.cc +mln_canvas_morpho_all_SOURCES = mln_canvas_morpho_all.cc +mln_canvas_morpho_attribute_filter_SOURCES = mln_canvas_morpho_attribute_filter.cc +mln_canvas_morpho_essential_SOURCES = mln_canvas_morpho_essential.cc +mln_canvas_morpho_internal_find_root_SOURCES = mln_canvas_morpho_internal_find_root.cc +mln_clustering_kmean_rgb_SOURCES = mln_clustering_kmean_rgb.cc +mln_convert_all_SOURCES = mln_convert_all.cc +mln_convert_essential_SOURCES = mln_convert_essential.cc +mln_convert_from_to_SOURCES = mln_convert_from_to.cc +mln_convert_impl_all_SOURCES = mln_convert_impl_all.cc +mln_convert_impl_from_double_to_value_SOURCES = mln_convert_impl_from_double_to_value.cc +mln_convert_impl_from_float_to_value_SOURCES = mln_convert_impl_from_float_to_value.cc +mln_convert_impl_from_image_to_site_set_SOURCES = mln_convert_impl_from_image_to_site_set.cc +mln_convert_impl_from_int_to_value_SOURCES = mln_convert_impl_from_int_to_value.cc +mln_convert_impl_from_site_set_to_image_SOURCES = mln_convert_impl_from_site_set_to_image.cc +mln_convert_impl_from_unsigned_to_value_SOURCES = mln_convert_impl_from_unsigned_to_value.cc +mln_convert_impl_from_value_to_value_SOURCES = mln_convert_impl_from_value_to_value.cc +mln_convert_to_SOURCES = mln_convert_to.cc +mln_convert_to_dpoint_SOURCES = mln_convert_to_dpoint.cc +mln_convert_to_fun_SOURCES = mln_convert_to_fun.cc +mln_convert_to_image_SOURCES = mln_convert_to_image.cc +mln_convert_to_p_array_SOURCES = mln_convert_to_p_array.cc +mln_convert_to_p_set_SOURCES = mln_convert_to_p_set.cc +mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc +mln_convert_to_window_SOURCES = mln_convert_to_window.cc +mln_core_a_point_of_SOURCES = mln_core_a_point_of.cc +mln_core_alias_all_SOURCES = mln_core_alias_all.cc +mln_core_alias_box1d_SOURCES = mln_core_alias_box1d.cc +mln_core_alias_box2d_SOURCES = mln_core_alias_box2d.cc +mln_core_alias_box2d_h_SOURCES = mln_core_alias_box2d_h.cc +mln_core_alias_box3d_SOURCES = mln_core_alias_box3d.cc +mln_core_alias_complex_geometry_SOURCES = mln_core_alias_complex_geometry.cc +mln_core_alias_complex_image_SOURCES = mln_core_alias_complex_image.cc +mln_core_alias_dpoint1d_SOURCES = mln_core_alias_dpoint1d.cc +mln_core_alias_dpoint2d_SOURCES = mln_core_alias_dpoint2d.cc +mln_core_alias_dpoint2d_h_SOURCES = mln_core_alias_dpoint2d_h.cc +mln_core_alias_dpoint3d_SOURCES = mln_core_alias_dpoint3d.cc +mln_core_alias_neighb1d_SOURCES = mln_core_alias_neighb1d.cc +mln_core_alias_neighb2d_SOURCES = mln_core_alias_neighb2d.cc +mln_core_alias_neighb3d_SOURCES = mln_core_alias_neighb3d.cc +mln_core_alias_p_run2d_SOURCES = mln_core_alias_p_run2d.cc +mln_core_alias_p_runs2d_SOURCES = mln_core_alias_p_runs2d.cc +mln_core_alias_point1d_SOURCES = mln_core_alias_point1d.cc +mln_core_alias_point2d_SOURCES = mln_core_alias_point2d.cc +mln_core_alias_point2d_h_SOURCES = mln_core_alias_point2d_h.cc +mln_core_alias_point3d_SOURCES = mln_core_alias_point3d.cc +mln_core_alias_vec2d_SOURCES = mln_core_alias_vec2d.cc +mln_core_alias_vec3d_SOURCES = mln_core_alias_vec3d.cc +mln_core_alias_w_window1d_float_SOURCES = mln_core_alias_w_window1d_float.cc +mln_core_alias_w_window1d_int_SOURCES = mln_core_alias_w_window1d_int.cc +mln_core_alias_w_window2d_float_SOURCES = mln_core_alias_w_window2d_float.cc +mln_core_alias_w_window2d_int_SOURCES = mln_core_alias_w_window2d_int.cc +mln_core_alias_w_window3d_float_SOURCES = mln_core_alias_w_window3d_float.cc +mln_core_alias_w_window3d_int_SOURCES = mln_core_alias_w_window3d_int.cc +mln_core_alias_window1d_SOURCES = mln_core_alias_window1d.cc +mln_core_alias_window2d_SOURCES = mln_core_alias_window2d.cc +mln_core_alias_window3d_SOURCES = mln_core_alias_window3d.cc +mln_core_all_SOURCES = mln_core_all.cc +mln_core_box_runend_piter_SOURCES = mln_core_box_runend_piter.cc +mln_core_box_runstart_piter_SOURCES = mln_core_box_runstart_piter.cc +mln_core_category_SOURCES = mln_core_category.cc +mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc +mln_core_concept_all_SOURCES = mln_core_concept_all.cc +mln_core_concept_box_SOURCES = mln_core_concept_box.cc +mln_core_concept_browsing_SOURCES = mln_core_concept_browsing.cc +mln_core_concept_delta_point_site_SOURCES = mln_core_concept_delta_point_site.cc +mln_core_concept_dpoint_SOURCES = mln_core_concept_dpoint.cc +mln_core_concept_function_SOURCES = mln_core_concept_function.cc +mln_core_concept_gdpoint_SOURCES = mln_core_concept_gdpoint.cc +mln_core_concept_generalized_pixel_SOURCES = mln_core_concept_generalized_pixel.cc +mln_core_concept_gpoint_SOURCES = mln_core_concept_gpoint.cc +mln_core_concept_graph_SOURCES = mln_core_concept_graph.cc +mln_core_concept_image_SOURCES = mln_core_concept_image.cc +mln_core_concept_iterator_SOURCES = mln_core_concept_iterator.cc +mln_core_concept_literal_SOURCES = mln_core_concept_literal.cc +mln_core_concept_mesh_SOURCES = mln_core_concept_mesh.cc +mln_core_concept_meta_accumulator_SOURCES = mln_core_concept_meta_accumulator.cc +mln_core_concept_meta_function_SOURCES = mln_core_concept_meta_function.cc +mln_core_concept_neighborhood_SOURCES = mln_core_concept_neighborhood.cc +mln_core_concept_object_SOURCES = mln_core_concept_object.cc +mln_core_concept_pixel_iterator_SOURCES = mln_core_concept_pixel_iterator.cc +mln_core_concept_point_SOURCES = mln_core_concept_point.cc +mln_core_concept_point_site_SOURCES = mln_core_concept_point_site.cc +mln_core_concept_proxy_SOURCES = mln_core_concept_proxy.cc +mln_core_concept_pseudo_site_SOURCES = mln_core_concept_pseudo_site.cc +mln_core_concept_regular_grid_SOURCES = mln_core_concept_regular_grid.cc +mln_core_concept_site_SOURCES = mln_core_concept_site.cc +mln_core_concept_site_iterator_SOURCES = mln_core_concept_site_iterator.cc +mln_core_concept_site_proxy_SOURCES = mln_core_concept_site_proxy.cc +mln_core_concept_site_set_SOURCES = mln_core_concept_site_set.cc +mln_core_concept_value_SOURCES = mln_core_concept_value.cc +mln_core_concept_value_iterator_SOURCES = mln_core_concept_value_iterator.cc +mln_core_concept_value_set_SOURCES = mln_core_concept_value_set.cc +mln_core_concept_weighted_window_SOURCES = mln_core_concept_weighted_window.cc +mln_core_concept_window_SOURCES = mln_core_concept_window.cc +mln_core_contract_SOURCES = mln_core_contract.cc +mln_core_def_all_SOURCES = mln_core_def_all.cc +mln_core_def_coord_SOURCES = mln_core_def_coord.cc +mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc +mln_core_def_essential_SOURCES = mln_core_def_essential.cc +mln_core_def_low_quant_nbits_SOURCES = mln_core_def_low_quant_nbits.cc +mln_core_dpoint_SOURCES = mln_core_dpoint.cc +mln_core_dpoints_pixter_SOURCES = mln_core_dpoints_pixter.cc +mln_core_dpsites_piter_SOURCES = mln_core_dpsites_piter.cc +mln_core_essential_SOURCES = mln_core_essential.cc +mln_core_faces_psite_SOURCES = mln_core_faces_psite.cc +mln_core_grids_SOURCES = mln_core_grids.cc +mln_core_image_all_SOURCES = mln_core_image_all.cc +mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc +mln_core_image_complex_image_SOURCES = mln_core_image_complex_image.cc +mln_core_image_complex_neighborhood_piter_SOURCES = mln_core_image_complex_neighborhood_piter.cc +mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc +mln_core_image_complex_window_piter_SOURCES = mln_core_image_complex_window_piter.cc +mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc +mln_core_image_dmorph_all_SOURCES = mln_core_image_dmorph_all.cc +mln_core_image_dmorph_extended_SOURCES = mln_core_image_dmorph_extended.cc +mln_core_image_dmorph_extension_fun_SOURCES = mln_core_image_dmorph_extension_fun.cc +mln_core_image_dmorph_extension_ima_SOURCES = mln_core_image_dmorph_extension_ima.cc +mln_core_image_dmorph_extension_val_SOURCES = mln_core_image_dmorph_extension_val.cc +mln_core_image_dmorph_hexa_SOURCES = mln_core_image_dmorph_hexa.cc +mln_core_image_dmorph_hexa_piter_SOURCES = mln_core_image_dmorph_hexa_piter.cc +mln_core_image_dmorph_image2d_h_SOURCES = mln_core_image_dmorph_image2d_h.cc +mln_core_image_dmorph_image_if_SOURCES = mln_core_image_dmorph_image_if.cc +mln_core_image_dmorph_p2p_image_SOURCES = mln_core_image_dmorph_p2p_image.cc +mln_core_image_dmorph_slice_image_SOURCES = mln_core_image_dmorph_slice_image.cc +mln_core_image_dmorph_sub_image_SOURCES = mln_core_image_dmorph_sub_image.cc +mln_core_image_dmorph_sub_image_if_SOURCES = mln_core_image_dmorph_sub_image_if.cc +mln_core_image_dmorph_transformed_image_SOURCES = mln_core_image_dmorph_transformed_image.cc +mln_core_image_dmorph_unproject_image_SOURCES = mln_core_image_dmorph_unproject_image.cc +mln_core_image_edge_image_SOURCES = mln_core_image_edge_image.cc +mln_core_image_essential_SOURCES = mln_core_image_essential.cc +mln_core_image_flat_image_SOURCES = mln_core_image_flat_image.cc +mln_core_image_graph_elt_mixed_neighborhood_SOURCES = mln_core_image_graph_elt_mixed_neighborhood.cc +mln_core_image_graph_elt_mixed_window_SOURCES = mln_core_image_graph_elt_mixed_window.cc +mln_core_image_graph_elt_neighborhood_SOURCES = mln_core_image_graph_elt_neighborhood.cc +mln_core_image_graph_elt_neighborhood_if_SOURCES = mln_core_image_graph_elt_neighborhood_if.cc +mln_core_image_graph_elt_window_SOURCES = mln_core_image_graph_elt_window.cc +mln_core_image_graph_elt_window_if_SOURCES = mln_core_image_graph_elt_window_if.cc +mln_core_image_graph_window_if_piter_SOURCES = mln_core_image_graph_window_if_piter.cc +mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc +mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc +mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc +mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc +mln_core_image_imorph_all_SOURCES = mln_core_image_imorph_all.cc +mln_core_image_imorph_decorated_image_SOURCES = mln_core_image_imorph_decorated_image.cc +mln_core_image_imorph_interpolated_SOURCES = mln_core_image_imorph_interpolated.cc +mln_core_image_imorph_labeled_image_SOURCES = mln_core_image_imorph_labeled_image.cc +mln_core_image_imorph_lazy_image_SOURCES = mln_core_image_imorph_lazy_image.cc +mln_core_image_imorph_plain_SOURCES = mln_core_image_imorph_plain.cc +mln_core_image_imorph_safe_SOURCES = mln_core_image_imorph_safe.cc +mln_core_image_imorph_tr_image_SOURCES = mln_core_image_imorph_tr_image.cc +mln_core_image_vertex_image_SOURCES = mln_core_image_vertex_image.cc +mln_core_image_vmorph_all_SOURCES = mln_core_image_vmorph_all.cc +mln_core_image_vmorph_cast_image_SOURCES = mln_core_image_vmorph_cast_image.cc +mln_core_image_vmorph_fun_image_SOURCES = mln_core_image_vmorph_fun_image.cc +mln_core_image_vmorph_thru_image_SOURCES = mln_core_image_vmorph_thru_image.cc +mln_core_image_vmorph_thrubin_image_SOURCES = mln_core_image_vmorph_thrubin_image.cc +mln_core_image_vmorph_violent_cast_image_SOURCES = mln_core_image_vmorph_violent_cast_image.cc +mln_core_internal_box_impl_SOURCES = mln_core_internal_box_impl.cc +mln_core_internal_check_image_all_SOURCES = mln_core_internal_check_image_all.cc +mln_core_internal_check_image_fastest_SOURCES = mln_core_internal_check_image_fastest.cc +mln_core_internal_classical_window_base_SOURCES = mln_core_internal_classical_window_base.cc +mln_core_internal_complex_neighborhood_base_SOURCES = mln_core_internal_complex_neighborhood_base.cc +mln_core_internal_complex_window_base_SOURCES = mln_core_internal_complex_window_base.cc +mln_core_internal_complex_window_p_base_SOURCES = mln_core_internal_complex_window_p_base.cc +mln_core_internal_coord_impl_SOURCES = mln_core_internal_coord_impl.cc +mln_core_internal_data_SOURCES = mln_core_internal_data.cc +mln_core_internal_exact_SOURCES = mln_core_internal_exact.cc +mln_core_internal_exact_gcc_2_95_SOURCES = mln_core_internal_exact_gcc_2_95.cc +mln_core_internal_fixme_SOURCES = mln_core_internal_fixme.cc +mln_core_internal_force_exact_SOURCES = mln_core_internal_force_exact.cc +mln_core_internal_geom_bbox_SOURCES = mln_core_internal_geom_bbox.cc +mln_core_internal_graph_psite_base_SOURCES = mln_core_internal_graph_psite_base.cc +mln_core_internal_graph_window_base_SOURCES = mln_core_internal_graph_window_base.cc +mln_core_internal_image_base_SOURCES = mln_core_internal_image_base.cc +mln_core_internal_image_domain_morpher_SOURCES = mln_core_internal_image_domain_morpher.cc +mln_core_internal_image_identity_SOURCES = mln_core_internal_image_identity.cc +mln_core_internal_image_morpher_SOURCES = mln_core_internal_image_morpher.cc +mln_core_internal_image_primary_SOURCES = mln_core_internal_image_primary.cc +mln_core_internal_image_value_morpher_SOURCES = mln_core_internal_image_value_morpher.cc +mln_core_internal_is_masked_impl_selector_SOURCES = mln_core_internal_is_masked_impl_selector.cc +mln_core_internal_labeled_image_base_SOURCES = mln_core_internal_labeled_image_base.cc +mln_core_internal_morpher_lvalue_SOURCES = mln_core_internal_morpher_lvalue.cc +mln_core_internal_neighb_base_SOURCES = mln_core_internal_neighb_base.cc +mln_core_internal_neighb_niter_base_SOURCES = mln_core_internal_neighb_niter_base.cc +mln_core_internal_neighb_niter_impl_SOURCES = mln_core_internal_neighb_niter_impl.cc +mln_core_internal_neighborhood_base_SOURCES = mln_core_internal_neighborhood_base.cc +mln_core_internal_p_complex_piter_base_SOURCES = mln_core_internal_p_complex_piter_base.cc +mln_core_internal_piter_adaptor_SOURCES = mln_core_internal_piter_adaptor.cc +mln_core_internal_piter_identity_SOURCES = mln_core_internal_piter_identity.cc +mln_core_internal_pixel_impl_SOURCES = mln_core_internal_pixel_impl.cc +mln_core_internal_pixel_iterator_base_SOURCES = mln_core_internal_pixel_iterator_base.cc +mln_core_internal_pseudo_site_base_SOURCES = mln_core_internal_pseudo_site_base.cc +mln_core_internal_run_image_SOURCES = mln_core_internal_run_image.cc +mln_core_internal_set_of_SOURCES = mln_core_internal_set_of.cc +mln_core_internal_site_iterator_base_SOURCES = mln_core_internal_site_iterator_base.cc +mln_core_internal_site_relative_iterator_base_SOURCES = mln_core_internal_site_relative_iterator_base.cc +mln_core_internal_site_set_base_SOURCES = mln_core_internal_site_set_base.cc +mln_core_internal_site_set_impl_SOURCES = mln_core_internal_site_set_impl.cc +mln_core_internal_site_set_iterator_base_SOURCES = mln_core_internal_site_set_iterator_base.cc +mln_core_internal_weighted_window_base_SOURCES = mln_core_internal_weighted_window_base.cc +mln_core_internal_window_base_SOURCES = mln_core_internal_window_base.cc +mln_core_macros_SOURCES = mln_core_macros.cc +mln_core_mixed_neighb_SOURCES = mln_core_mixed_neighb.cc +mln_core_neighb_SOURCES = mln_core_neighb.cc +mln_core_pixel_SOURCES = mln_core_pixel.cc +mln_core_pixter1d_SOURCES = mln_core_pixter1d.cc +mln_core_pixter2d_SOURCES = mln_core_pixter2d.cc +mln_core_pixter3d_SOURCES = mln_core_pixter3d.cc +mln_core_point_SOURCES = mln_core_point.cc +mln_core_routine_all_SOURCES = mln_core_routine_all.cc +mln_core_routine_duplicate_SOURCES = mln_core_routine_duplicate.cc +mln_core_routine_essential_SOURCES = mln_core_routine_essential.cc +mln_core_routine_exact_SOURCES = mln_core_routine_exact.cc +mln_core_routine_extend_SOURCES = mln_core_routine_extend.cc +mln_core_routine_init_SOURCES = mln_core_routine_init.cc +mln_core_routine_initialize_SOURCES = mln_core_routine_initialize.cc +mln_core_routine_ops_SOURCES = mln_core_routine_ops.cc +mln_core_routine_primary_SOURCES = mln_core_routine_primary.cc +mln_core_site_set_all_SOURCES = mln_core_site_set_all.cc +mln_core_site_set_attic_p_complex_faces_piter_SOURCES = mln_core_site_set_attic_p_complex_faces_piter.cc +mln_core_site_set_attic_p_faces_piter_SOURCES = mln_core_site_set_attic_p_faces_piter.cc +mln_core_site_set_box_SOURCES = mln_core_site_set_box.cc +mln_core_site_set_box_piter_SOURCES = mln_core_site_set_box_piter.cc +mln_core_site_set_complex_psite_SOURCES = mln_core_site_set_complex_psite.cc +mln_core_site_set_essential_SOURCES = mln_core_site_set_essential.cc +mln_core_site_set_operators_SOURCES = mln_core_site_set_operators.cc +mln_core_site_set_p_array_SOURCES = mln_core_site_set_p_array.cc +mln_core_site_set_p_centered_SOURCES = mln_core_site_set_p_centered.cc +mln_core_site_set_p_complex_SOURCES = mln_core_site_set_p_complex.cc +mln_core_site_set_p_complex_piter_SOURCES = mln_core_site_set_p_complex_piter.cc +mln_core_site_set_p_double_SOURCES = mln_core_site_set_p_double.cc +mln_core_site_set_p_edges_SOURCES = mln_core_site_set_p_edges.cc +mln_core_site_set_p_edges_psite_SOURCES = mln_core_site_set_p_edges_psite.cc +mln_core_site_set_p_faces_SOURCES = mln_core_site_set_p_faces.cc +mln_core_site_set_p_graph_piter_SOURCES = mln_core_site_set_p_graph_piter.cc +mln_core_site_set_p_if_SOURCES = mln_core_site_set_p_if.cc +mln_core_site_set_p_if_piter_SOURCES = mln_core_site_set_p_if_piter.cc +mln_core_site_set_p_image_SOURCES = mln_core_site_set_p_image.cc +mln_core_site_set_p_key_SOURCES = mln_core_site_set_p_key.cc +mln_core_site_set_p_line2d_SOURCES = mln_core_site_set_p_line2d.cc +mln_core_site_set_p_mutable_array_of_SOURCES = mln_core_site_set_p_mutable_array_of.cc +mln_core_site_set_p_n_faces_piter_SOURCES = mln_core_site_set_p_n_faces_piter.cc +mln_core_site_set_p_priority_SOURCES = mln_core_site_set_p_priority.cc +mln_core_site_set_p_queue_SOURCES = mln_core_site_set_p_queue.cc +mln_core_site_set_p_queue_fast_SOURCES = mln_core_site_set_p_queue_fast.cc +mln_core_site_set_p_run_SOURCES = mln_core_site_set_p_run.cc +mln_core_site_set_p_run_piter_SOURCES = mln_core_site_set_p_run_piter.cc +mln_core_site_set_p_set_SOURCES = mln_core_site_set_p_set.cc +mln_core_site_set_p_set_of_SOURCES = mln_core_site_set_p_set_of.cc +mln_core_site_set_p_transformed_SOURCES = mln_core_site_set_p_transformed.cc +mln_core_site_set_p_transformed_piter_SOURCES = mln_core_site_set_p_transformed_piter.cc +mln_core_site_set_p_vaccess_SOURCES = mln_core_site_set_p_vaccess.cc +mln_core_site_set_p_vertices_SOURCES = mln_core_site_set_p_vertices.cc +mln_core_site_set_p_vertices_psite_SOURCES = mln_core_site_set_p_vertices_psite.cc +mln_core_tags_SOURCES = mln_core_tags.cc +mln_core_trait_all_SOURCES = mln_core_trait_all.cc +mln_core_trait_essential_SOURCES = mln_core_trait_essential.cc +mln_core_trait_op_mult_SOURCES = mln_core_trait_op_mult.cc +mln_core_trait_pixter_SOURCES = mln_core_trait_pixter.cc +mln_core_trait_qlf_value_SOURCES = mln_core_trait_qlf_value.cc +mln_core_var_SOURCES = mln_core_var.cc +mln_core_w_window_SOURCES = mln_core_w_window.cc +mln_core_window_SOURCES = mln_core_window.cc +mln_data_abs_SOURCES = mln_data_abs.cc +mln_data_all_SOURCES = mln_data_all.cc +mln_data_apply_SOURCES = mln_data_apply.cc +mln_data_approx_all_SOURCES = mln_data_approx_all.cc +mln_data_approx_essential_SOURCES = mln_data_approx_essential.cc +mln_data_approx_median_SOURCES = mln_data_approx_median.cc +mln_data_compare_SOURCES = mln_data_compare.cc +mln_data_compute_SOURCES = mln_data_compute.cc +mln_data_convert_SOURCES = mln_data_convert.cc +mln_data_essential_SOURCES = mln_data_essential.cc +mln_data_fast_median_SOURCES = mln_data_fast_median.cc +mln_data_fill_SOURCES = mln_data_fill.cc +mln_data_fill_with_image_SOURCES = mln_data_fill_with_image.cc +mln_data_fill_with_value_SOURCES = mln_data_fill_with_value.cc +mln_data_median_SOURCES = mln_data_median.cc +mln_data_memcpy__SOURCES = mln_data_memcpy_.cc +mln_data_memset__SOURCES = mln_data_memset_.cc +mln_data_naive_all_SOURCES = mln_data_naive_all.cc +mln_data_naive_essential_SOURCES = mln_data_naive_essential.cc +mln_data_naive_median_SOURCES = mln_data_naive_median.cc +mln_data_paste_SOURCES = mln_data_paste.cc +mln_data_paste_without_localization_SOURCES = mln_data_paste_without_localization.cc +mln_data_replace_SOURCES = mln_data_replace.cc +mln_data_saturate_SOURCES = mln_data_saturate.cc +mln_data_sort_offsets_SOURCES = mln_data_sort_offsets.cc +mln_data_sort_psites_SOURCES = mln_data_sort_psites.cc +mln_data_split_SOURCES = mln_data_split.cc +mln_data_stretch_SOURCES = mln_data_stretch.cc +mln_data_to_enc_SOURCES = mln_data_to_enc.cc +mln_data_transform_SOURCES = mln_data_transform.cc +mln_data_transform_inplace_SOURCES = mln_data_transform_inplace.cc +mln_data_update_SOURCES = mln_data_update.cc +mln_data_was_median_SOURCES = mln_data_was_median.cc +mln_data_wrap_SOURCES = mln_data_wrap.cc +mln_debug_all_SOURCES = mln_debug_all.cc +mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc +mln_debug_essential_SOURCES = mln_debug_essential.cc +mln_debug_filename_SOURCES = mln_debug_filename.cc +mln_debug_format_SOURCES = mln_debug_format.cc +mln_debug_histo_SOURCES = mln_debug_histo.cc +mln_debug_iota_SOURCES = mln_debug_iota.cc +mln_debug_mosaic_SOURCES = mln_debug_mosaic.cc +mln_debug_println_SOURCES = mln_debug_println.cc +mln_debug_println_with_border_SOURCES = mln_debug_println_with_border.cc +mln_debug_put_word_SOURCES = mln_debug_put_word.cc +mln_debug_quiet_SOURCES = mln_debug_quiet.cc +mln_debug_slices_2d_SOURCES = mln_debug_slices_2d.cc +mln_debug_superpose_SOURCES = mln_debug_superpose.cc +mln_debug_z_order_SOURCES = mln_debug_z_order.cc +mln_display_all_SOURCES = mln_display_all.cc +mln_display_essential_SOURCES = mln_display_essential.cc +mln_draw_all_SOURCES = mln_draw_all.cc +mln_draw_box_SOURCES = mln_draw_box.cc +mln_draw_box_plain_SOURCES = mln_draw_box_plain.cc +mln_draw_dashed_line_SOURCES = mln_draw_dashed_line.cc +mln_draw_essential_SOURCES = mln_draw_essential.cc +mln_draw_line_SOURCES = mln_draw_line.cc +mln_draw_plot_SOURCES = mln_draw_plot.cc +mln_draw_polygon_SOURCES = mln_draw_polygon.cc +mln_draw_site_set_SOURCES = mln_draw_site_set.cc +mln_essential_1d_SOURCES = mln_essential_1d.cc +mln_essential_2d_SOURCES = mln_essential_2d.cc +mln_essential_3d_SOURCES = mln_essential_3d.cc +mln_essential_routine_SOURCES = mln_essential_routine.cc +mln_estim_all_SOURCES = mln_estim_all.cc +mln_estim_essential_SOURCES = mln_estim_essential.cc +mln_estim_mean_SOURCES = mln_estim_mean.cc +mln_estim_min_max_SOURCES = mln_estim_min_max.cc +mln_estim_sum_SOURCES = mln_estim_sum.cc +mln_extension_adjust_SOURCES = mln_extension_adjust.cc +mln_extension_adjust_duplicate_SOURCES = mln_extension_adjust_duplicate.cc +mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc +mln_extension_all_SOURCES = mln_extension_all.cc +mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc +mln_extension_essential_SOURCES = mln_extension_essential.cc +mln_extension_fill_SOURCES = mln_extension_fill.cc +mln_extract_all_SOURCES = mln_extract_all.cc +mln_extract_blue_SOURCES = mln_extract_blue.cc +mln_extract_essential_SOURCES = mln_extract_essential.cc +mln_extract_green_SOURCES = mln_extract_green.cc +mln_extract_hue_SOURCES = mln_extract_hue.cc +mln_extract_lum_SOURCES = mln_extract_lum.cc +mln_extract_red_SOURCES = mln_extract_red.cc +mln_extract_sat_SOURCES = mln_extract_sat.cc +mln_fun_access_all_SOURCES = mln_fun_access_all.cc +mln_fun_access_mean_SOURCES = mln_fun_access_mean.cc +mln_fun_accu_result_SOURCES = mln_fun_accu_result.cc +mln_fun_all_SOURCES = mln_fun_all.cc +mln_fun_binary_SOURCES = mln_fun_binary.cc +mln_fun_binary_param_SOURCES = mln_fun_binary_param.cc +mln_fun_c_SOURCES = mln_fun_c.cc +mln_fun_cast_SOURCES = mln_fun_cast.cc +mln_fun_component_blue_SOURCES = mln_fun_component_blue.cc +mln_fun_component_comp_SOURCES = mln_fun_component_comp.cc +mln_fun_component_comp_count_SOURCES = mln_fun_component_comp_count.cc +mln_fun_component_green_SOURCES = mln_fun_component_green.cc +mln_fun_component_ithcomp_SOURCES = mln_fun_component_ithcomp.cc +mln_fun_component_red_SOURCES = mln_fun_component_red.cc +mln_fun_component_rgb_SOURCES = mln_fun_component_rgb.cc +mln_fun_component_scomp_SOURCES = mln_fun_component_scomp.cc +mln_fun_compose_SOURCES = mln_fun_compose.cc +mln_fun_composition_SOURCES = mln_fun_composition.cc +mln_fun_essential_SOURCES = mln_fun_essential.cc +mln_fun_from_accu_SOURCES = mln_fun_from_accu.cc +mln_fun_i2v_all_SOURCES = mln_fun_i2v_all.cc +mln_fun_i2v_all_to_SOURCES = mln_fun_i2v_all_to.cc +mln_fun_i2v_array_SOURCES = mln_fun_i2v_array.cc +mln_fun_i2v_essential_SOURCES = mln_fun_i2v_essential.cc +mln_fun_i2v_value_at_index_SOURCES = mln_fun_i2v_value_at_index.cc +mln_fun_internal_ch_function_value_impl_SOURCES = mln_fun_internal_ch_function_value_impl.cc +mln_fun_internal_resolve_SOURCES = mln_fun_internal_resolve.cc +mln_fun_internal_selector_SOURCES = mln_fun_internal_selector.cc +mln_fun_internal_x2x_linear_impl_SOURCES = mln_fun_internal_x2x_linear_impl.cc +mln_fun_math_abs_SOURCES = mln_fun_math_abs.cc +mln_fun_math_cos_SOURCES = mln_fun_math_cos.cc +mln_fun_math_inf_SOURCES = mln_fun_math_inf.cc +mln_fun_math_norm_SOURCES = mln_fun_math_norm.cc +mln_fun_math_sup_SOURCES = mln_fun_math_sup.cc +mln_fun_meta_all_SOURCES = mln_fun_meta_all.cc +mln_fun_meta_blue_SOURCES = mln_fun_meta_blue.cc +mln_fun_meta_essential_SOURCES = mln_fun_meta_essential.cc +mln_fun_meta_first_SOURCES = mln_fun_meta_first.cc +mln_fun_meta_green_SOURCES = mln_fun_meta_green.cc +mln_fun_meta_hue_SOURCES = mln_fun_meta_hue.cc +mln_fun_meta_impl_SOURCES = mln_fun_meta_impl.cc +mln_fun_meta_inty_SOURCES = mln_fun_meta_inty.cc +mln_fun_meta_lum_SOURCES = mln_fun_meta_lum.cc +mln_fun_meta_red_SOURCES = mln_fun_meta_red.cc +mln_fun_meta_sat_SOURCES = mln_fun_meta_sat.cc +mln_fun_meta_second_SOURCES = mln_fun_meta_second.cc +mln_fun_meta_to_enc_SOURCES = mln_fun_meta_to_enc.cc +mln_fun_n2v_all_SOURCES = mln_fun_n2v_all.cc +mln_fun_n2v_white_gaussian_SOURCES = mln_fun_n2v_white_gaussian.cc +mln_fun_ops_SOURCES = mln_fun_ops.cc +mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc +mln_fun_p2b_antilogy_SOURCES = mln_fun_p2b_antilogy.cc +mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc +mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc +mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc +mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc +mln_fun_p2b_tautology_SOURCES = mln_fun_p2b_tautology.cc +mln_fun_p2p_all_SOURCES = mln_fun_p2p_all.cc +mln_fun_p2p_fold_SOURCES = mln_fun_p2p_fold.cc +mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc +mln_fun_p2p_translation_SOURCES = mln_fun_p2p_translation.cc +mln_fun_p2v_all_SOURCES = mln_fun_p2v_all.cc +mln_fun_p2v_elifs_SOURCES = mln_fun_p2v_elifs.cc +mln_fun_p2v_essential_SOURCES = mln_fun_p2v_essential.cc +mln_fun_p2v_iota_SOURCES = mln_fun_p2v_iota.cc +mln_fun_p2v_ternary_SOURCES = mln_fun_p2v_ternary.cc +mln_fun_param_SOURCES = mln_fun_param.cc +mln_fun_point_col_SOURCES = mln_fun_point_col.cc +mln_fun_point_row_SOURCES = mln_fun_point_row.cc +mln_fun_point_sli_SOURCES = mln_fun_point_sli.cc +mln_fun_spe_binary_SOURCES = mln_fun_spe_binary.cc +mln_fun_spe_unary_SOURCES = mln_fun_spe_unary.cc +mln_fun_stat_all_SOURCES = mln_fun_stat_all.cc +mln_fun_stat_mahalanobis_SOURCES = mln_fun_stat_mahalanobis.cc +mln_fun_unary_SOURCES = mln_fun_unary.cc +mln_fun_unary_param_SOURCES = mln_fun_unary_param.cc +mln_fun_v2b_all_SOURCES = mln_fun_v2b_all.cc +mln_fun_v2b_essential_SOURCES = mln_fun_v2b_essential.cc +mln_fun_v2b_lnot_SOURCES = mln_fun_v2b_lnot.cc +mln_fun_v2b_threshold_ge_SOURCES = mln_fun_v2b_threshold_ge.cc +mln_fun_v2b_threshold_le_SOURCES = mln_fun_v2b_threshold_le.cc +mln_fun_v2i_all_SOURCES = mln_fun_v2i_all.cc +mln_fun_v2i_index_of_value_SOURCES = mln_fun_v2i_index_of_value.cc +mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc +mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc +mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc +mln_fun_v2v_ch_function_value_SOURCES = mln_fun_v2v_ch_function_value.cc +mln_fun_v2v_component_SOURCES = mln_fun_v2v_component.cc +mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc +mln_fun_v2v_dec_SOURCES = mln_fun_v2v_dec.cc +mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc +mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc +mln_fun_v2v_hsi_to_rgb_SOURCES = mln_fun_v2v_hsi_to_rgb.cc +mln_fun_v2v_hsl_to_rgb_SOURCES = mln_fun_v2v_hsl_to_rgb.cc +mln_fun_v2v_id_SOURCES = mln_fun_v2v_id.cc +mln_fun_v2v_inc_SOURCES = mln_fun_v2v_inc.cc +mln_fun_v2v_linear_SOURCES = mln_fun_v2v_linear.cc +mln_fun_v2v_norm_SOURCES = mln_fun_v2v_norm.cc +mln_fun_v2v_projection_SOURCES = mln_fun_v2v_projection.cc +mln_fun_v2v_qt_rgb_to_int_u_SOURCES = mln_fun_v2v_qt_rgb_to_int_u.cc +mln_fun_v2v_rgb8_to_rgbn_SOURCES = mln_fun_v2v_rgb8_to_rgbn.cc +mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc +mln_fun_v2v_rgb_to_hsl_SOURCES = mln_fun_v2v_rgb_to_hsl.cc +mln_fun_v2v_rgb_to_int_u_SOURCES = mln_fun_v2v_rgb_to_int_u.cc +mln_fun_v2v_rgb_to_luma_SOURCES = mln_fun_v2v_rgb_to_luma.cc +mln_fun_v2v_saturate_SOURCES = mln_fun_v2v_saturate.cc +mln_fun_v2v_wrap_SOURCES = mln_fun_v2v_wrap.cc +mln_fun_v2w2v_all_SOURCES = mln_fun_v2w2v_all.cc +mln_fun_v2w2v_cos_SOURCES = mln_fun_v2w2v_cos.cc +mln_fun_v2w_w2v_all_SOURCES = mln_fun_v2w_w2v_all.cc +mln_fun_v2w_w2v_norm_SOURCES = mln_fun_v2w_w2v_norm.cc +mln_fun_vv2b_all_SOURCES = mln_fun_vv2b_all.cc +mln_fun_vv2b_eq_SOURCES = mln_fun_vv2b_eq.cc +mln_fun_vv2b_ge_SOURCES = mln_fun_vv2b_ge.cc +mln_fun_vv2b_gt_SOURCES = mln_fun_vv2b_gt.cc +mln_fun_vv2b_implies_SOURCES = mln_fun_vv2b_implies.cc +mln_fun_vv2b_le_SOURCES = mln_fun_vv2b_le.cc +mln_fun_vv2b_lt_SOURCES = mln_fun_vv2b_lt.cc +mln_fun_vv2v_all_SOURCES = mln_fun_vv2v_all.cc +mln_fun_vv2v_diff_abs_SOURCES = mln_fun_vv2v_diff_abs.cc +mln_fun_vv2v_essential_SOURCES = mln_fun_vv2v_essential.cc +mln_fun_vv2v_land_SOURCES = mln_fun_vv2v_land.cc +mln_fun_vv2v_land_not_SOURCES = mln_fun_vv2v_land_not.cc +mln_fun_vv2v_lor_SOURCES = mln_fun_vv2v_lor.cc +mln_fun_vv2v_lxor_SOURCES = mln_fun_vv2v_lxor.cc +mln_fun_vv2v_macros_SOURCES = mln_fun_vv2v_macros.cc +mln_fun_vv2v_max_SOURCES = mln_fun_vv2v_max.cc +mln_fun_vv2v_min_SOURCES = mln_fun_vv2v_min.cc +mln_fun_vv2v_vec_SOURCES = mln_fun_vv2v_vec.cc +mln_fun_x2p_all_SOURCES = mln_fun_x2p_all.cc +mln_fun_x2p_closest_point_SOURCES = mln_fun_x2p_closest_point.cc +mln_fun_x2p_essential_SOURCES = mln_fun_x2p_essential.cc +mln_fun_x2v_all_SOURCES = mln_fun_x2v_all.cc +mln_fun_x2v_bilinear_SOURCES = mln_fun_x2v_bilinear.cc +mln_fun_x2v_essential_SOURCES = mln_fun_x2v_essential.cc +mln_fun_x2v_l1_norm_SOURCES = mln_fun_x2v_l1_norm.cc +mln_fun_x2v_linear_SOURCES = mln_fun_x2v_linear.cc +mln_fun_x2v_nneighbor_SOURCES = mln_fun_x2v_nneighbor.cc +mln_fun_x2v_trilinear_SOURCES = mln_fun_x2v_trilinear.cc +mln_fun_x2x_all_SOURCES = mln_fun_x2x_all.cc +mln_fun_x2x_composed_SOURCES = mln_fun_x2x_composed.cc +mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc +mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc +mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc +mln_geom_all_SOURCES = mln_geom_all.cc +mln_geom_bbox_SOURCES = mln_geom_bbox.cc +mln_geom_chamfer_SOURCES = mln_geom_chamfer.cc +mln_geom_complex_geometry_SOURCES = mln_geom_complex_geometry.cc +mln_geom_crop_SOURCES = mln_geom_crop.cc +mln_geom_crop_without_localization_SOURCES = mln_geom_crop_without_localization.cc +mln_geom_delta_SOURCES = mln_geom_delta.cc +mln_geom_essential_SOURCES = mln_geom_essential.cc +mln_geom_horizontal_symmetry_SOURCES = mln_geom_horizontal_symmetry.cc +mln_geom_max_col_SOURCES = mln_geom_max_col.cc +mln_geom_max_ind_SOURCES = mln_geom_max_ind.cc +mln_geom_max_row_SOURCES = mln_geom_max_row.cc +mln_geom_max_sli_SOURCES = mln_geom_max_sli.cc +mln_geom_min_col_SOURCES = mln_geom_min_col.cc +mln_geom_min_ind_SOURCES = mln_geom_min_ind.cc +mln_geom_min_row_SOURCES = mln_geom_min_row.cc +mln_geom_min_sli_SOURCES = mln_geom_min_sli.cc +mln_geom_ncols_SOURCES = mln_geom_ncols.cc +mln_geom_ninds_SOURCES = mln_geom_ninds.cc +mln_geom_nrows_SOURCES = mln_geom_nrows.cc +mln_geom_nsites_SOURCES = mln_geom_nsites.cc +mln_geom_nslis_SOURCES = mln_geom_nslis.cc +mln_geom_pmin_pmax_SOURCES = mln_geom_pmin_pmax.cc +mln_geom_rotate_SOURCES = mln_geom_rotate.cc +mln_geom_seeds2tiling_SOURCES = mln_geom_seeds2tiling.cc +mln_geom_seeds2tiling_roundness_SOURCES = mln_geom_seeds2tiling_roundness.cc +mln_geom_size1d_SOURCES = mln_geom_size1d.cc +mln_geom_size2d_SOURCES = mln_geom_size2d.cc +mln_geom_size3d_SOURCES = mln_geom_size3d.cc +mln_geom_translate_SOURCES = mln_geom_translate.cc +mln_geom_vertical_symmetry_SOURCES = mln_geom_vertical_symmetry.cc +mln_graph_all_SOURCES = mln_graph_all.cc +mln_graph_attribute_card_SOURCES = mln_graph_attribute_card.cc +mln_graph_attribute_representative_SOURCES = mln_graph_attribute_representative.cc +mln_graph_compute_SOURCES = mln_graph_compute.cc +mln_graph_essential_SOURCES = mln_graph_essential.cc +mln_graph_labeling_SOURCES = mln_graph_labeling.cc +mln_graph_to_neighb_SOURCES = mln_graph_to_neighb.cc +mln_graph_to_win_SOURCES = mln_graph_to_win.cc +mln_histo_all_SOURCES = mln_histo_all.cc +mln_histo_array_SOURCES = mln_histo_array.cc +mln_histo_compute_SOURCES = mln_histo_compute.cc +mln_histo_equalize_SOURCES = mln_histo_equalize.cc +mln_histo_essential_SOURCES = mln_histo_essential.cc +mln_histo_point_from_value_SOURCES = mln_histo_point_from_value.cc +mln_io_abort_SOURCES = mln_io_abort.cc +mln_io_all_SOURCES = mln_io_all.cc +mln_io_cloud_all_SOURCES = mln_io_cloud_all.cc +mln_io_cloud_load_SOURCES = mln_io_cloud_load.cc +mln_io_cloud_save_SOURCES = mln_io_cloud_save.cc +mln_io_dump_all_SOURCES = mln_io_dump_all.cc +mln_io_dump_get_header_SOURCES = mln_io_dump_get_header.cc +mln_io_dump_load_SOURCES = mln_io_dump_load.cc +mln_io_dump_save_SOURCES = mln_io_dump_save.cc +mln_io_essential_SOURCES = mln_io_essential.cc +mln_io_fld_all_SOURCES = mln_io_fld_all.cc +mln_io_fld_header_SOURCES = mln_io_fld_header.cc +mln_io_fld_load_SOURCES = mln_io_fld_load.cc +mln_io_fld_load_header_SOURCES = mln_io_fld_load_header.cc +mln_io_fld_max_components_SOURCES = mln_io_fld_max_components.cc +mln_io_fld_save_SOURCES = mln_io_fld_save.cc +mln_io_fld_write_header_SOURCES = mln_io_fld_write_header.cc +mln_io_off_all_SOURCES = mln_io_off_all.cc +mln_io_off_load_SOURCES = mln_io_off_load.cc +mln_io_off_save_SOURCES = mln_io_off_save.cc +mln_io_pbm_all_SOURCES = mln_io_pbm_all.cc +mln_io_pbm_load_SOURCES = mln_io_pbm_load.cc +mln_io_pbm_save_SOURCES = mln_io_pbm_save.cc +mln_io_pbms_all_SOURCES = mln_io_pbms_all.cc +mln_io_pbms_load_SOURCES = mln_io_pbms_load.cc +mln_io_pfm_all_SOURCES = mln_io_pfm_all.cc +mln_io_pfm_load_SOURCES = mln_io_pfm_load.cc +mln_io_pfm_save_SOURCES = mln_io_pfm_save.cc +mln_io_pgm_all_SOURCES = mln_io_pgm_all.cc +mln_io_pgm_load_SOURCES = mln_io_pgm_load.cc +mln_io_pgm_save_SOURCES = mln_io_pgm_save.cc +mln_io_pgms_all_SOURCES = mln_io_pgms_all.cc +mln_io_pgms_load_SOURCES = mln_io_pgms_load.cc +mln_io_plot_all_SOURCES = mln_io_plot_all.cc +mln_io_plot_load_SOURCES = mln_io_plot_load.cc +mln_io_plot_save_SOURCES = mln_io_plot_save.cc +mln_io_pnm_all_SOURCES = mln_io_pnm_all.cc +mln_io_pnm_load_SOURCES = mln_io_pnm_load.cc +mln_io_pnm_load_header_SOURCES = mln_io_pnm_load_header.cc +mln_io_pnm_macros_SOURCES = mln_io_pnm_macros.cc +mln_io_pnm_max_component_SOURCES = mln_io_pnm_max_component.cc +mln_io_pnm_save_SOURCES = mln_io_pnm_save.cc +mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc +mln_io_pnms_all_SOURCES = mln_io_pnms_all.cc +mln_io_pnms_load_SOURCES = mln_io_pnms_load.cc +mln_io_ppm_all_SOURCES = mln_io_ppm_all.cc +mln_io_ppm_load_SOURCES = mln_io_ppm_load.cc +mln_io_ppm_save_SOURCES = mln_io_ppm_save.cc +mln_io_ppms_all_SOURCES = mln_io_ppms_all.cc +mln_io_ppms_load_SOURCES = mln_io_ppms_load.cc +mln_io_raw_all_SOURCES = mln_io_raw_all.cc +mln_io_raw_get_header_SOURCES = mln_io_raw_get_header.cc +mln_io_raw_load_SOURCES = mln_io_raw_load.cc +mln_io_raw_save_SOURCES = mln_io_raw_save.cc +mln_io_txt_all_SOURCES = mln_io_txt_all.cc +mln_io_txt_save_SOURCES = mln_io_txt_save.cc +mln_labeling_all_SOURCES = mln_labeling_all.cc +mln_labeling_background_SOURCES = mln_labeling_background.cc +mln_labeling_blobs_SOURCES = mln_labeling_blobs.cc +mln_labeling_blobs_and_compute_SOURCES = mln_labeling_blobs_and_compute.cc +mln_labeling_colorize_SOURCES = mln_labeling_colorize.cc +mln_labeling_compute_SOURCES = mln_labeling_compute.cc +mln_labeling_compute_image_SOURCES = mln_labeling_compute_image.cc +mln_labeling_essential_SOURCES = mln_labeling_essential.cc +mln_labeling_fill_holes_SOURCES = mln_labeling_fill_holes.cc +mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc +mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc +mln_labeling_mean_values_SOURCES = mln_labeling_mean_values.cc +mln_labeling_n_max_SOURCES = mln_labeling_n_max.cc +mln_labeling_pack_SOURCES = mln_labeling_pack.cc +mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc +mln_labeling_regional_minima_SOURCES = mln_labeling_regional_minima.cc +mln_labeling_relabel_SOURCES = mln_labeling_relabel.cc +mln_labeling_superpose_SOURCES = mln_labeling_superpose.cc +mln_labeling_value_SOURCES = mln_labeling_value.cc +mln_labeling_value_and_compute_SOURCES = mln_labeling_value_and_compute.cc +mln_labeling_wrap_SOURCES = mln_labeling_wrap.cc +mln_linear_all_SOURCES = mln_linear_all.cc +mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc +mln_linear_convolve_SOURCES = mln_linear_convolve.cc +mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc +mln_linear_convolve_directional_SOURCES = mln_linear_convolve_directional.cc +mln_linear_essential_SOURCES = mln_linear_essential.cc +mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc +mln_linear_gaussian_filter_SOURCES = mln_linear_gaussian_filter.cc +mln_linear_gaussian_impl_SOURCES = mln_linear_gaussian_impl.cc +mln_linear_gaussian_internal_coefficients_SOURCES = mln_linear_gaussian_internal_coefficients.cc +mln_linear_gaussian_1d_SOURCES = mln_linear_gaussian_1d.cc +mln_linear_gaussian_directional_2d_SOURCES = mln_linear_gaussian_directional_2d.cc +mln_linear_lap_SOURCES = mln_linear_lap.cc +mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc +mln_linear_log_SOURCES = mln_linear_log.cc +mln_linear_sobel_2d_SOURCES = mln_linear_sobel_2d.cc +mln_literal_all_SOURCES = mln_literal_all.cc +mln_literal_black_SOURCES = mln_literal_black.cc +mln_literal_colors_SOURCES = mln_literal_colors.cc +mln_literal_essential_SOURCES = mln_literal_essential.cc +mln_literal_grays_SOURCES = mln_literal_grays.cc +mln_literal_identity_SOURCES = mln_literal_identity.cc +mln_literal_max_SOURCES = mln_literal_max.cc +mln_literal_min_SOURCES = mln_literal_min.cc +mln_literal_one_SOURCES = mln_literal_one.cc +mln_literal_ops_SOURCES = mln_literal_ops.cc +mln_literal_origin_SOURCES = mln_literal_origin.cc +mln_literal_white_SOURCES = mln_literal_white.cc +mln_literal_zero_SOURCES = mln_literal_zero.cc +mln_logical_all_SOURCES = mln_logical_all.cc +mln_logical_and_SOURCES = mln_logical_and.cc +mln_logical_and_not_SOURCES = mln_logical_and_not.cc +mln_logical_essential_SOURCES = mln_logical_essential.cc +mln_logical_includes_SOURCES = mln_logical_includes.cc +mln_logical_not_SOURCES = mln_logical_not.cc +mln_logical_or_SOURCES = mln_logical_or.cc +mln_logical_xor_SOURCES = mln_logical_xor.cc +mln_make_all_SOURCES = mln_make_all.cc +mln_make_attachment_SOURCES = mln_make_attachment.cc +mln_make_box1d_SOURCES = mln_make_box1d.cc +mln_make_box2d_SOURCES = mln_make_box2d.cc +mln_make_box2d_h_SOURCES = mln_make_box2d_h.cc +mln_make_box3d_SOURCES = mln_make_box3d.cc +mln_make_cell_SOURCES = mln_make_cell.cc +mln_make_detachment_SOURCES = mln_make_detachment.cc +mln_make_double_neighb2d_SOURCES = mln_make_double_neighb2d.cc +mln_make_dpoint2d_h_SOURCES = mln_make_dpoint2d_h.cc +mln_make_dual_neighb_SOURCES = mln_make_dual_neighb.cc +mln_make_dummy_p_edges_SOURCES = mln_make_dummy_p_edges.cc +mln_make_dummy_p_vertices_SOURCES = mln_make_dummy_p_vertices.cc +mln_make_edge_image_SOURCES = mln_make_edge_image.cc +mln_make_essential_SOURCES = mln_make_essential.cc +mln_make_h_mat_SOURCES = mln_make_h_mat.cc +mln_make_image_SOURCES = mln_make_image.cc +mln_make_image2d_SOURCES = mln_make_image2d.cc +mln_make_image3d_SOURCES = mln_make_image3d.cc +mln_make_influence_zone_adjacency_graph_SOURCES = mln_make_influence_zone_adjacency_graph.cc +mln_make_mat_SOURCES = mln_make_mat.cc +mln_make_neighb2d_SOURCES = mln_make_neighb2d.cc +mln_make_p_edges_with_mass_centers_SOURCES = mln_make_p_edges_with_mass_centers.cc +mln_make_p_vertices_with_mass_centers_SOURCES = mln_make_p_vertices_with_mass_centers.cc +mln_make_pix_SOURCES = mln_make_pix.cc +mln_make_pixel_SOURCES = mln_make_pixel.cc +mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc +mln_make_rag_and_labeled_wsl_SOURCES = mln_make_rag_and_labeled_wsl.cc +mln_make_region_adjacency_graph_SOURCES = mln_make_region_adjacency_graph.cc +mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc +mln_make_vec_SOURCES = mln_make_vec.cc +mln_make_vertex_image_SOURCES = mln_make_vertex_image.cc +mln_make_voronoi_SOURCES = mln_make_voronoi.cc +mln_make_w_window_SOURCES = mln_make_w_window.cc +mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc +mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc +mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc +mln_make_w_window2d_int_SOURCES = mln_make_w_window2d_int.cc +mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc +mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc +mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc +mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc +mln_math_abs_SOURCES = mln_math_abs.cc +mln_math_acos_SOURCES = mln_math_acos.cc +mln_math_all_SOURCES = mln_math_all.cc +mln_math_cos_SOURCES = mln_math_cos.cc +mln_math_diff_abs_SOURCES = mln_math_diff_abs.cc +mln_math_essential_SOURCES = mln_math_essential.cc +mln_math_jacobi_SOURCES = mln_math_jacobi.cc +mln_math_max_SOURCES = mln_math_max.cc +mln_math_min_SOURCES = mln_math_min.cc +mln_math_pi_SOURCES = mln_math_pi.cc +mln_math_round_SOURCES = mln_math_round.cc +mln_math_round_sat_SOURCES = mln_math_round_sat.cc +mln_math_sign_SOURCES = mln_math_sign.cc +mln_math_sin_SOURCES = mln_math_sin.cc +mln_math_sqr_SOURCES = mln_math_sqr.cc +mln_math_sqrt_SOURCES = mln_math_sqrt.cc +mln_metal_abort_SOURCES = mln_metal_abort.cc +mln_metal_all_SOURCES = mln_metal_all.cc +mln_metal_ands_SOURCES = mln_metal_ands.cc +mln_metal_array_SOURCES = mln_metal_array.cc +mln_metal_array1d_SOURCES = mln_metal_array1d.cc +mln_metal_array2d_SOURCES = mln_metal_array2d.cc +mln_metal_array3d_SOURCES = mln_metal_array3d.cc +mln_metal_bexpr_SOURCES = mln_metal_bexpr.cc +mln_metal_bool_SOURCES = mln_metal_bool.cc +mln_metal_const_SOURCES = mln_metal_const.cc +mln_metal_converts_to_SOURCES = mln_metal_converts_to.cc +mln_metal_equal_SOURCES = mln_metal_equal.cc +mln_metal_essential_SOURCES = mln_metal_essential.cc +mln_metal_fix_return_SOURCES = mln_metal_fix_return.cc +mln_metal_goes_to_SOURCES = mln_metal_goes_to.cc +mln_metal_if_SOURCES = mln_metal_if.cc +mln_metal_int_SOURCES = mln_metal_int.cc +mln_metal_is_SOURCES = mln_metal_is.cc +mln_metal_is_a_SOURCES = mln_metal_is_a.cc +mln_metal_is_const_SOURCES = mln_metal_is_const.cc +mln_metal_is_not_SOURCES = mln_metal_is_not.cc +mln_metal_is_not_a_SOURCES = mln_metal_is_not_a.cc +mln_metal_is_not_const_SOURCES = mln_metal_is_not_const.cc +mln_metal_is_not_ref_SOURCES = mln_metal_is_not_ref.cc +mln_metal_is_ref_SOURCES = mln_metal_is_ref.cc +mln_metal_is_unqualif_SOURCES = mln_metal_is_unqualif.cc +mln_metal_mat_SOURCES = mln_metal_mat.cc +mln_metal_math_all_SOURCES = mln_metal_math_all.cc +mln_metal_math_max_SOURCES = mln_metal_math_max.cc +mln_metal_math_pow_SOURCES = mln_metal_math_pow.cc +mln_metal_math_root_SOURCES = mln_metal_math_root.cc +mln_metal_math_sqrt_SOURCES = mln_metal_math_sqrt.cc +mln_metal_none_SOURCES = mln_metal_none.cc +mln_metal_not_equal_SOURCES = mln_metal_not_equal.cc +mln_metal_ref_SOURCES = mln_metal_ref.cc +mln_metal_ret_SOURCES = mln_metal_ret.cc +mln_metal_same_coord_SOURCES = mln_metal_same_coord.cc +mln_metal_same_point_SOURCES = mln_metal_same_point.cc +mln_metal_templated_by_SOURCES = mln_metal_templated_by.cc +mln_metal_unconst_SOURCES = mln_metal_unconst.cc +mln_metal_unptr_SOURCES = mln_metal_unptr.cc +mln_metal_unqualif_SOURCES = mln_metal_unqualif.cc +mln_metal_unref_SOURCES = mln_metal_unref.cc +mln_metal_vec_SOURCES = mln_metal_vec.cc +mln_morpho_Rd_SOURCES = mln_morpho_Rd.cc +mln_morpho_algebraic_filter_SOURCES = mln_morpho_algebraic_filter.cc +mln_morpho_all_SOURCES = mln_morpho_all.cc +mln_morpho_approx_all_SOURCES = mln_morpho_approx_all.cc +mln_morpho_approx_dilation_SOURCES = mln_morpho_approx_dilation.cc +mln_morpho_approx_erosion_SOURCES = mln_morpho_approx_erosion.cc +mln_morpho_attribute_all_SOURCES = mln_morpho_attribute_all.cc +mln_morpho_attribute_card_SOURCES = mln_morpho_attribute_card.cc +mln_morpho_attribute_count_adjacent_vertices_SOURCES = mln_morpho_attribute_count_adjacent_vertices.cc +mln_morpho_attribute_height_SOURCES = mln_morpho_attribute_height.cc +mln_morpho_attribute_sharpness_SOURCES = mln_morpho_attribute_sharpness.cc +mln_morpho_attribute_sum_SOURCES = mln_morpho_attribute_sum.cc +mln_morpho_attribute_volume_SOURCES = mln_morpho_attribute_volume.cc +mln_morpho_closing_algebraic_SOURCES = mln_morpho_closing_algebraic.cc +mln_morpho_closing_all_SOURCES = mln_morpho_closing_all.cc +mln_morpho_closing_approx_all_SOURCES = mln_morpho_closing_approx_all.cc +mln_morpho_closing_approx_structural_SOURCES = mln_morpho_closing_approx_structural.cc +mln_morpho_closing_area_SOURCES = mln_morpho_closing_area.cc +mln_morpho_closing_area_on_vertices_SOURCES = mln_morpho_closing_area_on_vertices.cc +mln_morpho_closing_essential_SOURCES = mln_morpho_closing_essential.cc +mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc +mln_morpho_closing_leveling_SOURCES = mln_morpho_closing_leveling.cc +mln_morpho_closing_structural_SOURCES = mln_morpho_closing_structural.cc +mln_morpho_closing_sum_SOURCES = mln_morpho_closing_sum.cc +mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc +mln_morpho_complementation_SOURCES = mln_morpho_complementation.cc +mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc +mln_morpho_dilation_SOURCES = mln_morpho_dilation.cc +mln_morpho_elementary_all_SOURCES = mln_morpho_elementary_all.cc +mln_morpho_elementary_closing_SOURCES = mln_morpho_elementary_closing.cc +mln_morpho_elementary_dilation_SOURCES = mln_morpho_elementary_dilation.cc +mln_morpho_elementary_erosion_SOURCES = mln_morpho_elementary_erosion.cc +mln_morpho_elementary_essential_SOURCES = mln_morpho_elementary_essential.cc +mln_morpho_elementary_gradient_SOURCES = mln_morpho_elementary_gradient.cc +mln_morpho_elementary_gradient_external_SOURCES = mln_morpho_elementary_gradient_external.cc +mln_morpho_elementary_gradient_internal_SOURCES = mln_morpho_elementary_gradient_internal.cc +mln_morpho_elementary_laplacian_SOURCES = mln_morpho_elementary_laplacian.cc +mln_morpho_elementary_like_ero_fun_SOURCES = mln_morpho_elementary_like_ero_fun.cc +mln_morpho_elementary_like_ero_set_SOURCES = mln_morpho_elementary_like_ero_set.cc +mln_morpho_elementary_opening_SOURCES = mln_morpho_elementary_opening.cc +mln_morpho_elementary_top_hat_SOURCES = mln_morpho_elementary_top_hat.cc +mln_morpho_erosion_SOURCES = mln_morpho_erosion.cc +mln_morpho_essential_SOURCES = mln_morpho_essential.cc +mln_morpho_general_SOURCES = mln_morpho_general.cc +mln_morpho_gradient_SOURCES = mln_morpho_gradient.cc +mln_morpho_hit_or_miss_SOURCES = mln_morpho_hit_or_miss.cc +mln_morpho_includes_SOURCES = mln_morpho_includes.cc +mln_morpho_internal_elementary_SOURCES = mln_morpho_internal_elementary.cc +mln_morpho_laplacian_SOURCES = mln_morpho_laplacian.cc +mln_morpho_leveling_filter_SOURCES = mln_morpho_leveling_filter.cc +mln_morpho_line_gradient_SOURCES = mln_morpho_line_gradient.cc +mln_morpho_meyer_wst_SOURCES = mln_morpho_meyer_wst.cc +mln_morpho_min_SOURCES = mln_morpho_min.cc +mln_morpho_minus_SOURCES = mln_morpho_minus.cc +mln_morpho_opening_algebraic_SOURCES = mln_morpho_opening_algebraic.cc +mln_morpho_opening_all_SOURCES = mln_morpho_opening_all.cc +mln_morpho_opening_approx_all_SOURCES = mln_morpho_opening_approx_all.cc +mln_morpho_opening_approx_structural_SOURCES = mln_morpho_opening_approx_structural.cc +mln_morpho_opening_area_SOURCES = mln_morpho_opening_area.cc +mln_morpho_opening_area_on_vertices_SOURCES = mln_morpho_opening_area_on_vertices.cc +mln_morpho_opening_essential_SOURCES = mln_morpho_opening_essential.cc +mln_morpho_opening_height_SOURCES = mln_morpho_opening_height.cc +mln_morpho_opening_leveling_SOURCES = mln_morpho_opening_leveling.cc +mln_morpho_opening_structural_SOURCES = mln_morpho_opening_structural.cc +mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc +mln_morpho_plus_SOURCES = mln_morpho_plus.cc +mln_morpho_rank_filter_SOURCES = mln_morpho_rank_filter.cc +mln_morpho_reconstruction_all_SOURCES = mln_morpho_reconstruction_all.cc +mln_morpho_reconstruction_by_dilation_all_SOURCES = mln_morpho_reconstruction_by_dilation_all.cc +mln_morpho_reconstruction_by_dilation_union_find_SOURCES = mln_morpho_reconstruction_by_dilation_union_find.cc +mln_morpho_reconstruction_by_erosion_all_SOURCES = mln_morpho_reconstruction_by_erosion_all.cc +mln_morpho_reconstruction_by_erosion_union_find_SOURCES = mln_morpho_reconstruction_by_erosion_union_find.cc +mln_morpho_skeleton_constrained_SOURCES = mln_morpho_skeleton_constrained.cc +mln_morpho_thick_miss_SOURCES = mln_morpho_thick_miss.cc +mln_morpho_thickening_SOURCES = mln_morpho_thickening.cc +mln_morpho_thin_fit_SOURCES = mln_morpho_thin_fit.cc +mln_morpho_thinning_SOURCES = mln_morpho_thinning.cc +mln_morpho_top_hat_SOURCES = mln_morpho_top_hat.cc +mln_morpho_tree_all_SOURCES = mln_morpho_tree_all.cc +mln_morpho_tree_component_tree_SOURCES = mln_morpho_tree_component_tree.cc +mln_morpho_tree_compute_attribute_image_SOURCES = mln_morpho_tree_compute_attribute_image.cc +mln_morpho_tree_compute_parent_SOURCES = mln_morpho_tree_compute_parent.cc +mln_morpho_tree_data_SOURCES = mln_morpho_tree_data.cc +mln_morpho_tree_dual_input_tree_SOURCES = mln_morpho_tree_dual_input_tree.cc +mln_morpho_tree_filter_all_SOURCES = mln_morpho_tree_filter_all.cc +mln_morpho_tree_filter_direct_SOURCES = mln_morpho_tree_filter_direct.cc +mln_morpho_tree_filter_filter_SOURCES = mln_morpho_tree_filter_filter.cc +mln_morpho_tree_filter_max_SOURCES = mln_morpho_tree_filter_max.cc +mln_morpho_tree_filter_min_SOURCES = mln_morpho_tree_filter_min.cc +mln_morpho_tree_filter_subtractive_SOURCES = mln_morpho_tree_filter_subtractive.cc +mln_morpho_tree_impl_dual_hqueue_SOURCES = mln_morpho_tree_impl_dual_hqueue.cc +mln_morpho_tree_impl_dual_union_find_SOURCES = mln_morpho_tree_impl_dual_union_find.cc +mln_morpho_tree_max_SOURCES = mln_morpho_tree_max.cc +mln_morpho_tree_propagate_if_SOURCES = mln_morpho_tree_propagate_if.cc +mln_morpho_tree_propagate_node_SOURCES = mln_morpho_tree_propagate_node.cc +mln_morpho_tree_propagate_representative_SOURCES = mln_morpho_tree_propagate_representative.cc +mln_morpho_tree_utils_SOURCES = mln_morpho_tree_utils.cc +mln_morpho_watershed_all_SOURCES = mln_morpho_watershed_all.cc +mln_morpho_watershed_flooding_SOURCES = mln_morpho_watershed_flooding.cc +mln_morpho_watershed_superpose_SOURCES = mln_morpho_watershed_superpose.cc +mln_morpho_watershed_topological_SOURCES = mln_morpho_watershed_topological.cc +mln_norm_all_SOURCES = mln_norm_all.cc +mln_norm_essential_SOURCES = mln_norm_essential.cc +mln_norm_l1_SOURCES = mln_norm_l1.cc +mln_norm_l2_SOURCES = mln_norm_l2.cc +mln_norm_linfty_SOURCES = mln_norm_linfty.cc +mln_opt_all_SOURCES = mln_opt_all.cc +mln_opt_at_SOURCES = mln_opt_at.cc +mln_opt_element_SOURCES = mln_opt_element.cc +mln_opt_essential_SOURCES = mln_opt_essential.cc +mln_opt_value_SOURCES = mln_opt_value.cc +mln_pw_all_SOURCES = mln_pw_all.cc +mln_pw_cst_SOURCES = mln_pw_cst.cc +mln_pw_essential_SOURCES = mln_pw_essential.cc +mln_pw_image_SOURCES = mln_pw_image.cc +mln_pw_internal_image_base_SOURCES = mln_pw_internal_image_base.cc +mln_pw_value_SOURCES = mln_pw_value.cc +mln_pw_var_SOURCES = mln_pw_var.cc +mln_registration_all_SOURCES = mln_registration_all.cc +mln_registration_essential_SOURCES = mln_registration_essential.cc +mln_registration_get_rot_SOURCES = mln_registration_get_rot.cc +mln_registration_get_rtransf_SOURCES = mln_registration_get_rtransf.cc +mln_registration_icp_SOURCES = mln_registration_icp.cc +mln_registration_internal_rms_SOURCES = mln_registration_internal_rms.cc +mln_registration_registration_SOURCES = mln_registration_registration.cc +mln_set_all_SOURCES = mln_set_all.cc +mln_set_card_SOURCES = mln_set_card.cc +mln_set_compute_SOURCES = mln_set_compute.cc +mln_set_compute_with_weights_SOURCES = mln_set_compute_with_weights.cc +mln_set_diff_SOURCES = mln_set_diff.cc +mln_set_essential_SOURCES = mln_set_essential.cc +mln_set_get_SOURCES = mln_set_get.cc +mln_set_has_SOURCES = mln_set_has.cc +mln_set_inter_SOURCES = mln_set_inter.cc +mln_set_sym_diff_SOURCES = mln_set_sym_diff.cc +mln_set_uni_SOURCES = mln_set_uni.cc +mln_set_unique_SOURCES = mln_set_unique.cc +mln_subsampling_all_SOURCES = mln_subsampling_all.cc +mln_subsampling_antialiased_SOURCES = mln_subsampling_antialiased.cc +mln_subsampling_essential_SOURCES = mln_subsampling_essential.cc +mln_subsampling_gaussian_subsampling_SOURCES = mln_subsampling_gaussian_subsampling.cc +mln_subsampling_subsampling_SOURCES = mln_subsampling_subsampling.cc +mln_tag_all_SOURCES = mln_tag_all.cc +mln_tag_essential_SOURCES = mln_tag_essential.cc +mln_tag_init_SOURCES = mln_tag_init.cc +mln_tag_skeleton_SOURCES = mln_tag_skeleton.cc +mln_test_all_SOURCES = mln_test_all.cc +mln_test_essential_SOURCES = mln_test_essential.cc +mln_test_positive_SOURCES = mln_test_positive.cc +mln_test_predicate_SOURCES = mln_test_predicate.cc +mln_topo_adj_higher_dim_connected_n_face_iter_SOURCES = mln_topo_adj_higher_dim_connected_n_face_iter.cc +mln_topo_adj_higher_face_iter_SOURCES = mln_topo_adj_higher_face_iter.cc +mln_topo_adj_lower_dim_connected_n_face_iter_SOURCES = mln_topo_adj_lower_dim_connected_n_face_iter.cc +mln_topo_adj_lower_face_iter_SOURCES = mln_topo_adj_lower_face_iter.cc +mln_topo_adj_lower_higher_face_iter_SOURCES = mln_topo_adj_lower_higher_face_iter.cc +mln_topo_adj_m_face_iter_SOURCES = mln_topo_adj_m_face_iter.cc +mln_topo_algebraic_face_SOURCES = mln_topo_algebraic_face.cc +mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc +mln_topo_all_SOURCES = mln_topo_all.cc +mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc +mln_topo_center_only_iter_SOURCES = mln_topo_center_only_iter.cc +mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc +mln_topo_complex_SOURCES = mln_topo_complex.cc +mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc +mln_topo_detach_SOURCES = mln_topo_detach.cc +mln_topo_essential_SOURCES = mln_topo_essential.cc +mln_topo_face_SOURCES = mln_topo_face.cc +mln_topo_face_data_SOURCES = mln_topo_face_data.cc +mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc +mln_topo_internal_complex_iterator_base_SOURCES = mln_topo_internal_complex_iterator_base.cc +mln_topo_internal_complex_relative_iterator_base_SOURCES = mln_topo_internal_complex_relative_iterator_base.cc +mln_topo_internal_complex_relative_iterator_sequence_SOURCES = mln_topo_internal_complex_relative_iterator_sequence.cc +mln_topo_internal_complex_set_iterator_base_SOURCES = mln_topo_internal_complex_set_iterator_base.cc +mln_topo_is_facet_SOURCES = mln_topo_is_facet.cc +mln_topo_is_n_face_SOURCES = mln_topo_is_n_face.cc +mln_topo_is_simple_2d_SOURCES = mln_topo_is_simple_2d.cc +mln_topo_is_simple_cell_SOURCES = mln_topo_is_simple_cell.cc +mln_topo_n_face_SOURCES = mln_topo_n_face.cc +mln_topo_n_face_iter_SOURCES = mln_topo_n_face_iter.cc +mln_topo_n_faces_set_SOURCES = mln_topo_n_faces_set.cc +mln_topo_skeleton_breadth_first_thinning_SOURCES = mln_topo_skeleton_breadth_first_thinning.cc +mln_topo_skeleton_crest_SOURCES = mln_topo_skeleton_crest.cc +mln_topo_skeleton_is_simple_point_SOURCES = mln_topo_skeleton_is_simple_point.cc +mln_topo_static_n_face_iter_SOURCES = mln_topo_static_n_face_iter.cc +mln_trace_all_SOURCES = mln_trace_all.cc +mln_trace_entering_SOURCES = mln_trace_entering.cc +mln_trace_essential_SOURCES = mln_trace_essential.cc +mln_trace_exiting_SOURCES = mln_trace_exiting.cc +mln_trace_quiet_SOURCES = mln_trace_quiet.cc +mln_trace_resume_SOURCES = mln_trace_resume.cc +mln_trace_stop_SOURCES = mln_trace_stop.cc +mln_trace_warning_SOURCES = mln_trace_warning.cc +mln_trait_accumulator_print_SOURCES = mln_trait_accumulator_print.cc +mln_trait_accumulator_props_SOURCES = mln_trait_accumulator_props.cc +mln_trait_accumulators_SOURCES = mln_trait_accumulators.cc +mln_trait_all_SOURCES = mln_trait_all.cc +mln_trait_ch_function_value_SOURCES = mln_trait_ch_function_value.cc +mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc +mln_trait_concrete_SOURCES = mln_trait_concrete.cc +mln_trait_essential_SOURCES = mln_trait_essential.cc +mln_trait_functions_SOURCES = mln_trait_functions.cc +mln_trait_image_print_SOURCES = mln_trait_image_print.cc +mln_trait_image_props_SOURCES = mln_trait_image_props.cc +mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc +mln_trait_images_SOURCES = mln_trait_images.cc +mln_trait_neighborhood_SOURCES = mln_trait_neighborhood.cc +mln_trait_next_solve_SOURCES = mln_trait_next_solve.cc +mln_trait_next_solve_binary_SOURCES = mln_trait_next_solve_binary.cc +mln_trait_next_solve_proxy_SOURCES = mln_trait_next_solve_proxy.cc +mln_trait_next_solve_unary_SOURCES = mln_trait_next_solve_unary.cc +mln_trait_op_all_SOURCES = mln_trait_op_all.cc +mln_trait_op_and_SOURCES = mln_trait_op_and.cc +mln_trait_op_decl_SOURCES = mln_trait_op_decl.cc +mln_trait_op_div_SOURCES = mln_trait_op_div.cc +mln_trait_op_eq_SOURCES = mln_trait_op_eq.cc +mln_trait_op_essential_SOURCES = mln_trait_op_essential.cc +mln_trait_op_geq_SOURCES = mln_trait_op_geq.cc +mln_trait_op_greater_SOURCES = mln_trait_op_greater.cc +mln_trait_op_leq_SOURCES = mln_trait_op_leq.cc +mln_trait_op_less_SOURCES = mln_trait_op_less.cc +mln_trait_op_lor_SOURCES = mln_trait_op_lor.cc +mln_trait_op_minus_SOURCES = mln_trait_op_minus.cc +mln_trait_op_mod_SOURCES = mln_trait_op_mod.cc +mln_trait_op_neq_SOURCES = mln_trait_op_neq.cc +mln_trait_op_not_SOURCES = mln_trait_op_not.cc +mln_trait_op_or_SOURCES = mln_trait_op_or.cc +mln_trait_op_ord_SOURCES = mln_trait_op_ord.cc +mln_trait_op_plus_SOURCES = mln_trait_op_plus.cc +mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc +mln_trait_op_postinc_SOURCES = mln_trait_op_postinc.cc +mln_trait_op_predec_SOURCES = mln_trait_op_predec.cc +mln_trait_op_preinc_SOURCES = mln_trait_op_preinc.cc +mln_trait_op_times_SOURCES = mln_trait_op_times.cc +mln_trait_op_uminus_SOURCES = mln_trait_op_uminus.cc +mln_trait_op_uplus_SOURCES = mln_trait_op_uplus.cc +mln_trait_op_xor_SOURCES = mln_trait_op_xor.cc +mln_trait_promote_SOURCES = mln_trait_promote.cc +mln_trait_site_set_print_SOURCES = mln_trait_site_set_print.cc +mln_trait_site_set_props_SOURCES = mln_trait_site_set_props.cc +mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc +mln_trait_solve_SOURCES = mln_trait_solve.cc +mln_trait_solve_binary_SOURCES = mln_trait_solve_binary.cc +mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc +mln_trait_undef_SOURCES = mln_trait_undef.cc +mln_trait_value_all_SOURCES = mln_trait_value_all.cc +mln_trait_value_comp_SOURCES = mln_trait_value_comp.cc +mln_trait_value_essential_SOURCES = mln_trait_value_essential.cc +mln_trait_value_internal_all_SOURCES = mln_trait_value_internal_all.cc +mln_trait_value_internal_comp_SOURCES = mln_trait_value_internal_comp.cc +mln_trait_value_kind_SOURCES = mln_trait_value_kind.cc +mln_trait_value_nature_SOURCES = mln_trait_value_nature.cc +mln_trait_value_print_SOURCES = mln_trait_value_print.cc +mln_trait_value_quant_SOURCES = mln_trait_value_quant.cc +mln_trait_value__SOURCES = mln_trait_value_.cc +mln_trait_window_print_SOURCES = mln_trait_window_print.cc +mln_trait_window_props_SOURCES = mln_trait_window_props.cc +mln_trait_windows_SOURCES = mln_trait_windows.cc +mln_transform_all_SOURCES = mln_transform_all.cc +mln_transform_distance_and_closest_point_geodesic_SOURCES = mln_transform_distance_and_closest_point_geodesic.cc +mln_transform_distance_and_influence_zone_geodesic_SOURCES = mln_transform_distance_and_influence_zone_geodesic.cc +mln_transform_distance_front_SOURCES = mln_transform_distance_front.cc +mln_transform_distance_geodesic_SOURCES = mln_transform_distance_geodesic.cc +mln_transform_essential_SOURCES = mln_transform_essential.cc +mln_transform_hough_SOURCES = mln_transform_hough.cc +mln_transform_influence_zone_front_SOURCES = mln_transform_influence_zone_front.cc +mln_transform_influence_zone_geodesic_SOURCES = mln_transform_influence_zone_geodesic.cc +mln_transform_influence_zone_geodesic_saturated_SOURCES = mln_transform_influence_zone_geodesic_saturated.cc +mln_transform_internal_all_SOURCES = mln_transform_internal_all.cc +mln_transform_internal_closest_point_functor_SOURCES = mln_transform_internal_closest_point_functor.cc +mln_transform_internal_distance_functor_SOURCES = mln_transform_internal_distance_functor.cc +mln_transform_internal_influence_zone_functor_SOURCES = mln_transform_internal_influence_zone_functor.cc +mln_upscaling_art_scale2x_SOURCES = mln_upscaling_art_scale2x.cc +mln_upscaling_art_scale3x_SOURCES = mln_upscaling_art_scale3x.cc +mln_util_adjacency_matrix_SOURCES = mln_util_adjacency_matrix.cc +mln_util_all_SOURCES = mln_util_all.cc +mln_util_array_SOURCES = mln_util_array.cc +mln_util_branch_iter_SOURCES = mln_util_branch_iter.cc +mln_util_branch_iter_ind_SOURCES = mln_util_branch_iter_ind.cc +mln_util_couple_SOURCES = mln_util_couple.cc +mln_util_dindex_SOURCES = mln_util_dindex.cc +mln_util_eat_SOURCES = mln_util_eat.cc +mln_util_edge_SOURCES = mln_util_edge.cc +mln_util_essential_SOURCES = mln_util_essential.cc +mln_util_fibonacci_heap_SOURCES = mln_util_fibonacci_heap.cc +mln_util_graph_SOURCES = mln_util_graph.cc +mln_util_graph_ids_SOURCES = mln_util_graph_ids.cc +mln_util_greater_point_SOURCES = mln_util_greater_point.cc +mln_util_greater_psite_SOURCES = mln_util_greater_psite.cc +mln_util_hqueues_SOURCES = mln_util_hqueues.cc +mln_util_ignore_SOURCES = mln_util_ignore.cc +mln_util_index_SOURCES = mln_util_index.cc +mln_util_internal_edge_impl_SOURCES = mln_util_internal_edge_impl.cc +mln_util_internal_graph_base_SOURCES = mln_util_internal_graph_base.cc +mln_util_internal_graph_iter_SOURCES = mln_util_internal_graph_iter.cc +mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc +mln_util_internal_graph_nbh_iter_SOURCES = mln_util_internal_graph_nbh_iter.cc +mln_util_internal_graph_nbh_iter_base_SOURCES = mln_util_internal_graph_nbh_iter_base.cc +mln_util_internal_id2element_SOURCES = mln_util_internal_id2element.cc +mln_util_internal_vertex_impl_SOURCES = mln_util_internal_vertex_impl.cc +mln_util_lazy_set_SOURCES = mln_util_lazy_set.cc +mln_util_lemmings_SOURCES = mln_util_lemmings.cc +mln_util_line_graph_SOURCES = mln_util_line_graph.cc +mln_util_max_SOURCES = mln_util_max.cc +mln_util_multi_site_SOURCES = mln_util_multi_site.cc +mln_util_nil_SOURCES = mln_util_nil.cc +mln_util_object_id_SOURCES = mln_util_object_id.cc +mln_util_ord_SOURCES = mln_util_ord.cc +mln_util_ord_pair_SOURCES = mln_util_ord_pair.cc +mln_util_pix_SOURCES = mln_util_pix.cc +mln_util_set_SOURCES = mln_util_set.cc +mln_util_site_pair_SOURCES = mln_util_site_pair.cc +mln_util_soft_heap_SOURCES = mln_util_soft_heap.cc +mln_util_timer_SOURCES = mln_util_timer.cc +mln_util_tracked_ptr_SOURCES = mln_util_tracked_ptr.cc +mln_util_tree_SOURCES = mln_util_tree.cc +mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc +mln_util_tree_fast_to_image_SOURCES = mln_util_tree_fast_to_image.cc +mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc +mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc +mln_util_vertex_SOURCES = mln_util_vertex.cc +mln_util_yes_SOURCES = mln_util_yes.cc +mln_value_aliases_SOURCES = mln_value_aliases.cc +mln_value_all_SOURCES = mln_value_all.cc +mln_value_builtin_all_SOURCES = mln_value_builtin_all.cc +mln_value_builtin_carrays_SOURCES = mln_value_builtin_carrays.cc +mln_value_builtin_essential_SOURCES = mln_value_builtin_essential.cc +mln_value_builtin_floatings_SOURCES = mln_value_builtin_floatings.cc +mln_value_builtin_integers_SOURCES = mln_value_builtin_integers.cc +mln_value_builtin_ops_SOURCES = mln_value_builtin_ops.cc +mln_value_builtin_promotions_SOURCES = mln_value_builtin_promotions.cc +mln_value_builtin_symbolics_SOURCES = mln_value_builtin_symbolics.cc +mln_value_cast_SOURCES = mln_value_cast.cc +mln_value_concept_all_SOURCES = mln_value_concept_all.cc +mln_value_concept_built_in_SOURCES = mln_value_concept_built_in.cc +mln_value_concept_data_SOURCES = mln_value_concept_data.cc +mln_value_concept_essential_SOURCES = mln_value_concept_essential.cc +mln_value_concept_floating_SOURCES = mln_value_concept_floating.cc +mln_value_concept_integer_SOURCES = mln_value_concept_integer.cc +mln_value_concept_scalar_SOURCES = mln_value_concept_scalar.cc +mln_value_concept_structured_SOURCES = mln_value_concept_structured.cc +mln_value_concept_symbolic_SOURCES = mln_value_concept_symbolic.cc +mln_value_concept_vectorial_SOURCES = mln_value_concept_vectorial.cc +mln_value_equiv_SOURCES = mln_value_equiv.cc +mln_value_essential_SOURCES = mln_value_essential.cc +mln_value_float01_SOURCES = mln_value_float01.cc +mln_value_float01__SOURCES = mln_value_float01_.cc +mln_value_float01_16_SOURCES = mln_value_float01_16.cc +mln_value_float01_8_SOURCES = mln_value_float01_8.cc +mln_value_float01_f_SOURCES = mln_value_float01_f.cc +mln_value_gl16_SOURCES = mln_value_gl16.cc +mln_value_gl8_SOURCES = mln_value_gl8.cc +mln_value_glf_SOURCES = mln_value_glf.cc +mln_value_graylevel_SOURCES = mln_value_graylevel.cc +mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc +mln_value_hsi_SOURCES = mln_value_hsi.cc +mln_value_hsl_SOURCES = mln_value_hsl.cc +mln_value_int_s_SOURCES = mln_value_int_s.cc +mln_value_int_s16_SOURCES = mln_value_int_s16.cc +mln_value_int_s32_SOURCES = mln_value_int_s32.cc +mln_value_int_s8_SOURCES = mln_value_int_s8.cc +mln_value_int_u_SOURCES = mln_value_int_u.cc +mln_value_int_u12_SOURCES = mln_value_int_u12.cc +mln_value_int_u16_SOURCES = mln_value_int_u16.cc +mln_value_int_u32_SOURCES = mln_value_int_u32.cc +mln_value_int_u8_SOURCES = mln_value_int_u8.cc +mln_value_int_u_sat_SOURCES = mln_value_int_u_sat.cc +mln_value_internal_all_SOURCES = mln_value_internal_all.cc +mln_value_internal_convert_SOURCES = mln_value_internal_convert.cc +mln_value_internal_encoding_SOURCES = mln_value_internal_encoding.cc +mln_value_internal_essential_SOURCES = mln_value_internal_essential.cc +mln_value_internal_gray__SOURCES = mln_value_internal_gray_.cc +mln_value_internal_gray_f_SOURCES = mln_value_internal_gray_f.cc +mln_value_internal_integer_SOURCES = mln_value_internal_integer.cc +mln_value_internal_iterable_set_SOURCES = mln_value_internal_iterable_set.cc +mln_value_internal_limits_SOURCES = mln_value_internal_limits.cc +mln_value_internal_make_generic_name_SOURCES = mln_value_internal_make_generic_name.cc +mln_value_internal_value_like_SOURCES = mln_value_internal_value_like.cc +mln_value_interval_SOURCES = mln_value_interval.cc +mln_value_label_SOURCES = mln_value_label.cc +mln_value_label_16_SOURCES = mln_value_label_16.cc +mln_value_label_32_SOURCES = mln_value_label_32.cc +mln_value_label_8_SOURCES = mln_value_label_8.cc +mln_value_lut_vec_SOURCES = mln_value_lut_vec.cc +mln_value_mixin_SOURCES = mln_value_mixin.cc +mln_value_next_SOURCES = mln_value_next.cc +mln_value_ops_SOURCES = mln_value_ops.cc +mln_value_other_SOURCES = mln_value_other.cc +mln_value_proxy_SOURCES = mln_value_proxy.cc +mln_value_qt_rgb32_SOURCES = mln_value_qt_rgb32.cc +mln_value_rgb_SOURCES = mln_value_rgb.cc +mln_value_rgb16_SOURCES = mln_value_rgb16.cc +mln_value_rgb8_SOURCES = mln_value_rgb8.cc +mln_value_scalar_SOURCES = mln_value_scalar.cc +mln_value_set_SOURCES = mln_value_set.cc +mln_value_shell_SOURCES = mln_value_shell.cc +mln_value_sign_SOURCES = mln_value_sign.cc +mln_value_stack_SOURCES = mln_value_stack.cc +mln_value_super_value_SOURCES = mln_value_super_value.cc +mln_value_value_array_SOURCES = mln_value_value_array.cc +mln_value_viter_SOURCES = mln_value_viter.cc +mln_win_all_SOURCES = mln_win_all.cc +mln_win_backdiag2d_SOURCES = mln_win_backdiag2d.cc +mln_win_ball_SOURCES = mln_win_ball.cc +mln_win_cube3d_SOURCES = mln_win_cube3d.cc +mln_win_cuboid3d_SOURCES = mln_win_cuboid3d.cc +mln_win_diag2d_SOURCES = mln_win_diag2d.cc +mln_win_diff_SOURCES = mln_win_diff.cc +mln_win_disk2d_SOURCES = mln_win_disk2d.cc +mln_win_essential_SOURCES = mln_win_essential.cc +mln_win_hline2d_SOURCES = mln_win_hline2d.cc +mln_win_inter_SOURCES = mln_win_inter.cc +mln_win_line_SOURCES = mln_win_line.cc +mln_win_multiple_SOURCES = mln_win_multiple.cc +mln_win_multiple_size_SOURCES = mln_win_multiple_size.cc +mln_win_octagon2d_SOURCES = mln_win_octagon2d.cc +mln_win_rectangle2d_SOURCES = mln_win_rectangle2d.cc +mln_win_segment1d_SOURCES = mln_win_segment1d.cc +mln_win_shift_SOURCES = mln_win_shift.cc +mln_win_sline3d_SOURCES = mln_win_sline3d.cc +mln_win_sphere3d_SOURCES = mln_win_sphere3d.cc +mln_win_sym_SOURCES = mln_win_sym.cc +mln_win_vline2d_SOURCES = mln_win_vline2d.cc +mln_world_all_SOURCES = mln_world_all.cc +mln_world_binary_2d_all_SOURCES = mln_world_binary_2d_all.cc +mln_world_binary_2d_enlarge_SOURCES = mln_world_binary_2d_enlarge.cc +mln_world_binary_2d_projected_histo_SOURCES = mln_world_binary_2d_projected_histo.cc +mln_world_binary_2d_subsample_SOURCES = mln_world_binary_2d_subsample.cc +mln_world_inter_pixel_all_SOURCES = mln_world_inter_pixel_all.cc +mln_world_inter_pixel_compute_SOURCES = mln_world_inter_pixel_compute.cc +mln_world_inter_pixel_dim2_all_SOURCES = mln_world_inter_pixel_dim2_all.cc +mln_world_inter_pixel_dim2_is_dot_SOURCES = mln_world_inter_pixel_dim2_is_dot.cc +mln_world_inter_pixel_dim2_is_edge_SOURCES = mln_world_inter_pixel_dim2_is_edge.cc +mln_world_inter_pixel_dim2_is_pixel_SOURCES = mln_world_inter_pixel_dim2_is_pixel.cc +mln_world_inter_pixel_dim2_is_row_odd_SOURCES = mln_world_inter_pixel_dim2_is_row_odd.cc +mln_world_inter_pixel_dim2_make_edge_image_SOURCES = mln_world_inter_pixel_dim2_make_edge_image.cc +mln_world_inter_pixel_display_edge_SOURCES = mln_world_inter_pixel_display_edge.cc +mln_world_inter_pixel_full2image_SOURCES = mln_world_inter_pixel_full2image.cc +mln_world_inter_pixel_immerse_SOURCES = mln_world_inter_pixel_immerse.cc +mln_world_inter_pixel_is_pixel_SOURCES = mln_world_inter_pixel_is_pixel.cc +mln_world_inter_pixel_is_separator_SOURCES = mln_world_inter_pixel_is_separator.cc +mln_world_inter_pixel_neighb2d_SOURCES = mln_world_inter_pixel_neighb2d.cc +mln_world_inter_pixel_separator_to_pixels_SOURCES = mln_world_inter_pixel_separator_to_pixels.cc +mln_world_rgb_invert_SOURCES = mln_world_rgb_invert.cc ++======= ++>>>>>>> next diff --cc scribo/ChangeLog index 3361823,d7f779c..2b21225 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@@ -1,15 -1,120 +1,132 @@@ +2012-11-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + Save full size region debug image. + + * src/content_in_doc.cc: Set output format to DebugWithImage. + + * scribo/io/img/save.hh: Do not subsample output image. + +2012-11-27 Guillaume Lazzara <z(a)lrde.epita.fr> + + * src/content_in_doc.cc: Add more options. + + 2013-02-13 Roland Levillain <roland(a)lrde.epita.fr> + + Simplify more Scribo Makefiles thanks to AM_DEFAULT_SOURCE_EXT. + + * src/binarization/Makefile.am, + * src/contest/DAE-2011/Makefile.am, + * src/contest/hdibco-2010/Makefile.am, + * src/contest/hdlac-2011/Makefile.am, + * src/postprocessing/Makefile.am, + * src/primitive/remove/Makefile.am, + * src/toolchain/nepomuk/Makefile.am, + * src/util/Makefile.am, + * tests/binarization/Makefile.am, + * tests/convert/Makefile.am, + * tests/core/Makefile.am, + * tests/estim/Makefile.am, + * tests/primitive/extract/Makefile.am, + * tests/primitive/link/Makefile.am, + * tests/toolchain/nepomuk/Makefile.am, + * tests/util/Makefile.am: + Here. + + 2010-04-22 Roland Levillain <roland(a)lrde.epita.fr> + + Factor Makefiles' helpers. + + * scribo.mk, tests/tests.mk (AM_CPPFLAGS): Move... + * common.mk: ...here. + + 2010-04-22 Roland Levillain <roland(a)lrde.epita.fr> + + Use AM_DEFAULT_SOURCE_EXT to simplify Scribo's Makefiles. + + * common.mk: New. + Include it... + * scribo.mk, + * tests/tests.mk: + ...here. + * src/Makefile.am, + * src/binarization/Makefile.am, + * src/debug/Makefile.am, + * src/filter/Makefile.am, + * src/misc/Makefile.am, + * src/preprocessing/Makefile.am, + * src/primitive/extract/Makefile.am, + * src/primitive/find/Makefile.am, + * src/primitive/group/Makefile.am, + * src/table/Makefile.am, + * src/text/Makefile.am, + * tests/filter/Makefile.am, + * tests/preprocessing/Makefile.am, + * tests/table/Makefile.am: + Remove (now useless) `*_SOURCES' variables using + sed -ri '/^(\s|#)*\S+_SOURCES\s*=\s*\S+.cc\s*$/d'. + + 2013-02-07 Roland Levillain <roland(a)lrde.epita.fr> + + Remove scoria from Makefiles. + + * src/contest/DAE-2011/Makefile.am, + * src/contest/Makefile.am, + * src/contest/hdibco-2010/Makefile.am, + * src/contest/hdlac-2011/Makefile.am, + * src/postprocessing/Makefile.am, + * tests/binarization/Makefile.am, + * tests/convert/Makefile.am, + * tests/core/Makefile.am, + * tests/estim/Makefile.am, + * tests/toolchain/nepomuk/Makefile.am: + Here. + + 2013-02-07 Roland Levillain <roland(a)lrde.epita.fr> + + Address warnings reported by clang++ in Scribo. + + * scribo/text/paragraphs_closing.hh + (internal::horizontal_CRLA, internal::vertical_CRLA): + Replace empty bodies of loops with single `continue' statements as + this is more explicit. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Address remaining errors reported by clang++ in Scribo. + + * scribo/debug/alignment_decision_image.hh + (alignment_decision_image) + * scribo/debug/bboxes_enlarged_image.hh (bboxes_enlarged_image) + * scribo/debug/decision_image.hh (decision_image) + * scribo/debug/links_decision_image.hh (links_decision_image) + * scribo/debug/links_image.hh (links_image) + * scribo/debug/looks_like_a_text_line_image.hh + (looks_like_a_text_line_image): + Fix the type of the value to be returned by theses functions. + + 2013-02-06 Roland Levillain <roland(a)lrde.epita.fr> + + Address errors reported by clang++ in Scribo. + + * scribo/io/text_boxes/save.hh, + * scribo/primitive/extract/components.hh, + * scribo/primitive/link/with_single_right_link.hh, + * scribo/text/recognition.hh, + * scribo/toolchain/content_in_doc.hh, + * scribo/toolchain/content_in_hdoc.hh, + * scribo/toolchain/text_in_doc.hh, + * scribo/toolchain/text_in_doc_preprocess.hh, + * scribo/toolchain/text_in_picture.hh: + Do not provide default arguments twice. + + 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr> + + Work around an overload resolution problem reported by g++ 4.7. + + * src/debug/show_separators.cc, + * src/util/component_precise_outline.cc: + Here. + 2011-12-06 Guillaume Lazzara <z(a)lrde.epita.fr> * scribo/text/recognition.hh: Restore previous locale. diff --cc scribo/common.mk index 0000000,ef59d88..874f313 mode 000000,100644..100644 --- a/scribo/common.mk +++ b/scribo/common.mk @@@ -1,0 -1,26 +1,28 @@@ + ## common.mk -*- Makefile-Automake -*- + + ## Common Automake parameters. + -## Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE). ++## Copyright (C) 2010, 2013 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/
>. + + # C++ sources. + AM_DEFAULT_SOURCE_EXT = .cc + + # Add paths to Scribo's headers. + AM_CPPFLAGS = -I$(top_srcdir)/ -I$(top_builddir)/ \ - -I$(top_srcdir)/milena -I$(top_builddir)/milena ++ -I$(top_srcdir)/milena -I$(top_builddir)/milena \ ++ -I$(top_srcdir)/scribo -I$(top_builddir)/scribo diff --cc scribo/scribo/text/recognition.hh index d754e66,540a01c..b5e48f1 --- a/scribo/scribo/text/recognition.hh +++ b/scribo/scribo/text/recognition.hh @@@ -122,7 -115,19 +122,8 @@@ namespace scrib setlocale(LC_ALL, "C"); // Initialize Tesseract. -# ifdef HAVE_TESSERACT_2 TessBaseAPI::InitWithLanguage(NULL, NULL, language, NULL, false, 0, NULL); -# else // HAVE_TESSERACT_3 - tesseract::TessBaseAPI tess; - if (tess.Init(NULL, language, tesseract::OEM_DEFAULT) == -1) - { - std::cout << "Error: cannot initialize tesseract!" << std::endl; - abort(); - } - tess.SetPageSegMode(tesseract::PSM_SINGLE_LINE); - -# endif // HAVE_TESSERACT_2 + typedef mln_ch_value(L,bool) I; diff --cc scribo/scribo/toolchain/text_in_doc_preprocess.hh index efa03dd,a614996..6a64525 --- a/scribo/scribo/toolchain/text_in_doc_preprocess.hh +++ b/scribo/scribo/toolchain/text_in_doc_preprocess.hh @@@ -1,5 -1,5 +1,5 @@@ - // Copyright (C) 2010, 2011 EPITA Research and Development Laboratory - // (LRDE) -// Copyright (C) 2010, 2011, 2013 EPITA Research and Development Laboratory -// (LRDE) ++// Copyright (C) 2010, 2011, 2013 EPITA Research and Development ++// Laboratory (LRDE) // // This file is part of Olena. // @@@ -65,8 -65,8 +65,8 @@@ namespace scrib template <typename I> mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input, bool enable_fg_bg, - unsigned lambda, double K, - bool verbose = false); + unsigned lambda, double K, bool enable_deskew, - bool verbose = false); ++ bool verbose); /*! \overload K is set to 0.34. @@@ -74,7 -74,7 +74,7 @@@ template <typename I> mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input, bool enable_fg_bg, -- bool verbose = false); ++ bool verbose); /*! \brief Preprocess a document before looking for its content. @@@ -90,7 -90,7 +90,7 @@@ template <typename I> mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input, unsigned lambda, -- bool verbose = false); ++ bool verbose); /*! \brief Preprocess a document before looking for its content. @@@ -108,7 -108,7 +108,7 @@@ mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input, unsigned lambda, double K, bool enable_fg_bg, Image<I>& fg, - bool enable_deskew, bool verbose = false); - bool verbose = false); ++ bool enable_deskew, bool verbose); # ifndef MLN_INCLUDE_ONLY @@@ -126,8 -126,8 +126,8 @@@ template <typename I> mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input_, bool enable_fg_bg, - unsigned lambda, double K, bool enable_deskew = false, - bool verbose = false) - unsigned lambda, double K, ++ unsigned lambda, double K, bool enable_deskew, + bool verbose) { const I& input = exact(input_); mln_precondition(input.is_valid()); @@@ -146,10 -146,10 +146,10 @@@ template <typename I> mln_ch_value(I,bool) text_in_doc_preprocess(const Image<I>& input, unsigned lambda, - bool verbose = false) + bool verbose) { I tmp; - return text_in_doc_preprocess(input, lambda, 0.34, true, tmp, verbose); + return text_in_doc_preprocess(input, lambda, 0.34, true, tmp, false, verbose); } diff --cc scribo/src/binarization/Makefile.am index a0a4378,5099ed9..4cdbf54 --- a/scribo/src/binarization/Makefile.am +++ b/scribo/src/binarization/Makefile.am @@@ -18,9 -18,17 +18,8 @@@ include $(top_srcdir)/scribo/scribo.mk noinst_PROGRAMS = \ - pgm_global_threshold_auto \ - pgm_sauvola \ - pgm_sauvola_ms \ - pgm_sauvola_threshold_image \ - ppm_sauvola \ - ppm_sauvola_ms_fg \ - ppm_sauvola_ms \ - ppm_sauvola_ms_split - - + pgm_global_threshold_auto - pgm_global_threshold_auto_SOURCES = pgm_global_threshold_auto.cc if HAVE_MAGICKXX @@@ -38,27 -43,6 +37,22 @@@ sauvola_ms_split - global_threshold_SOURCES = global_threshold.cc + global_threshold_CPPFLAGS = $(AM_CPPFLAGS) \ + $(MAGICKXX_CPPFLAGS) + global_threshold_LDFLAGS = $(AM_LDFLAGS) \ + $(MAGICKXX_LDFLAGS) + + - niblack_SOURCES = niblack.cc + niblack_CPPFLAGS = $(AM_CPPFLAGS) \ + $(MAGICKXX_CPPFLAGS) + niblack_LDFLAGS = $(AM_LDFLAGS) \ + $(MAGICKXX_LDFLAGS) + - - otsu_SOURCES = otsu.cc + otsu_CPPFLAGS = $(AM_CPPFLAGS) \ + $(MAGICKXX_CPPFLAGS) + otsu_LDFLAGS = $(AM_LDFLAGS) \ + $(MAGICKXX_LDFLAGS) + - sauvola_ms_fg_SOURCES = sauvola_ms_fg.cc sauvola_ms_fg_CPPFLAGS = $(AM_CPPFLAGS) \ $(MAGICKXX_CPPFLAGS) sauvola_ms_fg_LDFLAGS = $(AM_LDFLAGS) \ @@@ -70,9 -53,8 +63,8 @@@ sauvola_LDFLAGS = $(AM_LDFLAGS) \ $(MAGICKXX_LDFLAGS) - sauvola_debug_SOURCES = sauvola_debug.cc sauvola_debug_CPPFLAGS = $(AM_CPPFLAGS) \ - -DSCRIBO_SAUVOLA_DEBUG \ + -DSCRIBO_LOCAL_THRESHOLD_DEBUG \ $(MAGICKXX_CPPFLAGS) sauvola_debug_LDFLAGS = $(AM_LDFLAGS) \ $(MAGICKXX_LDFLAGS) @@@ -84,9 -65,8 +75,8 @@@ sauvola_ms_LDFLAGS = $(AM_LDFLAGS) \ $(MAGICKXX_LDFLAGS) - sauvola_ms_debug_SOURCES = sauvola_ms_debug.cc sauvola_ms_debug_CPPFLAGS = $(AM_CPPFLAGS) \ - -DSCRIBO_SAUVOLA_DEBUG \ + -DSCRIBO_LOCAL_THRESHOLD_DEBUG \ $(MAGICKXX_CPPFLAGS) sauvola_ms_debug_LDFLAGS = $(AM_LDFLAGS) \ $(MAGICKXX_LDFLAGS) diff --cc scribo/src/contest/DAE-2011/content_in_doc_dae.cc index 9d5034f,d194bd1..2a0e9d7 --- a/scribo/src/contest/DAE-2011/content_in_doc_dae.cc +++ b/scribo/src/contest/DAE-2011/content_in_doc_dae.cc @@@ -80,8 -80,7 +80,8 @@@ int main(int argc, char* argv[] // Preprocess document image2d<bool> input_preproc; - input_preproc = toolchain::text_in_doc_preprocess(input, false, 0.34, - input_preproc = toolchain::text_in_doc_preprocess(input, false, 0.34); ++ input_preproc = toolchain::text_in_doc_preprocess(input, false, 0, 0.34, + false, false); bool denoise = true; std::string language = ""; diff --cc scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc index c3dad6c,5986142..c6f6e0e --- a/scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc +++ b/scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc @@@ -91,8 -91,7 +91,8 @@@ int main(int argc, char* argv[] // Preprocess document image2d<bool> input_preproc; { - input_preproc = toolchain::text_in_doc_preprocess(input, false, 0.34, - input_preproc = toolchain::text_in_doc_preprocess(input, false, 0.34); ++ input_preproc = toolchain::text_in_doc_preprocess(input, 0, false, 0.34, + false, false); // Cleanup components on borders { diff --cc scribo/tests/binarization/Makefile.am index a2962bb,25dcd32..dfc212e --- a/scribo/tests/binarization/Makefile.am +++ b/scribo/tests/binarization/Makefile.am @@@ -35,13 -28,7 +32,6 @@@ check_PROGRAMS = sauvola_ms - global_threshold_SOURCES = global_threshold.cc - local_threshold_SOURCES = local_threshold.cc - niblack_SOURCES = niblack.cc - otsu_SOURCES = otsu.cc - sauvola_SOURCES = sauvola.cc - sauvola_ms_SOURCES = sauvola_ms.cc -- TESTS = $(check_PROGRAMS) MOSTLYCLEANFILES = res.pbm diff --cc scribo/tests/unit_test/unit-tests.mk index 0318303,b5dd245..79ac57f --- a/scribo/tests/unit_test/unit-tests.mk +++ b/scribo/tests/unit_test/unit-tests.mk @@@ -477,258 -431,4 +437,261 @@@ scribo_util_color_to_hex scribo_util_component_precise_outline \ scribo_util_hex_to_color ++<<<<<<< HEAD +scribo_all_SOURCES = scribo_all.cc +scribo_binarization_all_SOURCES = scribo_binarization_all.cc +scribo_binarization_global_threshold_SOURCES = scribo_binarization_global_threshold.cc +scribo_binarization_global_threshold_auto_SOURCES = scribo_binarization_global_threshold_auto.cc +scribo_binarization_internal_compute_local_threshold_SOURCES = scribo_binarization_internal_compute_local_threshold.cc +scribo_binarization_internal_first_pass_functor_SOURCES = scribo_binarization_internal_first_pass_functor.cc +scribo_binarization_internal_local_threshold_debug_SOURCES = scribo_binarization_internal_local_threshold_debug.cc +scribo_binarization_internal_niblack_formula_SOURCES = scribo_binarization_internal_niblack_formula.cc +scribo_binarization_internal_sauvola_formula_SOURCES = scribo_binarization_internal_sauvola_formula.cc +scribo_binarization_local_threshold_SOURCES = scribo_binarization_local_threshold.cc +scribo_binarization_niblack_SOURCES = scribo_binarization_niblack.cc +scribo_binarization_niblack_threshold_SOURCES = scribo_binarization_niblack_threshold.cc +scribo_binarization_otsu_SOURCES = scribo_binarization_otsu.cc +scribo_binarization_otsu_threshold_SOURCES = scribo_binarization_otsu_threshold.cc +scribo_binarization_sauvola_SOURCES = scribo_binarization_sauvola.cc +scribo_binarization_sauvola_ms_SOURCES = scribo_binarization_sauvola_ms.cc +scribo_binarization_sauvola_ms_split_SOURCES = scribo_binarization_sauvola_ms_split.cc +scribo_binarization_sauvola_threshold_SOURCES = scribo_binarization_sauvola_threshold.cc +scribo_canvas_integral_browsing_SOURCES = scribo_canvas_integral_browsing.cc +scribo_convert_to_base64_SOURCES = scribo_convert_to_base64.cc +scribo_core_all_SOURCES = scribo_core_all.cc +scribo_core_central_sites_SOURCES = scribo_core_central_sites.cc +scribo_core_component_features_data_SOURCES = scribo_core_component_features_data.cc +scribo_core_component_info_SOURCES = scribo_core_component_info.cc +scribo_core_component_set_SOURCES = scribo_core_component_set.cc +scribo_core_concept_dmax_functor_SOURCES = scribo_core_concept_dmax_functor.cc +scribo_core_concept_link_functor_SOURCES = scribo_core_concept_link_functor.cc +scribo_core_concept_serializable_SOURCES = scribo_core_concept_serializable.cc +scribo_core_concept_serialize_visitor_SOURCES = scribo_core_concept_serialize_visitor.cc +scribo_core_def_color_type_SOURCES = scribo_core_def_color_type.cc +scribo_core_def_lbl_type_SOURCES = scribo_core_def_lbl_type.cc +scribo_core_erase_objects_SOURCES = scribo_core_erase_objects.cc +scribo_core_group_info_SOURCES = scribo_core_group_info.cc +scribo_core_init_integral_image_SOURCES = scribo_core_init_integral_image.cc +scribo_core_internal_sort_comp_ids_SOURCES = scribo_core_internal_sort_comp_ids.cc +scribo_core_line_info_SOURCES = scribo_core_line_info.cc +scribo_core_line_links_SOURCES = scribo_core_line_links.cc +scribo_core_line_set_SOURCES = scribo_core_line_set.cc +scribo_core_macros_SOURCES = scribo_core_macros.cc +scribo_core_object_groups_SOURCES = scribo_core_object_groups.cc +scribo_core_object_links_SOURCES = scribo_core_object_links.cc +scribo_core_paragraph_info_SOURCES = scribo_core_paragraph_info.cc +scribo_core_paragraph_set_SOURCES = scribo_core_paragraph_set.cc +scribo_core_stats_SOURCES = scribo_core_stats.cc +scribo_core_tag_anchor_SOURCES = scribo_core_tag_anchor.cc +scribo_core_tag_component_SOURCES = scribo_core_tag_component.cc +scribo_core_tag_line_SOURCES = scribo_core_tag_line.cc +scribo_core_tag_paragraph_SOURCES = scribo_core_tag_paragraph.cc +scribo_debug_alignment_decision_image_SOURCES = scribo_debug_alignment_decision_image.cc +scribo_debug_all_SOURCES = scribo_debug_all.cc +scribo_debug_bboxes_enlarged_image_SOURCES = scribo_debug_bboxes_enlarged_image.cc +scribo_debug_bboxes_image_SOURCES = scribo_debug_bboxes_image.cc +scribo_debug_char_space_image_SOURCES = scribo_debug_char_space_image.cc +scribo_debug_decision_image_SOURCES = scribo_debug_decision_image.cc +scribo_debug_highlight_text_area_SOURCES = scribo_debug_highlight_text_area.cc +scribo_debug_line_info_image_SOURCES = scribo_debug_line_info_image.cc +scribo_debug_linked_bboxes_image_SOURCES = scribo_debug_linked_bboxes_image.cc +scribo_debug_links_decision_image_SOURCES = scribo_debug_links_decision_image.cc +scribo_debug_links_image_SOURCES = scribo_debug_links_image.cc +scribo_debug_logger_SOURCES = scribo_debug_logger.cc +scribo_debug_looks_like_a_text_line_image_SOURCES = scribo_debug_looks_like_a_text_line_image.cc +scribo_debug_mean_and_base_lines_image_SOURCES = scribo_debug_mean_and_base_lines_image.cc +scribo_debug_option_check_SOURCES = scribo_debug_option_check.cc +scribo_debug_option_parser_SOURCES = scribo_debug_option_parser.cc +scribo_debug_save_comp_diff_SOURCES = scribo_debug_save_comp_diff.cc +scribo_debug_save_label_image_SOURCES = scribo_debug_save_label_image.cc +scribo_debug_save_table_image_SOURCES = scribo_debug_save_table_image.cc +scribo_debug_text_areas_image_SOURCES = scribo_debug_text_areas_image.cc +scribo_debug_usage_SOURCES = scribo_debug_usage.cc +scribo_draw_all_SOURCES = scribo_draw_all.cc +scribo_draw_bounding_box_links_SOURCES = scribo_draw_bounding_box_links.cc +scribo_draw_bounding_boxes_SOURCES = scribo_draw_bounding_boxes.cc +scribo_draw_groups_bboxes_SOURCES = scribo_draw_groups_bboxes.cc +scribo_draw_line_components_SOURCES = scribo_draw_line_components.cc +scribo_estim_components_features_SOURCES = scribo_estim_components_features.cc +scribo_estim_font_boldness_SOURCES = scribo_estim_font_boldness.cc +scribo_estim_font_color_SOURCES = scribo_estim_font_color.cc +scribo_estim_internal_compute_skeleton_SOURCES = scribo_estim_internal_compute_skeleton.cc +scribo_estim_object_groups_mean_width_SOURCES = scribo_estim_object_groups_mean_width.cc +scribo_filter_all_SOURCES = scribo_filter_all.cc +scribo_filter_common_objects_photo_SOURCES = scribo_filter_common_objects_photo.cc +scribo_filter_internal_alignment_angle_SOURCES = scribo_filter_internal_alignment_angle.cc +scribo_filter_internal_component_aligned_SOURCES = scribo_filter_internal_component_aligned.cc +scribo_filter_internal_compute_SOURCES = scribo_filter_internal_compute.cc +scribo_filter_line_links_x_height_SOURCES = scribo_filter_line_links_x_height.cc +scribo_filter_object_groups_mean_width_SOURCES = scribo_filter_object_groups_mean_width.cc +scribo_filter_object_groups_size_ratio_SOURCES = scribo_filter_object_groups_size_ratio.cc +scribo_filter_object_groups_small_SOURCES = scribo_filter_object_groups_small.cc +scribo_filter_object_groups_with_holes_SOURCES = scribo_filter_object_groups_with_holes.cc +scribo_filter_object_links_aligned_SOURCES = scribo_filter_object_links_aligned.cc +scribo_filter_object_links_bbox_h_ratio_SOURCES = scribo_filter_object_links_bbox_h_ratio.cc +scribo_filter_object_links_bbox_overlap_SOURCES = scribo_filter_object_links_bbox_overlap.cc +scribo_filter_object_links_bbox_ratio_SOURCES = scribo_filter_object_links_bbox_ratio.cc +scribo_filter_object_links_bbox_w_ratio_SOURCES = scribo_filter_object_links_bbox_w_ratio.cc +scribo_filter_object_links_bottom_aligned_SOURCES = scribo_filter_object_links_bottom_aligned.cc +scribo_filter_object_links_center_aligned_SOURCES = scribo_filter_object_links_center_aligned.cc +scribo_filter_object_links_left_aligned_SOURCES = scribo_filter_object_links_left_aligned.cc +scribo_filter_object_links_non_aligned_simple_SOURCES = scribo_filter_object_links_non_aligned_simple.cc +scribo_filter_object_links_right_aligned_SOURCES = scribo_filter_object_links_right_aligned.cc +scribo_filter_object_links_top_aligned_SOURCES = scribo_filter_object_links_top_aligned.cc +scribo_filter_objects_h_thick_SOURCES = scribo_filter_objects_h_thick.cc +scribo_filter_objects_h_thin_SOURCES = scribo_filter_objects_h_thin.cc +scribo_filter_objects_large_SOURCES = scribo_filter_objects_large.cc +scribo_filter_objects_on_border_SOURCES = scribo_filter_objects_on_border.cc +scribo_filter_objects_size_ratio_SOURCES = scribo_filter_objects_size_ratio.cc +scribo_filter_objects_small_SOURCES = scribo_filter_objects_small.cc +scribo_filter_objects_thick_SOURCES = scribo_filter_objects_thick.cc +scribo_filter_objects_thin_SOURCES = scribo_filter_objects_thin.cc +scribo_filter_objects_v_thick_SOURCES = scribo_filter_objects_v_thick.cc +scribo_filter_objects_v_thin_SOURCES = scribo_filter_objects_v_thin.cc +scribo_filter_objects_with_holes_SOURCES = scribo_filter_objects_with_holes.cc +scribo_filter_paragraphs_bbox_overlap_SOURCES = scribo_filter_paragraphs_bbox_overlap.cc +scribo_fun_v2b_label_to_bool_SOURCES = scribo_fun_v2b_label_to_bool.cc +scribo_fun_v2b_objects_large_filter_SOURCES = scribo_fun_v2b_objects_large_filter.cc +scribo_fun_v2b_objects_on_border_filter_SOURCES = scribo_fun_v2b_objects_on_border_filter.cc +scribo_fun_v2b_objects_small_filter_SOURCES = scribo_fun_v2b_objects_small_filter.cc +scribo_fun_v2v_highlight_SOURCES = scribo_fun_v2v_highlight.cc +scribo_io_img_internal_draw_edges_SOURCES = scribo_io_img_internal_draw_edges.cc +scribo_io_text_boxes_save_SOURCES = scribo_io_text_boxes_save.cc +scribo_io_xml_internal_compute_text_colour_SOURCES = scribo_io_xml_internal_compute_text_colour.cc +scribo_io_xml_internal_print_box_coords_SOURCES = scribo_io_xml_internal_print_box_coords.cc +scribo_io_xml_internal_print_image_coords_SOURCES = scribo_io_xml_internal_print_image_coords.cc +scribo_io_xml_internal_time_info_SOURCES = scribo_io_xml_internal_time_info.cc +scribo_make_all_SOURCES = scribo_make_all.cc +scribo_make_debug_filename_SOURCES = scribo_make_debug_filename.cc +scribo_make_influence_zone_graph_SOURCES = scribo_make_influence_zone_graph.cc +scribo_postprocessing_all_SOURCES = scribo_postprocessing_all.cc +scribo_postprocessing_fill_object_holes_SOURCES = scribo_postprocessing_fill_object_holes.cc +scribo_preprocessing_all_SOURCES = scribo_preprocessing_all.cc +scribo_preprocessing_crop_SOURCES = scribo_preprocessing_crop.cc +scribo_preprocessing_crop_without_localization_SOURCES = scribo_preprocessing_crop_without_localization.cc +scribo_preprocessing_denoise_SOURCES = scribo_preprocessing_denoise.cc +scribo_preprocessing_denoise_bg_SOURCES = scribo_preprocessing_denoise_bg.cc +scribo_preprocessing_denoise_fg_SOURCES = scribo_preprocessing_denoise_fg.cc +scribo_preprocessing_deskew_SOURCES = scribo_preprocessing_deskew.cc +scribo_preprocessing_deskew_crop_SOURCES = scribo_preprocessing_deskew_crop.cc +scribo_preprocessing_homogeneous_contrast_SOURCES = scribo_preprocessing_homogeneous_contrast.cc +scribo_preprocessing_rotate_90_SOURCES = scribo_preprocessing_rotate_90.cc +scribo_preprocessing_split_bg_fg_SOURCES = scribo_preprocessing_split_bg_fg.cc +scribo_primitive_all_SOURCES = scribo_primitive_all.cc +scribo_primitive_extract_all_SOURCES = scribo_primitive_extract_all.cc +scribo_primitive_extract_canvas_SOURCES = scribo_primitive_extract_canvas.cc +scribo_primitive_extract_cells_SOURCES = scribo_primitive_extract_cells.cc +scribo_primitive_extract_components_SOURCES = scribo_primitive_extract_components.cc +scribo_primitive_extract_horizontal_separators_SOURCES = scribo_primitive_extract_horizontal_separators.cc +scribo_primitive_extract_internal_union_SOURCES = scribo_primitive_extract_internal_union.cc +scribo_primitive_extract_lines_discontinued_SOURCES = scribo_primitive_extract_lines_discontinued.cc +scribo_primitive_extract_lines_h_discontinued_SOURCES = scribo_primitive_extract_lines_h_discontinued.cc +scribo_primitive_extract_lines_h_pattern_SOURCES = scribo_primitive_extract_lines_h_pattern.cc +scribo_primitive_extract_lines_h_single_SOURCES = scribo_primitive_extract_lines_h_single.cc +scribo_primitive_extract_lines_h_thick_SOURCES = scribo_primitive_extract_lines_h_thick.cc +scribo_primitive_extract_lines_h_thick_and_single_SOURCES = scribo_primitive_extract_lines_h_thick_and_single.cc +scribo_primitive_extract_lines_h_thick_and_thin_SOURCES = scribo_primitive_extract_lines_h_thick_and_thin.cc +scribo_primitive_extract_lines_pattern_SOURCES = scribo_primitive_extract_lines_pattern.cc +scribo_primitive_extract_lines_thick_SOURCES = scribo_primitive_extract_lines_thick.cc +scribo_primitive_extract_lines_v_discontinued_SOURCES = scribo_primitive_extract_lines_v_discontinued.cc +scribo_primitive_extract_lines_v_pattern_SOURCES = scribo_primitive_extract_lines_v_pattern.cc +scribo_primitive_extract_lines_v_single_SOURCES = scribo_primitive_extract_lines_v_single.cc +scribo_primitive_extract_lines_v_thick_SOURCES = scribo_primitive_extract_lines_v_thick.cc +scribo_primitive_extract_lines_v_thick_and_single_SOURCES = scribo_primitive_extract_lines_v_thick_and_single.cc +scribo_primitive_extract_separators_SOURCES = scribo_primitive_extract_separators.cc +scribo_primitive_extract_separators_nonvisible_SOURCES = scribo_primitive_extract_separators_nonvisible.cc +scribo_primitive_extract_vertical_separators_SOURCES = scribo_primitive_extract_vertical_separators.cc +scribo_primitive_group_all_SOURCES = scribo_primitive_group_all.cc +scribo_primitive_group_apply_SOURCES = scribo_primitive_group_apply.cc +scribo_primitive_group_from_double_link_SOURCES = scribo_primitive_group_from_double_link.cc +scribo_primitive_group_from_double_link_any_SOURCES = scribo_primitive_group_from_double_link_any.cc +scribo_primitive_group_from_graph_SOURCES = scribo_primitive_group_from_graph.cc +scribo_primitive_group_from_single_link_SOURCES = scribo_primitive_group_from_single_link.cc +scribo_primitive_identify_SOURCES = scribo_primitive_identify.cc +scribo_primitive_internal_all_SOURCES = scribo_primitive_internal_all.cc +scribo_primitive_internal_find_graph_link_SOURCES = scribo_primitive_internal_find_graph_link.cc +scribo_primitive_internal_find_root_SOURCES = scribo_primitive_internal_find_root.cc +scribo_primitive_internal_have_link_valid_SOURCES = scribo_primitive_internal_have_link_valid.cc +scribo_primitive_internal_is_link_valid_SOURCES = scribo_primitive_internal_is_link_valid.cc +scribo_primitive_internal_rd_SOURCES = scribo_primitive_internal_rd.cc +scribo_primitive_internal_update_graph_link_SOURCES = scribo_primitive_internal_update_graph_link.cc +scribo_primitive_link_all_SOURCES = scribo_primitive_link_all.cc +scribo_primitive_link_compute_SOURCES = scribo_primitive_link_compute.cc +scribo_primitive_link_internal_compute_anchor_SOURCES = scribo_primitive_link_internal_compute_anchor.cc +scribo_primitive_link_internal_dmax_default_SOURCES = scribo_primitive_link_internal_dmax_default.cc +scribo_primitive_link_internal_dmax_functor_base_SOURCES = scribo_primitive_link_internal_dmax_functor_base.cc +scribo_primitive_link_internal_dmax_hrules_SOURCES = scribo_primitive_link_internal_dmax_hrules.cc +scribo_primitive_link_internal_dmax_width_and_height_SOURCES = scribo_primitive_link_internal_dmax_width_and_height.cc +scribo_primitive_link_internal_dmax_width_only_SOURCES = scribo_primitive_link_internal_dmax_width_only.cc +scribo_primitive_link_internal_find_link_SOURCES = scribo_primitive_link_internal_find_link.cc +scribo_primitive_link_internal_link_functor_base_SOURCES = scribo_primitive_link_internal_link_functor_base.cc +scribo_primitive_link_internal_link_several_dmax_base_SOURCES = scribo_primitive_link_internal_link_several_dmax_base.cc +scribo_primitive_link_internal_link_single_dmax_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_base.cc +scribo_primitive_link_internal_link_single_dmax_ratio_aligned_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_aligned_base.cc +scribo_primitive_link_internal_link_single_dmax_ratio_aligned_delta_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_aligned_delta_base.cc +scribo_primitive_link_internal_link_single_dmax_ratio_base_SOURCES = scribo_primitive_link_internal_link_single_dmax_ratio_base.cc +scribo_primitive_link_merge_double_link_SOURCES = scribo_primitive_link_merge_double_link.cc +scribo_primitive_link_merge_double_link_closest_aligned_SOURCES = scribo_primitive_link_merge_double_link_closest_aligned.cc +scribo_primitive_link_with_graph_SOURCES = scribo_primitive_link_with_graph.cc +scribo_primitive_link_with_rag_SOURCES = scribo_primitive_link_with_rag.cc +scribo_primitive_link_with_several_graphes_SOURCES = scribo_primitive_link_with_several_graphes.cc +scribo_primitive_link_with_several_left_links_SOURCES = scribo_primitive_link_with_several_left_links.cc +scribo_primitive_link_with_several_right_links_SOURCES = scribo_primitive_link_with_several_right_links.cc +scribo_primitive_link_with_single_down_link_SOURCES = scribo_primitive_link_with_single_down_link.cc +scribo_primitive_link_with_single_left_link_SOURCES = scribo_primitive_link_with_single_left_link.cc +scribo_primitive_link_with_single_left_link_dmax_ratio_SOURCES = scribo_primitive_link_with_single_left_link_dmax_ratio.cc +scribo_primitive_link_with_single_left_link_dmax_ratio_aligned_SOURCES = scribo_primitive_link_with_single_left_link_dmax_ratio_aligned.cc +scribo_primitive_link_with_single_right_link_SOURCES = scribo_primitive_link_with_single_right_link.cc +scribo_primitive_link_with_single_right_link_bottom_SOURCES = scribo_primitive_link_with_single_right_link_bottom.cc +scribo_primitive_link_with_single_right_link_dmax_ratio_SOURCES = scribo_primitive_link_with_single_right_link_dmax_ratio.cc +scribo_primitive_link_with_single_right_link_dmax_ratio_aligned_SOURCES = scribo_primitive_link_with_single_right_link_dmax_ratio_aligned.cc +scribo_primitive_link_with_single_right_link_top_SOURCES = scribo_primitive_link_with_single_right_link_top.cc +scribo_primitive_link_with_single_up_link_SOURCES = scribo_primitive_link_with_single_up_link.cc +scribo_primitive_merge_components_SOURCES = scribo_primitive_merge_components.cc +scribo_primitive_regroup_from_single_left_link_SOURCES = scribo_primitive_regroup_from_single_left_link.cc +scribo_primitive_regroup_from_single_left_link_wrt_h_ratio_SOURCES = scribo_primitive_regroup_from_single_left_link_wrt_h_ratio.cc +scribo_primitive_remove_separators_SOURCES = scribo_primitive_remove_separators.cc +scribo_subsampling_bilinear_SOURCES = scribo_subsampling_bilinear.cc +scribo_subsampling_integral_SOURCES = scribo_subsampling_integral.cc +scribo_subsampling_integral_single_image_SOURCES = scribo_subsampling_integral_single_image.cc +scribo_table_align_lines_horizontaly_SOURCES = scribo_table_align_lines_horizontaly.cc +scribo_table_align_lines_verticaly_SOURCES = scribo_table_align_lines_verticaly.cc +scribo_table_all_SOURCES = scribo_table_all.cc +scribo_table_connect_horizontal_lines_SOURCES = scribo_table_connect_horizontal_lines.cc +scribo_table_connect_vertical_lines_SOURCES = scribo_table_connect_vertical_lines.cc +scribo_table_erase_SOURCES = scribo_table_erase.cc +scribo_table_extract_SOURCES = scribo_table_extract.cc +scribo_table_internal_align_lines_SOURCES = scribo_table_internal_align_lines.cc +scribo_table_internal_all_SOURCES = scribo_table_internal_all.cc +scribo_table_internal_connect_lines_SOURCES = scribo_table_internal_connect_lines.cc +scribo_table_internal_repair_lines_SOURCES = scribo_table_internal_repair_lines.cc +scribo_table_rebuild_SOURCES = scribo_table_rebuild.cc +scribo_table_repair_horizontal_lines_SOURCES = scribo_table_repair_horizontal_lines.cc +scribo_table_repair_vertical_lines_SOURCES = scribo_table_repair_vertical_lines.cc +scribo_text_all_SOURCES = scribo_text_all.cc +scribo_text_clean_SOURCES = scribo_text_clean.cc +scribo_text_clean_inplace_SOURCES = scribo_text_clean_inplace.cc +scribo_text_extract_lines_SOURCES = scribo_text_extract_lines.cc +scribo_text_extract_lines_with_features_SOURCES = scribo_text_extract_lines_with_features.cc +scribo_text_extract_paragraphs_SOURCES = scribo_text_extract_paragraphs.cc +scribo_text_extract_paragraphs_hdoc_SOURCES = scribo_text_extract_paragraphs_hdoc.cc +scribo_text_link_lines_SOURCES = scribo_text_link_lines.cc +scribo_text_look_like_text_lines_SOURCES = scribo_text_look_like_text_lines.cc +scribo_text_merging_SOURCES = scribo_text_merging.cc +scribo_text_merging_hdoc_SOURCES = scribo_text_merging_hdoc.cc +scribo_text_paragraphs_closing_SOURCES = scribo_text_paragraphs_closing.cc +scribo_toolchain_internal_text_in_doc_preprocess_functor_SOURCES = scribo_toolchain_internal_text_in_doc_preprocess_functor.cc +scribo_toolchain_internal_text_in_picture_functor_SOURCES = scribo_toolchain_internal_text_in_picture_functor.cc +scribo_toolchain_internal_toolchain_functor_SOURCES = scribo_toolchain_internal_toolchain_functor.cc +scribo_toolchain_text_in_doc_preprocess_SOURCES = scribo_toolchain_text_in_doc_preprocess.cc +scribo_toolchain_text_in_picture_SOURCES = scribo_toolchain_text_in_picture.cc +scribo_upsampling_bs2x_SOURCES = scribo_upsampling_bs2x.cc +scribo_upsampling_eagle_SOURCES = scribo_upsampling_eagle.cc +scribo_util_box_intersection_SOURCES = scribo_util_box_intersection.cc +scribo_util_box_is_included_SOURCES = scribo_util_box_is_included.cc +scribo_util_color_to_hex_SOURCES = scribo_util_color_to_hex.cc +scribo_util_component_precise_outline_SOURCES = scribo_util_component_precise_outline.cc +scribo_util_hex_to_color_SOURCES = scribo_util_hex_to_color.cc ++======= ++>>>>>>> next hooks/post-receive -- Olena, a generic and efficient image processing platform
11 years, 10 months
1
0
0
0
← Newer
1
2
3
4
5
6
7
...
14
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Results per page:
10
25
50
100
200