|
@@ -68,16 +68,55 @@ inline void Bild::alphaPixelP( int x, int y, int f )
|
|
alphaPixelP( fc[ x + y * size.x ], f );
|
|
alphaPixelP( fc[ x + y * size.x ], f );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+inline void Bild::alphaPixelP3D( int x, int y, int f )
|
|
|
|
+{
|
|
|
|
+ alphaPixelP3D( fc[ x + y * size.x ], f );
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+inline void Bild::alphaPixelAssozP( int &fc, int f )
|
|
|
|
+{
|
|
|
|
+ unsigned char *fc1 = (unsigned char*)&fc;
|
|
|
|
+ unsigned char *fc2 = (unsigned char*)&f;
|
|
|
|
+ unsigned char na = ~fc2[ 3 ];
|
|
|
|
+ unsigned char a = (unsigned char)( fc2[ 3 ] + ( ( na * fc1[ 3 ] ) >> 8 ) );
|
|
|
|
+ if( a == 0 )
|
|
|
|
+ return;
|
|
|
|
+ fc1[ 2 ] = (unsigned char)( ( fc2[ 2 ] * fc2[ 3 ] + ( ( fc1[ 2 ] * na * fc1[ 3 ] ) >> 8 ) ) / a );
|
|
|
|
+ fc1[ 1 ] = (unsigned char)( ( fc2[ 1 ] * fc2[ 3 ] + ( ( fc1[ 1 ] * na * fc1[ 3 ] ) >> 8 ) ) / a );
|
|
|
|
+ fc1[ 0 ] = (unsigned char)( ( fc2[ 0 ] * fc2[ 3 ] + ( ( fc1[ 0 ] * na * fc1[ 3 ] ) >> 8 ) ) / a );
|
|
|
|
+ fc1[ 3 ] = a;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+inline void Bild::alphaPixelP3D( int &fc, int colorb )
|
|
|
|
+{
|
|
|
|
+ //alphaPixelAssozP( fc, colorb );
|
|
|
|
+ //return;
|
|
|
|
+ int alpha = ( ( colorb >> 24 ) & 0xFF );
|
|
|
|
+ int na = ( 0x100 - alpha );
|
|
|
|
+ fc = ( ( ( ( ( na * ( fc & 0xFF00FF ) ) >> 8 ) + ( ( alpha * ( colorb & 0xFF00FF ) ) >> 8 ) ) & 0xFF00FF ) |
|
|
|
|
+ ( ( ( ( na * ( fc & 0x00FF00 ) ) >> 8 ) + ( ( alpha * ( colorb & 0x00FF00 ) ) >> 8 ) ) & 0x00FF00 ) |
|
|
|
|
+ ( ( fc & 0xFF000000 ) ) ) * ( fc != 0 ) | ( fc == 0 ) * colorb;
|
|
|
|
+ //unsigned char *fc1 = (unsigned char*)&fc;
|
|
|
|
+ //unsigned char *fc2 = (unsigned char*)&colorb;
|
|
|
|
+ //unsigned char na = 255-fc2[ 3 ];
|
|
|
|
+ //fc1[ 3 ] = fc2[ 3 ];
|
|
|
|
+ //fc1[ 2 ] = (unsigned char)( ( fc2[ 2 ] * fc2[ 3 ] + fc1[ 2 ] * na ) / 255 );
|
|
|
|
+ //fc1[ 1 ] = (unsigned char)( ( fc2[ 1 ] * fc2[ 3 ] + fc1[ 1 ] * na ) / 255 );
|
|
|
|
+ //fc1[ 0 ] = (unsigned char)( ( fc2[ 0 ] * fc2[ 3 ] + fc1[ 0 ] * na ) / 255 );
|
|
|
|
+}
|
|
|
|
+
|
|
inline void Bild::alphaPixelP( int &fc, int colorb )
|
|
inline void Bild::alphaPixelP( int &fc, int colorb )
|
|
{
|
|
{
|
|
|
|
+ //alphaPixelAssozP( fc, colorb );
|
|
|
|
+ //return;
|
|
int alpha = ( ( colorb >> 24 ) & 0xFF );
|
|
int alpha = ( ( colorb >> 24 ) & 0xFF );
|
|
int na = ( 0x100 - alpha );
|
|
int na = ( 0x100 - alpha );
|
|
fc = ( ( ( ( ( na * ( fc & 0xFF00FF ) ) >> 8 ) + ( ( alpha * ( colorb & 0xFF00FF ) ) >> 8 ) ) & 0xFF00FF ) |
|
|
fc = ( ( ( ( ( na * ( fc & 0xFF00FF ) ) >> 8 ) + ( ( alpha * ( colorb & 0xFF00FF ) ) >> 8 ) ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( fc & 0x00FF00 ) ) >> 8 ) + ( ( alpha * ( colorb & 0x00FF00 ) ) >> 8 ) ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( fc & 0x00FF00 ) ) >> 8 ) + ( ( alpha * ( colorb & 0x00FF00 ) ) >> 8 ) ) & 0x00FF00 ) |
|
|
- ( ( fc & 0xFF000000 ) ) ) * ( fc != 0 || !alpha3D ) | ( fc == 0 && alpha3D ) * colorb;
|
|
|
|
- //unsigned char *fc1 = (unsigned char*)&fc[ i ];
|
|
|
|
|
|
+ ( ( fc & 0xFF000000 ) ) );
|
|
|
|
+ //unsigned char *fc1 = (unsigned char*)&fc;
|
|
//unsigned char *fc2 = (unsigned char*)&colorb;
|
|
//unsigned char *fc2 = (unsigned char*)&colorb;
|
|
- //unsigned char na = ~fc2[ 3 ];
|
|
|
|
|
|
+ //unsigned char na = 255-fc2[ 3 ];
|
|
//fc1[ 3 ] = fc2[ 3 ];
|
|
//fc1[ 3 ] = fc2[ 3 ];
|
|
//fc1[ 2 ] = (unsigned char)( ( fc2[ 2 ] * fc2[ 3 ] + fc1[ 2 ] * na ) / 255 );
|
|
//fc1[ 2 ] = (unsigned char)( ( fc2[ 2 ] * fc2[ 3 ] + fc1[ 2 ] * na ) / 255 );
|
|
//fc1[ 1 ] = (unsigned char)( ( fc2[ 1 ] * fc2[ 3 ] + fc1[ 1 ] * na ) / 255 );
|
|
//fc1[ 1 ] = (unsigned char)( ( fc2[ 1 ] * fc2[ 3 ] + fc1[ 1 ] * na ) / 255 );
|
|
@@ -112,7 +151,7 @@ void Bild::drawFlatDreieck( int y1, int y2, float m1, float b1, float m2, float
|
|
}
|
|
}
|
|
|
|
|
|
void Bild::drawFlatDreieckTextur( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
|
|
void Bild::drawFlatDreieckTextur( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
|
|
- double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur )
|
|
|
|
|
|
+ double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur )
|
|
{
|
|
{
|
|
const double yStart = max( y1, dPosA[ doa ].y );
|
|
const double yStart = max( y1, dPosA[ doa ].y );
|
|
const double yEnd = min( y2, dSizeA[ doa ].y );
|
|
const double yEnd = min( y2, dSizeA[ doa ].y );
|
|
@@ -129,17 +168,30 @@ void Bild::drawFlatDreieckAlpha( int y1, int y2, float m1, float b1, float m2, f
|
|
{
|
|
{
|
|
const int yStart = max( (int)( y1 + 0.5 ), dPosA[ doa ].y );
|
|
const int yStart = max( (int)( y1 + 0.5 ), dPosA[ doa ].y );
|
|
const int yEnd = min( (int)( y2 + 0.5 ), dSizeA[ doa ].y );
|
|
const int yEnd = min( (int)( y2 + 0.5 ), dSizeA[ doa ].y );
|
|
- for( int y = yStart; y < yEnd; y++ )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- const int xStart = max( (int)( m1 * ( (float)y + 0.5f ) + b1 + 0.5f ), dPosA[ doa ].x );
|
|
|
|
- const int xEnd = min( (int)( m2 * ( (float)y + 0.5 ) + b2 + 0.5f ), dSizeA[ doa ].x );
|
|
|
|
- for( int x = xStart; x < xEnd; x++ )
|
|
|
|
- alphaPixelP( fc[ x + y * size.x ], farbe );
|
|
|
|
|
|
+ for( int y = yStart; y < yEnd; y++ )
|
|
|
|
+ {
|
|
|
|
+ const int xStart = max( (int)( m1 * ( (float)y + 0.5f ) + b1 + 0.5f ), dPosA[ doa ].x );
|
|
|
|
+ const int xEnd = min( (int)( m2 * ( (float)y + 0.5 ) + b2 + 0.5f ), dSizeA[ doa ].x );
|
|
|
|
+ for( int x = xStart; x < xEnd; x++ )
|
|
|
|
+ alphaPixelP3D( fc[ x + y * size.x ], farbe );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int y = yStart; y < yEnd; y++ )
|
|
|
|
+ {
|
|
|
|
+ const int xStart = max( (int)( m1 * ( (float)y + 0.5f ) + b1 + 0.5f ), dPosA[ doa ].x );
|
|
|
|
+ const int xEnd = min( (int)( m2 * ( (float)y + 0.5 ) + b2 + 0.5f ), dSizeA[ doa ].x );
|
|
|
|
+ for( int x = xStart; x < xEnd; x++ )
|
|
|
|
+ alphaPixelP( fc[ x + y * size.x ], farbe );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void Bild::drawFlatDreieckTexturAlpha( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
|
|
void Bild::drawFlatDreieckTexturAlpha( int y1, int y2, double m1, double b1, double m2, double b2, double tx1, double ty1, double tx2, double ty2,
|
|
- double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur )
|
|
|
|
|
|
+ double tx_1o, double ty_1o, double tx_2o, double ty_2o, double txf, double tyf, Bild &textur )
|
|
{
|
|
{
|
|
const double yStart = max( y1, dPosA[ doa ].y );
|
|
const double yStart = max( y1, dPosA[ doa ].y );
|
|
const double yEnd = min( y2, dSizeA[ doa ].y );
|
|
const double yEnd = min( y2, dSizeA[ doa ].y );
|
|
@@ -238,16 +290,33 @@ void Bild::drawLinieHTexturAlpha( Vec2< double > p, double len, Vec2< double > t
|
|
int *buffer = textur.getBuffer();
|
|
int *buffer = textur.getBuffer();
|
|
int txtBr = textur.getBreite();
|
|
int txtBr = textur.getBreite();
|
|
int f;
|
|
int f;
|
|
- for( int i = 0; i < len; ++i, ++fc )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- f = buffer[ (int)( (int)( x + 0.5 ) + (int)( y + 0.5 ) * txtBr ) ];
|
|
|
|
- if( alpha[ alphaAnzahl ] )
|
|
|
|
|
|
+ for( int i = 0; i < len; ++i, ++fc )
|
|
{
|
|
{
|
|
- unsigned char *cf = (unsigned char*)&f;
|
|
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
|
|
+ f = buffer[ (int)( (int)( x + 0.5 ) + (int)( y + 0.5 ) * txtBr ) ];
|
|
|
|
+ if( alpha[ alphaAnzahl ] )
|
|
|
|
+ {
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ }
|
|
|
|
+ alphaPixelP3D( *fc, f );
|
|
|
|
+ x += txo, y += tyo;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int i = 0; i < len; ++i, ++fc )
|
|
|
|
+ {
|
|
|
|
+ f = buffer[ (int)( (int)( x + 0.5 ) + (int)( y + 0.5 ) * txtBr ) ];
|
|
|
|
+ if( alpha[ alphaAnzahl ] )
|
|
|
|
+ {
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ }
|
|
|
|
+ alphaPixelP( *fc, f );
|
|
|
|
+ x += txo, y += tyo;
|
|
}
|
|
}
|
|
- alphaPixelP( *fc, f );
|
|
|
|
- x += txo, y += tyo;
|
|
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
@@ -405,19 +474,34 @@ void Bild::alphaRegion( int x, int y, int b, int h, int ff )
|
|
int na = ( 0x100 - alpha );
|
|
int na = ( 0x100 - alpha );
|
|
int i1 = ( alpha * ( ff & 0xFF00FF ) ) >> 8;
|
|
int i1 = ( alpha * ( ff & 0xFF00FF ) ) >> 8;
|
|
int i2 = ( alpha * ( ff & 0x00FF00 ) ) >> 8;
|
|
int i2 = ( alpha * ( ff & 0x00FF00 ) ) >> 8;
|
|
- for( int i = 0; i < h; pixel += size.x - b, ++i, rowEnd += size.x )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- for( ; pixel < rowEnd; ++pixel )
|
|
|
|
|
|
+ for( int i = 0; i < h; pixel += size.x - b, ++i, rowEnd += size.x )
|
|
{
|
|
{
|
|
- *pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
|
|
- ( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
|
|
- ( ( *pixel & 0xFF000000 ) ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * ff;
|
|
|
|
|
|
+ for( ; pixel < rowEnd; ++pixel )
|
|
|
|
+ {
|
|
|
|
+ *pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
|
|
+ ( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
|
|
+ ( ( *pixel & 0xFF000000 ) ) ) * ( *pixel != 0 ) | ( *pixel == 0 ) * ff;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int i = 0; i < h; pixel += size.x - b, ++i, rowEnd += size.x )
|
|
|
|
+ {
|
|
|
|
+ for( ; pixel < rowEnd; ++pixel )
|
|
|
|
+ {
|
|
|
|
+ *pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
|
|
+ ( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
|
|
+ ( ( *pixel & 0xFF000000 ) ) );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
|
|
|
|
-void Bild::alphaPixel( int i, int f )
|
|
|
|
|
|
+void Bild::alphaPixel2D( int i, int f )
|
|
{
|
|
{
|
|
if( !alpha[ alphaAnzahl ] )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
alphaPixelP( fc[ i ], f );
|
|
alphaPixelP( fc[ i ], f );
|
|
@@ -430,7 +514,20 @@ void Bild::alphaPixel( int i, int f )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void Bild::alphaPixel( int x, int y, int f )
|
|
|
|
|
|
+void Bild::alphaPixel3D( int i, int f )
|
|
|
|
+{
|
|
|
|
+ if( !alpha[ alphaAnzahl ] )
|
|
|
|
+ alphaPixelP3D( fc[ i ], f );
|
|
|
|
+ if( alpha[ alphaAnzahl ] < 0xFF )
|
|
|
|
+ {
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( fc[ i ], f );
|
|
|
|
+ rend = 1;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Bild::alphaPixel2D( int x, int y, int f )
|
|
{
|
|
{
|
|
if( !alpha[ alphaAnzahl ] )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
alphaPixelP( fc[ x + y * size.x ], f );
|
|
alphaPixelP( fc[ x + y * size.x ], f );
|
|
@@ -443,7 +540,20 @@ void Bild::alphaPixel( int x, int y, int f )
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void Bild::alphaPixelDP( int x, int y, int f )
|
|
|
|
|
|
+void Bild::alphaPixel3D( int x, int y, int f )
|
|
|
|
+{
|
|
|
|
+ if( !alpha[ alphaAnzahl ] )
|
|
|
|
+ alphaPixelP3D( fc[ x + y * size.x ], f );
|
|
|
|
+ if( alpha[ alphaAnzahl ] < 0xFF )
|
|
|
|
+ {
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( fc[ x + y * size.x ], f );
|
|
|
|
+ rend = 1;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Bild::alphaPixelDP2D( int x, int y, int f )
|
|
{
|
|
{
|
|
if( alpha[ alphaAnzahl ] == 0xFF )
|
|
if( alpha[ alphaAnzahl ] == 0xFF )
|
|
return;
|
|
return;
|
|
@@ -462,11 +572,38 @@ void Bild::alphaPixelDP( int x, int y, int f )
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
|
|
|
|
-void Bild::alphaPixelDP( int i, int f )
|
|
|
|
|
|
+void Bild::alphaPixelDP3D( int x, int y, int f )
|
|
|
|
+{
|
|
|
|
+ if( alpha[ alphaAnzahl ] == 0xFF )
|
|
|
|
+ return;
|
|
|
|
+ int dpx = dPosA[ doa ].x;
|
|
|
|
+ int dpy = dPosA[ doa ].y;
|
|
|
|
+ int dgx = dSizeA[ doa ].x;
|
|
|
|
+ int dgy = dSizeA[ doa ].y;
|
|
|
|
+ if( x < dpx || y < dpy || x > dgx || y > dgy )
|
|
|
|
+ return;
|
|
|
|
+ if( alpha[ alphaAnzahl ] )
|
|
|
|
+ {
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ }
|
|
|
|
+ alphaPixelP3D( fc[ x + y * size.x ], f );
|
|
|
|
+ rend = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Bild::alphaPixelDP2D( int i, int f )
|
|
{
|
|
{
|
|
int x = i % size.x;
|
|
int x = i % size.x;
|
|
int y = i / size.x;
|
|
int y = i / size.x;
|
|
- alphaPixelDP( x, y, f );
|
|
|
|
|
|
+ alphaPixelDP2D( x, y, f );
|
|
|
|
+ rend = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Bild::alphaPixelDP3D( int i, int f )
|
|
|
|
+{
|
|
|
|
+ int x = i % size.x;
|
|
|
|
+ int y = i / size.x;
|
|
|
|
+ alphaPixelDP3D( x, y, f );
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -476,7 +613,10 @@ void Bild::setPixelDP( int x, int y, int f )
|
|
return;
|
|
return;
|
|
if( alpha[ alphaAnzahl ] )
|
|
if( alpha[ alphaAnzahl ] )
|
|
{
|
|
{
|
|
- alphaPixelDP( x, y, f );
|
|
|
|
|
|
+ if( alpha3D )
|
|
|
|
+ alphaPixelDP3D( x, y, f );
|
|
|
|
+ else
|
|
|
|
+ alphaPixelDP2D( x, y, f );
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
int dpx = dPosA[ doa ].x;
|
|
int dpx = dPosA[ doa ].x;
|
|
@@ -617,7 +757,7 @@ void Bild::drawLinieHAlpha( int x, int y, int len, int f ) // zeichnet eine hori
|
|
{
|
|
{
|
|
fc[ i ] = ( ( ( ( ( na * ( fc[ i ] & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
fc[ i ] = ( ( ( ( ( na * ( fc[ i ] & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( fc[ i ] & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( fc[ i ] & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( ( fc[ i ] & 0xFF000000 ) ) ) * ( fc[ i ] != 0 || !alpha3D ) | ( fc[ i ] == 0 && alpha3D ) * f;
|
|
|
|
|
|
+ ( ( fc[ i ] & 0xFF000000 ) ) ) * ( fc[ i ] != 0 || !alpha3D ) | ( fc[ i ] == 0 && alpha3D ) * f;
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
@@ -664,7 +804,7 @@ void Bild::drawLinieVAlpha( int x, int y, int len, int f ) // zeichnet eine vert
|
|
{
|
|
{
|
|
fc[ i ] = ( ( ( ( ( na * ( fc[ i ] & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
fc[ i ] = ( ( ( ( ( na * ( fc[ i ] & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( fc[ i ] & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( fc[ i ] & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( fc[ i ] & 0xFF000000 ) ) * ( fc[ i ] != 0 || !alpha3D ) | ( fc[ i ] == 0 && alpha3D ) * f;
|
|
|
|
|
|
+ ( fc[ i ] & 0xFF000000 ) ) * ( fc[ i ] != 0 || !alpha3D ) | ( fc[ i ] == 0 && alpha3D ) * f;
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
@@ -743,7 +883,7 @@ void Bild::drawLinieBordered( Punkt a, Punkt b, int bc, int fc )
|
|
else
|
|
else
|
|
yf = yf < 0 ? -1 : 1;
|
|
yf = yf < 0 ? -1 : 1;
|
|
double x = (double)a.x, y = (double)a.y;
|
|
double x = (double)a.x, y = (double)a.y;
|
|
- int maxP = (int)( sqrt( (float)(xlen * xlen + ylen * ylen) ) + 0.5 );
|
|
|
|
|
|
+ int maxP = (int)( sqrt( (float)( xlen * xlen + ylen * ylen ) ) + 0.5 );
|
|
int count = 0;
|
|
int count = 0;
|
|
int maxPixel = size.x * size.y;
|
|
int maxPixel = size.x * size.y;
|
|
while( !( (int)( x + 0.5 ) == b.x && (int)( y + 0.5 ) == b.y ) && count < maxP )
|
|
while( !( (int)( x + 0.5 ) == b.x && (int)( y + 0.5 ) == b.y ) && count < maxP )
|
|
@@ -842,7 +982,7 @@ void Bild::drawLinieBorderedAlpha( Punkt a, Punkt b, int bc, int fc )
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
}
|
|
}
|
|
- int maxP = (int)( sqrt( (float)(xlen * xlen + ylen * ylen) ) + 0.5 );
|
|
|
|
|
|
+ int maxP = (int)( sqrt( (float)( xlen * xlen + ylen * ylen ) ) + 0.5 );
|
|
int alpha = ( ( fc >> 24 ) & 0xFF );
|
|
int alpha = ( ( fc >> 24 ) & 0xFF );
|
|
int alpha2 = ( ( bc >> 24 ) & 0xFF );
|
|
int alpha2 = ( ( bc >> 24 ) & 0xFF );
|
|
int na = ( 0x100 - alpha );
|
|
int na = ( 0x100 - alpha );
|
|
@@ -861,28 +1001,28 @@ void Bild::drawLinieBorderedAlpha( Punkt a, Punkt b, int bc, int fc )
|
|
int &pixel = this->fc[ (int)( x - 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x - 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
}
|
|
}
|
|
if( (int)( (int)( x + 1.5 ) + (int)( y + 0.5 ) * size.x ) < maxPixel )
|
|
if( (int)( (int)( x + 1.5 ) + (int)( y + 0.5 ) * size.x ) < maxPixel )
|
|
{
|
|
{
|
|
int &pixel = this->fc[ (int)( x + 1.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x + 1.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
}
|
|
}
|
|
if( (int)( (int)( x + 0.5 ) + (int)( y - 0.5 ) * size.x ) < maxPixel )
|
|
if( (int)( (int)( x + 0.5 ) + (int)( y - 0.5 ) * size.x ) < maxPixel )
|
|
{
|
|
{
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y - 0.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y - 0.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
}
|
|
}
|
|
if( (int)( (int)( x + 0.5 ) + (int)( y + 1.5 ) * size.x ) < maxPixel )
|
|
if( (int)( (int)( x + 0.5 ) + (int)( y + 1.5 ) * size.x ) < maxPixel )
|
|
{
|
|
{
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 1.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 1.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na2 * ( pixel & 0xFF00FF ) ) >> 8 ) + j1 ) & 0xFF00FF ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
( ( ( ( na2 * ( pixel & 0x00FF00 ) ) >> 8 ) + j2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * bc;
|
|
}
|
|
}
|
|
x += xf, y += yf;
|
|
x += xf, y += yf;
|
|
}
|
|
}
|
|
@@ -893,7 +1033,7 @@ void Bild::drawLinieBorderedAlpha( Punkt a, Punkt b, int bc, int fc )
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na * ( pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na * ( pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * fc;
|
|
x += xf, y += yf;
|
|
x += xf, y += yf;
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
@@ -974,7 +1114,7 @@ void Bild::drawLinie( Punkt a, Punkt b, int fc ) // zeichnet eine Linie von Punk
|
|
else
|
|
else
|
|
yf = yf < 0 ? -1 : 1;
|
|
yf = yf < 0 ? -1 : 1;
|
|
double x = (double)a.x, y = (double)a.y;
|
|
double x = (double)a.x, y = (double)a.y;
|
|
- int maxP = (int)( sqrt( (float)(xlen * xlen + ylen * ylen) ) + 0.5 );
|
|
|
|
|
|
+ int maxP = (int)( sqrt( (float)( xlen * xlen + ylen * ylen ) ) + 0.5 );
|
|
int count = 0;
|
|
int count = 0;
|
|
while( !( (int)( x + 0.5 ) == b.x && (int)( y + 0.5 ) == b.y ) && count < maxP )
|
|
while( !( (int)( x + 0.5 ) == b.x && (int)( y + 0.5 ) == b.y ) && count < maxP )
|
|
{
|
|
{
|
|
@@ -1060,7 +1200,7 @@ void Bild::drawLinieAlpha( Punkt a, Punkt b, int fc )
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
}
|
|
}
|
|
- int maxP = (int)( sqrt( (float)(xlen * xlen + ylen * ylen) ) + 0.5 );
|
|
|
|
|
|
+ int maxP = (int)( sqrt( (float)( xlen * xlen + ylen * ylen ) ) + 0.5 );
|
|
int count = 0;
|
|
int count = 0;
|
|
int alpha = ( ( fc >> 24 ) & 0xFF );
|
|
int alpha = ( ( fc >> 24 ) & 0xFF );
|
|
int na = ( 0x100 - alpha );
|
|
int na = ( 0x100 - alpha );
|
|
@@ -1072,7 +1212,7 @@ void Bild::drawLinieAlpha( Punkt a, Punkt b, int fc )
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
int &pixel = this->fc[ (int)( x + 0.5 ) + (int)( y + 0.5 ) * size.x ];
|
|
pixel = ( ( ( ( ( na * ( pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
pixel = ( ( ( ( ( na * ( pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( pixel & 0xFF000000 ) ) * ( pixel != 0 || !alpha3D ) | ( pixel == 0 && alpha3D ) * fc;
|
|
x += xf, y += yf;
|
|
x += xf, y += yf;
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
@@ -1157,56 +1297,56 @@ void Bild::drawKreisAlpha( int xOff, int yOff, int r, int fc )
|
|
pixel = &this->fc[ xOff + a + ( yOff + b ) * size.x ];
|
|
pixel = &this->fc[ xOff + a + ( yOff + b ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff - a < dgx && xOff - a > dpx && yOff + b < dgy && yOff + b > dpy )
|
|
if( xOff - a < dgx && xOff - a > dpx && yOff + b < dgy && yOff + b > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff - a + ( yOff + b ) * size.x ];
|
|
pixel = &this->fc[ xOff - a + ( yOff + b ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff + a < dgx && xOff + a > dpx && yOff - b < dgy && yOff - b > dpy )
|
|
if( xOff + a < dgx && xOff + a > dpx && yOff - b < dgy && yOff - b > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff + a + ( yOff - b ) * size.x ];
|
|
pixel = &this->fc[ xOff + a + ( yOff - b ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff - a < dgx && xOff - a > dpx && yOff - b < dgy && yOff - b > dpy )
|
|
if( xOff - a < dgx && xOff - a > dpx && yOff - b < dgy && yOff - b > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff - a + ( yOff - b ) * size.x ];
|
|
pixel = &this->fc[ xOff - a + ( yOff - b ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff + b < dgx && xOff + b > dpx && yOff + a < dgy && yOff + a > dpy )
|
|
if( xOff + b < dgx && xOff + b > dpx && yOff + a < dgy && yOff + a > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff + b + ( yOff + a ) * size.x ];
|
|
pixel = &this->fc[ xOff + b + ( yOff + a ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff - b < dgx && xOff - b > dpx && yOff + a < dgy && yOff + a > dpy )
|
|
if( xOff - b < dgx && xOff - b > dpx && yOff + a < dgy && yOff + a > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff - b + ( yOff + a ) * size.x ];
|
|
pixel = &this->fc[ xOff - b + ( yOff + a ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff + b < dgx && xOff + b > dpx && yOff - a < dgy && yOff - a > dpy )
|
|
if( xOff + b < dgx && xOff + b > dpx && yOff - a < dgy && yOff - a > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff + b + ( yOff - a ) * size.x ];
|
|
pixel = &this->fc[ xOff + b + ( yOff - a ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
if( xOff - b < dgx && xOff - b > dpx && yOff - a < dgy && yOff - a > dpy )
|
|
if( xOff - b < dgx && xOff - b > dpx && yOff - a < dgy && yOff - a > dpy )
|
|
{
|
|
{
|
|
pixel = &this->fc[ xOff - b + ( yOff - a ) * size.x ];
|
|
pixel = &this->fc[ xOff - b + ( yOff - a ) * size.x ];
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
*pixel = ( ( ( ( ( na * ( *pixel & 0xFF00FF ) ) >> 8 ) + i1 ) & 0xFF00FF ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
( ( ( ( na * ( *pixel & 0x00FF00 ) ) >> 8 ) + i2 ) & 0x00FF00 ) |
|
|
- ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
|
|
|
|
+ ( *pixel & 0xFF000000 ) ) * ( *pixel != 0 || !alpha3D ) | ( *pixel == 0 && alpha3D ) * fc;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
@@ -1250,7 +1390,7 @@ void Bild::drawBild( int x, int y, int br, int hi, Bild &zBild ) // zeichet zBil
|
|
rend = 1;
|
|
rend = 1;
|
|
}
|
|
}
|
|
|
|
|
|
-void Bild::alphaBild( int x, int y, int br, int hi, Bild &zBild )
|
|
|
|
|
|
+void Bild::alphaBildAssoz( int x, int y, int br, int hi, Bild &zBild )
|
|
{
|
|
{
|
|
if( alpha[ alphaAnzahl ] == 0xFF )
|
|
if( alpha[ alphaAnzahl ] == 0xFF )
|
|
return;
|
|
return;
|
|
@@ -1280,7 +1420,7 @@ void Bild::alphaBild( int x, int y, int br, int hi, Bild &zBild )
|
|
ygr = yy * size.x;
|
|
ygr = yy * size.x;
|
|
ygr2 = ( yy - yst2 + yst ) * bb;
|
|
ygr2 = ( yy - yst2 + yst ) * bb;
|
|
for( xx = xst2; xx < dgx; ++xx )
|
|
for( xx = xst2; xx < dgx; ++xx )
|
|
- alphaPixelP( fc[ xx + ygr ], ff[ ( xx - xst2 + xst ) + ygr2 ] );
|
|
|
|
|
|
+ alphaPixelAssozP( fc[ xx + ygr ], ff[ ( xx - xst2 + xst ) + ygr2 ] );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
@@ -1294,8 +1434,95 @@ void Bild::alphaBild( int x, int y, int br, int hi, Bild &zBild )
|
|
{
|
|
{
|
|
int fc = ff[ ( xx - xst2 + xst ) + ygr2 ];
|
|
int fc = ff[ ( xx - xst2 + xst ) + ygr2 ];
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
unsigned char *cf = (unsigned char*)&fc;
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
- alphaPixelP( this->fc[ xx + ygr ], fc );
|
|
|
|
|
|
+ //cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelAssozP( this->fc[ xx + ygr ], fc );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ rend = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void Bild::alphaBild( int x, int y, int br, int hi, Bild &zBild )
|
|
|
|
+{
|
|
|
|
+ if( alpha[ alphaAnzahl ] == 0xFF )
|
|
|
|
+ return;
|
|
|
|
+ int dpx = dPosA[ doa ].x;
|
|
|
|
+ int dpy = dPosA[ doa ].y;
|
|
|
|
+ int dgx = dSizeA[ doa ].x;
|
|
|
|
+ int dgy = dSizeA[ doa ].y;
|
|
|
|
+ x += drawOff[ doa ].x;
|
|
|
|
+ y += drawOff[ doa ].y;
|
|
|
|
+ if( x + br < dpx || y + hi < dpy || x > dgx || y > dgy )
|
|
|
|
+ return;
|
|
|
|
+ br = minInt( br, zBild.getBreite() );
|
|
|
|
+ hi = minInt( hi, zBild.getHeight() );
|
|
|
|
+ int xst = maxInt( dpx - x, 0 );
|
|
|
|
+ int yst = maxInt( dpy - y, 0 );
|
|
|
|
+ int xst2 = maxInt( x, dpx );
|
|
|
|
+ int yst2 = maxInt( y, dpy );
|
|
|
|
+ dgx = minInt( x + br, dgx );
|
|
|
|
+ dgy = minInt( y + hi, dgy );
|
|
|
|
+ int bb = zBild.getBreite();
|
|
|
|
+ int *ff = zBild.getBuffer();
|
|
|
|
+ if( !alpha[ alphaAnzahl ] )
|
|
|
|
+ {
|
|
|
|
+ int xx, ygr, ygr2;
|
|
|
|
+ if( alpha3D )
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = ( yy - yst2 + yst ) * bb;
|
|
|
|
+ int fci = xst2 + ygr;
|
|
|
|
+ int ffi = xst + ygr2;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx, ++fci, ++ffi )
|
|
|
|
+ alphaPixelP3D( fc[ fci ], ff[ ffi ] );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = ( yy - yst2 + yst ) * bb;
|
|
|
|
+ int fci = xst2 + ygr;
|
|
|
|
+ int ffi = xst + ygr2;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx, ++fci, ++ffi )
|
|
|
|
+ alphaPixelP( fc[ fci ], ff[ ffi ] );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ int xx, ygr, ygr2;
|
|
|
|
+ if( alpha3D )
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = ( yy - yst2 + yst ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( xx - xst2 + xst ) + ygr2 ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP( this->fc[ xx + ygr ], fc );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = ( yy - yst2 + yst ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( xx - xst2 + xst ) + ygr2 ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( this->fc[ xx + ygr ], fc );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1364,25 +1591,54 @@ void Bild::alphaBild90( int x, int y, int br, int hi, Bild &zBild )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
{
|
|
{
|
|
int yy, xbb;
|
|
int yy, xbb;
|
|
- for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
- for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
- alphaPixelP( xx, yy, ff[ ( yy - yst2 + yst ) + xbb ] );
|
|
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ alphaPixelP3D( xx, yy, ff[ ( yy - yst2 + yst ) + xbb ] );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ alphaPixelP( xx, yy, ff[ ( yy - yst2 + yst ) + xbb ] );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
int yy, xbb;
|
|
int yy, xbb;
|
|
- for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
- for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
{
|
|
{
|
|
- int fc = ff[ ( yy - yst2 + yst ) + xbb ];
|
|
|
|
- unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
- alphaPixelP( xx, yy, fc );
|
|
|
|
|
|
+ xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( yy - yst2 + yst ) + xbb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( xx, yy, fc );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( zBild.getHeight() - ( xx - xst2 + xst + 1 ) ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( yy - yst2 + yst ) + xbb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP( xx, yy, fc );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1452,27 +1708,58 @@ void Bild::alphaBild180( int x, int y, int br, int hi, Bild &zBild )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
{
|
|
{
|
|
int xx, ygr, ybb;
|
|
int xx, ygr, ybb;
|
|
- for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- ygr = yy * size.x;
|
|
|
|
- ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
- for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
- alphaPixelP( fc[ xx + ygr ], ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ] );
|
|
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ alphaPixelP3D( fc[ xx + ygr ], ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ] );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ alphaPixelP( fc[ xx + ygr ], ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ] );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
int xx, ygr, ybb;
|
|
int xx, ygr, ybb;
|
|
- for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- ygr = yy * size.x;
|
|
|
|
- ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
- for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
{
|
|
{
|
|
- int fc = ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ];
|
|
|
|
- unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
- alphaPixelP( this->fc[ xx + ygr ], fc );
|
|
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( this->fc[ xx + ygr ], fc );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ybb = ( zBild.getHeight() - ( yy - yst2 + yst + 1 ) ) * bb;
|
|
|
|
+ for( xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( bb - ( xx - xst2 + xst + 1 ) ) + ybb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP( this->fc[ xx + ygr ], fc );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1541,25 +1828,54 @@ void Bild::alphaBild270( int x, int y, int br, int hi, Bild &zBild )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
if( !alpha[ alphaAnzahl ] )
|
|
{
|
|
{
|
|
int yy, xbb;
|
|
int yy, xbb;
|
|
- for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
- for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
- alphaPixelP( xx, yy, ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ] );
|
|
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ alphaPixelP3D( xx, yy, ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ] );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ alphaPixelP( xx, yy, ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ] );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
int yy, xbb;
|
|
int yy, xbb;
|
|
- for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
- for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
{
|
|
{
|
|
- int fc = ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ];
|
|
|
|
- unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
- alphaPixelP( xx, yy, fc );
|
|
|
|
|
|
+ xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( xx, yy, fc );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int xx = xst2; xx < dgx; ++xx )
|
|
|
|
+ {
|
|
|
|
+ xbb = ( xx - xst2 + xst ) * bb;
|
|
|
|
+ for( yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ int fc = ff[ ( bb - ( yy - yst2 + yst + 1 ) ) + xbb ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&fc;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP( xx, yy, fc );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1629,16 +1945,34 @@ void Bild::alphaBildSkall( int x, int y, int br, int hi, Bild &zBild )
|
|
int *ff = zBild.getBuffer();
|
|
int *ff = zBild.getBuffer();
|
|
int xx, ygr, ygr2;
|
|
int xx, ygr, ygr2;
|
|
double xb = 0;
|
|
double xb = 0;
|
|
- for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
|
|
+ if( alpha3D )
|
|
{
|
|
{
|
|
- ygr = yy * size.x;
|
|
|
|
- ygr2 = (int)( ( yy - yst2 + yst ) * yo ) * bb;
|
|
|
|
- for( xx = xst2, xb = xst * xo; xx < dgx; ++xx, xb += xo )
|
|
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
{
|
|
{
|
|
- int f = ff[ (int)xb + ygr2 ];
|
|
|
|
- unsigned char *cf = (unsigned char*)&f;
|
|
|
|
- cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
- alphaPixelP( fc[ xx + ygr ], f );
|
|
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = (int)( ( yy - yst2 + yst ) * yo ) * bb;
|
|
|
|
+ for( xx = xst2, xb = xst * xo; xx < dgx; ++xx, xb += xo )
|
|
|
|
+ {
|
|
|
|
+ int f = ff[ (int)xb + ygr2 ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP3D( fc[ xx + ygr ], f );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ for( int yy = yst2; yy < dgy; ++yy )
|
|
|
|
+ {
|
|
|
|
+ ygr = yy * size.x;
|
|
|
|
+ ygr2 = (int)( ( yy - yst2 + yst ) * yo ) * bb;
|
|
|
|
+ for( xx = xst2, xb = xst * xo; xx < dgx; ++xx, xb += xo )
|
|
|
|
+ {
|
|
|
|
+ int f = ff[ (int)xb + ygr2 ];
|
|
|
|
+ unsigned char *cf = (unsigned char*)&f;
|
|
|
|
+ cf[ 3 ] = (unsigned char)( ( cf[ 3 ] > alpha[ alphaAnzahl ] ) * ( cf[ 3 ] - alpha[ alphaAnzahl ] ) );
|
|
|
|
+ alphaPixelP( fc[ xx + ygr ], f );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
rend = 1;
|
|
rend = 1;
|
|
@@ -2069,7 +2403,7 @@ void Bild::replaceColorWithAlpha( int color )
|
|
for( int x = dx + xx; x < bb; x++ )
|
|
for( int x = dx + xx; x < bb; x++ )
|
|
{
|
|
{
|
|
unsigned char *cf = ( unsigned char* )&( fc[ x + ygr ] );
|
|
unsigned char *cf = ( unsigned char* )&( fc[ x + ygr ] );
|
|
- int abstand = (int)sqrt( (float)(( r - cf[ 2 ] ) * ( r - cf[ 2 ] ) + ( g - cf[ 1 ] ) * ( g - cf[ 1 ] ) + ( b - cf[ 0 ] ) * ( b - cf[ 0 ] )) );
|
|
|
|
|
|
+ int abstand = (int)sqrt( (float)( ( r - cf[ 2 ] ) * ( r - cf[ 2 ] ) + ( g - cf[ 1 ] ) * ( g - cf[ 1 ] ) + ( b - cf[ 0 ] ) * ( b - cf[ 0 ] ) ) );
|
|
if( abstand > 255 )
|
|
if( abstand > 255 )
|
|
abstand = 255;
|
|
abstand = 255;
|
|
cf[ 3 ] = (unsigned char)( abstand );
|
|
cf[ 3 ] = (unsigned char)( abstand );
|
|
@@ -2215,6 +2549,11 @@ const Punkt &Bild::getDrawOff() const
|
|
return drawOff[ doa ];
|
|
return drawOff[ doa ];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool Bild::hasAlpha3D()
|
|
|
|
+{
|
|
|
|
+ return alpha3D;
|
|
|
|
+}
|
|
|
|
+
|
|
// Reference Counting
|
|
// Reference Counting
|
|
Bild *Bild::getThis()
|
|
Bild *Bild::getThis()
|
|
{
|
|
{
|