#!/usr/bin/perl use GD; use CGI; my $PI = 3.141592653; my $R = 50; my $X = 150; my $Y = 150; my $form = new CGI; my $image = new GD::Image(300,300); $p1 = $form->url_param("P1"); $p2 = $form->url_param("P2"); $white = $image->colorAllocate(255,255,255); $black = $image->colorAllocate( 0, 0, 0); $blue = $image->colorAllocate(128,128,255); $red = $image->colorAllocate(255, 0, 0); $image->transparent($white); $image->filledRectangle( 20,50, 50,55, $blue); $image->string(gdMediumBoldFont, 55,45, "P1 " . ($p1)."/".($p1+$p2) , $black); $image->filledRectangle( 20,60, 50,65, $red); $image->string(gdMediumBoldFont, 55,55, "P2 " . ($p2)."/".($p1+$p2) , $black); if ($p1+$p2 > 0) { $p1_percent = ( $p1 / ( $p1 + $p2 ) ); $p2_percent = ( $p2 / ( $p1 + $p2 ) ); $p1_percentDo = ( $p1 / ( $p1 + $p2 ) ) * 360; $p2_percentDo = ( $p2 / ( $p1 + $p2 ) ) * 360; $p1_percentR = ( $p1 / ( $p1 + $p2 ) ) * 2 * $PI; $p2_percentR = ( $p2 / ( $p1 + $p2 ) ) * 2 * $PI; ## p1 $image->arc( $X,$Y, 2*$R,2*$R, 0 ,$p1_percentDo, $black); $image->line( $X,$Y, $X+int(cos(0) * $R) ,$Y+int(sin(0) * $R), $black); $image->line( $X,$Y, $X+int(cos($p1_percentR) * $R) ,$Y+int(sin($p1_percentR) * $R), $black); $image->fill( $X+int(cos($p1_percentR/2) * ($R/2)) ,$Y+int(sin($p1_percentR/2) * ($R/2)), $blue); ## p2 $image->arc( $X,$Y, 2*$R,2*$R, $p1_percentDo ,$p1_percentDo+$p2_percentDo, $black); $image->line( $X,$Y, $X+int(cos($p1_percentR) * $R) ,$Y+int(sin($p1_percentR) * $R), $black); $image->line( $X,$Y, $X+int(cos($p1_percentR+$p2_percentR) * $R) ,$Y+int(sin($p1_percentR+$p2_percentR) * $R), $black); $image->fill( $X+int(cos($p1_percentR+($p2_percentR/2)) * ($R/2)) ,$Y+int(sin($p1_percentR+($p2_percentR/2)) * ($R/2)), $red); } else { $image->arc( $X,$Y, 2*$R,2*$R, 0,360, $black); } print("Content-type: image/png\n\n"); print $image->png;