Added sphere cap deformations. This is influenced by config parameter "CapDeformation" (no UI yet) which ranges from 0 (sphere) to 100 (flat). Default is sphere.

CCMAIL: <lmurray@undefinedfire.com>

svn path=/trunk/KDE/kdebase/workspace/; revision=853464
This commit is contained in:
Martin Gräßlin 2008-08-27 19:02:14 +00:00
parent cc6e98cec9
commit 1e1b0ef7c6
2 changed files with 4 additions and 0 deletions

View file

@ -47,6 +47,7 @@ SphereEffect::SphereEffect()
animateDesktopChange = false;
KConfigGroup conf = effects->effectConfig( "Sphere" );
zPosition = conf.readEntry( "ZPosition", 450.0 );
capDeformationFactor = conf.readEntry( "CapDeformation", 0 )/100.0f;
bigCube = true;
}
@ -173,7 +174,9 @@ void SphereEffect::paintCapStep( float z, float zTexture, bool texture )
float topAngle = angle*i*M_PI/180.0;
float bottomAngle = angle*(i+1)*M_PI/180.0;
float yTop = rect.height() - radius * cos( topAngle );
yTop -= (yTop-rect.height()*0.5)*capDeformationFactor;
float yBottom = rect.height() -radius * cos( bottomAngle );
yBottom -= (yBottom-rect.height()*0.5)*capDeformationFactor;
for( int j=0; j<36; j++ )
{
float x = radius * sin( topAngle ) * sin( (90.0+j*10.0)*M_PI/180.0 );

View file

@ -45,6 +45,7 @@ class SphereEffect
bool mInited;
bool mValid;
GLShader* mShader;
float capDeformationFactor;
};
} // namespace