Hyper sdl framework / hyper sdl text box

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

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.