Hyper sdl framework / hyper sdl text box

Soyez le premier à donner votre avis sur cette source.

Vue 5 474 fois - Téléchargée 488 fois

Description

Je vous propose un espace de programmation en c++ pour la librairie SDL (Hyper SDL Framework), qui peut vous éviter passer à chaque fois par des milliards de case et d'oublier également la fameuse boucle infini, ce qui va faciliter considérablement la lecture du code SDL par la suite, tout en préservant toute la puissance d'SDL.
Suivant un certain modèle, vous pouvez créer vos propre widget et les utiliser dans le SDL Framework en toute facilité, j'ai déjà crée le premier : Hyper SDL Text Box, une zone de texte qui supporte un curseur clignotant, gère la sélection, copie du texte avec « CTRL+c », etc ?

Avant de lire le code source, je vous recommande fortement de consulter le document word dans le zip "Hyper SDL Framework Doc.doc"

Source / Exemple :


#include "MyFramework.h"

void MyFramework::SDLMainInit() {
    TTF_Init();
    atexit(TTF_Quit);
    screen=SDL_SetVideoMode(640, 420, 32,SDL_HWSURFACE|SDL_DOUBLEBUF);
    font=SDL_LoadBMP("sky.bmp");
    PositionFont.x=PositionFont.y=0;
    SDL_WM_SetCaption("SDL Framework", NULL);
    Comic=TTF_OpenFont("Comic.ttf", 20);
    Forte=TTF_OpenFont("Forte.ttf", 25);
    Hand=TTF_OpenFont("Hand.ttf", 17);
    Uint32 RougeRGB=SDL_MapRGB(screen->format, 239, 88, 80);
    Uint32 GrisRGB=SDL_MapRGB(screen->format, 200, 190, 177);
    Uint32 BleuCielRGB=SDL_MapRGB(screen->format, 81, 151, 236);
    Uint32 JauneRGB=SDL_MapRGB(screen->format, 254, 250, 90);
    Uint32 VertRGB=SDL_MapRGB(screen->format, 2, 174, 6);
    SDL_Color Bleu={213, 128, 13};
    SDL_Color Blanc={255, 255, 255};
    ZT1=new SDLTextBox(screen, 30, 30, true, 550, Blanc, Comic, GrisRGB, RougeRGB);
    ZT2=new SDLTextBox(screen, 30, 340, true, 550, Bleu, Forte, VertRGB, JauneRGB);
    ZT3=new SDLTextBox(screen, 30, 190, true, 500, Blanc, Hand, GrisRGB, BleuCielRGB);
    ZT3->setBackground("background.bmp");
    ZT3->setCursor("cursor.bmp");
    ZT1->Text="Moi, j'affiche le texte sélectionnée";
    ZT2->Text="Je suis une Text Box";
}
void MyFramework::SDLMainLoop() {
    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));
    SDL_BlitSurface(font, NULL, screen, &PositionFont);
    ZT1->drawTextBox(event, freshevent);
    ZT2->drawTextBox(event, freshevent);
    ZT3->drawTextBox(event, freshevent);
    SDL_Flip(screen);
    if (ZT2->Focus) ZT1->Text=ZT2->getSelectedText();
    if (ZT3->Focus) ZT1->Text=ZT3->getSelectedText();
}
void MyFramework::On_SDL_KEYDOWN() {
    if (event.key.keysym.sym==SDLK_ESCAPE) {
        SDLQuit();
    }
}
MyFramework::~MyFramework() {
    delete ZT1;
    delete ZT2;
    delete ZT3;
    SDL_FreeSurface(font);
    SDL_FreeSurface(screen);
    free(Comic);
    free(Forte);
    free(Hand);
}

Conclusion :


Je suis ouvert à toute idée d'amélioration ...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Mal_au_DOS Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 octobre 2008
13 oct. 2008 à 19:10
C'est top ce programme ça m'aurait éviter des heures de réécriture des trucs qu'on se sert tout le temps !
hypermb Messages postés 1 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 7 octobre 2008
7 oct. 2008 à 01:09
salut legendaryz, je n'ai jamais pensé te retrouver par là, l'option multiligne va venir dans une prochaine version ... @+ et bonne chance dans votre ZGui ...
cs_legendaryz Messages postés 2 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 6 octobre 2008
6 oct. 2008 à 21:26
salut c'est l'auteur de ZGui qui te parle, excellent travail, faudrait ajouter l'option multiligne à ta text-box, a+ ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.