/* ======================================================= *
 * Copyright 1998-2005 Stephen C. Grubb                    *
 * http://ploticus.sourceforge.net                         *
 * Covered by GPL; see the file ./Copyright for details.   *
 * ======================================================= */

/* PROC BEVELRECT - bevelled rectange, e.g. for button */

#include "pl.h"

int
PLP_rect()
{
char attr[NAMEMAXLEN], val[256];
char *line, *lineval;
int nt, lvp;
int first;

double xlo, ylo, xhi, yhi;
char color[COLORLEN];
double bevelsize;
char lowbevelcolor[COLORLEN], hibevelcolor[COLORLEN], shadowcolor[COLORLEN];
double shadowsize;
int gotrect;
char outline[128];
int ioutline;
char mapurl[MAXPATH];
char maplabel[MAXTT];
int clickmap_on;

TDH_errprog( "pl proc rect" );


/* initialize */
strcpy( color, "dullyellow" );
/* bevelsize = 0.1; */
bevelsize = 0.0;
strcpy( lowbevelcolor, "0.6" );
strcpy( hibevelcolor, "0.8" );
strcpy( shadowcolor, "black" );
shadowsize = 0.0;
strcpy( outline, "" );
ioutline = 0;
gotrect = 0;
clickmap_on = 0;
strcpy( mapurl, "" );
strcpy( maplabel, "" );


/* get attributes.. */
first = 1;
while( 1 ) {
	line = getnextattr( first, attr, val, &lvp, &nt );
	if( line == NULL ) break;
	first = 0;
	lineval = &line[lvp];

	if( stricmp( attr, "rectangle" )==0 ) {
                getbox( "box", lineval, &xlo, &ylo, &xhi, &yhi );
		gotrect = 1;
		}
	else if( stricmp( attr, "color" )==0 ) strcpy( color, val );
	else if( stricmp( attr, "bevelsize" )==0 ) bevelsize = atof( val );
	else if( stricmp( attr, "shadowsize" )==0 ) shadowsize = atof( val );
	else if( stricmp( attr, "lowbevelcolor" )==0 ) strcpy( lowbevelcolor, val );
	else if( stricmp( attr, "hibevelcolor" )==0 ) strcpy( hibevelcolor, val );
	else if( stricmp( attr, "shadowcolor" )==0 ) strcpy( shadowcolor, val );
	else if( stricmp( attr, "clickmapurl" )==0 ) {
		if( PLS.clickmap ) { strcpy( mapurl, val ); clickmap_on = 1; }
		}
	else if( stricmp( attr, "clickmaplabel" )==0 ) {
		if( PLS.clickmap ) { strcpy( maplabel, lineval ); clickmap_on = 1; }
		}
        else if( stricmp( attr, "clickmaplabeltext" )==0 ) {
                if( PLS.clickmap ) { getmultiline( "clickmaplabeltext", lineval, MAXTT, maplabel ); clickmap_on = 1; }
                }

	else if( stricmp( attr, "outline" )==0 ) {
		strcpy( outline, lineval );
		if( GL_smember( val, "no none" )==0 ) ioutline = 1;
		}

	else Eerr( 1, "attribute not recognized", attr );
	}



/* now do the plotting work.. */

if( !gotrect ) return( Eerr( 695, "No rectangle specified", "" ));
if( stricmp( color, "none" )==0 ) strcpy( color, "" );/* "none" added scg 1/21/05 */

linedet( "outline", outline, 0.5 );
Ecblock( xlo, ylo, xhi, yhi, color, ioutline );

if( bevelsize > 0.0 || shadowsize > 0.0 ) 
	Ecblockdress( xlo, ylo, xhi, yhi,
       		bevelsize, lowbevelcolor, hibevelcolor, shadowsize, shadowcolor);

if( clickmap_on ) clickmap_entry( 'r', mapurl, 0, xlo, ylo, xhi, yhi, 0, 0, maplabel );

return( 0 );
}

/* ======================================================= *
 * Copyright 1998-2005 Stephen C. Grubb                    *
 * http://ploticus.sourceforge.net                         *
 * Covered by GPL; see the file ./Copyright for details.   *
 * ======================================================= */


syntax highlighted by Code2HTML, v. 0.9.1