123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #include "Farbe.h"
- #include <math.h>
- using namespace Framework;
- // Inhalt der Klasse Farbe aus Farbe.h
- // Konstruktor
- Farbe::Farbe()
- {
- fc = 0xFF000000;
- ref = 1;
- }
- Farbe::Farbe( unsigned char r, unsigned char g, unsigned char b )
- {
- fc = 0xFF000000;
- setRGB( r, g, b ); // RGB setzen
- ref = 1;
- }
- Farbe::Farbe( unsigned char r, unsigned char g, unsigned char b, unsigned char a )
- {
- fc = 0xFF000000;
- setRGBA( r, g, b, a ); // RGBA setzen
- ref = 1;
- }
- // nicht constant
- void Farbe::setR( unsigned char r ) // setzt r
- {
- fc = ( fc & 0xFF00FFFF ) | ( r << 16 );
- }
- void Farbe::setG( unsigned char g ) // setzt g
- {
- fc = ( fc & 0xFFFF00FF ) | ( g << 8 );
- }
- void Farbe::setB( unsigned char b ) // setzt b
- {
- fc = ( fc & 0xFFFFFF00 ) | ( b );
- }
- void Farbe::setA( unsigned char a ) // setzt a
- {
- fc = ( fc & 0x00FFFFFF ) | ( a << 24 );
- }
- void Farbe::setRGB( unsigned char r, unsigned char g, unsigned char b ) // setzt rgb
- {
- fc = ( fc & 0xFF000000 ) | ( r << 16 ) | ( g << 8 ) | b;
- }
- void Farbe::setRGBA( unsigned char r, unsigned char g, unsigned char b, unsigned char a ) // setzt rgba
- {
- fc = ( a << 24 ) | ( r << 16 ) | ( g << 8 ) | ( b );
- }
- void Farbe::setFarbe( unsigned int fc ) // setzt Farbcode 0xRGBA
- {
- this->fc = fc;
- }
- // constant
- unsigned char Farbe::getR() const // gibt R zurück
- {
- return fc >> 16;
- }
- unsigned char Farbe::getG() const // gibt G zurück
- {
- return fc >> 8;
- }
- unsigned char Farbe::getB() const // gibt B zurück
- {
- return fc;
- }
- unsigned char Farbe::getA() const // gibt A zurück
- {
- return fc >> 24;
- }
- unsigned int Farbe::getFarbe() const // gibt Farbcode zurück
- {
- return fc;
- }
- bool Farbe::istGleich( unsigned char r, unsigned char g, unsigned char b, unsigned char a, int stärke ) const // vergleicht die Farben
- {
- return ( abs( ( (int)( ( fc >> 16 ) & 0xFF ) - (int)r ) ) <= stärke ) &&
- ( abs( ( (int)( ( fc >> 8 ) & 0xFF ) - (int)g ) ) <= stärke ) &&
- ( abs( ( (int)( fc & 0xFF ) - (int)b ) ) <= stärke ) &&
- ( abs( ( (int)( ( fc >> 24 ) & 0xFF ) - (int)a ) ) <= stärke );
- }
- // Reference Counting
- Farbe *Farbe::getThis()
- {
- ref++;
- return this;
- }
- Farbe *Farbe::release()
- {
- ref--;
- if( ref == 0 )
- delete this;
- return 0;
- }
|