MiniSVG
Révision datée du 24 janvier 2013 à 15:13 par SergeMoutou (discussion | contributions)
Ce fichier nécessite la présence de SVGlib.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 "SVGlib.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