130 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
}
 |