Example #1
0
void usage(void) {
	couleur("31");
	printf("Michel Dubois -- gravity3d -- (c) 2013\n\n");
	couleur("0");
	printf("Syntaxe: gravity3d <background color>\n");
	printf("\t<background color> -> 'white' or 'black'\n");
}
Example #2
0
void titre(const char *s, const unsigned int typeCouleur)
{
	effacer();
	
	couleur(typeCouleur);
	printf("\t\t\t\t%s\n\n", s);
	couleur(BLANC);
}
Example #3
0
void afficherTresorIndividuelInventaire(const unsigned int indexTresor)
{
	coloration(inventaire.tresor[indexTresor].nom, BLEU);
	printf(" | vaut ");
	couleur(VERT);
	printf("%d ", inventaire.tresor[indexTresor].cout);
	couleur(BLANC);
	printf("tek");
}
Example #4
0
void usage(void) {
	couleur("31");
	printf("Michel Dubois -- visualize3d -- (c) 2013\n\n");
	couleur("0");
	printf("Syntaxe: visualize3d <filename> <background color> <color type>\n");
	printf("\t<filename> -> file where the results of the algorithm will be stored\n");
	printf("\t<background color> -> 'white' or 'black'\n");
	printf("\t<color type> -> 'mono' or 'multi'\n");
}
Example #5
0
void afficherInformationPersonnageSauvegarde(void)
{
	coloration(personnage.nom, BLEU);
	couleur(VERT);
	printf("\tNiv. %d\n", personnage.niveauActuel);
	printf("\t    %s\tLVL %d\n", personnage.race, personnage.lvl);
	printf("\t    %s\tEXP %d/%d\n\n", personnage.metier, personnage.niveauEXPActuel, NB_EXP_NIVEAU_MAX);

	couleur(BLANC);
}
Example #6
0
void afficherTresorCoffre(const Coffre *coffre)
{
	coloration("Tresor", VERT);
	printf(" : ");

	coloration(coffre->inventaire.tresor[0].nom, BLEU);
	printf(" | vaut ");
	couleur(VERT);
	printf("%d ", coffre->inventaire.tresor[0].cout);
	couleur(BLANC);
	printf("tek");

	putchar('\n');
}
Example #7
0
//---------------------------------------------------------------
void LonLatGrid::drawLabel(QPainter &pnt, const Projection *proj,
				double value, int i, int j)
{
    int   a,b,c,d;
    QString label;
	QColor couleur(10,10,10);

    label = label.sprintf("%g", value);

    QPen penText(couleur);
    QFont fontText = Font::getFont(FONT_LonLatGridLabel);
    QFontMetrics fmet(fontText);
    QRect rect = fmet.boundingRect(label);
    pnt.setPen(penText);
    pnt.setFont(fontText);

	// use a gradient, because it's a bug sometimes with solid pattern (black background)
	QLinearGradient gradient;
    int r = 255;
	gradient.setColorAt(0, QColor(r,r,r, 170));
	gradient.setColorAt(1, QColor(r,r,r, 170));
    pnt.setBrush(gradient);

    //---------------------------------------------------------
    // Ecrit le label
    //---------------------------------------------------------
	
// 	rect = fmet.boundingRect(label);
// 	rect.moveTo((a+c)/2-rect.width()/2, (b+d)/2-rect.height()/2);
// 	pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2);
// 	pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label);

}
QRgb Camera::ptScreen(Terrain &t,const Vector3D& aBox, const Vector3D& bBox, const Vector3D& s, int i, int j, int l, int h)
{
    double x=i*2*lw/l-lw;
    double y=j*2*lh/h-lh;

    Vector3D pt =origine+(dw*w)+(x*u)+(y*v);
    Vector3D dir(pt-origine);
    dir.normalize();
    Ray r(origine,dir);

    //std::cout << origine.x()  <<", "<<origine.y()<<", "<<origine.z()<<"/"<<dir.x()<<", "<<dir.y()<<", "<<dir.z()<< std::endl;
    Vector3D inter;
    bool isBox=false;
    if(!r.intersectRayMarching(t,aBox,bBox,inter,isBox)) {
        QColor couleur(0,0,255,255);
        return couleur.rgb();
    }

    //std::cout << "Touch" << std::endl;
    Vector3D normale;
    double hauteur = t.getHauteurNormale(Vector2D(inter.x(),inter.z()),normale);
    if(isBox) {
        QColor couleur(255,0,0,255);
        return couleur.rgb();
    }
    //std::cout << normale.x()  <<", "<<normale.y()<<", "<<normale.z()<<std::endl;
    double lu=normale*(-s);
    //std::cout <<lu<<std::endl;
    if(lu<0)
        lu=0;


    lu*=200.0;

    if(lu>255)
        lu=255;

    QColor couleur(lu,lu,lu,255);
    return couleur.rgb();


}
Example #9
0
void help(void) {
	couleur("31");
	printf("Michel Dubois -- gravity3d -- (c) 2013\n\n");
	couleur("0");
	printf("Key usage:\n");
	printf("\t'ESC' key to quit\n");
	printf("\t'UP', 'DOWN', 'LEFT' and 'RIGHT' keys to rotate manually\n");
	printf("\t'r' to rotate continuously\n");
	printf("\t'x' and 'X' to move to right and left\n");
	printf("\t'y' and 'Y' to move to top and bottom\n");
	printf("\t'z' and 'Z' to zoom in or out\n");
	printf("\t'f' to switch to full screen\n");
	printf("\t'p' to take a screenshot\n");
	printf("\t'd' to display axe or not\n");
	printf("\t't' to display selected planet trace or not\n");
	printf("\t'a' to display trace of all planets\n");
	printf("Mouse usage:\n");
	printf("\t'LEFT CLICK' to to select a planet\n");
	printf("\n");
}
Example #10
0
/**
 * \fn void show_laby(int** laby, int w, int h)
 * \brief Fonction d'affichage du labyrinthe
 * \param laby adresse du labyrinthe
 * \param w taille en largeur du labyrinthe
 * \param h taille en hauteur du labyrinthe
 * \return rien
 * rappel du contenu possible du labyrinthe:
 * 0 : vide
 * 1 : mur
 * 2 : bord
 * 3 : joueur
 * 4 : ia
 */
