#ifndef Farbe_H
#define Farbe_H

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

namespace Framework
{
	class Farbe; // aus dieser Datei
	class FarbeArray; // aus dieser Datei

	class Farbe// Farb Klasse 
	{
	private:
		unsigned int fc;// Farbcode 0xRRGGBBAA
		int ref;
	public:
		// Konstruktor 
		Farbe();
		Farbe( unsigned char r, unsigned char g, unsigned char b ); // setzt rgb
		Farbe( unsigned char r, unsigned char g, unsigned char b, unsigned char a ); // setzt rgba
		// nicht constant 
		void setR( unsigned char r ); // setzt r
		void setG( unsigned char g ); // setzt g
		void setB( unsigned char b ); // setzt b
		void setA( unsigned char a ); // setzt a
		void setRGB( unsigned char r, unsigned char g, unsigned char b ); // setzt rgb
		void setRGBA( unsigned char r, unsigned char g, unsigned char b, unsigned char a ); // setzt rgba
		void setFarbe( unsigned int fc ); // setzt Farbcode 0xRGBA
		// constant
		unsigned char getR() const; // gibt R zurück
		unsigned char getG() const; // gibt G zurück
		unsigned char getB() const; // gibt B zurück
		unsigned char getA() const; // gibt A zurück
		unsigned int getFarbe() const; // gibt Farbcode zurück
		bool istGleich( unsigned char r, unsigned char g, unsigned char b, unsigned char a, int stärke ) const; // vergleicht die Farben
		// Reference Counting 
		Farbe *getThis();
		Farbe *release();
	};
}
#endif