#ifndef Rahmen_H
#define Rahmen_H

#include "Objekt.h"

namespace Framework
{
	class Punkt; // aus Punkt.h
	class Farbe; // aus Farbe.h
	class Bild; // aus Bild.h
	class LRahmen; // aus dieser Datei

	class LRahmen : public Objekt // Ramen aus Linien
	{
	private:
		int br;
		Farbe *farbe;
		bool Alpha;
		int ref;

	public:
		// Konstruktor 
		LRahmen();
		// Destruktor 
		~LRahmen();
		// nicht constant 
		void setRamenBreite( int br ); // setzt die Breite des Rahmens
		void setAlpha( bool a ); // Legt fest, ob der Alphawert der Farbe berücksichtigt werden soll
		void setFarbe( Farbe *f ); // Legt die Farbe des Rahmens fest
		void setFarbe( int fc );
		void setFarbeZ( Farbe *f ); // setzt einen Zeiger zur Farbe
		virtual void render( Bild *zrObj ); // Zeichnet den Rahmen in das Renderobjekt
		virtual void render( int xOff, int yOff, int bOff, int hOff, Bild *zrObj );
		// constant 
		int getRBreite() const; // Gibt die Breite des Rahmens zurück
		Farbe *getFarbe() const; // gibt getThis der Farbe zurück
		int getFarbeCode() const; // Gibt die Farbe des Ramens zurück
		Farbe *zFarbe() const;
		bool hatAlpha() const; // Gibt zurück, ob der Alphawert der Farbe beachtet wird
		// Reference Counting 
		LRahmen *getThis();
		LRahmen *release();
	};
}

#endif