void show_laby(int** laby, int w, int h)
{
  int i,j;
  for(i=0 ; i<h ; i++) {
    for(j=0 ; j<w ; j++) {
      if(laby[i][j]==0) {
        //couleur("40");
        printf(" ");
      }
      else if(laby[i][j]==1) {
        couleur("47");
        printf(" ");
      }
      else if(laby[i][j]==2) {
        couleur("47");
        printf(" ");
      }
      else if(laby[i][j]==3) {
        couleur("42");
        printf(" ");
      }
      else if(laby[i][j]==4) {
        couleur("41");
        printf("1");
      }
      else if(laby[i][j]==5) {
        couleur("43");
        printf("2");
      }
      couleur("0");
    }
    printf("\n");
  }
}
Example #11
0
void setcolor(int c)
{
	if (nocolor!=c)
	{
		color=couleur(c);
		nocolor=c;

		SelectObject(hdcm,holdbrush);
		DeleteObject(hbrush);
		hbrush=CreateSolidBrush(color);
		SelectObject(hdcm,hbrush);
	}
}
Example #12
0
void afficher_matrice(int matrice[N+2][N+2], int type) {
    /*
     * Affiche la matrice demandée, en fonction de son type (matrice de cellules ou de voisins), avec des couleurs. Nécessite la matrice, son tyoe, et ne renvoie rien
     */

    int i, j;

    if(type == 1) { //Cellules
        for(i = 0; i < N+2; i++) {
            for(j = 0; j < N+2; j++) {
                if(matrice[i][j]) {
                    couleur("34");
                } else {
                    couleur("37");
                }
                printf("%i ", matrice[i][j]);
            }
            printf("\n");
        }
    }

    if(type == 2) { //Voisins
        for(i = 0; i < N+2; i++) {
            for(j = 0; j < N+2; j++) {
                switch(matrice[i][j]) {
                case 0 :
                    couleur("37");
                    break;
                case 2 :
                case 3 :
                    couleur("32");
                    break;
                default :
                    couleur("31");
                    break;
                }
                printf("%i ", matrice[i][j]);
            }
            printf("\n");
        }
    }

    couleur("37");

    printf("\n");
    printf("\n");
}
Example #13
0
/**
 * \fn void show_freq(int** freq, int w, int h, int total_deplacement)
 * \brief Fonction d'affichage des frequences d'apparition de l'ia par case
 * \param freq adresse de la matrice des frequences
 * \param w taille en largeur du labyrinthe
 * \param h taille en hauteur du labyrinthe
 * \param total_deplacement c'est le nombre de déplacement déjà effectué par l'ia
 * \return rien
 */
