#define _GNU_SOURCE
#include <gd.h>
#include <math.h>
#include "gdfonts.h"
#include "gdfontt.h"
#include "gdfontl.h"
#include "gdfontmb.h"


void generate() {
	FILE *fp1;
	int count1;
	char buf[100];
	char temp[100];

	double yes=0;
	double no=0;
	double maybe=0;
	double var1;
	double var2;

	int emptyvarstr;
	char labelstring[30];
	double tenth;

        gdImagePtr im;
        FILE *out;
        im = gdImageCreate(800,600);  
        //allocate colors
        int white = gdImageColorAllocate(im, 255, 255, 255);
        int black = gdImageColorAllocate(im, 0, 0, 0);
        int red = gdImageColorAllocate(im, 255, 0, 0);
        int blue = gdImageColorAllocate(im, 0, 0, 255);
        int green = gdImageColorAllocate(im, 0, 255, 0);
        int yellow = gdImageColorAllocate(im, 255, 255, 0);
        int orange = gdImageColorAllocate(im, 255, 128, 0);
        int purple = gdImageColorAllocate(im, 255, 0, 255);
        int brown = gdImageColorAllocate(im, 128, 64, 0);
        int grey = gdImageColorAllocate(im, 128, 128, 128);

        int styleDashed[8];
        styleDashed[0] = blue;
        styleDashed[1] = blue;
        styleDashed[2] = orange;
        styleDashed[3] = orange;
        styleDashed[4] = gdTransparent;
        styleDashed[5] = yellow;
        styleDashed[6] = gdTransparent;
        styleDashed[7] = yellow;
        
        gdImageSetStyle(im, styleDashed, 8);

        gdImageLine(im, 50, 10 ,50 ,550, black);
        gdImageLine(im, 10, 550,750,550, black);

	gdImageString(im, gdFontLarge,   450   ,   550    , "YES" , black);
	gdImageString(im, gdFontLarge,   250   ,   550    , "NO" , black);
	gdImageString(im, gdFontLarge,   650   ,   550    , "MAYBE" , black);




        if( ( fp1 = fopen( "/var/www/cgi-bin/ipaddress", "r" ) ) == NULL ) {
                //fprintf( stderr, "Error opening\n" );
                //exit( 1 );
               // error=1;
		
        }
        while( fgets(buf, sizeof(buf), fp1) != NULL)
        {
                count1=0;
                while(buf[count1] != '\n' && buf[count1] != ' '){
                        //temp[count1]=buf[count1];
                        count1++;
                }

		count1++;
                //while(buf[count1] != '\n' && buf[count1] != ' '){
                        temp[0]=buf[count1];
                //        count1++;
                //}


                temp[1]=0;
		var1 = atof(temp);

		//printf("var1: %lf\n", var1);
		if(var1==0) {
			no++;
		}else if(var1==1) {
			yes++;
		}else if(var1==2) {
			maybe++;
		}



                //error2=strcmp(remoteip, temp);
                //printf("error2: %d\n", error2);
        }
	fclose(fp1);

//find biggest one

if(no>yes && no>maybe){
	var1=no;
	gdImageFilledRectangle(im, 200, 550, 400, 50, red);
	emptyvarstr = sprintf( labelstring, "%.0lf", no);
	gdImageString(im, gdFontLarge,   300, 550   , labelstring , black);

}else if(yes>no && yes>maybe){
	var1=yes;
	gdImageFilledRectangle(im, 400, 550, 600, 50, green);
        emptyvarstr = sprintf( labelstring, "%.0lf", yes);
        gdImageString(im, gdFontLarge,   500, 550   , labelstring , black);


}else if(maybe>no && maybe>yes) {
	var1=maybe;
	gdImageFilledRectangle(im, 600, 550, 800, 50, blue);
        emptyvarstr = sprintf( labelstring, "%.0lf", maybe);
        gdImageString(im, gdFontLarge,   700, 550   , labelstring , black);

}


if(yes != var1) {

	if(yes != 0) {
		var2=(550 - ( (yes/var1) *500) );

	}else{
		var2=550;
	}
	var2=ceil(var2);
	gdImageFilledRectangle(im, 400, 550, 600, var2, green);

        emptyvarstr = sprintf( labelstring, "%.0lf", yes);
        gdImageString(im, gdFontLarge,   500, 550   , labelstring , black);

}

if(no != var1) {
        if(no != 0) {
                var2=(550 - ( (no/var1) *500) );

        }else{
                var2=550;
        }
	var2=ceil(var2);

	gdImageFilledRectangle(im, 200, 550, 400, var2, red);
        emptyvarstr = sprintf( labelstring, "%.0lf", no);
        gdImageString(im, gdFontLarge,   300, 550   , labelstring , black);

}

if(maybe != var1) {

        if(maybe != 0) {
                var2=(550 - ( (maybe/var1)*500) );

        }else{
                var2=550;
        }
	var2=ceil(var2);

	gdImageFilledRectangle(im, 600, 550, 800,var2, blue);
        emptyvarstr = sprintf( labelstring, "%.0lf", maybe);
        gdImageString(im, gdFontLarge,   700, 550   , labelstring , black);

}

//gdImageFilledRectangle(im, 200, 550, 400, 550+no, red);
//gdImageFilledRectangle(im, 400, 550, 600, 550+yes, green);
//gdImageFilledRectangle(im, 600, 550, 800, 550+maybe, blue);

//emptyvarstr = sprintf( labelstring, "%d", no);
//gdImageString(im, gdFontSmall,   300, 560+no   , labelstring , red);
//emptyvarstr = sprintf( labelstring, "%d", yes);
//gdImageString(im, gdFontSmall,  500,  560+yes    , labelstring , green);
//emptyvarstr = sprintf( labelstring, "%d", maybe);
//gdImageString(im, gdFontSmall,  700,  560+maybe    , labelstring , blue);


        out = fopen("/var/www/htdocs/poll.png", "w");
        gdImageInterlace(im, 1);
        //gdImageJpeg(im, out, -1);
        gdImagePng(im, out);
        fclose(out);
        gdImageDestroy(im);


}
