Firewall-Masquerade avec interface http

crabs_firewall-3.0.1 ©2005-2011 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)

libgraph.a~~ / LIB / GRAPH / graph_titre_axe.cpp
Makefile graph.h serie.cpp timestamp.cpp graph.cpp graph_creer.cpp graph_util.cpp graph_titre_axe.cpp
    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 char THE_FONT[] = "/usr/share/fonts/TTF/DejaVuSans.ttf" ;
   27 
   28 void CGgraph::dessineTitre( gdImagePtr im, int col )
   29     {
   30     int h,w,brect[8];
   31     char* err = textSize( titre, THE_FONT, 10, w, h ) ;
   32     if ( err )
   33         printf( "ERR: %s\n", err ) ;
   34     else
   35         {
   36         int x = ( W - w ) / 2 , y = margeH + h -1 ;
   37         err = gdImageStringFT(im,brect,col,THE_FONT,10,0.,x,y,titre);
   38         if ( err ) printf( "ERR: %s\n", err ) ;
   39         margeH += h+3 ;
   40         }
   41     }
   42 
   43 void CGgraph::dessineLegende( gdImagePtr im )
   44     {
   45     int w[NbCourbe], h[NbCourbe], wsum, hmax, brect[8], nbc=0 ;
   46     char nom[NbCourbe][128] ;
   47     wsum = 0 ; hmax = 0 ;
   48     for( int i=0; i<NbCourbe; i++ )
   49         {
   50         if ( !crb[i].valeur ) continue ;
   51         nbc++ ;
   52         if ( crb[i].nom[0] )
   53             strcpy( nom[i], crb[i].nom ) ;
   54         else
   55             crb[i].valeur->getNom( nom[i] ) ;
   56         char* err = textSize( nom[i], THE_FONT, 10, w[i], h[i] ) ;
   57         if ( err ) return ;
   58         wsum+= w[i] + 20 ; hmax = Max( 2, hmax, h[i] ) ;
   59         }
   60     if ( nbc <= 1 ) return ;
   61     int nbligne = 1 + wsum / W ;
   62     int y0 = H - ( hmax+8)*nbligne + hmax ;
   63     wsum = 0 ;
   64     for( int i=0; i<NbCourbe; i++ )
   65         {
   66         if ( !crb[i].valeur ) continue ;
   67         int col = gdImageColorResolve(im,crb[i].R,crb[i].G,crb[i].B) ;
   68         wsum+= 10 ;
   69         char* err = gdImageStringFT(im,brect,col,THE_FONT,10,0.,wsum,y0,nom[i]);
   70         wsum+= w[i] + 10 ;
   71         if ( wsum > W -10 ) { wsum = 0 ; y0+= hmax+8 ; }
   72         }
   73     margeB = ( hmax+8)*nbligne + 8 ;
   74     }
   75 
   76 void CGgraph::dessineValeurAxe( gdImagePtr im )
   77     {
   78     char    val[64] ; int wxmax, hxmax, w1, w2, h, h1, h2, brect[8] ;
   79     int fsz=8 ;
   80     double vmax, vmin ;
   81     // taille des labels des X
   82     axeX->getMinMax( vmax, vmin ) ;
   83     axeX->textValeur( vmin, val, sizeof(val) ) ;
   84     char* err = textSize( val, THE_FONT, fsz, w1, h1 ) ; if (err) return ;
   85     axeX->textValeur( vmax, val, sizeof(val) ) ;
   86     err = textSize( val, THE_FONT, fsz, w2, h2 ) ; if (err) return ;
   87     wxmax = Max( 2, w1, w2 ) ; hxmax = Max( 2, h1, h2 ) ;
   88 
   89     // taille des labels des Y
   90     int wgmax=0, wdmax=0 ; bool gauche=true ;
   91     wgmax = wdmax = wxmax / 2 ;
   92     for( int i=0; i<NbAxeY; i++ )
   93         {
   94         if ( !axeY[i] ) continue ;
   95         axeY[i]->getMinMax( vmax, vmin ) ;
   96         axeY[i]->textValeur( vmax, val, sizeof(val) ) ;
   97         err = textSize( val, THE_FONT, fsz, w1, h ) ; if (err) return ;
   98         axeY[i]->textValeur( vmin, val, sizeof(val) ) ;
   99         err = textSize( val, THE_FONT, fsz, w2, h ) ; if (err) return ;
  100         if ( gauche )
  101             wgmax = Max( 3, wgmax, w1, w2 ), gauche=false ;
  102         else
  103             wdmax = Max( 3, wdmax, w1, w2 ), gauche=true ;
  104         }
  105     margeG = wgmax + 15 ; margeD = wdmax + 5 ;
  106     // Pour le grapheur on fixe les marges
  107     margeG = 70 ; margeD = 25 ;
  108     int y0 = H - margeB ; int y1=margeH ;
  109     margeB += hxmax + 8 ;
  110 
  111     double dW = (double)W ; double margeX = (double)( margeG + margeD ) ;
  112     double dxmin, dxmax ; axeX->getMinMax( dxmin, dxmax ) ;
  113     if ( dxmin==dxmax ) { dxmax+=0.1 ; axeX->setMax( dxmax ) ; }
  114     double AX = (dW-margeX) / ( dxmax - dxmin ) ;
  115     double BX = margeG ; double DX = dxmin ;
  116     int nb = axeX->getNb() ;
  117     int delta = ( W - margeG - margeD ) / wxmax / 2 ;
  118     double dx = ( dxmax - dxmin ) / ((double)delta) ;
  119     axeX->textValeur( dxmin, val, sizeof(val) ) ;
  120     dessineTexte( im, val, margeG, y0, mCX, THE_FONT, fsz ) ;
  121     axeX->textValeur( dxmax, val, sizeof(val) ) ;
  122     dessineTexte( im, val, W-margeD, y0, mCX, THE_FONT, fsz ) ;
  123     dxmax -= dx/2 ;
  124     for( double v=dxmin+dx; v<=dxmax; v+=dx )
  125         {
  126         axeX->textValeur( v, val, sizeof(val) ) ;
  127         double x = AX * ( v - DX ) + BX ; int ix=(int)x ;
  128         dessineTexte( im, val, ix, y0, mCX, THE_FONT, fsz ) ;
  129         gdImageLine( im, ix, margeH, ix, H-margeB+4, caxe ) ;
  130         }
  131 
  132     double dH = (double)H ; double margeY = (double)( margeH + margeB ) ;
  133     gauche=true; bool premier = true ;
  134     for( int i=0; i<NbAxeY; i++ )
  135         {
  136         if ( !axeY[i] ) continue ;
  137         CGserie* Y = axeY[i] ;
  138         double dymin, dymax ; Y->getMinMax( dymin, dymax ) ;
  139         if ( dymin == dymax ) { dymax+=1.0 ; Y->setMax( dymax ) ; }
  140         double AY = (dH-margeY) / ( dymin - dymax ) ;
  141         double BY = margeH ; double DY = dymax ;
  142         nb = Y->getNb() ;
  143         delta = ( H - margeH - margeB ) / h / 4 ;
  144         double dy = ( dymax - dymin ) / ((double)delta) ;
  145         int x, mode ;
  146         if ( gauche )
  147             x = margeG - 5 , mode = mCY|mDX ;
  148         else
  149             x = W-margeD + 5 , mode = mCY|mGX ;
  150         Y->textValeur( dymin, val, sizeof(val) ) ;
  151         dessineTexte( im, val, x, H-margeB, mode, THE_FONT, fsz ) ;
  152         Y->textValeur( dymax, val, sizeof(val) ) ;
  153         dessineTexte( im, val, x, margeH, mode, THE_FONT, fsz ) ;
  154         dymax -= dy/2 ;
  155         for( double v=dymin+dy; v<=dymax; v+=dy )
  156             {
  157             Y->textValeur( v, val, sizeof(val) ) ;
  158             double y = AY * ( v - DY ) + BY ; int iy=(int)y ;
  159             dessineTexte( im, val, x, iy, mode, THE_FONT, fsz ) ;
  160             if ( premier )
  161                 gdImageLine( im, margeG-3,iy, W-margeD+3,iy , caxe ) ;
  162             }
  163         gauche =! gauche ; premier = false ;
  164         }
  165     }
  166 
Makefile graph.h serie.cpp timestamp.cpp graph.cpp graph_creer.cpp graph_util.cpp graph_titre_axe.cpp
libgraph.a~~ / LIB / GRAPH / graph_titre_axe.cpp

Haut de page

Contacter crabs

Date de génération : 22/09/2011 21:48