123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #include "Rahmen.h"
- #include "Punkt.h"
- #include "Farbe.h"
- #include "Bild.h"
- using namespace Framework;
- // Inhalt der LRahmen Klasse aus Rahmen.h
- // Konstruktor
- LRahmen::LRahmen()
- : Objekt()
- {
- br = 1;
- farbe = new Farbe( 0, 0, 0 );
- Alpha = 0;
- ref = 1;
- }
- // Destruktor
- LRahmen::~LRahmen()
- {
- farbe->release();
- }
- // nicht constant
- void LRahmen::setRamenBreite( int br ) // setzt die Breite des Rahmens
- {
- lockObjekt();
- this->br = br;
- unlockObjekt();
- }
- void LRahmen::setAlpha( bool a ) // Legt fest, ob der Alphawert der Farbe berücksichtigt werden soll
- {
- lockObjekt();
- Alpha = a;
- unlockObjekt();
- }
- void LRahmen::setFarbe( Farbe *f ) // Legt die Farbe des Rahmens fest
- {
- lockObjekt();
- if( !farbe )
- farbe = new Farbe();
- farbe->setFarbe( f->getFarbe() );
- f->release();
- unlockObjekt();
- }
- void LRahmen::setFarbe( int fc )
- {
- lockObjekt();
- if( !farbe )
- farbe = new Farbe();
- farbe->setFarbe( fc );
- unlockObjekt();
- }
- void LRahmen::setFarbeZ( Farbe *f ) // setzt einen Zeiger zur Farbe
- {
- lockObjekt();
- if( farbe )
- farbe->release();
- farbe = f;
- unlockObjekt();
- }
- void LRahmen::render( Bild *Obj ) // Zeichnet den Rahmen in das Renderobjekt
- {
- lockObjekt();
- int x = pos->x;
- int y = pos->y;
- int b = x + gr->x - 1;
- int h = y + gr->y - 1;
- int fc = farbe->getFarbe();
- if( Alpha )
- {
- for( int i = 0; i < br; i++ )
- {
- Obj->drawLinieHAlpha( x + i + 1, y + i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieVAlpha( b - i, y + i + 1, gr->y - i * 2 - 2, fc );
- Obj->drawLinieHAlpha( x + i + 1, h - i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieVAlpha( x + i, y + i, gr->y - i * 2, fc );
- }
- }
- else
- {
- for( int i = 0; i < br; i++ )
- {
- Obj->drawLinieH( x + i + 1, y + i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieV( b - i, y + i + 1, gr->y - i * 2 - 2, fc );
- Obj->drawLinieH( x + i + 1, h - i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieV( x + i, y + i, gr->y - i * 2, fc );
- }
- }
- unlockObjekt();
- }
- void LRahmen::render( int xOff, int yOff, int bOff, int hOff, Bild *Obj )
- {
- lockObjekt();
- Obj->setDrawOptions( xOff, yOff, xOff + bOff, yOff + hOff );
- int x = xOff + pos->x;
- int y = yOff + pos->y;
- int b = x + gr->x - 1;
- int h = y + gr->y - 1;
- int fc = farbe->getFarbe();
- if( Alpha )
- {
- for( int i = 0; i < br; i++ )
- {
- Obj->drawLinieHAlpha( x + i + 1, y + i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieVAlpha( b - i, y + i + 1, gr->y - i * 2 - 2, fc );
- Obj->drawLinieHAlpha( x + i + 1, h - i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieVAlpha( x + i, y + i, gr->y - i * 2, fc );
- }
- }
- else
- {
- for( int i = 0; i < br; i++ )
- {
- Obj->drawLinieH( x + i + 1, y + i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieV( b - i, y + i + 1, gr->y - i * 2 - 2, fc );
- Obj->drawLinieH( x + i + 1, h - i, gr->x - i * 2 - 1, fc );
- Obj->drawLinieV( x + i, y + i, gr->y - i * 2, fc );
- }
- }
- Obj->setDrawOptions( -1, -1, -1, -1 );
- unlockObjekt();
- }
- // constant
- int LRahmen::getRBreite() const // Gibt die Breite des Rahmens zurück
- {
- return br;
- }
- Farbe *LRahmen::getFarbe() const // Gibt die Farbe des Ramens zurück
- {
- return farbe->getThis();
- }
- int LRahmen::getFarbeCode() const // Gibt die Farbe des Ramens zurück
- {
- return farbe->getFarbe();
- }
- Farbe *LRahmen::zFarbe() const
- {
- return farbe;
- }
- bool LRahmen::hatAlpha() const // Gibt zurück, ob der Alphawert der Farbe beachtet wird
- {
- return Alpha;
- }
- // Reference Counting
- LRahmen *LRahmen::getThis()
- {
- ref++;
- return this;
- }
- LRahmen *LRahmen::release()
- {
- ref--;
- if( ref == 0 )
- delete this;
- return 0;
- }
|