---
.../core/image/{gimp-image.hh => gimp_image.hh} | 26 +++++++++--
milena/mln/literal/colors.hh | 6 +-
milena/mln/literal/grays.hh | 10 ++++-
scribo/demo/scribogimpplugin/src/main.cc | 45 +++++++++-----------
.../scribogimpplugin/src/preferences_dialog.cc | 16 ++++----
.../scribogimpplugin/src/preferences_dialog.hh | 13 ++----
scribo/demo/scribogimpplugin/src/runner.cc | 23 +++++++---
scribo/demo/scribogimpplugin/src/runner.hh | 16 ++++---
.../binarization/internal/sauvola_formula.hh | 4 +-
9 files changed, 93 insertions(+), 66 deletions(-)
rename milena/mln/core/image/{gimp-image.hh => gimp_image.hh} (97%)
diff --git a/milena/mln/core/image/gimp-image.hh b/milena/mln/core/image/gimp_image.hh
similarity index 97%
rename from milena/mln/core/image/gimp-image.hh
rename to milena/mln/core/image/gimp_image.hh
index 112dc16..56d97bd 100644
--- a/milena/mln/core/image/gimp-image.hh
+++ b/milena/mln/core/image/gimp_image.hh
@@ -33,8 +33,17 @@
/// GIMP image wrapper.
/// \todo Handle mln::duplicate(gimp_image)
+
+# include <iostream>
+# include <sstream>
+
+extern "C"
+{
+// Qt define this macro which collides with GTK symbols.
+//# undef signals
# include <libgimp/gimp.h>
# include <libgimp/gimpui.h>
+}
# include <mln/core/concept/proxy.hh>
# include <mln/core/internal/image_primary.hh>
@@ -51,9 +60,6 @@
# include <mln/core/w_window.hh>
-# include <iostream>
-# include <sstream>
-
namespace mln
{
@@ -331,7 +337,10 @@ namespace mln
/// Gimp Image method
/// Give a hook to the GimpDrawable.
- GimpDrawable* gimp_drawable_();
+ GimpDrawable* gimp_drawable_() const;
+
+ /// Return GimpDrawable's image ID.
+ gint32 gimp_image_id_() const;
};
@@ -519,11 +528,18 @@ namespace mln
template <GimpImageType TI>
GimpDrawable*
- gimp_image<TI>::gimp_drawable_()
+ gimp_image<TI>::gimp_drawable_() const
{
return this->data_->drawable_;
}
+ template <GimpImageType TI>
+ gint32
+ gimp_image<TI>::gimp_image_id_() const
+ {
+ return gimp_drawable_get_image(this->data_->drawable_->drawable_id);
+ }
+
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/literal/colors.hh b/milena/mln/literal/colors.hh
index 099d2c7..64b059d 100644
--- a/milena/mln/literal/colors.hh
+++ b/milena/mln/literal/colors.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2007, 2008, 2009 EPITA Research and Development
+// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -183,9 +183,9 @@ namespace mln
const olive_t& olive = olive_t();
-# endif
+# endif // ! MLN_WO_GLOBAL_VARS
-# endif
+# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln::literal
diff --git a/milena/mln/literal/grays.hh b/milena/mln/literal/grays.hh
index 79aef78..7a7f330 100644
--- a/milena/mln/literal/grays.hh
+++ b/milena/mln/literal/grays.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2007, 2008, 2009, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -61,15 +62,20 @@ namespace mln
/// Literal dark gray.
extern const dark_gray_t& dark_gray;
+
# ifndef MLN_INCLUDE_ONLY
+# ifndef MLN_WO_GLOBAL_VARS
+
const light_gray_t& light_gray = light_gray_t();
const medium_gray_t& medium_gray = medium_gray_t();
const dark_gray_t& dark_gray = dark_gray_t();
-# endif // !MLN_INCLUDE_ONLY
+# endif // ! MLN_WO_GLOBAL_VARS
+
+# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln::literal
diff --git a/scribo/demo/scribogimpplugin/src/main.cc
b/scribo/demo/scribogimpplugin/src/main.cc
index 855a6ad..c56d32a 100644
--- a/scribo/demo/scribogimpplugin/src/main.cc
+++ b/scribo/demo/scribogimpplugin/src/main.cc
@@ -1,16 +1,14 @@
#include "config.h"
-extern "C"
-{
-#include <libgimp/gimp.h>
-}
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#undef MLN_WO_GLOBAL_VARS
-#include <gimp-image.hh>
+
+#include <mln/core/image/gimp_image.hh>
+
#include <QApplication>
#include <QMainWindow>
@@ -27,6 +25,7 @@ extern "C"
#include <preferences_dialog.hh>
+
extern "C"
{
static void query_proc(void);
@@ -143,26 +142,17 @@ extern "C"
// Begin of GIMP2Milena image
// ==========================
- // FIXME: move into the switch/case below.
- GimpPixelRgn in;
- gint32 x1, y1, x2, y2;
+ gint32 drawable_id = param[2].data.d_drawable;
+ GimpDrawable *drawable = gimp_drawable_get(drawable_id);
- gint32 drawable_id = param[2].data.d_drawable;
- GimpDrawable *drawable = gimp_drawable_get(drawable_id);
+ typedef mln::gimp_image<GIMP_RGB_IMAGE> I;
- gimp_drawable_mask_bounds(drawable_id, &x1, &y1, &x2, &y2);
- gint32 width = drawable->width;
- gint32 height = drawable->height;
-
- gimp_pixel_rgn_init(&in, drawable, x1, y1, x2, y2, FALSE, FALSE);
-
- typedef mln::gimp_image<GIMP_RGB_IMAGE> I;
- I tmp(&in);
- mln::image2d<mln::value::rgb8> input(height, width);
- std::cout << "Paste data into Olena image" << std::endl;
- mln::data::paste(tmp, input);
- mln::io::ppm::save(input, "/tmp/gimp_out.ppm");
- std::cout << "Paste data into Olena image: Done." <<
std::endl;
+ mln::util::timer t;
+ t.start();
+ I input(drawable);
+ t.stop();
+ std::cout << "Milena Gimp image built in " << t <<
"s" << std::endl;
+ t.restart();
// // Create a new image
// gint32 new_image_id = gimp_image_new(width,
@@ -170,7 +160,7 @@ extern "C"
// gimp_image_base_type(param[1].data.d_image));
// /* create new layer */
// gint32 new_layer_id = gimp_layer_new(new_image_id,
- // "titi",
+ // "DIA Output",
// width, height,
// gimp_drawable_type(drawable_id),
// 100,
@@ -210,7 +200,7 @@ extern "C"
case GIMP_RUN_INTERACTIVE:
{
preferences_dialog dialog;
- dialog.set_current_image(input, param[1].data.d_image);
+ dialog.set_current_image(input);
dialog.show();
// Run application.
@@ -238,7 +228,12 @@ extern "C"
}
break;
}
+
+ t.stop();
+ std::cout << "Gimp image processed in " << t <<
"s" << std::endl;
+
}
+
}
diff --git a/scribo/demo/scribogimpplugin/src/preferences_dialog.cc
b/scribo/demo/scribogimpplugin/src/preferences_dialog.cc
index 8daea32..b5253c6 100644
--- a/scribo/demo/scribogimpplugin/src/preferences_dialog.cc
+++ b/scribo/demo/scribogimpplugin/src/preferences_dialog.cc
@@ -28,6 +28,7 @@
#include <mln/data/convert.hh>
#include <mln/data/paste_without_localization.hh>
#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/data/paste.hh>
preferences_dialog::preferences_dialog(QWidget *parent)
@@ -75,10 +76,10 @@ preferences_dialog::~preferences_dialog()
}
-void preferences_dialog::set_current_image(const
mln::image2d<mln::value::rgb8>& ima, gint32 image_id)
+void preferences_dialog::set_current_image(const
mln::gimp_image<GIMP_RGB_IMAGE>& ima)
{
current_image_ = ima;
- image_id_ = image_id;
+ image_id_ = ima.gimp_image_id_();
}
@@ -192,17 +193,16 @@ void preferences_dialog::diplay_result()
{
std::cout << "Creating result image" << std::endl;
- // Make sure there is not border in input image.
- mln::border::resize(current_image_, 0);
-
// Getting retrieved document.
const scribo::document<L>& doc = runner_.result();
- image2d<value::qt::rgb32> in_32 = data::convert(value::qt::rgb32(),
current_image_);
+ image2d<value::rgb8> in_24; // FIXME: to be removed!
+ data::paste(current_image_, in_24);
+ image2d<value::qt::rgb32> in_32 = data::convert(value::qt::rgb32(), in_24);
int
- width = current_image_.bbox().width(),
- height = current_image_.bbox().height();
+ width = current_image_.domain().width(),
+ height = current_image_.domain().height();
// Get active drawable in input image.
gint32 drawable_id = gimp_image_get_active_drawable(image_id_);
diff --git a/scribo/demo/scribogimpplugin/src/preferences_dialog.hh
b/scribo/demo/scribogimpplugin/src/preferences_dialog.hh
index 1e6f163..c6e172c 100644
--- a/scribo/demo/scribogimpplugin/src/preferences_dialog.hh
+++ b/scribo/demo/scribogimpplugin/src/preferences_dialog.hh
@@ -18,20 +18,15 @@
#ifndef SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH
# define SCRIBO_DEMO_VIEWER_PREFERENCES_DIALOG_HH
-extern "C"
-{
-#include <libgimp/gimp.h>
-}
-
+# include <mln/core/image/gimp_image.hh>
-# include <QtGui>
# include <preferences_dialog.ui.h>
# include <runner.hh>
# include <mln/core/image/image2d.hh>
# include <scribo/core/def/lbl_type.hh>
-
+# include <QtGui>
class preferences_dialog : public QDialog, private Ui::PreferencesDialog
{
@@ -43,7 +38,7 @@ public:
preferences_dialog(QWidget *parent = 0);
~preferences_dialog();
- void set_current_image(const mln::image2d<mln::value::rgb8>& ima, gint32
image_id);
+ void set_current_image(const mln::gimp_image<GIMP_RGB_IMAGE>& ima);
private slots:
void on_optionList_currentRowChanged(int row);
@@ -63,7 +58,7 @@ private: // Attributes
runner runner_;
QProgressDialog pdialog_;
- mln::image2d<mln::value::rgb8> current_image_;
+ mln::gimp_image<GIMP_RGB_IMAGE> current_image_;
gint32 image_id_;
};
diff --git a/scribo/demo/scribogimpplugin/src/runner.cc
b/scribo/demo/scribogimpplugin/src/runner.cc
index 82e83e2..e91d15c 100644
--- a/scribo/demo/scribogimpplugin/src/runner.cc
+++ b/scribo/demo/scribogimpplugin/src/runner.cc
@@ -16,7 +16,6 @@
// along with Olena. If not, see <http://www.gnu.org/licenses/>.
#include "runner.hh"
-
#include <mln/core/image/image2d.hh>
#include <mln/value/rgb8.hh>
#include <mln/io/magick/load.hh>
@@ -68,7 +67,7 @@ void runner::stop()
// Demat related stuff
void
-runner::start_demat(const image2d<value::rgb8>& image)
+runner::start_demat(const gimp_image<GIMP_RGB_IMAGE>& image)
{
args_.clear();
args_ << image;
@@ -90,7 +89,7 @@ runner::progress_value()
}
image2d<bool>
-runner::preprocess(const image2d<value::rgb8>& ima)
+runner::preprocess(const gimp_image<GIMP_RGB_IMAGE>& ima)
{
emit new_step("Preprocessing");
@@ -114,15 +113,21 @@ runner::preprocess(const image2d<value::rgb8>& ima)
emit new_progress_max_value(f.nsteps());
+
+ // FIXME : to be removed. Used to convert gimp_image
+ image2d<value::rgb8> ima_;
+ mln::initialize(ima_, ima);
+ data::paste(ima, ima_);
+
// Perform preprocessing.
- f(ima);
+ f(ima_);
qDebug() << "Preprocess Done.";
return f.output;
}
-void runner::process(const image2d<value::rgb8>& original_ima,
+void runner::process(const gimp_image<GIMP_RGB_IMAGE>& original_ima,
const image2d<bool>& processed_ima)
{
emit new_step("Page segmentation");
@@ -150,8 +155,14 @@ void runner::process(const image2d<value::rgb8>&
original_ima,
emit new_progress_max_value(f.nsteps());
+ // FIXME : to be removed. Used to convert gimp_image
+ image2d<value::rgb8> ima_;
+ mln::initialize(ima_, original_ima);
+ data::paste(original_ima, ima_);
+
+
// Perform text detection.
- f(original_ima, processed_ima);
+ f(ima_, processed_ima);
doc_ = f.doc;
diff --git a/scribo/demo/scribogimpplugin/src/runner.hh
b/scribo/demo/scribogimpplugin/src/runner.hh
index d08e1a0..6611b71 100644
--- a/scribo/demo/scribogimpplugin/src/runner.hh
+++ b/scribo/demo/scribogimpplugin/src/runner.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -17,8 +18,10 @@
#ifndef SCRIBO_DEMO_VIEWER_RUNNER_HH
# define SCRIBO_DEMO_VIEWER_RUNNER_HH
-# include <QtGui>
+# include <mln/core/image/gimp_image.hh>
+# include <QtCore>
+# include <QtGui>
# include <mln/core/image/image2d.hh>
# include <mln/value/rgb8.hh>
# include <mln/value/int_u16.hh>
@@ -27,6 +30,7 @@
using namespace mln;
+
enum RunMode
{
Demat,
@@ -42,7 +46,7 @@ public:
runner(QObject *parent = 0);
- void start_demat(const image2d<value::rgb8>& filename);
+ void start_demat(const gimp_image<GIMP_RGB_IMAGE>& filename);
const doc_t& result() const;
@@ -58,14 +62,14 @@ signals:
void finished();
private: // members
- image2d<bool> preprocess(const image2d<value::rgb8>& ima);
- void process(const image2d<value::rgb8>& original_ima,
+ image2d<bool> preprocess(const gimp_image<GIMP_RGB_IMAGE>& ima);
+ void process(const gimp_image<GIMP_RGB_IMAGE>& original_ima,
const image2d<bool>& processed_ima);
virtual void run();
private: // attributes
- QList<image2d<value::rgb8> > args_;
+ QList<gimp_image<GIMP_RGB_IMAGE> > args_;
RunMode mode_;
int step_;
diff --git a/scribo/scribo/binarization/internal/sauvola_formula.hh
b/scribo/scribo/binarization/internal/sauvola_formula.hh
index 3251abd..adbef13 100644
--- a/scribo/scribo/binarization/internal/sauvola_formula.hh
+++ b/scribo/scribo/binarization/internal/sauvola_formula.hh
@@ -83,8 +83,8 @@ namespace scribo
# ifndef MLN_INCLUDE_ONLY
- bool b;
- double skewness_;
+ // bool b;
+ // double skewness_;
inline
double
--
1.7.2.5