00001 // Copyright (C) 2009, 2010 EPITA Research and Development Laboratory (LRDE) 00002 // 00003 // This file is part of Olena. 00004 // 00005 // Olena is free software: you can redistribute it and/or modify it under 00006 // the terms of the GNU General Public License as published by the Free 00007 // Software Foundation, version 2 of the License. 00008 // 00009 // Olena is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // General Public License for more details. 00013 // 00014 // You should have received a copy of the GNU General Public License 00015 // along with Olena. If not, see <http://www.gnu.org/licenses/>. 00016 // 00017 // As a special exception, you may use this file as part of a free 00018 // software project without restriction. Specifically, if other files 00019 // instantiate templates or use macros or inline functions from this 00020 // file, or you compile this file and link it with other files to produce 00021 // an executable, this file does not by itself cause the resulting 00022 // executable to be covered by the GNU General Public License. This 00023 // exception does not however invalidate any other reasons why the 00024 // executable file might be covered by the GNU General Public License. 00025 00026 #include <mln/io/magick/load.hh> 00027 00028 #include <mln/io/pbm/load.hh> 00029 #include <mln/io/pgm/load.hh> 00030 #include <mln/io/ppm/load.hh> 00031 00032 #include <mln/data/compare.hh> 00033 00034 #include <mln/core/image/image2d.hh> 00035 00036 #include <mln/value/rgb8.hh> 00037 00038 #include "tests/data.hh" 00039 00040 00041 int main(int /* argc */, char* argv[]) 00042 { 00043 using namespace mln; 00044 00045 /* From http://www.graphicsmagick.org/Magick++/Image.html: 00046 00047 The InitializeMagick() function MUST be invoked before 00048 constructing any Magick++ objects. This used to be optional, 00049 but now it is absolutely required. This function initalizes 00050 semaphores and configuration information necessary for the 00051 software to work correctly. Failing to invoke 00052 InitializeMagick() is likely to lead to a program crash or 00053 thrown assertion. If the program resides in the same directory 00054 as the GraphicsMagick files, then argv[0] may be passed as an 00055 argument so that GraphicsMagick knows where its files reside, 00056 otherwise NULL may be passed and GraphicsMagick will try to use 00057 other means (if necessary). */ 00058 Magick::InitializeMagick(*argv); 00059 00060 // Compare Milena's built-in PBM loaded and Magick++'s support for PBM. 00061 { 00062 typedef image2d<bool> I; 00063 I mln_lena; 00064 io::pbm::load(mln_lena, MLN_IMG_DIR "/tiny.pbm"); 00065 I magick_lena; 00066 io::magick::load(magick_lena, MLN_IMG_DIR "/tiny.pbm"); 00067 mln_assertion(mln_lena == magick_lena); 00068 } 00069 00070 // Compare Milena's built-in PGM loaded and Magick++'s support for PGM. 00071 { 00072 typedef image2d<value::int_u8> I; 00073 I mln_lena; 00074 io::pgm::load(mln_lena, MLN_IMG_DIR "/tiny.pgm"); 00075 I magick_lena; 00076 io::magick::load(magick_lena, MLN_IMG_DIR "/tiny.pgm"); 00077 mln_assertion(mln_lena == magick_lena); 00078 } 00079 00080 // Compare Milena's built-in PPM loaded and Magick++'s support for PPM. 00081 { 00082 typedef image2d<value::rgb8> I; 00083 I mln_lena; 00084 io::ppm::load(mln_lena, MLN_IMG_DIR "/tiny.ppm"); 00085 I magick_lena; 00086 io::magick::load(magick_lena, MLN_IMG_DIR "/tiny.ppm"); 00087 mln_assertion(mln_lena == magick_lena); 00088 } 00089 00090 00091 // Check Magick++'s support for PNG. 00092 { 00093 typedef image2d<value::rgb8> I; 00094 I lena_ppm; 00095 io::ppm::load(lena_ppm, MLN_IMG_DIR "/tiny.ppm"); 00096 I lena_png; 00097 io::magick::load(lena_png, MLN_TESTS_IMG_DIR "/tiny.png"); 00098 mln_assertion(lena_ppm == lena_png); 00099 } 00100 }