crabs_firewall-3.0.1 ©2005-2011 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)
1 /* 2 **============================================================================= 3 ** crabs_firewall-3.0.1 : Firewall-Masquerade avec interface http 4 ** Copyright (C) 2005-2011 : Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com) 5 ** 6 ** Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer 7 ** et/ou le modifier en respectant les termes de la GNU General Public License 8 ** version 2 ou (suite a votre propre choix) une version ulterieure. 9 ** 10 ** Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais 11 ** sans aucune garantie, meme si il est associe a un produit qui vous en 12 ** propose une. Conformez-vous a la GNU General Public License pour avoir 13 ** plus de precisions. 14 ** 15 ** L'auteur ne peut etre tenu responsable de l'utilisation faite des 16 ** composantes associees a ce projet (en partie ou dans leur totalite). 17 ** 18 ** Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC 19 ** de ce projet sous le nom gnu_gpl.txt 20 ** 21 **============================================================================= 22 */ 23 #include "graph.h" 24 #include <string.h> 25 26 #define VMIN(x,y) (((x)<(y))?(x):(y)) 27 #define VMAX(x,y) (((x)>(y))?(x):(y)) 28 bool CGgraph::creerGraph() 29 { 30 gdImagePtr im = gdImageCreate( W, H ) ; 31 if ( !im ) return false ; 32 blanc = gdImageColorResolve(im, 255, 255, 255) ; 33 noir = gdImageColorResolve(im, 0, 0, 0) ; 34 caxe = gdImageColorResolve(im, 192, 192, 192 ) ; 35 36 gdImageRectangle( im, 0, 0, W-1, H-1, noir ) ; 37 gdImageRectangle( im, 1, 1, W-2, H-2, noir ) ; 38 39 margeG = 2 , margeD=2 , margeH=2 , margeB=3 ; 40 dessineTitre( im, noir ) ; 41 dessineLegende( im ) ; 42 dessineValeurAxe( im ) ; 43 double dW = (double)W ; double dH = (double)H ; 44 double margeX = (double)( margeG + margeD ) ; 45 double margeY = (double)( margeH + margeB ) ; 46 47 gdImageLine( im, margeG-3, margeH, W-margeD+3, margeH, noir ) ; 48 gdImageLine( im, margeG-3, H-margeB, W-margeD+3, H-margeB, noir ) ; 49 gdImageLine( im, margeG, margeH-3, margeG, H-margeB+4, noir ) ; 50 gdImageLine( im, W-margeD, margeH-3, W-margeD, H-margeB+4, noir ) ; 51 52 char xnom[128] ; axeX->getNom( xnom ) ; 53 double dxmin, dxmax, dymin, dymax ; 54 axeX->getMinMax( dxmin, dxmax ) ; 55 double AX = (dW-margeX) / ( dxmax - dxmin ) ; 56 double BX = margeG ; double DX = dxmin ; 57 58 for( int i=0; i<NbCourbe; i++ ) 59 { 60 if ( !crb[i].valeur ) continue ; 61 62 char ynom[128] ; crb[i].valeur->getNom( ynom ) ; 63 int couleur = gdImageColorResolve(im,crb[i].R,crb[i].G,crb[i].B) ; 64 CGserie* Y = axeY[crb[i].axeY] ; Y->getMinMax( dymin, dymax ) ; 65 66 double AY = (dH-margeY) / ( dymin - dymax ) ; 67 double BY = margeH ; double DY = dymax ; 68 69 Y = crb[i].valeur ; int nb = Y->getNb() ; 70 double xo, yo, vx, vy ; bool prec = false ; 71 for( int p=0; p<nb; p++ ) 72 { 73 vx = axeX->getValeur(p) ; 74 if ( vx < dxmin ) { prec=false; continue ; } 75 if ( vx > dxmax ) { prec=false; continue ; } 76 77 vy = Y->getValeur(p) ; 78 if ( vy < dymin ) vy = dymin ; 79 if ( vy > dymax ) vy = dymax ; 80 81 double xg = AX * ( vx - DX ) + BX ; 82 double yg = AY * ( vy - DY ) + BY ; 83 if ( prec ) 84 gdImageLine(im,(int)xo,(int)yo,int(xg),(int)yg,couleur); 85 xo = xg; yo = yg ; prec = true ; 86 } 87 } 88 FILE* out ; 89 if ( *fichier ) 90 out = fopen( fichier, "wb" ) ; 91 else 92 out = stdout ; 93 if ( out ) 94 { 95 gdImagePng( im, out ) ; 96 fclose( out ) ; 97 } 98 gdImageDestroy(im); 99 return (out)?true:false ; 100 } 101 102 void CGgraph::zoneCourbe( int&x0,int&y0, int&x1,int&y1 ) 103 { 104 x0 = margeG ; 105 y0 = margeH ; 106 x1 = W - margeD ; 107 y1 = H - margeB ; 108 } 109 110
Date de génération : 22/09/2011 21:48