Пример #1
0
void		draw_settings(t_env *e)
{
	fond(e, 0xd5d5d5);
	w_draw_label(e);
	w_draw_form(e);
	w_draw_map_key(e);
}
Пример #2
0
Unichar BoiteDialogue::afficher(Unichar const &texte, Unichar const &description, Unichar const &bouton1, Unichar const &bouton2, Unichar const &bouton3) {
	Unichar retour;

	AfficheurImage fond(Ecran::ecran(), *Ecran::apercu(), Couleur::noir, Couleur(Couleur::noir, 150));
	TexteEtiquette titre(Unichar(), glm::vec2(20, 20), POLICE_NORMALE, 18, Couleur::blanc);
	
	titre.definirDimensions(glm::vec2(Ecran::largeur() * 4 / 5 - 40, 10));
	titre.definirValeurTexte(texte);
	
	TexteEtiquette sousTitre(Unichar(), glm::vec2(20, titre.position().y + titre.dimensions().y + 20), POLICE_NORMALE, 15, Couleur::blanc);
	sousTitre.definirDimensions(glm::vec2(Ecran::largeur() * 4 / 5 - 40, 10));
	sousTitre.definirValeurTexte(description);
	
	
	Bouton b1(glm::vec2(50, 0), bouton1);
	Bouton b2(glm::vec2(50, 0), bouton2);
	Bouton b3(glm::vec2(50, 0), bouton3);

	double largeur = b1.dimensions().x;
	if(!bouton2.empty())
		largeur += 50 + b2.dimensions().x;
	if(!bouton3.empty())
		largeur += 50 + b3.dimensions().x;

	b1.definirPosition(glm::vec2(Ecran::largeur() * 4 / 5 - 20 - b1.dimensions().x, titre.position().y + titre.dimensions().y + 50));
	b1.definirAction(BoiteDialogue::bouton);
	b1.definirParametreAction(&retour);
	b1.definirRaccourci(Session::T_ENTREE);
	
	if(!bouton2.empty()) {
		b2.definirPosition(glm::vec2(b1.position().x - 20 - b2.dimensions().x, titre.position().y + titre.dimensions().y + 50));

		b2.definirAction(BoiteDialogue::bouton);
		b2.definirParametreAction(&retour);
		b2.definirRaccourci(Session::T_ESC);
	}
	if(!bouton3.empty()) {
		if(!bouton2.empty())
			b3.definirPosition(glm::vec2(b2.position().x - 50 - b3.dimensions().x, titre.position().y + titre.dimensions().y + 50));
		else
			b3.definirPosition(glm::vec2(b1.position().x - 50 - b3.dimensions().x, titre.position().y + titre.dimensions().y + 50));

		b3.definirAction(BoiteDialogue::bouton);
		b3.definirParametreAction(&retour);
		b3.definirRaccourci(Session::T_ESPACE);
	}
	
	AfficheurCouleur cadre(Rectangle(0, 0, Ecran::largeur() * 4 / 5, b1.cadre().haut + b1.cadre().hauteur + 20), Couleur(Couleur::noir, 120));
	titre.definirPosition(glm::vec2(20, 20));
	cadre.definirPosition(glm::vec2(std::max<coordonnee_t>(0.0, (Ecran::largeur() - cadre.dimensions().x)/ 2), 3 * Ecran::hauteur() / 7 - cadre.dimensions().y /2));
	
	fond.ajouterEnfant(cadre);
	
	cadre.ajouterEnfant(b1);
	if(!bouton2.empty())
		cadre.ajouterEnfant(b2);
	if(!bouton3.empty())
		cadre.ajouterEnfant(b3);

	cadre.ajouterEnfant(titre);
	cadre.ajouterEnfant(sousTitre);
	
	Ecran::definirPointeurAffiche(true);
	
	Session::ajouterVueFenetre(&fond);
	
	if(Session::evenement(Session::QUITTER))
		Session::reinitialiser(Session::QUITTER);
		
	return retour;
}
Пример #3
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;
        }
    }
}