#include #include "struct.h" #include "sdlscreen.h" #include "global.h" #include "graph.h" //Afficher_curseur // Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème byte Recuperer_nb_lignes(void) { /* mov ax,1130h xor bh,bh push es int 10h pop es inc dl mov [esp+28],dl */ puts("Recuperer_nb_lignes non implémenté!\n"); return 0; } word Palette_Compter_nb_couleurs_utilisees(dword* Tableau) { int Nombre_De_Pixels=0; Uint8* Pixel_Courant=Ecran; Uint8 Couleur; word Nombre_Couleurs=0; int i; //Calcul du nombre de pixels dans l'image Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image; // On parcourt l'écran courant pour compter les utilisations des couleurs for(i=0;i>Nombre_De_Pixels;i++) { Couleur=*Pixel_Courant; //on lit la couleur dans l'écran Tableau[Couleur]++; //Un point de plus pour cette couleur // On passe au pixel suivant Pixel_Courant++; } //On va maintenant compter dans la table les couleurs utilisées: Couleur=0; do { if (Tableau[Couleur]!=0) Nombre_Couleurs++; Couleur++; } while(Couleur!=0); //On sort quand on a fait le tour (la var est sur 8 bits donc 255+1=0) return Nombre_Couleurs; } void Set_palette(T_Palette Palette) { SDL_Color PaletteSDL[255]; byte i=0; do { PaletteSDL[i].r=Palette[i].R*4; //Les couleurs VGA ne vont que de 0 à 63 PaletteSDL[i].g=Palette[i].V*4; PaletteSDL[i].b=Palette[i].B*4; i++; } while(i!=0); SDL_SetPalette(Ecran_SDL,SDL_PHYSPAL|SDL_LOGPAL,PaletteSDL,0,256); } void Attendre_fin_de_click(void) { puts("Attendre_fin_de_click non implémenté!\n"); } void Effacer_image_courante_Stencil(byte Couleur, byte * Pochoir) //Effacer l'image courante avec une certaine couleur en mode Stencil { int Nombre_De_Pixels=0; //ECX //al=Couleur //edi=Ecran Uint8* Pixel_Courant=Ecran; //dl int i; Nombre_De_Pixels=Principal_Hauteur_image*Principal_Largeur_image; for(i=0;i