#include "bumps.h"
-void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iWinWidth, uint16_ nColorCount )
+void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ nColorCount )
{
double nDelta;
int16_ iHeight, iWidth;
- pSpotLight->nDiameter = iWinWidth / 3;
+ pSpotLight->nDiameter = iDiameter;
#ifdef VERBOSE
printf( "%s: Light Diameter: %d\n", progclass, pSpotLight->nDiameter );
#endif
void CreateTables( SSpotLight *pSpotLight )
{
- long double nUnit;
+ double nUnit;
uint16_ iDegree;
pSpotLight->nDegreeCount = get_integer_resource( "degrees", "Integer" );
pSpotLight->aSinTable = calloc( pSpotLight->nDegreeCount, sizeof(double) );
/* This funtion builds the Sine Lookup Tables. */
- nUnit = (long double)( PI * 2.0F ) / (long double)( pSpotLight->nDegreeCount );
+ nUnit = (double)( PI * 2.0F ) / (double)( pSpotLight->nDegreeCount );
for( iDegree=0; iDegree<pSpotLight->nDegreeCount; iDegree++)
- pSpotLight->aSinTable[ iDegree ] = sin( nUnit * (long double)iDegree );
+ pSpotLight->aSinTable[ iDegree ] = sin( nUnit * (double)iDegree );
}
XGCValues GCValues;
int32_ nGCFlags;
uint16_ iWidth, iHeight;
-
+ uint16_ iDiameter;
+
XGetWindowAttributes( pNewDisplay, NewWin, &XWinAttribs );
pBumps->iWinWidth = XWinAttribs.width;
pBumps->iWinHeight = XWinAttribs.height;
pBumps->GraphicsContext = XCreateGC( pBumps->pDisplay, pBumps->Win, nGCFlags, &GCValues );
SetPalette( pBumps, &XWinAttribs );
- CreateSpotLight( &pBumps->SpotLight, pBumps->iWinWidth, pBumps->nColorCount );
+ iDiameter = ( ( pBumps->iWinWidth < pBumps->iWinHeight ) ? pBumps->iWinWidth : pBumps->iWinHeight ) / 3;
+ CreateSpotLight( &pBumps->SpotLight, iDiameter, pBumps->nColorCount );
InitBumpMap( pBumps, &XWinAttribs );
/* Clear the image. */
void InitBumpMap( SBumps *pBumps, XWindowAttributes *pXWinAttribs )
{
XImage *pScreenImage;
- XColor aColors[ pBumps->iWinWidth ];
+ XColor *aColors;
uint8_ nSoften;
uint16_ iWidth, iHeight;
BOOL bInvert = (BOOL)get_boolean_resource( "invert", "Boolean" );
+ aColors = (XColor*)calloc( pBumps->iWinWidth, sizeof(XColor) );
grab_screen_image( pXWinAttribs->screen, pBumps->Win );
pScreenImage = XGetImage( pBumps->pDisplay, pBumps->Win, 0, 0, pBumps->iWinWidth, pBumps->iWinHeight, ~0L, ZPixmap );
#endif
while( nSoften-- )
SoftenBumpMap( pBumps );
+ free( aColors );
}