Librairie graphique en vga

Contenu du snippet

Bon il est vrai que la VGA est très vieux mais ca n'empeche pas d'etre toujours d'actualité. Bon c'est un petite librairie graphique qui trace des points, des lignes, des rectangles, des carrés et des cercles. L'algo donne un cercle un tout petit peut applatit mai bn. C'est mon premier code. Il est sous Linux bien sur et il faut avoir la librairie de devellopement vga installée.

Source / Exemple :


//Code exemple utilisant la lib
//gcc -o vga vga.c -lvga -lvgagl

#include "dessinvga.c"

int main(void)
{
INIT_VGA(12);//initialisation de VGA (mode)
vga_carre(150,150,60,15);//carré (X,Y,Coté,Couleur)
vga_texte(1,1,"Salut",255,31);//Texte (X,Y,Texte,couleur de fond,couleur de police)
vga_point(100,20,25);//Point (X,Y,Couleur)
vga_rectangle(200,200,300,100,1);//Rectangle (X,Y,largeur,hauteur,couleur)
vga_circle(500,500,50,89);//Cercle (X,Y,Rayon,couleur)
vga_getch();//On attend un apui de touche 
QUIT_VGA();//On quitte la VGA
}

//////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////LIBRAIRIE////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include <vga.h>
#include <vgagl.h>
#include <math.h>
#include <time.h>

int vga_texte(int X, int Y, char *texte,int backfontcolor, int fontcolor)//coordonnées,texte,couleur fond et police
int vga_carre(int X, int Y, int C, int color)//coordonnées,coté,couleur.
int vga_point(int X, int Y, int color)//coordonnées,couleur.
int vga_rectangle(int X,int Y,int L,int H,int color)//coordonnées,largeur,hauteur,couleur.
int vga_circle(int Ox, int Oy, int r, int color)//coordonnées,rayon,couleur.
int vga_ligne(X1,Y1,X2,Y2,color);
 
int INIT_VGA(int mode)
{
int XMAX,YMAX;
vga_init();
vga_setmode(mode);
gl_setcontextvga(mode);
gl_setfont(8, 8, gl_font8x8); //largeur, hauteur, pointeur sur la police (c'est la seule en standard)
gl_setwritemode(FONT_COMPRESSED); //la police gl_font8x8 est comprimée (on ne l'a pas "expandée")
//gl_setfontcolors(backfontcolor, fontcolor); //couleur fond, couleur texte
XMAX=vga_getxdim();
YMAX=vga_getydim();

return EXIT_SUCCESS;
}

int QUIT_VGA()
{
vga_setmode(TEXT);
} 

int vga_carre(int X, int Y, int C, int color)//coordonnées,coté,couleur.
{
vga_setcolor(color);
vga_drawline(X,Y,X+C,Y);
vga_drawline(X+C,Y,X+C,Y+C);
vga_drawline(X+C,Y+C,X,Y+C);
vga_drawline(X,Y,X,Y+C);
}

int vga_point(int X, int Y, int color)//coordonnées,couleur.
{
vga_setcolor(color);
vga_drawpixel(X,Y);
}

int vga_texte(int X, int Y, char *texte,int backfontcolor, int fontcolor)//coordonnées,texte,couleur fond et police
gl_setfontcolors(backfontcolor, fontcolor);
gl_printf(X,Y,texte);
}

int vga_rectangle(int X,int Y,int L,int H,int color)//coordonnées,largeur,hauteur,couleur.
{
vga_setcolor(color);
vga_drawline(X,Y,X+L,Y);
vga_drawline(X,Y,X,Y+H);
vga_drawline(X,Y+H,X+L,Y+H);
vga_drawline(X+L,Y+H,X+L,Y);
} 

int vga_circle(int Ox, int Oy, int r, int color)//coordonnées,rayon,couleur.
{
int   X = 0;
int   Y = r;
vga_setcolor(color);
r = r * r;
while (X <= Y)
	{
	vga_drawpixel(Ox+X,Oy-Y);
	vga_drawpixel(Ox-X,Oy-Y);
	vga_drawpixel(Ox+X,Oy+Y);
	vga_drawpixel(Ox-X,Oy+Y);
	vga_drawpixel(Ox+Y,Oy-X);
	vga_drawpixel(Ox-Y,Oy-X);
	vga_drawpixel(Ox+Y,Oy+X);
	vga_drawpixel(Ox-Y,Oy+X);
	X++;
	Y = sqrt(r - ((double)X * X)) + 0.5;
	}
}

int vga_ligne(X1,Y1,X2,Y2,color)
{
vga_setcolor(color);
vga_drawline(X1,Y1,X2,Y2);
}

Conclusion :


Je devrais ajouter un code pour les elipse , pour le coix de la police et pour le choix des couleurs en RGB.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.