main.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <string>
  4. #include <SDL/SDL.h>
  5. #include <SDL/SDL_ttf.h>
  6. #include "transform.h"
  7. int main ( int argc, char** argv )
  8. {
  9. /// [1] Démarrage
  10. // [1.1] Démarrages SDL et TTF
  11. if ( SDL_Init( SDL_INIT_VIDEO ) < 0 || TTF_Init() < 0 )
  12. {
  13. std::cout << "Impossible d'initialiser la SDL: " << SDL_GetError() << std::endl;
  14. std::cout << "Ou problème de TTf: " << TTF_GetError() << std::endl;
  15. return 1;
  16. }
  17. // [1.2] Préparation de fermeture
  18. atexit(SDL_Quit);
  19. atexit(TTF_Quit);
  20. // [1.3] Para-fenêtre
  21. SDL_WM_SetCaption("Gestion du texte avec SDL_ttf", 0);
  22. /// [2] Préparation des composants
  23. // [2.1] Préparation de la fenêtre
  24. SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
  25. SDL_HWSURFACE|SDL_DOUBLEBUF);
  26. if ( !screen )
  27. {
  28. printf("Unable to set 640x480 video: %s\n", SDL_GetError());
  29. return 1;
  30. }
  31. // [2.2] Préparation d'image(s)
  32. SDL_Surface *texte(0);
  33. SDL_Rect position;
  34. SDL_Surface *titre(0);
  35. // [2.3] Préparation du texte
  36. TTF_Font *police(0);
  37. police = TTF_OpenFont("Polices/droid.ttf",65);
  38. SDL_Color couleurNoire = {0,0,0};
  39. std::string chaine("Shtroumf aromatise !");
  40. titre = transform("Biliplop !!!",62);
  41. /// [3] Boucle principale
  42. bool done = false;
  43. while (!done)
  44. {
  45. // [3.1] Gestion évènements
  46. SDL_Event event;
  47. while (SDL_PollEvent(&event))
  48. {
  49. switch (event.type)
  50. {
  51. case SDL_QUIT:
  52. done = true;
  53. break;
  54. case SDL_KEYDOWN:
  55. if (event.key.keysym.sym == SDLK_ESCAPE)
  56. done = true;
  57. break;
  58. } // end switch event type
  59. } // end of message processing
  60. // [3.2] Calculs
  61. texte = TTF_RenderText_Blended(police, chaine.c_str(),couleurNoire);
  62. // [3.3] Dessin des composants
  63. SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 255, 255, 255));
  64. position.x = screen->w/2 - texte->w/2;
  65. position.y = screen->h/2 - texte->h/2;
  66. SDL_BlitSurface(texte, NULL, screen, &position);
  67. position.x = screen->w/2 - titre->w/2;
  68. position.y = 400;
  69. SDL_BlitSurface(titre, NULL, screen, &position);
  70. SDL_Flip(screen);
  71. } //fin bcl principale
  72. ///[4] Destruction des composants
  73. TTF_CloseFont(police);
  74. SDL_FreeSurface(texte);
  75. SDL_FreeSurface(titre);
  76. std::cout << "Aucune erreur détectée." << std::endl;
  77. return 0;
  78. }