Milena (Olena)
User documentation 2.0a Id
Main Page
Related Pages
Modules
Namespaces
Classes
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerator
Groups
Pages
max_components.hh
1
// Copyright (C) 2008, 2009, 2010, 2011 EPITA Research and Development
2
// Laboratory (LRDE)
3
//
4
// This file is part of Olena.
5
//
6
// Olena is free software: you can redistribute it and/or modify it under
7
// the terms of the GNU General Public License as published by the Free
8
// Software Foundation, version 2 of the License.
9
//
10
// Olena is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
// General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with Olena. If not, see <http://www.gnu.org/licenses/>.
17
//
18
// As a special exception, you may use this file as part of a free
19
// software project without restriction. Specifically, if other files
20
// instantiate templates or use macros or inline functions from this
21
// file, or you compile this file and link it with other files to produce
22
// an executable, this file does not by itself cause the resulting
23
// executable to be covered by the GNU General Public License. This
24
// exception does not however invalidate any other reasons why the
25
// executable file might be covered by the GNU General Public License.
26
27
#ifndef MLN_IO_FLD_MAX_COMPONENTS_HH
28
# define MLN_IO_FLD_MAX_COMPONENTS_HH
29
34
35
# include <mln/algebra/vec.hh>
36
# include <mln/value/rgb.hh>
37
# include <mln/io/fld/header.hh>
38
39
namespace
mln
40
{
41
42
namespace
io
43
{
44
45
namespace
fld
46
{
47
48
template
<
typename
V>
49
inline
50
unsigned
max_component(
const
V&);
51
52
template
<
unsigned
n,
typename
V>
53
inline
54
unsigned
max_component(
const
algebra::vec<n, V>& v);
55
56
template
<
unsigned
n>
57
inline
58
unsigned
max_component(
const
value::rgb<n>&);
59
60
inline
61
unsigned
max_component(
const
fld::data_type::E& t);
62
63
# ifndef MLN_INCLUDE_ONLY
64
65
template
<
typename
V>
66
inline
67
unsigned
max_component(
const
V&)
68
{
69
return
unsigned(mln_max(V));
70
}
71
72
73
template
<
unsigned
n,
typename
V>
74
inline
75
unsigned
max_component(
const
algebra::vec<n, V>& v)
76
{
77
(void) v;
78
return
unsigned(mln_max(V));
79
}
80
81
template
<
unsigned
n>
82
inline
83
unsigned
max_component(
const
value::rgb<n>&)
84
{
85
return
mln_max(
mln::value::int_u<n>
);
86
}
87
88
inline
89
unsigned
max_component(
const
fld::data_type::E& t)
90
{
91
switch
(t)
92
{
93
case
data_type::BYTE:
return
mln_max(
unsigned
char
);
94
case
data_type::SHORT:
return
mln_max(
unsigned
short
);
95
case
data_type::INTEGER:
return
mln_max(
unsigned
);
96
case
data_type::FLOAT:
return
unsigned(mln_max(
float
));
97
case
data_type::DOUBLE:
return
unsigned(mln_max(
double
));
98
default
:
return
0;
99
}
100
}
101
102
# endif // ! MLN_INCLUDE_ONLY
103
}
104
105
}
106
107
}
108
109
#endif // !MLN_IO_FLD_MAX_COMPONENTS_HH
mln
io
fld
max_components.hh
Generated on Thu Nov 8 2012 10:58:15 for Milena (Olena) by
1.8.2-20120930