#include #include "struct.h" #include "sdlscreen.h" #include "global.h" #include "graph.h" //Afficher_curseur #include "erreurs.h" #include "boutons.h" // Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème byte Recuperer_nb_lignes(void) { 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=Principal_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>Mouse_Facteur_de_correction_X; INPUT_Nouveau_Mouse_Y = event.motion.y>>Mouse_Facteur_de_correction_Y; break; case SDL_MOUSEBUTTONDOWN: //Clic sur un des boutons de la souris INPUT_Nouveau_Mouse_K=event.button.button; break; case SDL_MOUSEBUTTONUP: //Bouton souris relaché INPUT_Nouveau_Mouse_K=0; break; case SDL_KEYDOWN: //Appui sur une touche du clavier //On met le scancode dans Touche" Touche = event.key.keysym.scancode; //...et le code ASCII dans Touche_ASCII Touche_ASCII=event.key.keysym.sym; //On ajoute aussi l'état des modifiers #define ekkm event.key.keysym.mod if (ekkm & (KMOD_LSHIFT | KMOD_RSHIFT)) { Touche |= 0x0100; } if (ekkm & (KMOD_LCTRL | KMOD_RCTRL)) { Touche |= 0x0200; } if (ekkm & (KMOD_LALT | KMOD_RALT)) { Touche |= 0x0400; } #undef ekkm //TODO revoir les scancodes qui sont dans le tableau //Config_Touche, ça correspond à rien ! //Cas particulier: déplacement du curseur avec haut bas gauche droite //On doit interpréter ça comme un mvt de la souris byte ok=0; if(Touche == Config_Touche[0]) { //[Touche] = Emulation de MOUSE UP //si on est déjà en haut on peut plus bouger if(INPUT_Nouveau_Mouse_Y!=0) { INPUT_Nouveau_Mouse_Y--; ok=1; } } else if(Touche == Config_Touche[1]) { //[Touche] = Emulation de MOUSE DOWN if(INPUT_Nouveau_Mouse_Y=Principal_Split) { bl++; INPUT_Nouveau_Mouse_X=Principal_Split-1; } } else { if(INPUT_Nouveau_Mouse_XChrono_cmp) Etat_chrono=1; } void Flip_Y_LOWLEVEL(void) { UNIMPLEMENTED } void Flip_X_LOWLEVEL(void) { UNIMPLEMENTED } void Rotate_180_deg_LOWLEVEL(void) { UNIMPLEMENTED } void Tempo_jauge(byte Vitesse) //Boucle d'attente pour faire bouger les scrollbars à une vitesse correcte { while (Vitesse!=0) { Wait_VBL(); Vitesse--; } } byte Meilleure_couleur_sans_exclusion(byte Rouge,byte Vert,byte Bleu) { UNIMPLEMENTED return 0; } void Set_color(byte Couleur, byte Rouge, byte Vert, byte Bleu) { UNIMPLEMENTED } void Scroll_picture(short Decalage_X,short Decalage_Y) { UNIMPLEMENTED } byte Get_key(void) { SDL_Event event; SDL_EnableUNICODE(SDL_ENABLE); // On a besoin du caractère while(1) { SDL_PollEvent(&event); if(event.type == SDL_KEYDOWN) { // On retourne en mode standard pour la gestion normale SDL_EnableUNICODE(SDL_DISABLE); return (byte)(event.key.keysym.unicode); } } } void Zoomer_une_ligne(byte* Ligne_originale, byte* Ligne_zoomee, word Facteur, word Largeur ) { byte couleur; word larg; // Pour chaque pixel for(larg=0;larg