mirror.cc 2.59 KB
Newer Older
Guillaume Lazzara's avatar
Guillaume Lazzara committed
1
// Copyright (C) 2007, 2008, 2009 EPITA Research and Development Laboratory (LRDE)
2
//
3
// This file is part of Olena.
4
//
5
6
7
8
9
// 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,
10
11
12
13
14
// 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
15
// along with Olena.  If not, see <http://www.gnu.org/licenses/>.
16
17
//
// As a special exception, you may use this file as part of a free
18
// software project without restriction.  Specifically, if other files
19
// instantiate templates or use macros or inline functions from this
20
21
22
23
24
// 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.
25

26
27
#include <mln/core/image/image1d.hh>
#include <mln/core/image/image2d.hh>
28
29
#include <mln/debug/iota.hh>
#include <mln/border/mirror.hh>
30
#include <mln/opt/element.hh>
31

32
33
#include <mln/debug/println_with_border.hh>

34
35
36
37
38
using namespace mln;

int
main (void)
{
39
  {
40
41
42
    image1d<int> ima(2, 3);
    debug::iota(ima);
    border::mirror(ima);
43
44
45
46
47
48
49
50
    mln_assertion(opt::element(ima, 0) == 2);
    mln_assertion(opt::element(ima, 1) == 2);
    mln_assertion(opt::element(ima, 2) == 1);
    mln_assertion(opt::element(ima, 3) == 1);
    mln_assertion(opt::element(ima, 4) == 2);
    mln_assertion(opt::element(ima, 5) == 2);
    mln_assertion(opt::element(ima, 6) == 1);
    mln_assertion(opt::element(ima, 7) == 1);
51
52
53
  }


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  // Image2d
  {
    image2d<unsigned> input(2, 2, 4);
    debug::iota(input, 0);
    border::mirror(input);
    debug::println_with_border(input);
  }


  // Image2d
  {
    unsigned ref_data[6][7] = {
      { 1, 1, 4, 5, 6, 3, 3 },
      { 1, 1, 1, 2, 3, 3, 3 },
      { 2, 1, 1, 2, 3, 3, 2 },
      { 5, 4, 4, 5, 6, 6, 5 },
      { 4, 4, 4, 5, 6, 6, 6 },
      { 4, 4, 1, 2, 3, 6, 6 }
    };

74

75
76
77
78
79
    image2d<unsigned> ref = make::image(ref_data);
    image2d<unsigned> input(2, 3, 2);
    image2d<unsigned> res(6, 7, 0);
    debug::iota(input, 0);
    border::mirror(input);
80

81
82
83
84
    data::paste_without_localization(extended_to(input, input.vbbox()), res);

    mln_assertion(res == ref);
  }
85
}