34 #ifndef CARTOBASE_TYPE_RGBA_DEF_H 35 #define CARTOBASE_TYPE_RGBA_DEF_H 42 #ifdef CARTO_DEBUG_RGB 64 #ifdef CARTO_DEBUG_RGB 65 std::cout <<
"RGBA:: Constructor( RGBA )" << std::endl;
72 #ifdef CARTO_DEBUG_RGB 73 std::cout <<
"RGBA:: Constructor( RGB )" << std::endl;
85 #ifdef CARTO_DEBUG_RGB 86 std::cout <<
"RGBA:: Constructor( VV<4> )" << std::endl;
92 const uint8_t &b,
const uint8_t &a )
94 #ifdef CARTO_DEBUG_RGB 95 std::cout <<
"RGBA:: Constructor( r,g,b,a )" << std::endl;
106 #ifdef CARTO_DEBUG_RGB 107 std::cout <<
"RGBA:: Destructor" << std::endl;
116 #ifdef CARTO_DEBUG_RGB 117 std::cout <<
"RGBA:: operator = ( RGBA )" << std::endl;
129 #ifdef CARTO_DEBUG_RGB 130 std::cout <<
"RGBA:: operator = ( RGB )" << std::endl;
142 #ifdef CARTO_DEBUG_RGB 143 std::cout <<
"RGBA:: operator = ( uint8_t )" << std::endl;
157 #ifdef CARTO_DEBUG_RGB 158 std::cout <<
"RGBA:: operator += ( RGBA )" << std::endl;
160 if( other.
alpha() == 0 ) {
169 }
else if(
alpha() == 0 ) {
188 #ifdef CARTO_DEBUG_RGB 189 std::cout <<
"RGBA:: operator += ( RGB )" << std::endl;
207 #ifdef CARTO_DEBUG_RGB 208 std::cout <<
"RGBA:: operator -= ( RGBA )" << std::endl;
210 if( other.
alpha() == 0 ) {
219 }
else if(
alpha() == 0 ) {
236 #ifdef CARTO_DEBUG_RGB 237 std::cout <<
"RGBA:: operator -= ( RGB )" << std::endl;
254 #ifdef CARTO_DEBUG_RGB 255 std::cout <<
"RGBA:: operator += ( uint8_t )" << std::endl;
273 #ifdef CARTO_DEBUG_RGB 274 std::cout <<
"RGBA:: operator -= ( uint8_t )" << std::endl;
292 #ifdef CARTO_DEBUG_RGB 293 std::cout <<
"RGBA:: operator *= ( uint8_t )" << std::endl;
295 red() *=
static_cast<uint8_t
>( value );
296 green() *=
static_cast<uint8_t
>( value );
297 blue() *=
static_cast<uint8_t
>( value );
304 #ifdef CARTO_DEBUG_RGB 305 std::cout <<
"RGBA:: operator *= ( uint16_t )" << std::endl;
307 red() *=
static_cast<uint8_t
>( value );
308 green() *=
static_cast<uint8_t
>( value );
309 blue() *=
static_cast<uint8_t
>( value );
316 #ifdef CARTO_DEBUG_RGB 317 std::cout <<
"RGBA:: operator *= ( uint32_t )" << std::endl;
319 red() *=
static_cast<uint8_t
>( value );
320 green() *=
static_cast<uint8_t
>( value );
321 blue() *=
static_cast<uint8_t
>( value );
328 #ifdef CARTO_DEBUG_RGB 329 std::cout <<
"RGBA:: operator *= ( uint64_t )" << std::endl;
331 red() *=
static_cast<uint8_t
>( value );
332 green() *=
static_cast<uint8_t
>( value );
333 blue() *=
static_cast<uint8_t
>( value );
340 #ifdef CARTO_DEBUG_RGB 341 std::cout <<
"RGBA:: operator *= ( float )" << std::endl;
344 red() =
static_cast<uint8_t
>(
red() * value );
345 green() =
static_cast<uint8_t
>(
green() * value );
346 blue() =
static_cast<uint8_t
>(
blue() * value );
353 #ifdef CARTO_DEBUG_RGB 354 std::cout <<
"RGBA:: operator *= ( double )" << std::endl;
357 red() =
static_cast<uint8_t
>(
red() * value );
358 green() =
static_cast<uint8_t
>(
green() * value );
359 blue() =
static_cast<uint8_t
>(
blue() * value );
366 #ifdef CARTO_DEBUG_RGB 367 std::cout <<
"RGBA:: operator /= ( uint8_t )" << std::endl;
370 red() /=
static_cast<uint8_t
>( value );
371 green() /=
static_cast<uint8_t
>( value );
372 blue() /=
static_cast<uint8_t
>( value );
379 #ifdef CARTO_DEBUG_RGB 380 std::cout <<
"RGBA:: operator /= ( uint16_t )" << std::endl;
383 red() /=
static_cast<uint8_t
>( value );
384 green() /=
static_cast<uint8_t
>( value );
385 blue() /=
static_cast<uint8_t
>( value );
392 #ifdef CARTO_DEBUG_RGB 393 std::cout <<
"RGBA:: operator /= ( uint32_t )" << std::endl;
396 red() /=
static_cast<uint8_t
>( value );
397 green() /=
static_cast<uint8_t
>( value );
398 blue() /=
static_cast<uint8_t
>( value );
405 #ifdef CARTO_DEBUG_RGB 406 std::cout <<
"RGBA:: operator /= ( uint64_t )" << std::endl;
409 red() /=
static_cast<uint8_t
>( value );
410 green() /=
static_cast<uint8_t
>( value );
411 blue() /=
static_cast<uint8_t
>( value );
418 #ifdef CARTO_DEBUG_RGB 419 std::cout <<
"RGBA:: operator /= ( float )" << std::endl;
423 red() =
static_cast<uint8_t
>(
red() / value );
424 green() =
static_cast<uint8_t
>(
green() / value );
425 blue() =
static_cast<uint8_t
>(
blue() / value );
432 #ifdef CARTO_DEBUG_RGB 433 std::cout <<
"RGBA:: operator /= ( double )" << std::endl;
437 red() =
static_cast<uint8_t
>(
red() / value );
438 green() =
static_cast<uint8_t
>(
green() / value );
439 blue() =
static_cast<uint8_t
>(
blue() / value );
448 #ifdef CARTO_DEBUG_RGB 449 std::cout <<
"RGBA:: RGBA + RGBA" << std::endl;
458 #ifdef CARTO_DEBUG_RGB 459 std::cout <<
"RGBA:: RGBA + uint8_t" << std::endl;
468 #ifdef CARTO_DEBUG_RGB 469 std::cout <<
"RGBA:: RGBA + uint16_t" << std::endl;
478 #ifdef CARTO_DEBUG_RGB 479 std::cout <<
"RGBA:: RGBA + uint32_t" << std::endl;
488 #ifdef CARTO_DEBUG_RGB 489 std::cout <<
"RGBA:: RGBA + uint64_t" << std::endl;
498 #ifdef CARTO_DEBUG_RGB 499 std::cout <<
"RGBA:: RGBA + float" << std::endl;
502 return result +=
static_cast<uint8_t
>(bb);
508 #ifdef CARTO_DEBUG_RGB 509 std::cout <<
"RGBA:: RGBA + double" << std::endl;
512 return result +=
static_cast<uint8_t
>(bb);
518 #ifdef CARTO_DEBUG_RGB 519 std::cout <<
"RGBA:: uint8_t + RGBA" << std::endl;
528 #ifdef CARTO_DEBUG_RGB 529 std::cout <<
"RGBA:: uint16_t + RGBA" << std::endl;
538 #ifdef CARTO_DEBUG_RGB 539 std::cout <<
"RGBA:: uint32_t + RGBA" << std::endl;
548 #ifdef CARTO_DEBUG_RGB 549 std::cout <<
"RGBA:: uint64_t + RGBA" << std::endl;
558 #ifdef CARTO_DEBUG_RGB 559 std::cout <<
"RGBA:: float + RGBA" << std::endl;
561 VoxelRGBA result( static_cast<uint8_t>(aa) );
568 #ifdef CARTO_DEBUG_RGB 569 std::cout <<
"RGBA:: double + RGBA" << std::endl;
571 VoxelRGBA result( static_cast<uint8_t>(aa) );
578 #ifdef CARTO_DEBUG_RGB 579 std::cout <<
"RGBA:: RGBA - RGBA" << std::endl;
588 #ifdef CARTO_DEBUG_RGB 589 std::cout <<
"RGBA:: RGBA - uint8_t" << std::endl;
598 #ifdef CARTO_DEBUG_RGB 599 std::cout <<
"RGBA:: RGBA - uint16_t" << std::endl;
608 #ifdef CARTO_DEBUG_RGB 609 std::cout <<
"RGBA:: RGBA - uint32_t" << std::endl;
618 #ifdef CARTO_DEBUG_RGB 619 std::cout <<
"RGBA:: RGBA - uint64_t" << std::endl;
628 #ifdef CARTO_DEBUG_RGB 629 std::cout <<
"RGBA:: RGBA - float" << std::endl;
632 return result -=
static_cast<uint8_t
>(bb);
638 #ifdef CARTO_DEBUG_RGB 639 std::cout <<
"RGBA:: RGBA - double" << std::endl;
642 return result -=
static_cast<uint8_t
>(bb);
648 #ifdef CARTO_DEBUG_RGB 649 std::cout <<
"RGBA:: uint8_t - RGBA" << std::endl;
658 #ifdef CARTO_DEBUG_RGB 659 std::cout <<
"RGBA:: uint16_t - RGBA" << std::endl;
668 #ifdef CARTO_DEBUG_RGB 669 std::cout <<
"RGBA:: uint32_t - RGBA" << std::endl;
678 #ifdef CARTO_DEBUG_RGB 679 std::cout <<
"RGBA:: uint64_t - RGBA" << std::endl;
688 #ifdef CARTO_DEBUG_RGB 689 std::cout <<
"RGBA:: float - RGBA" << std::endl;
691 VoxelRGBA result( static_cast<uint8_t>(aa) );
698 #ifdef CARTO_DEBUG_RGB 699 std::cout <<
"RGBA:: double - RGBA" << std::endl;
701 VoxelRGBA result( static_cast<uint8_t>(aa) );
708 #ifdef CARTO_DEBUG_RGB 709 std::cout <<
"RGBA:: RGBA * uint8_t" << std::endl;
718 #ifdef CARTO_DEBUG_RGB 719 std::cout <<
"RGBA:: RGBA * uint16_t" << std::endl;
728 #ifdef CARTO_DEBUG_RGB 729 std::cout <<
"RGBA:: RGBA * uint32_t" << std::endl;
738 #ifdef CARTO_DEBUG_RGB 739 std::cout <<
"RGBA:: RGBA * uint64_t" << std::endl;
748 #ifdef CARTO_DEBUG_RGB 749 std::cout <<
"RGBA:: RGBA * float" << std::endl;
758 #ifdef CARTO_DEBUG_RGB 759 std::cout <<
"RGBA:: RGBA * double" << std::endl;
768 #ifdef CARTO_DEBUG_RGB 769 std::cout <<
"RGBA:: uint8_t * RGBA" << std::endl;
778 #ifdef CARTO_DEBUG_RGB 779 std::cout <<
"RGBA:: uint16_t * RGBA" << std::endl;
788 #ifdef CARTO_DEBUG_RGB 789 std::cout <<
"RGBA:: uint32_t * RGBA" << std::endl;
798 #ifdef CARTO_DEBUG_RGB 799 std::cout <<
"RGBA:: uint64_t * RGBA" << std::endl;
808 #ifdef CARTO_DEBUG_RGB 809 std::cout <<
"RGBA:: float * RGBA" << std::endl;
818 #ifdef CARTO_DEBUG_RGB 819 std::cout <<
"RGBA:: double * RGBA" << std::endl;
828 #ifdef CARTO_DEBUG_RGB 829 std::cout <<
"RGBA:: RGBA / uint8_t" << std::endl;
838 #ifdef CARTO_DEBUG_RGB 839 std::cout <<
"RGBA:: RGBA / uint16_t" << std::endl;
848 #ifdef CARTO_DEBUG_RGB 849 std::cout <<
"RGBA:: RGBA / uint32_t" << std::endl;
858 #ifdef CARTO_DEBUG_RGB 859 std::cout <<
"RGBA:: RGBA / uint64_t" << std::endl;
868 #ifdef CARTO_DEBUG_RGB 869 std::cout <<
"RGBA:: RGBA / float" << std::endl;
878 #ifdef CARTO_DEBUG_RGB 879 std::cout <<
"RGBA:: RGBA / double" << std::endl;
890 #ifdef CARTO_DEBUG_RGB 891 std::cout <<
"RGBA:: operator *= ( long )" << std::endl;
893 red() *=
static_cast<uint8_t
>( value );
894 green() *=
static_cast<uint8_t
>( value );
895 blue() *=
static_cast<uint8_t
>( value );
902 #ifdef CARTO_DEBUG_RGB 903 std::cout <<
"RGBA:: operator /= ( long )" << std::endl;
906 red() /=
static_cast<uint8_t
>( value );
907 green() /=
static_cast<uint8_t
>( value );
908 blue() /=
static_cast<uint8_t
>( value );
915 #ifdef CARTO_DEBUG_RGB 916 std::cout <<
"RGBA:: RGBA * long" << std::endl;
925 #ifdef CARTO_DEBUG_RGB 926 std::cout <<
"RGBA:: long * RGBA" << std::endl;
935 #ifdef CARTO_DEBUG_RGB 936 std::cout <<
"RGBA:: RGBA / long" << std::endl;
VoxelRGB operator/(const VoxelRGB &aa, const uint8_t &bb)
const uint8_t & blue() const
VoxelRGBA & operator*=(const uint8_t &value)
const uint8_t & red() const
VoxelRGB operator+(const VoxelRGB &aa, const VoxelRGB &bb)
Base class for any multichannel data (RGB, RGBA, HSV, ...)
VoxelRGB operator*(const VoxelRGB &aa, const uint8_t &bb)
VoxelRGBA & operator=(const VoxelRGBA &other)
VoxelRGBA & operator-=(const VoxelRGBA &other)
const uint8_t & alpha() const
VoxelRGBA & operator+=(const VoxelRGBA &other)
VoxelRGB operator-(const VoxelRGB &aa, const VoxelRGB &bb)
const uint8_t & green() const
VoxelRGBA(const VoxelRGBA &other)
const uint8_t & blue() const
VoxelRGBA & operator/=(const uint8_t &value)
const uint8_t & green() const
const uint8_t & red() const