Farbe.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "Farbe.h"
  2. #include <math.h>
  3. using namespace Framework;
  4. // Inhalt der Klasse Farbe aus Farbe.h
  5. // Konstruktor
  6. Farbe::Farbe()
  7. {
  8. fc = 0xFF000000;
  9. ref = 1;
  10. }
  11. Farbe::Farbe( unsigned char r, unsigned char g, unsigned char b )
  12. {
  13. fc = 0xFF000000;
  14. setRGB( r, g, b ); // RGB setzen
  15. ref = 1;
  16. }
  17. Farbe::Farbe( unsigned char r, unsigned char g, unsigned char b, unsigned char a )
  18. {
  19. fc = 0xFF000000;
  20. setRGBA( r, g, b, a ); // RGBA setzen
  21. ref = 1;
  22. }
  23. // nicht constant
  24. void Farbe::setR( unsigned char r ) // setzt r
  25. {
  26. fc = ( fc & 0xFF00FFFF ) | ( r << 16 );
  27. }
  28. void Farbe::setG( unsigned char g ) // setzt g
  29. {
  30. fc = ( fc & 0xFFFF00FF ) | ( g << 8 );
  31. }
  32. void Farbe::setB( unsigned char b ) // setzt b
  33. {
  34. fc = ( fc & 0xFFFFFF00 ) | ( b );
  35. }
  36. void Farbe::setA( unsigned char a ) // setzt a
  37. {
  38. fc = ( fc & 0x00FFFFFF ) | ( a << 24 );
  39. }
  40. void Farbe::setRGB( unsigned char r, unsigned char g, unsigned char b ) // setzt rgb
  41. {
  42. fc = ( fc & 0xFF000000 ) | ( r << 16 ) | ( g << 8 ) | b;
  43. }
  44. void Farbe::setRGBA( unsigned char r, unsigned char g, unsigned char b, unsigned char a ) // setzt rgba
  45. {
  46. fc = ( a << 24 ) | ( r << 16 ) | ( g << 8 ) | ( b );
  47. }
  48. void Farbe::setFarbe( unsigned int fc ) // setzt Farbcode 0xRGBA
  49. {
  50. this->fc = fc;
  51. }
  52. // constant
  53. unsigned char Farbe::getR() const // gibt R zurück
  54. {
  55. return fc >> 16;
  56. }
  57. unsigned char Farbe::getG() const // gibt G zurück
  58. {
  59. return fc >> 8;
  60. }
  61. unsigned char Farbe::getB() const // gibt B zurück
  62. {
  63. return fc;
  64. }
  65. unsigned char Farbe::getA() const // gibt A zurück
  66. {
  67. return fc >> 24;
  68. }
  69. unsigned int Farbe::getFarbe() const // gibt Farbcode zurück
  70. {
  71. return fc;
  72. }
  73. bool Farbe::istGleich( unsigned char r, unsigned char g, unsigned char b, unsigned char a, int stärke ) const // vergleicht die Farben
  74. {
  75. return ( abs( ( (int)( ( fc >> 16 ) & 0xFF ) - (int)r ) ) <= stärke ) &&
  76. ( abs( ( (int)( ( fc >> 8 ) & 0xFF ) - (int)g ) ) <= stärke ) &&
  77. ( abs( ( (int)( fc & 0xFF ) - (int)b ) ) <= stärke ) &&
  78. ( abs( ( (int)( ( fc >> 24 ) & 0xFF ) - (int)a ) ) <= stärke );
  79. }
  80. // Reference Counting
  81. Farbe *Farbe::getThis()
  82. {
  83. ref++;
  84. return this;
  85. }
  86. Farbe *Farbe::release()
  87. {
  88. ref--;
  89. if( ref == 0 )
  90. delete this;
  91. return 0;
  92. }