|
@@ -34,20 +34,6 @@ ToolTip::~ToolTip()
|
|
members->release();
|
|
members->release();
|
|
}
|
|
}
|
|
|
|
|
|
-// nicht constant
|
|
|
|
-void ToolTip::setSize( int breite, int height )
|
|
|
|
-{
|
|
|
|
- size.x = breite;
|
|
|
|
- size.y = height;
|
|
|
|
- rend = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void ToolTip::setSize( Punkt &gr )
|
|
|
|
-{
|
|
|
|
- size = gr;
|
|
|
|
- rend = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
// Fügt eine Zeichnung zum Tooltip hinzu
|
|
// Fügt eine Zeichnung zum Tooltip hinzu
|
|
// m: die neue Zeichnung
|
|
// m: die neue Zeichnung
|
|
void ToolTip::addMember( Zeichnung *m )
|
|
void ToolTip::addMember( Zeichnung *m )
|
|
@@ -70,7 +56,7 @@ void ToolTip::setMausIn( bool mausIn )
|
|
if( this->mausIn != mausIn )
|
|
if( this->mausIn != mausIn )
|
|
rend = 1;
|
|
rend = 1;
|
|
this->mausIn = mausIn;
|
|
this->mausIn = mausIn;
|
|
- if( !mausIn )
|
|
|
|
|
|
+ if( !mausIn && !mausIn2 )
|
|
sichtbar = 0;
|
|
sichtbar = 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -86,6 +72,11 @@ void ToolTip::setZeichnen()
|
|
|
|
|
|
bool ToolTip::tick( double tickVal )
|
|
bool ToolTip::tick( double tickVal )
|
|
{
|
|
{
|
|
|
|
+ for( auto z = members->getIterator(); z; z++ )
|
|
|
|
+ {
|
|
|
|
+ size.x = max( size.x, z->getX() + z->getBreite() );
|
|
|
|
+ size.y = max( size.y, z->getY() + z->getHeight() );
|
|
|
|
+ }
|
|
this->tval += tickVal * animationSpeed;
|
|
this->tval += tickVal * animationSpeed;
|
|
int val = ( int )this->tval;
|
|
int val = ( int )this->tval;
|
|
if( val < 1 )
|
|
if( val < 1 )
|
|
@@ -121,14 +112,14 @@ bool ToolTip::tick( double tickVal )
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- if( getBreite() != size.x )
|
|
|
|
|
|
+ if( getBreite() < size.x )
|
|
{
|
|
{
|
|
ZeichnungHintergrund::setSize( getBreite() + val, getHeight() );
|
|
ZeichnungHintergrund::setSize( getBreite() + val, getHeight() );
|
|
if( getBreite() > size.x )
|
|
if( getBreite() > size.x )
|
|
ZeichnungHintergrund::setSize( size.x, getHeight() );
|
|
ZeichnungHintergrund::setSize( size.x, getHeight() );
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
- if( getHeight() != size.y )
|
|
|
|
|
|
+ if( getHeight() < size.y )
|
|
{
|
|
{
|
|
ZeichnungHintergrund::setSize( getBreite(), getHeight() + val );
|
|
ZeichnungHintergrund::setSize( getBreite(), getHeight() + val );
|
|
if( getHeight() > size.y )
|
|
if( getHeight() > size.y )
|
|
@@ -141,9 +132,17 @@ bool ToolTip::tick( double tickVal )
|
|
|
|
|
|
void ToolTip::doMausEreignis( MausEreignis &me )
|
|
void ToolTip::doMausEreignis( MausEreignis &me )
|
|
{
|
|
{
|
|
- if( mausIn )
|
|
|
|
|
|
+ if( mausIn && !sichtbar )
|
|
pos.x = me.mx, pos.y = me.my + 15;
|
|
pos.x = me.mx, pos.y = me.my + 15;
|
|
- sichtbar = 0;
|
|
|
|
|
|
+ mausIn2 = me.mx >= pos.x && me.my >= pos.y && me.mx <= pos.x + getBreite() && me.my <= pos.y + getHeight();
|
|
|
|
+ if( !mausIn && !mausIn2 )
|
|
|
|
+ sichtbar = 0;
|
|
|
|
+ me.mx -= pos.x;
|
|
|
|
+ me.my -= pos.y;
|
|
|
|
+ for( auto z = members->getIterator(); z; z++ )
|
|
|
|
+ z->doMausEreignis( me );
|
|
|
|
+ me.mx += pos.x;
|
|
|
|
+ me.my += pos.y;
|
|
if( alpha )
|
|
if( alpha )
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
@@ -159,6 +158,21 @@ void ToolTip::render( Bild &zRObj )
|
|
if( getY() + getHeight() > zRObj.getHeight() )
|
|
if( getY() + getHeight() > zRObj.getHeight() )
|
|
setPosition( getX(), getY() - ( getY() + getHeight() - zRObj.getHeight() ) );
|
|
setPosition( getX(), getY() - ( getY() + getHeight() - zRObj.getHeight() ) );
|
|
ZeichnungHintergrund::render( zRObj );
|
|
ZeichnungHintergrund::render( zRObj );
|
|
|
|
+ Punkt p = pos;
|
|
|
|
+ Punkt s = size;
|
|
|
|
+ if( hatStyle( ZeichnungHintergrund::Style::Rahmen ) )
|
|
|
|
+ {
|
|
|
|
+ p += Punkt( getRahmenBreite(), getRahmenBreite() );
|
|
|
|
+ s -= Punkt( getRahmenBreite(), getRahmenBreite() ) * 2;
|
|
|
|
+ }
|
|
|
|
+ if( !zRObj.setDrawOptions( p, s ) )
|
|
|
|
+ {
|
|
|
|
+ zRObj.releaseAlpha();
|
|
|
|
+ zeichnen = 0;
|
|
|
|
+ }
|
|
|
|
+ for( auto z = members->getIterator(); z; z++ )
|
|
|
|
+ z->render( zRObj );
|
|
|
|
+ zRObj.releaseDrawOptions();
|
|
zRObj.releaseAlpha();
|
|
zRObj.releaseAlpha();
|
|
zeichnen = 0;
|
|
zeichnen = 0;
|
|
}
|
|
}
|
|
@@ -170,6 +184,25 @@ Bildschirm *ToolTip::zBildschirm() const
|
|
return bildschirm;
|
|
return bildschirm;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Erzeugt eine komplette kopie eines tooltip
|
|
|
|
+Zeichnung *ToolTip::dublizieren() const
|
|
|
|
+{
|
|
|
|
+ ToolTip *ret = new ToolTip( bildschirm );
|
|
|
|
+ ret->size = size;
|
|
|
|
+ ret->animationSpeed = animationSpeed;
|
|
|
|
+ ret->warten = warten;
|
|
|
|
+ ret->wartenCount = wartenCount;
|
|
|
|
+ ret->tval = tval;
|
|
|
|
+ ret->mausIn = mausIn;
|
|
|
|
+ ret->alpha = alpha;
|
|
|
|
+ ret->sichtbar = sichtbar;
|
|
|
|
+ ret->zeichnen = zeichnen;
|
|
|
|
+ ret->mausIn2 = mausIn2;
|
|
|
|
+ for( auto z = members->getIterator(); z; z++ )
|
|
|
|
+ ret->addMember( z->getThis() );
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
// Reference Counting
|
|
// Reference Counting
|
|
Zeichnung *ToolTip::release()
|
|
Zeichnung *ToolTip::release()
|
|
{
|
|
{
|