void show_freq(int** freq, int w, int h, int total_deplacement)
{
  double seuil_bleu = 0.15;
  double seuil_vert = 0.30;
  double seuil_orange = 0.50;
  int i,j;
  for(i=0 ; i<h ; i++) {
    for(j=0 ; j<w ; j++) {
      if((freq[i][j]==-2)) {
        couleur("40");
        printf(" ");
      }
      else if(freq[i][j]==-1) {
        couleur("40");
        printf(" ");
      }
      else if(freq[i][j]==0) {
        printf(" ");
      }
      else if( (( (double)freq[i][j])/total_deplacement) <= seuil_bleu/100) {
        couleur("46");
        printf(" ");
      }
      else if( (( (double)freq[i][j])/total_deplacement) <= seuil_vert/100) {
        couleur("42");
        printf(" ");
      }
      else if( (( (double)freq[i][j])/total_deplacement) <= seuil_orange/100) {
        couleur("43");
        printf(" ");
      }
      else {
        couleur("41");
        printf(" ");
      }
      couleur("0");
    }
    printf("\n");
  }
}
Example #14
0
void afficherCaracteristiqueEnnemi(const unsigned int indexEnnemi)
{
	unsigned int nbVie;
	unsigned int nbDegat;
	unsigned int nbProtection;

	if(niveauActuel.estDansCaverne)
	{
		nbVie = niveauActuel.salle[niveauActuel.salleActuelle].caverne.ennemi[indexEnnemi].nbVie;
		nbDegat = niveauActuel.salle[niveauActuel.salleActuelle].caverne.ennemi[indexEnnemi].degatAttaque;
		nbProtection = niveauActuel.salle[niveauActuel.salleActuelle].caverne.ennemi[indexEnnemi].protection;
	}
	else
	{
		nbVie = niveauActuel.salle[niveauActuel.salleActuelle].ennemi[indexEnnemi].nbVie;
		nbDegat = niveauActuel.salle[niveauActuel.salleActuelle].ennemi[indexEnnemi].degatAttaque;
		nbProtection = niveauActuel.salle[niveauActuel.salleActuelle].ennemi[indexEnnemi].protection;
	}

	printf("Vie : ");

	couleur(BLEU);
	printf("%d", nbVie);
	couleur(BLANC);

	printf(" Degat : ");

	couleur(BLEU);
	printf("%d", nbDegat);
	couleur(BLANC);

	putchar('\n');

	printf("Protection : ");

	couleur(BLEU);
	printf("%d", nbProtection);
	couleur(BLANC);

	putchar('\n');
}
Example #15
0
void dessiner_pdv(pdv* pt_pdv_current, file_opener* donnees)
{
    GdkDrawable* cartew=donnees->carte->window;
            if(pt_pdv_current->affichage==1) // Vérifie si le plan de vol doit être affiché
            {
            position* loc_avion=malloc(sizeof(position));
//            Position_avion(donnees,pt_pdv_current,loc_avion);
            get_position_avion(loc_avion,pt_pdv_current,donnees->temps);
            loc_avion->y=conversion_lat(loc_avion->y,donnees)*donnees->ycarte;
            loc_avion->x=conversion_longitude(loc_avion->x,donnees)*donnees->xcarte;

        //  On change la couleur du tracé pour le carré et le nom de l'avion
            couleur(donnees->gc,donnees->c,donnees->couleur_avion);
            gdk_draw_rectangle(cartew,donnees->gc,TRUE,loc_avion->x-2,loc_avion->y-2,5,5);
            gdk_draw_string(cartew,donnees->font,donnees->gc,loc_avion->x+3,loc_avion->y-2,pt_pdv_current->nom);
            couleur(donnees->gc,donnees->c,10);


            int x1=-9,x2=0,y1=0,y2=0; // Variables de stockage des coordonnées pour les points de passage

            pt_pass * pt_pass_current = pt_pdv_current->pass_debut;

                if(x1==-9 && pt_pass_current->ptsuiv!=NULL) // Cas du premier point
                {

                    if(pt_pass_current->type_point==0) // Si le point est un aérodrome
                    {
                        aerodrome * pass_aerodrome = pt_pass_current->point;
                        //printf("\n AERODROME 1 \n");
                        x1=conversion_longitude(pass_aerodrome->longitude,donnees)* donnees->xcarte;
                        y1=conversion_lat(pass_aerodrome->latitude,donnees)* donnees->ycarte;

                        // Affichage de l'aérodrome
                        pass_aerodrome->affichage=1;
                        dessiner_aerodromes(pass_aerodrome,donnees);
                    }

                    if(pt_pass_current->type_point==1) // Si le point est une balise
                    {
                        balise * pass_balise = pt_pass_current->point;
                       // printf("\n BALISE 1 \n");
                        x1=conversion_longitude(pass_balise->longitude,donnees)* donnees->xcarte;
                        y1=conversion_lat(pass_balise->latitude,donnees)* donnees->ycarte;

                        // Affichage de la balise
                        pass_balise->affichage=1;
                        dessiner_balise(pass_balise,donnees);
                    }

                    if(pt_pass_current->type_point==2) // Si le point est une ptgpx
                    {
                        ptgpx * pass = pt_pass_current->point;
                       // printf("\n BALISE 1 \n");
                        x1=conversion_longitude(pass->longitude,donnees)* donnees->xcarte;
                        y1=conversion_lat(pass->latitude,donnees)* donnees->ycarte;

                        // Affichage de la balise
                        //gdk_draw_string(carte,font,gc, x1 + 2,y1 + 7, pass_balise->nom);
                        gdk_draw_point(cartew,donnees->gc, x1,y1);
                    }

                pt_pass_current = pt_pass_current->ptsuiv;

                }


                while(pt_pass_current->ptsuiv!=NULL) // Parcours de tous les autres points de passage
                {


                    if(pt_pass_current->type_point==0) // Si le point est un aérodrome
                    {
                    aerodrome * pass_aerodrome = pt_pass_current->point;
                   // printf("\n AERODROME \n");
                    x2=conversion_longitude(pass_aerodrome->longitude,donnees)* donnees->xcarte;
                    y2=conversion_lat(pass_aerodrome->latitude,donnees)* donnees->ycarte;

                    // Affichage de l'aerodrome
                    pass_aerodrome->affichage=1;
                    dessiner_aerodromes(pass_aerodrome,donnees);
                    }

                    if(pt_pass_current->type_point==1) // Si le point est une balise
                    {
                    balise * pass_balise = pt_pass_current->point;
                  //  printf("\n BALISE \n");

                    x2=conversion_longitude(pass_balise->longitude,donnees)* donnees->xcarte;
                    y2=conversion_lat(pass_balise->latitude,donnees)* donnees->ycarte;

                    // Affichage de la balise
                    pass_balise->affichage=1;
                    dessiner_balise(pass_balise,donnees);
                    }

                    if(pt_pass_current->type_point==2) // Si le point est un ptgpx
                    {
                    ptgpx * pass = pt_pass_current->point;

                    x2=conversion_longitude(pass->longitude,donnees)* donnees->xcarte;
                    y2=conversion_lat(pass->latitude,donnees)* donnees->ycarte;

                    // Affichage de la balise
                    int x=conversion_longitude(pass->longitude,donnees)* donnees->xcarte;
                    int y=conversion_lat(pass->latitude,donnees)* donnees->ycarte;
                    //gdk_draw_string(carte,font,gc, x + 2,y + 7, pass_balise->nom);
                    gdk_draw_point(cartew,donnees->gc, x,y);
                    }



//                  Une couleur différente par avion
                    couleur(donnees->gc,donnees->c,donnees->couleur_avion);

//                  Trace la ligne et remet la couleur normalement.
                    gdk_draw_line(cartew, donnees->gc, x1,y1,x2,y2);
                    couleur(donnees->gc,donnees->c,10);

                    // Le point 2 devient le point 1
                    x1=x2;
                    y1=y2;
                    pt_pass_current = pt_pass_current->ptsuiv;

                }

            free(loc_avion);
            }
}
Example #16
0
void dessiner(file_opener *donnees)
{
    GdkDrawable* cartew=donnees->carte->window;
    donnees->gc = gdk_gc_new (cartew);
    // On initialise la police et la couleur
    donnees->font=gdk_font_load("6x9");//6x9 - 10x20
int j;
char text[5];

couleur(donnees->gc,donnees->c,-2);
// On trace les parallèles
for(j=35;j<=60;j+=5)
{
sprintf(text,"%d",j);
gdk_draw_line(cartew,donnees->gc,0,conversion_lat(j,donnees)*donnees->ycarte,donnees->xcarte*3,conversion_lat(j,donnees)*donnees->ycarte);
gdk_draw_string(cartew,donnees->font,donnees->gc,3,conversion_lat(j,donnees)*donnees->ycarte-5,text);
}

// Puis les méridiens
for(j=-15;j<=20;j+=5)
{
sprintf(text,"%d",j);
gdk_draw_line(cartew,donnees->gc,conversion_longitude(j,donnees)*donnees->xcarte,0,conversion_longitude(j,donnees)*donnees->xcarte,donnees->ycarte*3);
gdk_draw_string(cartew,donnees->font,donnees->gc,conversion_longitude(j,donnees)*donnees->xcarte+5,8,text);
}
couleur(donnees->gc,donnees->c,10);

 /* ----------------------------------  CONTOUR FRANCE -------------------------------------- */


    {
        double x1,x2,y1,y2;
        // On ouvre le fichier contenant les points
        FILE *f = fopen("contour_france.csv", "rb");
        //printf("f=%p\n", f);
        if(f)
        {
            char buffer[1024];

            while(fgets(buffer, sizeof(buffer), f))
            {
            //  On charge et on converti les points.
                sscanf(buffer, "%lf;%lf", &x1, &y1);
                x1 = conversion_longitude(x1, donnees);
                y1 = conversion_lat(y1, donnees);
                while(fgets(buffer, sizeof(buffer), f))
                {
                //  Si la ligne est "BREAK" on empeche de tracer la ligne afin de retirer les traits entre les iles
                    if(!strcmp(buffer, "BREAK\n"))
                    {
                        break;
                    }

                    sscanf(buffer, "%lf;%lf", &x2, &y2);
                    x2=conversion_longitude(x2, donnees);
                    y2=conversion_lat(y2, donnees);
                    gdk_draw_line(cartew, donnees->gc, x1*donnees->xcarte,y1*donnees->ycarte,x2*donnees->xcarte,y2*donnees->ycarte);
                    x1=x2;
                    y1=y2;
                }
            }
            fclose(f);
        }
    }

 // ----------------------------------  AERODROMES --------------------------------------
// Si des aérodromes sont chargé on commence l'affichage
   if(donnees->debutaero!=NULL)
    {

        aerodrome* pt_aero=donnees->debutaero;
        // Boucle pour parcourir tous les aérodromes
        while(pt_aero->ptsuiv!=NULL)
        {
            dessiner_aerodromes(pt_aero,donnees);
            pt_aero = pt_aero->ptsuiv;
        }
    }

 // ----------------------------------  BALISES --------------------------------------
// La structure est semblable à celle des aérodromes
    if(donnees->debutbalises!=NULL)
    {
        balise* pt_balise=donnees->debutbalises;

        while(pt_balise->ptsuiv!=NULL)
        {
            dessiner_balise(pt_balise,donnees);
            pt_balise = pt_balise->ptsuiv;
        }
    }




 // ----------------------------------  PLAN DE VOL --------------------------------------
// On initialise la couleur à 0 pour donner une couleur à chaque plan de vol
donnees->couleur_avion=0;

    if(donnees->debutpdv!=NULL) // Rentre si un plan de vol est chargé
    {
    pdv * pt_pdv_current=donnees->debutpdv;

        while(pt_pdv_current!=NULL) // Parcours tous les plans de vol
        {
            dessiner_pdv(pt_pdv_current,donnees);
            pt_pdv_current=pt_pdv_current->ptsuiv;
            donnees->couleur_avion+=1;
        }
    }

/* ------------------------------------ CONFLITS  ---------------------------------------- */

// Si il y a des conflits
    if(donnees->deb_conflits!=NULL)
    {
    // On passe en couleur rouge
    couleur(donnees->gc,donnees->c,-3);
    conflit* conflit_current = donnees->deb_conflits;
    // Variable d'affichage si reste nul à la fin de la boucle pas de conflit
    int conflit_affiche = 0;
    //  On parcours les conflits
        while(conflit_current->ptsuiv != NULL)
        {
        pdv* avion1 = conflit_current->pdv1;
        pdv* avion2 = conflit_current->pdv2;

            // On se situe entre le temps de début et de fin de conflit
            if(donnees->temps > conflit_current->temps_deb && donnees->temps < conflit_current->temps_fin)
            {
                position c0; // position au temps t
                if(avion1->affichage && avion2->affichage) // Les deux avions sont affichés
                {
                // Conflits affiché conflit_affiche est différent de 0
                    conflit_affiche++;

                //  On met un gros carré rouge sur la position de l'avion
                    get_position_avion(&c0,avion1,donnees->temps);
                    gdk_draw_rectangle(cartew,donnees->gc,TRUE,conversion_longitude(c0.x,donnees)*donnees->xcarte-3,conversion_lat(c0.y,donnees)*donnees->ycarte-3,7,7);

                    get_position_avion(&c0,avion2,donnees->temps);
                    gdk_draw_rectangle(cartew,donnees->gc,TRUE,conversion_longitude(c0.x,donnees)*donnees->xcarte-3,conversion_lat(c0.y,donnees)*donnees->ycarte-3,7,7);

                //  On change le label de conflit
                    char *markup;
                    markup = g_markup_printf_escaped ("<span foreground=\"#A00000\">%s</span>", "Conflit.");
                    gtk_label_set_markup (GTK_LABEL (donnees->Msg_conflit), markup);
                    g_free (markup);
                }
            }
        conflit_current = conflit_current->ptsuiv;
        }
// Si aucun conflit n'est affiché on passe au label pas de conflit
    if(conflit_affiche==0)
    {
        char *markup;
        markup = g_markup_printf_escaped ("<span foreground=\"#00A000\">%s</span>", "Pas de conflit\n actuellement.");
        gtk_label_set_markup (GTK_LABEL (donnees->Msg_conflit), markup);
        g_free (markup);
    }
    // On remet en noir
    couleur(donnees->gc,donnees->c,10);
    }
    gdk_font_unref(donnees->font);
    g_object_unref (donnees->gc);
}
Example #17
0
/********************************************************************
*																	*
*						 Gestion du menu							*
*																	*
********************************************************************/
boolean MenuSelect(int object, int scan, int state, int button)
{
	int index, entree, key;

	if (object < 0)
	{
		/* attend qu'on relache la souris */
		NoClick();

		if (button < 0)
		{
			/* regarde la touche */
			key = scantoascii(scan);
			if (key == 0)
				key = scan & 0xFF00;	/* scan code */
			else
				key = UpperChar(key);

			for (index = 0; index < NbMenus; index++)
				for (entree = 0; entree < MenuShortCuts[index].nb_entrees; entree++)
					if (MenuShortCuts[index].menu[entree].key == key && MenuShortCuts[index].menu[entree].state == state)
					{
						if (ob_isstate(Menu, MenuShortCuts[index].menuid, DISABLED) == 0 && ob_isstate(Menu, MenuShortCuts[index].menu[entree].itemid, DISABLED) == 0)
						{
							object = MenuShortCuts[index].menu[entree].itemid;
							index = NbMenus;
						}
						break;
					}
		}
	}

	if (object < 0)
		return FALSE;	/* kein entsprechender Eintrag gefunden */

	/* Men�punkte 'Fenster wechseln' und 'Fenster schliežen' werden
	   inklusive der dazugeh”rigen Hotkeys automatisch verwaltet */

	switch (object)
	{
						/* menu Zorg */

		case INFORMATIONS:
			presentation();
			break;

						/* menu Etat */

		case INFORMATION:
			informations(Drive);
			break;

		case REPERTOIRE_LOUPE:
			if (ManageVFAT)
				open_directory_vfat();
			else
				open_directory_short();
			break;

		case TEST_STRUCTURE:
			if (ManageVFAT)
				structure_test_vfat(Drive);
			else
				structure_test_short(Drive);
			break;

		case STATISTIQUES:
			statistiques(Drive);
			break;

		case OCCUPATION:
			occupation(Drive);
			break;

		case TRACE_UN_FICHIER:
			trace_file();
			break;

		case QUITTER:
			if (Reset)
			{
				if (my_alert(1, 2, X_ICN_QUESTION, Messages(MENU_1), Messages(BOOT_32)) == 0)
					shutdown(TRUE);
			}
			else
			{
				button = my_alert(2, 3, X_ICN_QUESTION, Messages(MENU_2), Messages(MENU_4));
				if (button == 0 || button == 1 && (int)xbios(0x11) % 2)
					shutdown(FALSE);
			}
			break;

					/* menu Ouvre */

		case UNITE_LOGIQUE:
			open_disk();
			break;

		case OUVRE_DISQUETTE:
			raw_floppy(FALSE);
			break;

		case OUVRE_DISQUE_DUR:
			raw_hard(FALSE);
			break;

		case OUVRE_FICHIER:
			open_file();
			break;

		case OUVRE_FICHIER_FS:
			open_file_other_fs();
			break;

		case OUVRE_FICH_TEXTE:
			voir_fichier();
			break;

		case CREER_FICHIER:
			creer_fichier();
			break;

		case FERMER:
			fermer(Thefrontwin -> win -> handle);
			break;

		case LIRE_BOOT:
			lire_boot();
			break;

		case CHARGER_BOOT:
			charger_boot();
			break;

		case SAUVER_BOOT:
			sauver_boot();
			break;

		case ECRIRE_BOOT:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

			/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			ecrire_boot();
#endif
			break;

					/* menu Edition */

		case SAUVER_SECTEUR:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

			/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			save_secteur(Thefrontwin, MENU_EDITION);
#endif
			break;

		case COPIER_SECTEUR:
			copier_tampon(Thefrontwin);
			break;

		case COLLER_SECTEUR:
			coller_tampon(Thefrontwin);
			break;

		case ECHANGER_TAMPON:
			echanger_tampon(Thefrontwin);
			break;

		case RETOUR_INITIAL:
			load_secteur(Thefrontwin, MENU_EDITION);
			break;

		case OUVRIR_TAMPON:
			ouvrir_tampon();
			break;

		case SAUVER_TAMPON:
			sauver_tampon();
			break;

		case CHARGER_TB_ASCII:
			ascii_tampon();
			break;

		case EFFACER_TAMPON:
			effacer_tampon();
			break;

					/* menu Structure */

		case DEFRAGMENTATION:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

			/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			reconnect(Drive);
#endif
			break;

		case UNIQUE_LIBRE:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

			/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			compresse(Drive);
#endif
			break;

		case RESTO_COMPLETE:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

		/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			restauration_complete(Drive);
#endif
			break;

		case VIDE_CLST_LIBRES:
			nettoie_clusters_libres(Drive);
			break;

		case NETTOIE_REPERTOI:
#ifdef TEST_VERSION
			/* relache la souris */
			NoClick();

			/* on attend avant de redessiner */
			Event_Timer(0, 0, TRUE);

			my_alert(1, FAIL, X_ICN_STOP, Messages(MENU_6), NULL);
#else
			nettoie_repertoire(Drive);
#endif
			break;

					/* menu Deplacement */

		case SECTEUR_SUIVANT:
			next_secteur(Thefrontwin);
			break;

		case SECTEUR_PRECEDEN:
			previous_secteur(Thefrontwin);
			break;

		case BLOC_SUIVANT:
			next_bloc(Thefrontwin);
			break;

		case BLOC_PRECEDENT:
			previous_bloc(Thefrontwin);
			break;

		case MARQUER_POSITION:
			marquer_position(Thefrontwin);
			break;

		case ALLER_MARQUE:
			goto_marque(Thefrontwin);
			break;

		case ALLER_SECTEUR:
			goto_secteur(Thefrontwin);
			break;

		case CHERCHER_CHAINE:
			search_first(Thefrontwin);
			break;

		case CHERCHER_NOUVEAU:
			search_next(Thefrontwin);
			break;

					/* menu Fenˆtres */

		case CHOIX_FONTE:
			choix_fonte(Thefrontwin);
			break;

		case CHOIX_COULEURS:
			couleur(Thefrontwin);
			break;

		case TAILLE_IDEALE:
			taille_ideale(Thefrontwin);
			break;

		case ASCENSEURS:
			ascenseurs(Thefrontwin);
			break;

		case CYCLER_FENETRES:
			cycle_window();
			break;

		case WINDOW_LIST_1:
		case WINDOW_LIST_2:
		case WINDOW_LIST_3:
		case WINDOW_LIST_4:
		case WINDOW_LIST_5:
		case WINDOW_LIST_6:
		case WINDOW_LIST_7:
		case WINDOW_LIST_8:
		case WINDOW_LIST_9:
		case WINDOW_LIST_10:
			{
				windowptr thewin;

				for (thewin = Firstwindow; thewin; thewin = thewin -> next)
					if (thewin -> menu_entry == object - WINDOW_LIST_1)
						make_frontwin(thewin);
			}
			break;

						/* menu Options */

		case CONFIG_GENERALE:
			config_generale();
			break;

		case CONFIG_DSK:
			config_disques();
			break;

		case RACCOURCIS_CLAVI:
			raccourcis_clavier();
			break;

		case DONNEES_ZORG:
			from_zorg_inf(TRUE);
			break;

		case DONNEES_SYSTEME:
			from_zorg_inf(FALSE);
			break;

		case INVALIDE_CACHE:
			if (Kbshift(FAIL) & 4)
			{
				int i;

				for (i=0; i<MAX_DEVICES; i++)
					change_disque(i, FALSE);
			}
			else
				change_disque(Drive, TRUE);
			break;

		case UPDATE_SYSTEME:
			if (Kbshift(FAIL) & 4)
			{
				int i;

				for (i=0; i<MAX_DEVICES; i++)
					update_systeme(i);
			}
			else
				update_systeme(Drive);
			break;

		case VISU_TEXTE:
			really_voir_fichier(Thefrontwin -> fonction.fichier.nom);
			break;

		case VISU_ASCII:
			secteur_ascii(Thefrontwin);
			break;

		case VISU_HEXA:
			secteur_hexa(Thefrontwin);
			break;

		case AFFICHE_DECIMAL:
			affichage_decimal(Thefrontwin);
			break;

		case FICHIER_ASSOCIE:
			secteur_file(Thefrontwin);
			break;

		case CURSEUR_VISIBLE:
			curseur_on(Thefrontwin);
			break;

		case CLIPBOARD_GEM:
			clipboard_gem(Thefrontwin);
			break;

						/* menu Aide */

		case TABLE_ASCII:
			AsciiChar = m_ascii_box(AsciiChar, FALSE);
			break;

		case AIDE:
			aide();
			break;

		case EXECUTER_PROG:
			lance_prg();
			break;

		case RESET:
			if (Reset)
			{
				Reset = FALSE;
				menu_icheck(Menu, RESET, 0);
			}
			else
			{
				int button;

				button = my_alert(2, 3, X_ICN_QUESTION, Messages(MENU_3), Messages(MENU_5));
				if (button == 1)
					shutdown(TRUE);
				else
					if (button == 0)
						reset();
			}
			break;
	}

	return TRUE;
} /* MenuSelect */
Example #18
0
int main(int argc , char*argv[])
{



    clrscr();
    couleur("30;47");
    printf("+-----------------------------------------------------------------------------+\n");
    printf("|");couleur("0");
    couleur("42");printf("                                                                             ");couleur("0");
    couleur("30;47");
    printf("|\n");
    printf("+");couleur("0");
    couleur("30;42");printf("                 Bienvenue sur le projet de complexite                       ");couleur("0");
    couleur("30;47");
    printf("+\n");
    printf("|");couleur("0");
    couleur("42");printf("                                                                             ");couleur("0");
    couleur("30;47");
    printf("|\n");
    printf("+-----------------------------------------------------------------------------+\n\n\n\n");couleur("0");

    if(argc<2)
    {
        couleur("31");printf("pas d'option spe \n");couleur("0");
    }
    else
    {
        couleur("32");printf("Ouverture fichier :''");couleur("0");
        couleur("31");printf("%s",argv[1]);couleur("0");
        couleur("32");printf("''");couleur("0");
        couleur("32;5");printf("Appuyez sur entrée\n");couleur("0");
        getchar();

        FILE *fp;
	int i;
        fp=NULL;

        if( (fp=fopen(argv[1],"r")) ) // on regarde si le fichier existe
        {
            //fp=fopen(argv[1],"r");

            parser(fp,&gl,&gm);                        //parser le fichier
            fclose(fp);
          
       printf("CALCUL MAXIMUM \n");
            i=maximum(&gl);
            printf("sortie MAX\n");





            for(i=0;i<gl.n;i++) // efface le graph
            {
                supprimer_liste(&gl.a[i]);
            }


        }
        else
        {
            couleur("31");printf("le fichier demandé: ''");couleur("0");
            couleur("31;47;5");printf("%s",argv[1]);couleur("0");
            couleur("31");printf("'' n'existe pas \n");couleur("0");
        }

    }
    return 0;
}
Example #19
0
ColorSelector::ColorSelector(QWidget *parent)
	: QWidget(parent)
{
    m_pressedButton = false;

    m_preferences =  PreferencesManager::getInstance();

    int rouge[48] = {255,255,128,0,128,0,255,255, 255,255,128,0,0,0,128,255, 128,255,0,0,0,128,128,255, 128,255,0,0,0,0,128,128, 64,128,0,0,0,0,64,64, 0,128,128,128,64,192,64,255};
    int vert[48] = {128,255,255,255,255,128,128,128, 0,255,255,255,255,128,128,0, 64,128,255,128,64,128,0,0, 0,128,128,128,0,0,0,0, 0,64,64,64,0,0,0,0, 0,128,128,128,128,192,64,255};
    int bleu[48] = {128,128,128,128,255,255,192,255, 0,0,0,64,255,192,192,255, 64,64,0,128,128,255,64,128, 0,0,0,64,255,160,128,255, 0,0,0,64,128,64,64,128, 0,0,64,128,128,192,64,255};


    // Creation du layout principale
    m_layoutSelector = new QVBoxLayout(this);
    m_layoutSelector->setMargin(2);
    m_layoutSelector->setSpacing(1);

    G_couleurCourante.type = ColorType;
    G_couleurCourante.color = QColor(rouge[40],vert[40],bleu[40]);

    m_currentColor = new QLabel(this);
    m_currentColor->setFrameStyle(QFrame::Panel | QFrame::Raised);
    m_currentColor->setLineWidth(1);
    m_currentColor->setMidLineWidth(1);

    m_currentColor->setFixedSize(45,40);
    setBackgroundColorToWidget(m_currentColor, G_couleurCourante.color);
    m_currentColor->setToolTip(tr("Predefine color 1"));
    m_currentColor->setAutoFillBackground(true);
    m_currentColor->setScaledContents(true);

    // Ajout de la couleur actuelle au layout principal
    m_layoutSelector->addWidget(m_currentColor);
    m_layoutSelector->setAlignment(m_currentColor, Qt::AlignHCenter | Qt::AlignTop);

    // Création du layout de la grille de couleurs predefinies
    m_predefinedGrid = new QGridLayout();
    m_predefinedGrid->setSpacing(1);
    m_predefinedGrid->setMargin(1);
    // Ajout de la grille de couleurs predefinies dans le layout principal
    m_layoutSelector->addLayout(m_predefinedGrid);

    // Creation des widgets pour les couleurs predefinies
    int i=0, x=0, y=0;
    for (; i<48; i++)
    {
        QColor couleur(rouge[i],vert[i],bleu[i]);

        m_predefinedColor.append(new ColorWidget(this));
        m_predefinedColor[i]->setColor(couleur);
        m_predefinedColor[i]->setAutoFillBackground(true);
        m_predefinedColor[i]->setFixedHeight(5);
        m_predefinedColor[i]->setToolTip(tr("Predefine color %1 ").arg(i+1));
        connect(m_predefinedColor[i],SIGNAL(clicked(QColor)),this, SLOT(changeCurrentColor(QColor)));

        QColorDialog::setStandardColor(x*6+y, couleur.rgb());
        m_predefinedGrid->addWidget(m_predefinedColor[i], y, x);

        x++;
        y = x>=8?y+1:y;
        x = x>=8?0:x;
    }

    // Ajout d'un separateur entre les couleurs predefinies et les couleurs personnelles
    m_separator1 = new QWidget(this);
    m_separator1->setMaximumHeight(2);
    m_layoutSelector->addWidget(m_separator1);

    // Création du layout de la grille de couleurs personnelles
    m_characterGrid = new QGridLayout();
    m_characterGrid->setSpacing(1);
    m_characterGrid->setMargin(1);
    // Ajout de la grille de couleurs personnelles dans le layout principal
    m_layoutSelector->addLayout(m_characterGrid);

    // Creation des widgets pour les couleurs personnelles
    for (i=0, x=0, y=7; i<16; i++)
    {
        // Creation d'un widget de couleur blanche
        m_personalColor.append(new ColorWidget(this));
        connect(m_personalColor[i],SIGNAL(clicked(QColor)),this, SLOT(changeCurrentColor(QColor)));
        m_personalColor[i]->setAutoFillBackground(true);
        m_personalColor[i]->setFixedHeight(5);
        m_personalColor[i]->setToolTip(tr("Custom Color %1 ").arg(i+1));

        // Mise a jour des couleurs personnelles de QColorDialog
        QColorDialog::setCustomColor(i, m_preferences->value(QString("customcolors%1").arg(i),QColor(Qt::white)).value<QColor>().rgb());

        // Ajout du widget au layout
        m_characterGrid->addWidget(m_personalColor[i], y, x);

        x++;
        y = x>=8?y+1:y;
        x = x>=8?0:x;
    }
    updatePersonalColor();

    // Ajout d'un separateur entre les couleurs personnelles et les couleurs speciales
    m_separator2 = new QWidget(this);
    m_separator2->setMaximumHeight(3);
    m_layoutSelector->addWidget(m_separator2);

    // Création du layout des couleurs speciales
    m_specialColor = new QHBoxLayout();
    m_specialColor->setSpacing(1);
    m_specialColor->setMargin(0);
    // Ajout du layout des couleurs specuales dans le layout principal
    m_layoutSelector->addLayout(m_specialColor);

    // Ajout de la couleur speciale qui efface
    m_eraseColor = new QLabel(this);
    m_eraseColor->setFrameStyle(QFrame::Box | QFrame::Raised);
    m_eraseColor->setLineWidth(0);
    m_eraseColor->setMidLineWidth(1);
    m_eraseColor->setFixedHeight(15);
    m_pixelErase = new QPixmap(":/resources/icons/erase.png");
    m_eraseColor->setPixmap(*m_pixelErase);
    setBackgroundColorToWidget(m_eraseColor,QColor(Qt::white));
    m_eraseColor->setScaledContents(true);
    m_eraseColor->setToolTip(tr("Erase"));
    m_eraseColor->setAutoFillBackground(true);
    m_specialColor->addWidget(m_eraseColor);

    // Ajout de la couleur speciale qui masque
    m_maskColor = new QLabel(this);
    m_maskColor->setFrameStyle(QFrame::Box | QFrame::Raised);
    m_maskColor->setLineWidth(0);
    m_maskColor->setMidLineWidth(1);
    m_maskColor->setFixedHeight(15);
    setBackgroundColorToWidget(m_maskColor,QColor(Qt::white));
    m_maskPixel = new QPixmap(":/resources/icons/hide.png");
    m_maskColor->setPixmap(*m_maskPixel);
    m_maskColor->setScaledContents(true);
    m_maskColor->setAutoFillBackground(true);
    m_specialColor->addWidget(m_maskColor);

    // Ajout de la couleur speciale qui demasque
    m_unveilColor = new QLabel(this);
    m_unveilColor->setFrameStyle(QFrame::Box | QFrame::Raised);
    m_unveilColor->setLineWidth(0);
    m_unveilColor->setMidLineWidth(1);
    m_unveilColor->setFixedHeight(15);
    setBackgroundColorToWidget(m_unveilColor,QColor(Qt::white));
    m_unveilPixel = new QPixmap(":/resources/icons/showMap.png");
    m_unveilColor->setPixmap(*m_unveilPixel);
    m_unveilColor->setScaledContents(true);
    m_unveilColor->setAutoFillBackground(true);
    m_specialColor->addWidget(m_unveilColor);

    // Taille de la palette
    setFixedHeight(126);

    m_maskColor->installEventFilter(this);
    m_unveilColor->installEventFilter(this);
    m_eraseColor->installEventFilter(this);
    m_currentColor->installEventFilter(this);

}
Example #20
0
static void 
receive_sync_file (void *arg)
{
  int sd;
  int code = 0;
  int port;
  int i;
  long lval;
  char command[SIZE];
  char *sync_arg = arg;
  char buf[4096];
  char *ep = NULL;
  char host_port[SIZE];
  char **c = NULL;
  FILE *fd = NULL;
  SSL_CTX* ctx;
  SSL*     ssl;


  c = crv_cut (sync_arg, ":");
  lval = strtol(c[1], &ep, 10);
  if (c[0][0] == '\0' || *ep != '\0') {
    fprintf(stderr, "%s\n", "Sync(): Err[002] Check port on serveur_liste");
    return ;
  }
  if (lval > 65535 || lval < 0) {
    fprintf(stderr, "%s\n", "Sync(): Err[003] Check port on serveur_liste");
    return ;
  }
  port = lval;

  crv_strncpy (host_port, "./listing/", sizeof(host_port));
  crv_strncat (host_port, c[0], sizeof(host_port));	/* put server name in host_port */
  crv_strncat (host_port, ".db", sizeof(host_port));	/* add : behind server name */
  fprintf (stdout, "%s", "Listing reception on ");
  fflush(stdout);

#ifndef WIN32
      couleur ("33;31");
#else
      couleur (12, 0);
#endif
      fprintf (stdout, "'%s'", c[0]);
	  fflush(stdout);
#ifndef WIN32
      couleur ("0");
#else
      couleur (15, 0);
#endif
      fprintf (stdout, "%s\n", " is running ...");

  /* SSL preliminaries */
  init_OpenSSL ();			  
  seed_prng ();
  
  sd = crv_client_create(port, c[0], options.address_family);
	if (sd == -1) {
		close(sd);
		pthread_exit(NULL);
	}

  /* We keep the certificate and key with the context. */
  ctx = setup_client_ctx ();

  /* TCP connection is ready. Do server side SSL. */
  ssl = SSL_new (ctx);
  if ((ssl)==NULL) {
	close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf(stderr, "%s\n", "receive_sync_file() Err[001] Create new ssl failed");
	pthread_exit(NULL);
  }
		
  /* connect the SSL object with a file descriptor */
  code = SSL_set_fd (ssl, sd);
  if ( code == 0) {
	close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf(stderr, "%s\n", "receive_sync_file() Err[002] Put SSL on socket failed \n");
	pthread_exit(NULL);
  }

  code = SSL_connect (ssl);
  if (code == 0)	{
	close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf( stderr, "%s\n", "receive_sync_file(): Err[003] SSL_connect() failed");
	pthread_exit (NULL);
  } else
  if (code == -1) {
	close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf( stderr, "%s\n", "receive_sync_file(): Err[004] SSL_connect() failed");
	pthread_exit (NULL);
  }
 
  
  #ifndef WIN32
  /* 
  code = post_connection_check (ssl, c[0]);
  if (code != X509_V_OK)
  {
	fprintf (stderr, "-Error: peer certificate: %s\n", X509_verify_cert_error_string (code));
	  close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf( stderr, "%s\n", "receive_sync_file(): Err[004'] post_connection_check() failed");
	  pthread_exit (NULL);
  }
  */
  #endif
  for (i = 0; c[i]; i++)
	crv_free(c[i]); 

  fd = crv_fopen(host_port, "w");
  if (fd == NULL) {
	fclose(fd); close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf(stderr, "%s\n", "receive_sync_file(): Err[005] crv_fopen() failed");
	pthread_exit (NULL);
  }
  
  /* Build command -> SYNC#version */
  (void)crv_strncpy(command, "SYNC#", sizeof(command));
  (void)crv_strncat(command, CREUVUX_VERSION, sizeof(command));
  
  code = SSL_write (ssl, command, (int)strlen(command));
  if ( code <= 0) {
	fclose(fd); close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	fprintf(stderr, "%s\n", "receive_sync_file(): Err[006] SSL_write() failed.");
	pthread_exit(NULL);
  }

  code = SSL_read (ssl, buf, sizeof(buf) - 1);
  buf[code] = '\0';
  if(!strncmp (buf, "SYNC_ACK", strlen("SYNC_ACK")))
  {
	for (;;)
	{
		code = SSL_read (ssl, buf, sizeof (buf));
		switch (SSL_get_error (ssl, code))
        {
		  case SSL_ERROR_NONE:
		  case SSL_ERROR_ZERO_RETURN:
		  case SSL_ERROR_WANT_READ:
		  case SSL_ERROR_WANT_WRITE:
			break;
		  default:
			fclose(fd); close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
			fprintf(stderr, "0)Can't receive LISTING\n");
			pthread_exit (NULL);
		}

	  if (!strncmp (buf, "SYNC_END", strlen("SYNC_END"))) {
	    break;
	  }
	  code = fwrite (&buf, (size_t) code, 1, fd);
	  if (code <= 0) {
		fclose(fd); close(sd); SSL_free (ssl); SSL_CTX_free (ctx);
	    fprintf(stderr, "1)Can't write LISTING file\n");
		pthread_exit (NULL);
	  }
	}
  }

  fclose(fd);
  close (sd);
  SSL_free (ssl);
  SSL_CTX_free (ctx);

  pthread_exit (NULL);
}
Example #21
0
void NavireGraphique::paint(QPainter *painter){


    int largeur_carre = boundingRect().width();
    int hauteur_carre = boundingRect().height();

    if(m_navire->estHorizontale())
        largeur_carre/= m_navire->getTaille();
    else
        hauteur_carre/= m_navire->getTaille();

    int x = 0, y = 0;
    int tmp = hauteur_carre;


    if (QFileInfo(m_navire->getFond() ).exists()){ // si image

        QImage image(m_navire->getFond());
        int taille =  m_navire->getTaille();

        int posXI = 0, posYI = 0; // position image
        int divX = m_navire->estHorizontale() == true ? taille : 1;
        int divY = m_navire->estHorizontale() == true ? 1 : taille;


        for(int i = 1; i <= taille ; i++){
            double opacite = (double) m_navire->getDurabiliteAt(i-1) / (double ) m_navire->getMaxDurabilite();
            painter->setOpacity(opacite);

            if(opacite==0)
                dessinerCroix(painter, x,y, largeur_carre, hauteur_carre);

            else{
                QRectF source(posXI*image.width()/divX , posYI*image.height()/divY, image.width()/divX, image.height()/divY);
                QRectF target(x,y, largeur_carre, hauteur_carre);
                painter->drawImage(target,image, source);
            }

            if(m_navire->estHorizontale()){
                x+= tmp; posXI++;
            }
            else{
                y+=tmp; posYI++;
            }
        }


    } else { // aucune image pour le navire, on affiche un fond

        QColor couleur(m_navire->getFond());
        QBrush fond(couleur);
        painter->setBrush(fond);
        painter->setPen(Qt::NoPen);
        painter->setRenderHint(QPainter::Antialiasing);

        for(int i = 0; i < m_navire->getTaille() ; i++){
            double opacite = (double) m_navire->getDurabiliteAt(i) / (double ) m_navire->getMaxDurabilite();

            if(opacite==0)
                dessinerCroix(painter, x,y, largeur_carre, hauteur_carre);
            else
                painter->drawRoundedRect(x,y, largeur_carre, hauteur_carre , 0, 0);

            if(m_navire->estHorizontale())
                x+= tmp;
            else
                y+=tmp;
        }
    }
}