Hyper sdl framework / hyper sdl text box

Soyez le premier à donner votre avis sur cette source.

Vue 5 169 fois - Téléchargée 462 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
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
28 octobre 2008

C'est top ce programme ça m'aurait éviter des heures de réécriture des trucs qu'on se sert tout le temps !
Messages postés
1
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
7 octobre 2008

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 ...
Messages postés
2
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
6 octobre 2008

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.