Milena (Olena)
User documentation 2.0a Id
|
00001 // Copyright (C) 2009 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 #ifndef APPS_GRAPH_MORPHO_DEBUG_HH 00027 # define APPS_GRAPH_MORPHO_DEBUG_HH 00028 00031 00032 # include <mln/core/alias/complex_image.hh> 00033 # include <mln/core/image/image2d.hh> 00034 00035 # include <mln/debug/println.hh> 00036 00037 # include "apps/graph-morpho/convert.hh" 00038 00039 00040 namespace debug 00041 { 00042 00044 void 00045 println_graph(const std::string& message, const mln::image2d<bool>& input) 00046 { 00047 // INPUT must have odd numbers of rows and columns. 00048 mln_precondition(input.nrows() % 2 == 1); 00049 mln_precondition(input.ncols() % 2 == 1); 00050 00051 mln::image2d<char> output; 00052 mln::initialize(output, input); 00053 for (int row = input.domain().pmin().row(); 00054 row <= input.domain().pmax().row(); ++row) 00055 { 00056 if (row % 2 == 0) 00057 // Even row: line with vertices and horizontal edges. 00058 for (int col = input.domain().pmin().col(); 00059 col <= input.domain().pmax().col(); ++col) 00060 { 00061 mln::point2d p(row, col); 00062 if (col % 2 == 0) 00063 // Even column: vertex. 00064 output(p) = input(p) ? 'O' : '.'; 00065 else 00066 // Odd column: horizontal edge. 00067 output(p) = input(p) ? '-' : ' '; 00068 } 00069 else 00070 // Odd row: line with vertical edges and inter-edge spaces 00071 // (squares). 00072 for (int col = input.domain().pmin().col(); 00073 col <= input.domain().pmax().col(); ++col) 00074 { 00075 mln::point2d p(row, col); 00076 if (col % 2 == 0) 00077 // Even column: vertical edge. 00078 output(p) = input(p) ? '|' : ' '; 00079 else 00080 // Odd column: space. 00081 output(p) = ' '; 00082 } 00083 } 00084 mln::debug::println(message, output); 00085 } 00086 00087 00089 void 00090 println_graph(const std::string& message, 00091 const mln::bin_1complex_image2d& input) 00092 { 00093 println_graph(message, convert::to_image2d(input)); 00094 } 00095 00096 } // end of namespace debug 00097 00098 00099 #endif // ! APPS_GRAPH_MORPHO_DEBUG_HH