MiniSVG

De troyesGEII
Aller à : navigation, rechercher

Ce fichier nécessite la présence de SVGhttplib.h dans votre répertoire courant. Cet exemple comporte des petits problèmes sur les tailles des objets qu'il nous faudra régler.

#include <config.h>
#include <stdio.h> // obligatoire avant httpd.h
#include <unistd.h>
#include <signal.h>
#ifdef _WIN32
#  include <getopt.h>
#else
#  include <sys/time.h>
#endif
#include <stdlib.h>
#include <httpd.h>
// ajouté pour projet 2013
#include "SVGhttplib.h"

void index_html(httpd *server) {
  httpdPrintf(server,"<HTML><TITLE>BONJOUR</TITLE><BODY><H1>Hello à vous</H1>\n"); 
// inclusion directe du SVG : 
   SVGopen(server,640,480); 
   SVGrectanglePlein(server,20,20,80,80,0x000000,0x000000);
   SVGrectangleVide(server,10,10,100,100);
   SVGrectanglePlein(server,60,60,300,300,0xFF0000,0x0000FF);
   SVGline(server,20,30,400,400,0xFF0000);
   SVGlineLarge(server,10,10,500,400,0x00FF00,10);
   SVGcircleVide(server,400,150,100);
   SVGcirclePlein(server,300,200,100,0x0,0xFFFF00);
   SVGText(server,100,400,55,"Bonjour");
   SVGellipseVide(server,540,200,20,60);
   SVGellipsePlein(server,540,220,60,20,0x0,0xFFFFBB);
   SVGrectanglePleinArrondi(server,270,200,80,80,5,5,0xFFFF00,0xFF0000);
   SVGrectangleVideArrondi(server,100,10,100,100,5,5);
   SVGClose(server);
//fin inclusion SVG
  httpdPrintf(server,"</BODY></HTML>\n");
}

main() {
  httpd *server;
  int result;
  struct timeval timeout;

  signal(SIGPIPE, SIG_IGN);

  server = httpdCreate("10.57.63.233",8080);
  if (server == NULL) {
    perror("Impossible de creer le serveur\n");
    exit(1);
  }
  httpdSetAccessLog(server, stdout);
  httpdSetErrorLog(server, stdout);
// Comment transformer une demande de fichier en appel sous-programme :
  httpdAddCContent(server,"/","index.html",HTTP_TRUE,NULL,index_html);
//  httpdAddCContent(server,"/","demo.svg",HTTP_TRUE,NULL,demo_svg);

// cette partie ne changera pas
  while(1) {
    timeout.tv_sec = 5;
    timeout.tv_usec = 0;
    result = httpdGetConnection(server, &timeout);
    if (result == 0){
	printf("Timeout ... \n");
	continue;
    }
    if (result < 0){
	printf("Error ... \n");
	continue;
    }
    if (httpdReadRequest(server)<0) {
      httpdEndRequest(server);
      continue;
    }
    httpdProcessRequest(server);
    httpdEndRequest(server);
  }  // fin du while
} // fin du main