123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include "AlphaFeld.h"
- #include "Punkt.h"
- #include "Bild.h"
- #include "Scroll.h"
- #include "ToolTip.h"
- #include "Text.h"
- using namespace Framework;
- // Inhalt der AlphaFeld Klasse aus AlphaFeld.h
- // Konstruktor
- AlphaFeld::AlphaFeld()
- : Zeichnung(),
- stärke( 5 ),
- farbe( 0x9B000000 ),
- ref( 1 )
- {
- }
- // nicht constant
- void AlphaFeld::setStärke( int st ) // setzt die Stärke
- {
- stärke = st;
- rend = 1;
- }
- void AlphaFeld::setFarbe( int f ) // setzt die Farbe
- {
- farbe = f;
- rend = 1;
- }
- void AlphaFeld::render( Bild &zRObj ) // zeichnet nach zRObj
- {
- __super::render( zRObj );
- int br = gr.x - 1;
- int hö = gr.y - 1;
- int xp = pos.x, yp = pos.y;
- int a = ( farbe >> 24 ) & 0xFF;
- int index = ( br / 2 ) * ( br <= hö ) + ( hö / 2 ) * ( br > hö );
- int fc = farbe & 0x00FFFFFF;
- int fc2 = farbe;
- if( stärke > 0 )
- index = index > ( a / stärke ) ? a / stärke : index;
- if( stärke < 0 )
- index = index > ( ( 255 - a ) / -stärke ) ? ( ( 255 - a ) / -stärke ) : index;
- for( int i = 0; i < index; ++i )
- {
- a -= stärke;
- fc2 = ( a << 24 ) | fc;
- int i2 = i << 1;
- zRObj.drawLinieHAlpha( xp + i + 1, yp + i, br - i2, fc2 ); // oben links --- oben rechts
- zRObj.drawLinieVAlpha( xp + br - i, yp + i + 1, hö - i2, fc2 ); // oben rechts -- unten rechts
- zRObj.drawLinieHAlpha( xp + i, yp + hö - i, br - i2, fc2 ); // unten rechts - unten links
- zRObj.drawLinieVAlpha( xp + i, yp + i, hö - i2, fc2 ); // unten links -- oben links
- }
- if( index == br / 2 )
- {
- for( int i = index; i <= index + ( br - index ) - index; ++i )
- zRObj.drawLinieVAlpha( xp + i, yp + index, hö - ( index << 1 ) + 1, fc2 ); // rest Fläche senkrecht
- }
- else
- {
- for( int i = index; i <= index + ( hö - index ) - index; ++i )
- zRObj.drawLinieHAlpha( xp + index, yp + i, br - ( index << 1 ) + 1, fc2 ); // rest Fläche waagerecht
- }
- }
- // constant
- int AlphaFeld::getStärke() const // gibt die Stärke zurück
- {
- return stärke;
- }
- int AlphaFeld::getFarbe() const // gibt die Farbe zurück
- {
- return farbe;
- }
- Zeichnung *AlphaFeld::dublizieren() const // Kopiert das Zeichnung
- {
- AlphaFeld *obj = new AlphaFeld();
- obj->setPosition( pos );
- obj->setGröße( gr );
- obj->setMausEreignisParameter( makParam );
- obj->setTastaturEreignisParameter( takParam );
- obj->setMausEreignis( Mak );
- obj->setTastaturEreignis( Tak );
- if( toolTip )
- obj->setToolTipText( toolTip->zText()->getText(), toolTip->zBildschirm() );
- obj->setStärke( stärke );
- obj->setFarbe( farbe );
- return obj;
- }
- // Reference Counting
- AlphaFeld *AlphaFeld::getThis()
- {
- ++ref;
- return this;
- }
- AlphaFeld *AlphaFeld::release()
- {
- --ref;
- if( !ref )
- delete this;
- return 0;
- }
|