---
GScribo/BUGS | 1 -
GScribo/GScribo.pro | 83 ---
GScribo/GScribo.pro.user | 405 ----------
GScribo/GScribo.pro.user.1.3 | 283 -------
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/generaloptions.ui | 100 ---
GScribo/Preferences/ocroptions.cpp | 53 --
GScribo/Preferences/ocroptions.h | 33 -
GScribo/Preferences/ocroptions.ui | 62 --
GScribo/Preferences/optionwidget.h | 15 -
GScribo/Preferences/preferencesdialog.cpp | 98 ---
GScribo/Preferences/preferencesdialog.h | 42 --
GScribo/Preferences/preferencesdialog.ui | 121 ---
GScribo/Preferences/preprocessingoptions.cpp | 45 --
GScribo/Preferences/preprocessingoptions.h | 32 -
GScribo/Preferences/preprocessingoptions.ui | 76 --
GScribo/Preferences/segmentationoptions.cpp | 33 -
GScribo/Preferences/segmentationoptions.h | 31 -
GScribo/Preferences/segmentationoptions.ui | 52 --
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/abstractregionitem.h | 13 -
GScribo/Rendering/backgroundtexture.h | 12 -
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/Rendering/selection.h | 20 -
GScribo/TODO | 100 ---
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/xmldelegate.h | 30 -
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/dir.h | 7 -
GScribo/dockwidget.h | 22 -
GScribo/main.cpp | 23 -
GScribo/mainwindow.cpp | 415 -----------
GScribo/mainwindow.h | 120 ---
GScribo/mainwindow.ui | 35 -
GScribo/region.h | 56 --
GScribo/regionwidget.cpp | 70 --
GScribo/regionwidget.h | 40 -
GScribo/variantpointer.h | 19 -
GScribo/xml.cpp | 206 ------
GScribo/xml.h | 93 ---
milena/tests/unit_test/unit-tests.mk | 4 +
scribo/demo/viewer/Makefile.am | 190 +++--
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/defs.hh | 31 -
scribo/demo/viewer/demodir.hh.in | 8 +-
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/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 | 10 +-
scribo/demo/viewer/preprocess.hh | 33 +-
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 | 21 +-
scribo/demo/viewer/process.hh | 45 +-
scribo/demo/viewer/runner.cc | 304 ++++-----
scribo/demo/viewer/runner.hh | 95 ++--
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/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_widget.cc | 164 ----
scribo/demo/viewer/xml_widget.hh | 48 --
131 files changed, 365 insertions(+), 10103 deletions(-)
delete mode 100644 GScribo/BUGS
delete mode 100644 GScribo/GScribo.pro
delete mode 100644 GScribo/GScribo.pro.user
delete mode 100644 GScribo/GScribo.pro.user.1.3
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/generaloptions.ui
delete mode 100644 GScribo/Preferences/ocroptions.cpp
delete mode 100644 GScribo/Preferences/ocroptions.h
delete mode 100644 GScribo/Preferences/ocroptions.ui
delete mode 100644 GScribo/Preferences/optionwidget.h
delete mode 100644 GScribo/Preferences/preferencesdialog.cpp
delete mode 100644 GScribo/Preferences/preferencesdialog.h
delete mode 100644 GScribo/Preferences/preferencesdialog.ui
delete mode 100644 GScribo/Preferences/preprocessingoptions.cpp
delete mode 100644 GScribo/Preferences/preprocessingoptions.h
delete mode 100644 GScribo/Preferences/preprocessingoptions.ui
delete mode 100644 GScribo/Preferences/segmentationoptions.cpp
delete mode 100644 GScribo/Preferences/segmentationoptions.h
delete mode 100644 GScribo/Preferences/segmentationoptions.ui
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/abstractregionitem.h
delete mode 100644 GScribo/Rendering/backgroundtexture.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/Rendering/selection.h
delete mode 100644 GScribo/TODO
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/xmldelegate.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/dir.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/mainwindow.ui
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
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
delete mode 100644 scribo/demo/viewer/defs.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
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/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/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
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
delete mode 100644 scribo/demo/viewer/xml_widget.cc
delete mode 100644 scribo/demo/viewer/xml_widget.hh
diff --git a/GScribo/BUGS b/GScribo/BUGS
deleted file mode 100644
index 48af52e..0000000
--- a/GScribo/BUGS
+++ /dev/null
@@ -1 +0,0 @@
-- In release compilation, when the first text region is selected in the xml widget, the
program crashs.
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/GScribo.pro.user b/GScribo/GScribo.pro.user
deleted file mode 100644
index d765506..0000000
--- a/GScribo/GScribo.pro.user
+++ /dev/null
@@ -1,405 +0,0 @@
-<!DOCTYPE QtCreatorProject>
-<qtcreator>
- <data>
- <variable>RunConfiguration0-BaseEnvironmentBase</variable>
- <value type="int">2</value>
- </data>
- <data>
- <variable>RunConfiguration0-CommandLineArguments</variable>
- <valuelist type="QVariantList"/>
- </data>
- <data>
- <variable>RunConfiguration0-ProFile</variable>
- <value type="QString">GScribo.pro</value>
- </data>
- <data>
- <variable>RunConfiguration0-RunConfiguration.name</variable>
- <value type="QString">GScribo</value>
- </data>
- <data>
- <variable>RunConfiguration0-UseDyldImageSuffix</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UseTerminal</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserEnvironmentChanges</variable>
- <valuelist type="QVariantList"/>
- </data>
- <data>
- <variable>RunConfiguration0-UserSetName</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserSetWorkingDirectory</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserWorkingDirectory</variable>
- <value type="QString"></value>
- </data>
- <data>
- <variable>RunConfiguration0-type</variable>
- <value
type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
- </data>
- <data>
- <variable>activeRunConfiguration</variable>
- <value type="int">0</value>
- </data>
- <data>
- <variable>activebuildconfiguration</variable>
- <value type="QString">Release</value>
- </data>
- <data>
- <variable>buildConfiguration-Debug</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <value key="QtVersionId" type="int">0</value>
- <value key="ToolChain" type="int">0</value>
- <value key="addQDumper" type=""></value>
- <value key="buildConfiguration" type="int">2</value>
- </valuemap>
- </data>
- <data>
- <variable>buildConfiguration-Release</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- <value key="QtVersionId" type="int">0</value>
- <value key="ToolChain" type="int">0</value>
- <value key="addQDumper" type=""></value>
- <value key="buildConfiguration" type="int">0</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=12582936</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo/GScribo.pro</value>
- <value type="QString">-spec</value>
- <value type="QString">linux-g++</value>
- <value type="QString">-r</value>
- <value type="QString">CONFIG+=debug</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/qmake-qt4</value>
- <value key="abstractProcess.enabled"
type="bool">false</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=12582936</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">false</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=12582936</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">true</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">clean</value>
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- <value key="cleanConfig" type="bool">true</value>
- <valuelist key="makeargs" type="QVariantList">
- <value type="QString">clean</value>
- </valuelist>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo/GScribo.pro</value>
- <value type="QString">-spec</value>
- <value type="QString">linux-g++</value>
- <value type="QString">-r</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/qmake-qt4</value>
- <value key="abstractProcess.enabled"
type="bool">false</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">false</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-YPw0beHDmH,guid=e1ea388d8198abba427530de0006165b</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=23527</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-rIfho23467/agent.23467</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8:8:8:8:8:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdmS2P7SW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1361173353.46260-1384018529</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">true</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">clean</value>
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- <value key="cleanConfig" type="bool">true</value>
- <valuelist key="makeargs" type="QVariantList">
- <value type="QString">clean</value>
- </valuelist>
- </valuemap>
- </data>
- <data>
- <variable>buildconfigurations</variable>
- <valuelist type="QVariantList">
- <value type="QString">Debug</value>
- <value type="QString">Release</value>
- </valuelist>
- </data>
- <data>
- <variable>buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- <value key="mkspec" type="QString"></value>
- </valuemap>
- </data>
- <data>
- <variable>buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- </valuemap>
- </data>
- <data>
- <variable>buildsteps</variable>
- <valuelist type="QVariantList">
- <value type="QString">trolltech.qt4projectmanager.qmake</value>
- <value type="QString">trolltech.qt4projectmanager.make</value>
- </valuelist>
- </data>
- <data>
- <variable>cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- <value key="clean" type="bool">true</value>
- </valuemap>
- </data>
- <data>
- <variable>cleansteps</variable>
- <valuelist type="QVariantList">
- <value type="QString">trolltech.qt4projectmanager.make</value>
- </valuelist>
- </data>
- <data>
- <variable>defaultFileEncoding</variable>
- <value type="QByteArray">System</value>
- </data>
- <data>
- <variable>project</variable>
- <valuemap type="QVariantMap"/>
- </data>
-</qtcreator>
diff --git a/GScribo/GScribo.pro.user.1.3 b/GScribo/GScribo.pro.user.1.3
deleted file mode 100644
index dce13f4..0000000
--- a/GScribo/GScribo.pro.user.1.3
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE QtCreatorProject>
-<qtcreator>
- <data>
- <variable>RunConfiguration0-BaseEnvironmentBase</variable>
- <value type="int">2</value>
- </data>
- <data>
- <variable>RunConfiguration0-CommandLineArguments</variable>
- <valuelist type="QVariantList"/>
- </data>
- <data>
- <variable>RunConfiguration0-ProFile</variable>
- <value type="QString">GScribo.pro</value>
- </data>
- <data>
- <variable>RunConfiguration0-RunConfiguration.name</variable>
- <value type="QString">GScribo</value>
- </data>
- <data>
- <variable>RunConfiguration0-UseDyldImageSuffix</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UseTerminal</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserEnvironmentChanges</variable>
- <valuelist type="QVariantList"/>
- </data>
- <data>
- <variable>RunConfiguration0-UserSetName</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserSetWorkingDirectory</variable>
- <value type="bool">false</value>
- </data>
- <data>
- <variable>RunConfiguration0-UserWorkingDirectory</variable>
- <value type="QString"></value>
- </data>
- <data>
- <variable>RunConfiguration0-type</variable>
- <value
type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
- </data>
- <data>
- <variable>activeRunConfiguration</variable>
- <value type="int">0</value>
- </data>
- <data>
- <variable>activebuildconfiguration</variable>
- <value type="QString">Debug</value>
- </data>
- <data>
- <variable>buildConfiguration-Debug</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <value key="QtVersionId" type="int">0</value>
- <value key="ToolChain" type="int">0</value>
- <value key="addQDumper" type=""></value>
- <value key="buildConfiguration" type="int">2</value>
- </valuemap>
- </data>
- <data>
- <variable>buildConfiguration-Release</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- <value key="QtVersionId" type="int">0</value>
- <value key="addQDumper" type=""></value>
- <value key="buildConfiguration" type="int">0</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-e8Ai0asIF8,guid=40cd8e30a2205708b63bff1e00011544</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=8827</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-zNmFSg8766/agent.8766</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdm1MPCSW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360845394.397476-591106291</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo/GScribo.pro</value>
- <value type="QString">-spec</value>
- <value type="QString">linux-g++</value>
- <value type="QString">-r</value>
- <value type="QString">CONFIG+=debug</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/qmake-qt4</value>
- <value key="abstractProcess.enabled"
type="bool">false</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-e8Ai0asIF8,guid=40cd8e30a2205708b63bff1e00011544</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=8827</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-zNmFSg8766/agent.8766</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdm1MPCSW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360845394.397476-591106291</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">false</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Debug-cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Debug</value>
- <valuelist key="abstractProcess.Environment"
type="QVariantList">
- <value
type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-e8Ai0asIF8,guid=40cd8e30a2205708b63bff1e00011544</value>
- <value type="QString">DESKTOP_SESSION=fluxbox</value>
- <value type="QString">DISPLAY=:0.0</value>
- <value type="QString">GDMSESSION=fluxbox</value>
- <value type="QString">GDM_LANG=fr_FR.UTF-8</value>
- <value type="QString">GDM_XSERVER_LOCATION=local</value>
- <value type="QString">GTK_MODULES=canberra-gtk-module</value>
- <value type="QString">HOME=/lrde/home/stage/froger_a</value>
- <value type="QString">LANG=fr_FR.UTF-8</value>
- <value type="QString">LANGUAGE=</value>
- <value
type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
- <value type="QString">LOGNAME=froger_a</value>
- <value
type="QString">PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games</value>
- <value
type="QString">PWD=/lrde/home/stage/froger_a/qt/GScribo</value>
- <value type="QString">QTDIR=/usr/share/qt4</value>
- <value type="QString">SHELL=/bin/bash</value>
- <value type="QString">SHLVL=2</value>
- <value type="QString">SSH_AGENT_PID=8827</value>
- <value
type="QString">SSH_AUTH_SOCK=/tmp/ssh-zNmFSg8766/agent.8766</value>
- <value type="QString">TERM=xterm</value>
- <value type="QString">USER=froger_a</value>
- <value type="QString">USERNAME=froger_a</value>
- <value type="QString">WINDOWID=10485784</value>
- <value type="QString">WINDOWPATH=7:8:8</value>
- <value type="QString">XAUTHORITY=/tmp/.gdm1MPCSW</value>
- <value
type="QString">XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/</value>
- <value
type="QString">XDG_SESSION_COOKIE=9a5c41ad78622411b8e25b00459a554f-1360845394.397476-591106291</value>
- <value type="QString">XTERM_LOCALE=fr_FR.UTF-8</value>
- <value type="QString">XTERM_SHELL=/bin/bash</value>
- <value type="QString">XTERM_VERSION=XTerm(261)</value>
- </valuelist>
- <value key="abstractProcess.IgnoreReturnValue"
type="bool">true</value>
- <valuelist key="abstractProcess.arguments"
type="QVariantList">
- <value type="QString">clean</value>
- <value type="QString">-w</value>
- </valuelist>
- <value key="abstractProcess.command"
type="QString">/usr/bin/make</value>
- <value key="abstractProcess.enabled"
type="bool">true</value>
- <value key="abstractProcess.workingDirectory"
type="QString">/amd/nfs/volume1/home/stage/froger_a/qt/GScribo</value>
- <value key="cleanConfig" type="bool">true</value>
- <valuelist key="makeargs" type="QVariantList">
- <value type="QString">clean</value>
- </valuelist>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfiguration-Release-cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString">Release</value>
- </valuemap>
- </data>
- <data>
- <variable>buildconfigurations</variable>
- <valuelist type="QVariantList">
- <value type="QString">Debug</value>
- <value type="QString">Release</value>
- </valuelist>
- </data>
- <data>
- <variable>buildstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- <value key="mkspec" type="QString"></value>
- </valuemap>
- </data>
- <data>
- <variable>buildstep1</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- </valuemap>
- </data>
- <data>
- <variable>buildsteps</variable>
- <valuelist type="QVariantList">
- <value type="QString">trolltech.qt4projectmanager.qmake</value>
- <value type="QString">trolltech.qt4projectmanager.make</value>
- </valuelist>
- </data>
- <data>
- <variable>cleanstep0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.BuildConfiguration.DisplayName"
type="QString"></value>
- <value key="clean" type="bool">true</value>
- </valuemap>
- </data>
- <data>
- <variable>cleansteps</variable>
- <valuelist type="QVariantList">
- <value type="QString">trolltech.qt4projectmanager.make</value>
- </valuelist>
- </data>
- <data>
- <variable>defaultFileEncoding</variable>
- <value type="QByteArray">System</value>
- </data>
- <data>
- <variable>project</variable>
- <valuemap type="QVariantMap"/>
- </data>
-</qtcreator>
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/generaloptions.ui
b/GScribo/Preferences/generaloptions.ui
deleted file mode 100644
index 5839c27..0000000
--- a/GScribo/Preferences/generaloptions.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/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/ocroptions.ui b/GScribo/Preferences/ocroptions.ui
deleted file mode 100644
index d001c64..0000000
--- a/GScribo/Preferences/ocroptions.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/GScribo/Preferences/optionwidget.h b/GScribo/Preferences/optionwidget.h
deleted file mode 100644
index e0979d2..0000000
--- a/GScribo/Preferences/optionwidget.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef OPTIONWIDGET_H
-#define OPTIONWIDGET_H
-
-#include <QWidget>
-
-struct OptionWidget :
- public QWidget
-{
- explicit OptionWidget(QWidget * parent) : QWidget(parent) {}
-
- virtual void loadConfig() {}
- virtual void saveConfig() {}
-};
-
-#endif // OPTIONWIDGET_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/preferencesdialog.ui
b/GScribo/Preferences/preferencesdialog.ui
deleted file mode 100644
index 1d40563..0000000
--- a/GScribo/Preferences/preferencesdialog.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/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/preprocessingoptions.ui
b/GScribo/Preferences/preprocessingoptions.ui
deleted file mode 100644
index 962cf49..0000000
--- a/GScribo/Preferences/preprocessingoptions.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/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/Preferences/segmentationoptions.ui
b/GScribo/Preferences/segmentationoptions.ui
deleted file mode 100644
index 485e448..0000000
--- a/GScribo/Preferences/segmentationoptions.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/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/abstractregionitem.h
b/GScribo/Rendering/abstractregionitem.h
deleted file mode 100644
index 02b889b..0000000
--- a/GScribo/Rendering/abstractregionitem.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef ABSTRACTREGIONITEM_H
-#define ABSTRACTREGIONITEM_H
-
-#include <QGraphicsItem>
-
-class AbstractRegionItem :
- public QGraphicsItem
-{
- public:
- explicit AbstractRegionItem(QGraphicsItem *parent = 0, QGraphicsScene *scene =
0);
-};
-
-#endif // ABSTRACTREGIONITEM_H
diff --git a/GScribo/Rendering/backgroundtexture.h
b/GScribo/Rendering/backgroundtexture.h
deleted file mode 100644
index 22c8d0c..0000000
--- a/GScribo/Rendering/backgroundtexture.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef BACKGROUNDTEXTURE_H
-#define BACKGROUNDTEXTURE_H
-
-#include <QPixmap>
-
-class BackgroundTexture : public QPixmap
-{
- public:
- explicit BackgroundTexture(const QPixmap& );
-};
-
-#endif // BACKGROUNDTEXTURE_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/Rendering/selection.h b/GScribo/Rendering/selection.h
deleted file mode 100644
index ace8f01..0000000
--- a/GScribo/Rendering/selection.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SELECTION_H
-#define SELECTION_H
-
-#include <QGraphicsRectItem>
-#include <climits>
-#include <QPen>
-
-class Selection :
- public QGraphicsRectItem
-{
- public:
- explicit Selection(QGraphicsScene *scene = 0);
- explicit Selection(const QRectF& rect, QGraphicsScene *scene = 0);
- explicit Selection(qreal x, qreal y, qreal width, qreal height, QGraphicsScene
*scene = 0);
-
- private:
- void init();
-};
-
-#endif // SELECTION_H
diff --git a/GScribo/TODO b/GScribo/TODO
deleted file mode 100644
index 8e7b556..0000000
--- a/GScribo/TODO
+++ /dev/null
@@ -1,100 +0,0 @@
-* Concerning the configurations :
- - Register the location of the different widget and if they are visible/ invisible to
restore it on the next utilisation of the gui.
-
-
-* Concerning the menu bar :
- - Assign shortcuts for each buttons.
-
-
-* Concerning the xml widget :
- - Can modify in real time the proxy with a regular expression. When the user click on a
check box in the region widget, a new regular expression is created an sent to the xml
widget but the proxy is not modified by this regular expression.
- - In the table tree (the attributes tree), set the max of the header splitter. Currently
it can be moved indefinitely to the right.
- - Fit the splitter to the content of the first column when an attributes node is
loaded.
- - My be some color corresponding to the graphics item of the scene.
- - The organisation of the class and the two views are not perfect.
-
-
-* Concerning the scene :
- - Give the possibility to the user to remove some region.
- - Can create/ fusion some region : sometimes two line regions are splitted but will not
be.
- - Optimize the collision between the rectangle item and the regions. Currently it do not
take into account if the region is visible by the view before calculating the collision.
- - Use OpenGL to speed up graphics rendering (the gui has been developped with Qt 4.7,
OpenGL was still experimental so it was really slow when updating the scene).
- - Create a little widget at the bottom of the scene with the % of scale, the
possibility to fit the scene rect or to scale it at 100% (just like gwenview).
- - May be give the possibility to change the color.
- - May be some options one right click.
-
-
-* Concerning the region widget :
- - As stated bove, connect this widget with the xml widget.
- - Find a better way to get region names and colors.
-
-
-* Concerning the page widget :
- - Load less thumbnails (just the necessary to draw it on the widget) because sometimes,
pictures are heavy.
- - May be use a progress dialog during the loading where a large number of pictures are
loaded.
- - Offer the possibility to down/ upscale thumbnails.
- - Allow the user to move ine the widget with arrow keys.
- - Create also a button to delete selected items (rather than the key 'delete').
- - During the segmentation, give the possibility to segment selected thumbnails, all
thumbnails or juste the current.
- - For each thumbnails, paint at his bottom a little progress dialog to check if the
picture has already been segmented, not segmented or ongoing segmentation.
-
-* Concerning the progress dialog :
- - Center on the main window.
-
-
-* Concerning the xml file :
- - Stop using the static array representation of the internal data structure for graphics
region.
- - Change the way we check if the user allows OCR to recognize the text or just segment.
- - Find a better way to run through all node representing a graphics item without knowing
it in advance. For exemple, the xml file looks like this :
-
-
-
- -Metadata
- |- ...
- |- ...
- |- ... Some informations about the creator etc...
- -Page
- |- TextRegion
-
- |- Coords
-
- |- Points
- ... ...
-
- |- Line
-
- |- Coords
-
- |- Points
- ...
- ... <---- All the graphical stuff is here.
- ...
-
- |- VerticalSeparatorRegion
-
- |- Coords
-
- |- Points
- ...
- ...
- ...
-
-
- Graphical items are after pages and node containing informations looks like : *Region
-> Coords -> Points and is located in the root node named "Page" so there
is a way to find graphical item without knowing their location and name before.
-
-
-* Concerning tool bar :
- - Create one \o/.
- - Create icons to replace text.
- - Add new functionnalities.
-
-
-* Create a text viewer :
- - Give the possibility to modify the text.
- - ______________________ move picture.
- - ______________________ load arrays, tables, etc ...
- - Create a custom tool bar to save, load, etc ...
-
-
-* For other idea of interfaces using Qt :
- - gwenview (picture visionnary, good ideas here).
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/xmldelegate.h b/GScribo/XmlWidget/xmldelegate.h
deleted file mode 100644
index 3751a94..0000000
--- a/GScribo/XmlWidget/xmldelegate.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef XMLDELEGATE_H
-#define XMLDELEGATE_H
-
-#include <QStyledItemDelegate>
-#include<QPainter>
-
-class XmlDelegate :
- public QStyledItemDelegate
-{
- public:
- explicit XmlDelegate(int role = Qt::DisplayRole, QObject *parent = 0) :
QStyledItemDelegate(parent) { role_ = role; }
- inline void paint(QPainter *painter, const QStyleOptionViewItem& option,
const QModelIndex& index) const;
-
- inline void setRole(int role);
- inline int role() const;
-
- private:
- int role_;
-};
-
-inline void XmlDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option,
const QModelIndex& index) const
-{ QStyledItemDelegate::paint(painter, option, index); painter->drawText(option.rect,
index.data(role_).toString()); }
-
-inline void XmlDelegate::setRole(int role)
-{ role_ = role; }
-
-inline int XmlDelegate::role() const
-{ return role_; }
-
-#endif // XMLDELEGATE_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/dir.h b/GScribo/dir.h
deleted file mode 100644
index a6c036b..0000000
--- a/GScribo/dir.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef DIR_H
-#define DIR_H
-
-#define SCRIBO_LOCAL_DEMODIR
"/lrde/home/stage/froger_a/olena/_build/scribo/demo"
-#define SCRIBO_PREFIX_BINDIR "/usr/local/bin"
-
-#endif // DIR_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/mainwindow.ui b/GScribo/mainwindow.ui
deleted file mode 100644
index 0512da9..0000000
--- a/GScribo/mainwindow.ui
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>800</width>
- <height>600</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>MainWindow</string>
- </property>
- <widget class="QWidget" name="centralWidget">
- <property name="enabled">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>800</width>
- <height>21</height>
- </rect>
- </property>
- </widget>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
-</ui>
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/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk
index 3a14188..6f75d64 100644
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@ -125,6 +125,7 @@ mln_accu_math_count \
mln_accu_math_essential \
mln_accu_math_inf \
mln_accu_math_sum \
+mln_accu_math_sumpow \
mln_accu_math_sup \
mln_accu_max_site \
mln_accu_nil \
@@ -497,6 +498,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 \
@@ -1455,6 +1457,7 @@ 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_sumpow_SOURCES = mln_accu_math_sumpow.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
@@ -1827,6 +1830,7 @@ 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_compute_in_window_SOURCES = mln_data_compute_in_window.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
diff --git a/scribo/demo/viewer/Makefile.am b/scribo/demo/viewer/Makefile.am
index d79abcf..6fa9abb 100644
--- a/scribo/demo/viewer/Makefile.am
+++ b/scribo/demo/viewer/Makefile.am
@@ -19,30 +19,40 @@ include $(top_srcdir)/build-aux/autotroll.mk
bin_PROGRAMS = scribo-viewer
-scribo_viewer_SOURCES = viewer.cc \
+scribo_viewer_SOURCES = mainwindow.cc \
+ aboutdialog.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 \
+ regionwidget.cc \
+ xml.cc \
+ pagesdelegate.cc \
+ pagesmodel.cc \
+ pageswidget.cc \
+ generaloptions.cc \
+ ocroptions.cc \
+ preferencesdialog.cc \
+ preprocessingdialog.cc \
+ segmentationoptions.cc \
preprocess.cc \
process.cc \
- general_options.cc \
- preferences_dialog.cc \
- option_widget.cc \
- config.cc
+ progressdialog.cc \
+ runner.cc \
+ graphicsview.cc \
+ regionitem.cc \
+ scene.cc \
+ selection.cc \
+ attributesmodel.cc \
+ xmlattributes.cc \
+ xmlitem.cc \
+ xmlmodel.cc \
+ xmlview.cc \
+ xmlwidget.cc
+
+
nodist_scribo_viewer_SOURCES = $(BUILT_SOURCES)
+
+
scribo_viewer_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS) -I$(srcdir) \
-I$(top_srcdir)/milena \
-I$(top_srcdir)/scribo \
@@ -50,65 +60,84 @@ scribo_viewer_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS) -I$(srcdir) \
$(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 \
+
+
+BUILT_SOURCES = demodir.hh
+ dockwidget.moc.cc \
+ graphicsview.moc.cc \
+ mainwindow.moc.cc \
+ ocroptions.moc.cc \
+ pagesmodel.moc.cc \
+ pageswidget.moc.cc \
+ preferencesdialog.moc.cc \
preprocess.moc.cc \
+ preprocessingoptions.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
+ progressdialog.moc.cc \
+ regionwidget.moc.cc \
+ runner.moc.cc \
+ scene.moc.cc \
+ segmentationoptions.moc.cc \
+ xmlview.moc.cc \
+ xmlwidget.moc.cc \
+ aboutdialog.ui.h \
+ generaloptions.ui.h \
+ mainwindow.ui.h \
+ ocroptions.ui.h \
+ preferencesdialog.ui.h \
+ preprocessingoptions.ui.h \
+ segmentationoptions.ui.h
+
+
+noinst_HEADERS = mainwindow.hh \
+ aboutdialog.hh \
+ regionwidget.hh \
+ xml.hh \
+ pagesdelegate.hh \
+ pagesmodel.hh \
+ pageswidget.hh \
+ generaloptions.hh \
+ ocroptions.hh \
+ optionwidget.hh \
+ preferencesdialog.hh \
+ preprocessingoptions.hh \
+ segmentationoptions.hh \
+ preprocess.hh \
+ process.hh \
+ progressdialog.hh \
+ runner.hh \
+ graphicsview.hh \
+ regionitem.hh \
+ rootgraphicsitem.hh \
+ scene.hh \
+ selection.hh \
+ attributesmodel.hh \
+ selectionproxy.hh \
+ xmlattributes.hh \
+ xmldelegate.hh \
+ xmlitem.hh \
+ xmlmodel.hh \
+ xmlview.hh \
+ xmlwidget.hh
+
+
# Generated files
@@ -116,6 +145,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 +155,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 \
+ generaloptions.ui \
+ ocroptions.ui \
+ preferencesdialog.ui \
+ preprocessingoptions.ui \
+ segmentationoptions.ui \
+ demodir.hh.in
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/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/scribo/demo/viewer/demodir.hh.in b/scribo/demo/viewer/demodir.hh.in
index f26189d..f946d90 100644
--- a/scribo/demo/viewer/demodir.hh.in
+++ b/scribo/demo/viewer/demodir.hh.in
@@ -24,12 +24,10 @@
// executable file might be covered by the GNU General Public License.
#ifndef SCRIBO_DEMO_DEMODIR_HH
-# define SCRIBO_DEMO_DEMODIR_HH
+#define SCRIBO_DEMO_DEMODIR_HH
+#define SCRIBO_PREFIX_LIBEXECDIR "@libexecdir@"
-# define SCRIBO_PREFIX_LIBEXECDIR "@libexecdir@"
-
-# define SCRIBO_LOCAL_DEMODIR "@abs_demodir@"
-
+#define SCRIBO_LOCAL_DEMODIR "@abs_demodir@"
#endif // !SCRIBO_DEMO_DEMODIR_HH
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..79668f4 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) 2010 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/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
index fd9a48b..b95cc21 100644
--- a/scribo/demo/viewer/preprocess.cc
+++ b/scribo/demo/viewer/preprocess.cc
@@ -16,14 +16,12 @@
#include "preprocess.hh"
-void preprocess::on_progress()
+void Preprocess::on_progress()
{
- emit progress();
+ emit progress();
}
-
-void preprocess::on_new_progress_label(const char *label)
+void Preprocess::on_new_progress_label(const char *label)
{
- QString lbl(label);
- emit new_progress_label(label);
+ emit newProgressLabel(QString(label));
}
diff --git a/scribo/demo/viewer/preprocess.hh b/scribo/demo/viewer/preprocess.hh
index 4562cfb..79120ff 100644
--- a/scribo/demo/viewer/preprocess.hh
+++ b/scribo/demo/viewer/preprocess.hh
@@ -14,28 +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/>.
-#ifndef SCRIBO_DEMO_VIEWER_PREPROCESS_HH
-# define SCRIBO_DEMO_VIEWER_PREPROCESS_HH
+#ifndef PREPROCESS_HH
+#define 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>
+#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;
-struct preprocess
- : public QObject,
- public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8> >
+class Preprocess :
+ public QObject,
+ public text_in_doc_preprocess_functor<mln::image2d<mln::value::rgb8>
>
{
- Q_OBJECT;
+ Q_OBJECT
- virtual void on_progress();
- virtual void on_new_progress_label(const char *label);
+ public:
+ virtual void on_progress();
+ virtual void on_new_progress_label(const char *label);
-signals:
- void new_progress_label(const QString& label);
- void progress();
+ signals:
+ void newProgressLabel(const QString& label);
+ void progress();
};
-#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESS_HH
+#endif // 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
index 8fa5b9f..1c2d22f 100644
--- a/scribo/demo/viewer/process.cc
+++ b/scribo/demo/viewer/process.cc
@@ -16,27 +16,22 @@
#include "process.hh"
-process::process(const char *doc_filename)
- : super_t(doc_filename)
+Process::Process(const char *doc_filename)
+ : superT(doc_filename)
{
-
}
-void process::on_progress()
+void Process::on_progress()
{
- emit progress();
+ emit progress();
}
-
-void process::on_new_progress_label(const char *label)
+void Process::on_new_progress_label(const char *label)
{
- QString lbl(label);
- emit new_progress_label(label);
+ emit newProgressLabel(QString(label));
}
-
-void process::on_xml_saved()
+void Process::on_xml_saved()
{
- QString filename(output_file.c_str());
- emit xml_saved(filename);
+ emit xmlSaved(QString(output_file.c_str()));
}
diff --git a/scribo/demo/viewer/process.hh b/scribo/demo/viewer/process.hh
index 09ace43..b5877b7 100644
--- a/scribo/demo/viewer/process.hh
+++ b/scribo/demo/viewer/process.hh
@@ -14,33 +14,32 @@
// 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
+#ifndef PROCESS_HH
+#define PROCESS_HH
-# include <QtCore/QObject>
-# include <mln/core/image/image2d.hh>
-# include <scribo/toolchain/internal/content_in_doc_functor.hh>
+#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> >
+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);
+ 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 // ! SCRIBO_DEMO_VIEWER_PROCESS_HH
+#endif // PROCESS_HH
diff --git a/scribo/demo/viewer/runner.cc b/scribo/demo/viewer/runner.cc
index da2f3bf..2cf8e97 100644
--- a/scribo/demo/viewer/runner.cc
+++ b/scribo/demo/viewer/runner.cc
@@ -1,5 +1,4 @@
-// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -17,227 +16,184 @@
#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())
+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;
+ 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)
+Runner::Runner(QObject *parent) :
+ QThread(parent)
{
- moveToThread(this);
+ moveToThread(this);
}
-
-void runner::run()
+void Runner::run()
{
-
- switch(mode_)
- {
- default:
- case Demat:
+ if(mode_ == Demat)
{
- image2d<value::rgb8> ima;
- io::magick::load(ima, args_.at(0).toUtf8().constData());
-
- image2d<bool> bin_ima = preprocess(ima);
- process(ima, bin_ima);
+ 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);
+ }
}
- break;
- case Export:
- export_as();
- break;
- }
+ else if(mode_ == Export)
+ export_as();
- emit finished();
- qDebug() << "Done.";
+ emit finished();
}
-
-void runner::stop()
+void Runner::stop()
{
- terminate();
+ terminate();
}
-
-
// Demat related stuff
-
-void runner::start_demat(const QString& filename)
+void Runner::start_demat(const QStringList& filenames)
{
- args_.clear();
- args_ << filename;
- mode_ = Demat;
-
- QThread::start();
+ args_.clear();
+ args_ = filenames;
+ mode_ = Demat;
+ QThread::start();
}
-image2d<bool>
-runner::preprocess(const image2d<value::rgb8>& ima)
+image2d<bool> Runner::preprocess(const image2d<value::rgb8>& ima)
{
- emit new_step("Preprocessing");
-
- ::preprocess f;
+ emit new_step("Preprocessing");
+ Preprocess f;
- // Load config.
- config * const conf = config::get_instance();
+ // Load config.
+ Configs *const conf = Configs::getInstance();
- 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(progress()), this, SIGNAL(progress()));
+ connect(&f, SIGNAL(newProgressLabel(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.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->preprocessing_bin_algo());
+ f.binarization_algo =
static_cast<Binarization_Algo>(conf->preprocessingBinAlgo());
- emit new_progress_max_value(f.nsteps());
+ emit new_progress_max_value(f.nsteps());
- // Perform preprocessing.
- f(ima);
+ // Perform preprocessing.
+ f(ima);
- qDebug() << "Preprocess Done.";
- return f.output;
+ return f.output;
}
-void runner::process(const image2d<value::rgb8>& original_ima,
- const image2d<bool>& processed_ima)
+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(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!";
+ emit new_step("Page segmentation");
- 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();
+ Process f(args_.at(arg).toUtf8().constData());
- emit new_progress_max_value(f.nsteps());
+ 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&)));
- // Perform text detection.
- f(original_ima, processed_ima);
+ // Load config.
+ Configs *const conf = Configs::getInstance();
- qDebug() << "Process Done.";
-}
+ 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());
-// Export related stuff
+ // Perform text detection.
+ f(original_ima, processed_ima);
+}
-void runner::start_export(const QString& imgfile,
- const QString& xmlfile, const QString& outfile)
+// Export related stuff
+void Runner::start_export(const QString& imgfile,
+ const QString& xmlfile, const QString& outfile)
{
- args_.clear();
- args_ << imgfile << xmlfile << outfile;
- mode_ = Export;
+ args_.clear();
+ args_ << imgfile << xmlfile << outfile;
+ mode_ = Export;
- QThread::start();
+ QThread::start();
}
-
-void runner::export_as()
+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!");
+ 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
index 176dcd8..ee0e537 100644
--- a/scribo/demo/viewer/runner.hh
+++ b/scribo/demo/viewer/runner.hh
@@ -14,60 +14,61 @@
// 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>
+#ifndef RUNNER_HH
+#define RUNNER_HH
+
+#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 "demodir.hh"
using namespace mln;
enum RunMode
{
- Demat,
- Export
+ Demat,
+ Export
};
-class runner : public QThread
+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_;
+ 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 // ! SCRIBO_DEMO_VIEWER_RUNNER_HH
+#endif // 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/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_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