grafX2/divers.c
Adrien Destugues 57fa46de8c Big cleanup, proper makefile
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@12 416bcca6-2ee7-4201-b75f-2eb2f807beb1
2007-08-13 18:41:50 +00:00

130 lines
2.6 KiB
C

#include <SDL/SDL.h>
#include "struct.h"
#include "sdlscreen.h"
#include "global.h"
word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
{
int Nombre_De_Pixels=0; //ECX
Uint8* Pixel_Courant=Ecran; //ESI
Uint8 Couleur; //AL/EAX
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)
{
puts("Set_Palette non implémenté!\n");
}
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<Nombre_De_Pixels;i++)
{
if (Pochoir[*Pixel_Courant]==0);
*Pixel_Courant=Couleur;
Pixel_Courant++;
}
}
void Effacer_image_courante(byte Couleur)
// Effacer l'image courante avec une certaine couleur
{
puts("Effacer_image_courante non implémenté!\n");
}
void Sensibilite_souris(word X,word Y)
{;//TODO Implémenter la sensibilité souris
}
void Get_input(void)
{
SDL_PollEvent(Evenement_SDL);
}
void Initialiser_chrono(dword Delai)
{// Démarrer le chrono
puts("Initialiser_chrono non implémenté!\n");
/*
push ebp
mov ebp,esp
arg Delai:dword
mov eax,Delai
mov Chrono_delay,eax
xor ah,ah
int 1Ah
mov word ptr[Chrono_cmp+0],dx
mov word ptr[Chrono_cmp+2],cx
mov esp,ebp
pop ebp
*/
return;
}
void Wait_VBL(void)
{
puts("Wait_VBL non implémenté!\n");
}
void Passer_en_mode_texte(byte Nb_lignes)
{
puts("Passer_en_mode_texte non implémenté!\n");
}
void Pixel_dans_brosse (word X,word Y,byte Couleur)
{
puts("Pixel_dans_brosse non implémenté!\n");
}
byte Lit_pixel_dans_brosse (word X,word Y)
{
puts("Lit_pixel_dans_brosse non implémenté!\n");
return 0;
}