34 #ifndef AIMS_UTILITY_CONVERTER_RGB_H 35 #define AIMS_UTILITY_CONVERTER_RGB_H 82 out = (OUTP) ( sqrt( ( (
double) in.
red() ) * in.
red()
84 + ( (double) in.
blue() ) * in.
blue() ) );
98 out = (OUTP) ( sqrt( ( (
double) in.
red() ) * in.
red()
100 + ( (double) in.
blue() ) * in.
blue() ) );
133 template <
typename T,
int D>
139 for( uint8_t i=0; i<3 && i<in.
size(); ++i )
145 template <
typename T,
int D>
151 for( uint8_t i=0; i<3 && i<out.
size(); ++i )
157 template <
typename T,
int D>
163 for( uint8_t i=0; i<4 && i<in.
size(); ++i )
169 template <
typename T,
int D>
175 for( uint8_t i=0; i<4 && i<out.
size(); ++i )
183 template <
typename T,
int D>
196 template <
typename T,
int D>
202 template <
typename T,
int D>
209 template <
typename T,
int D>
214 if( out.
dimX() == 0 )
216 in.dimT(), in.borderWidth() );
224 out.
setHeader( in.header()->cloneHeader(
true ) );
227 if( std::isnan( info.
vmin ) ) {
230 for(
int k=0; k<in.dimZ(); ++k )
231 for(
int j=0; j<in.dimY(); ++j )
232 for(
int i=0; i<in.dimX(); ++i )
234 for(
int c = 0; c < in(i, j, k).size(); ++c )
235 if( (
double) in(i, j, k)[c] < info.
vmin )
236 info.
vmin = (
double) in(i, j, k)[c];
241 if( std::isnan( info.
vmax ) ) {
244 for(
int k=0; k<in.dimZ(); ++k )
245 for(
int j=0; j<in.dimY(); ++j )
246 for(
int i=0; i<in.dimX(); ++i )
248 for(
int c = 0; c < in(i, j, k).size(); ++c )
249 if( (
double) in(i, j, k)[c] > info.
vmax )
250 info.
vmax = (
double) in(i, j, k)[c];
257 int x, y, z, t, dx = out.
dimX(), dy = out.
dimY(), dz = out.
dimZ(),
258 dt = out.
dimT(), ox = dx, oy = dy, oz = dz, ot = dt;
268 for( t=0; t<dt; ++t )
270 for( z=0; z<dz; ++z )
272 for( y=0; y<dy; ++y )
274 for( x=0; x<dx; ++x )
275 for(
int c=0; c < in( x, y, z, t ).size() && c<3; ++c )
276 out( x, y, z, t )[c] =
279 out( x, y, z, t ) =
AimsRGB(0);
282 for( x=0; x<ox; ++x )
283 out( x, y, z, t ) =
AimsRGB(0);
286 for( y=0; y<oy; ++y )
287 for( x=0; x<ox; ++x )
288 out( x, y, z, t ) =
AimsRGB(0);
292 for( z=0; z<oz; ++z )
293 for( y=0; y<oy; ++y )
294 for( x=0; x<ox; ++x )
295 out( x, y, z, t ) =
AimsRGB(0);
310 template <
typename T,
int D>
323 template <
typename T,
int D>
329 template <
typename T,
int D>
336 template <
typename T,
int D>
341 if( out.dimX() == 0 )
345 out.setSizeX( in.
sizeX() );
346 out.setSizeY( in.
sizeY() );
347 out.setSizeZ( in.
sizeZ() );
348 out.setSizeT( in.
sizeT() );
354 if( std::isnan( info.
vmin ) ) {
357 for(
int k=0; k<in.
dimZ(); ++k )
358 for(
int j=0; j<in.
dimY(); ++j )
359 for(
int i=0; i<in.
dimX(); ++i )
361 for(
int c = 0; c < 3; ++c )
362 if( (
double) in(i, j, k)[c] < info.
vmin )
363 info.
vmin = (
double) in(i, j, k)[c];
368 if( std::isnan( info.
vmax ) ) {
371 for(
int k=0; k<in.
dimZ(); ++k )
372 for(
int j=0; j<in.
dimY(); ++j )
373 for(
int i=0; i<in.
dimX(); ++i )
375 for(
int c = 0; c < 3; ++c )
376 if( (
double) in(i, j, k)[c] > info.
vmax )
377 info.
vmax = (
double) in(i, j, k)[c];
384 int x, y, z, t, dx = out.dimX(), dy = out.dimY(), dz = out.dimZ(),
385 dt = out.dimT(), ox = dx, oy = dy, oz = dz, ot = dt;
395 for( t=0; t<dt; ++t )
397 for( z=0; z<dz; ++z )
399 for( y=0; y<dy; ++y )
401 for( x=0; x<dx; ++x )
402 for(
int c=0; c < out( x, y, z, t ).size() && c<3; ++c )
403 out( x, y, z, t )[c] =
406 out( x, y, z, t ) =
AimsRGB(0);
409 for( x=0; x<ox; ++x )
410 out( x, y, z, t ) =
AimsRGB(0);
413 for( y=0; y<oy; ++y )
414 for( x=0; x<ox; ++x )
415 out( x, y, z, t ) =
AimsRGB(0);
419 for( z=0; z<oz; ++z )
420 for( y=0; y<oy; ++y )
421 for( x=0; x<ox; ++x )
422 out( x, y, z, t ) =
AimsRGB(0);
void setSizeT(float sizet)
void convert(const AimsRGBA &in, AimsRGB &out) const
void convert(const INP &in, OUTP &out) const
virtual bool getProperty(const std::string &, Object &) const
const uint8_t & blue() const
const uint8_t & red() const
void convert(const AimsVector< T, D > &in, AimsRGB &out) const
void convert(const AimsVector< T, D > &in, AimsRGBA &out) const
void setSizeX(float sizex)
virtual bool removeProperty(const std::string &)
void setSizeY(float sizey)
OUTP getScaledValue(INP value) const
void setHeader(aims::Header *hdr)
void convert(const AimsRGB &in, AimsVector< T, D > &out) const
const aims::Header * header() const
const uint8_t & green() const
virtual void setProperty(const std::string &, Object)
const uint8_t & blue() const
virtual bool hasProperty(const std::string &) const
void convert(const AimsRGB &in, AimsRGBA &out) const
void setSizeZ(float sizez)
void convert(const INP &in, OUTP &out) const
const uint8_t & green() const
carto::VoxelRGBA AimsRGBA
const uint8_t & red() const
int borderWidth() const
Usefull offsets for A.I.M.S.
void convert(const AimsRGBA &in, AimsVector< T, D > &out) const