main.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #include <cstdlib>
  2. #include <SDL.h>
  3. #include "Input.h"
  4. #include "SDL_gfxPrimitives.h"
  5. int main ( int argc, char** argv )
  6. {
  7. // initialize SDL video
  8. if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
  9. {
  10. printf( "Unable to init SDL: %s\n", SDL_GetError() );
  11. return 1;
  12. }
  13. // make sure SDL cleans up before exit
  14. atexit(SDL_Quit);
  15. // create a new window
  16. Uint16 w(1440), h(900);
  17. SDL_Surface* screen = SDL_SetVideoMode(w, h, 32,
  18. SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
  19. if ( !screen )
  20. {
  21. printf("Unable to set video: %s\n", SDL_GetError());
  22. return 1;
  23. }
  24. // variables
  25. SDL_Rect dstrect;
  26. const Uint32 delay(18);
  27. Uint32 tps( SDL_GetTicks() ), tps_old(0);
  28. // graph
  29. int i(0);
  30. int r(128), g(128), b(128);
  31. bool ubr(false), ubg(false), ubb(false);
  32. bool dbr(false), dbg(false), dbb(false);
  33. // program main loop
  34. bool done = false;
  35. while (!done)
  36. {
  37. // message processing loop
  38. SDL_Event event;
  39. while (SDL_PollEvent(&event))
  40. {
  41. // check for messages
  42. switch (event.type)
  43. {
  44. // exit if the window is closed
  45. case SDL_QUIT:
  46. done = true;
  47. break;
  48. // check for keypresses
  49. case SDL_KEYDOWN:
  50. // exit if ESCAPE is pressed
  51. switch ( event.key.keysym.sym )
  52. {
  53. case SDLK_ESCAPE:
  54. done = true;
  55. break;
  56. case SDLK_KP7:
  57. ubr = true;
  58. dbr = false;
  59. break;
  60. case SDLK_KP1:
  61. ubr = false;
  62. dbr = true;
  63. break;
  64. case SDLK_KP8:
  65. ubg = true;
  66. dbg = false;
  67. break;
  68. case SDLK_KP2:
  69. ubg = false;
  70. dbg = true;
  71. break;
  72. case SDLK_KP9:
  73. ubb = true;
  74. dbb = false;
  75. break;
  76. case SDLK_KP3:
  77. ubb = false;
  78. dbb = true;
  79. break;
  80. default:
  81. break;
  82. }
  83. break;
  84. case SDL_KEYUP:
  85. switch ( event.key.keysym.sym )
  86. {
  87. case SDLK_KP7:
  88. ubr = false;
  89. dbr = false;
  90. break;
  91. case SDLK_KP1:
  92. ubr = false;
  93. dbr = false;
  94. break;
  95. case SDLK_KP8:
  96. ubg = false;
  97. dbg = false;
  98. break;
  99. case SDLK_KP2:
  100. ubg = false;
  101. dbg = false;
  102. break;
  103. case SDLK_KP9:
  104. ubb = false;
  105. dbb = false;
  106. break;
  107. case SDLK_KP3:
  108. ubb = false;
  109. dbb = false;
  110. break;
  111. default:
  112. break;
  113. }
  114. break;
  115. } // end switch event tye
  116. } // end of message processing
  117. if ( r < 255 && ubr ) r++;
  118. if ( r > 0 && dbr ) r--;
  119. if ( g < 255 && ubg ) g++;
  120. if ( g > 0 && dbg ) g--;
  121. if ( b < 255 && ubb ) b++;
  122. if ( b > 0 && dbb ) b--;
  123. // calculs
  124. i++;
  125. if ( i > w ) i = 0;
  126. // DRAWING STARTS HERE
  127. vlineRGBA(screen, i, 0, h, r/2, g/2, b/2, 255);
  128. roundedBoxRGBA(screen, 15, 15, w-15, h-400, 15, r, g, b, 255);
  129. for ( int j(1); j<=3; j++ )
  130. {
  131. filledCircleRGBA(screen, j*w/4, h-200, 149, 128, 128, 128, 255);
  132. }
  133. filledPieRGBA(screen, w/4, h-200, 150, 0, r*359/255, 255, 0, 0, 255 );
  134. filledPieRGBA(screen, w/2, h-200, 150, 0, g*359/255, 0, 255, 0, 255 );
  135. filledPieRGBA(screen, 3*w/4, h-200, 150, 0, b*359/255, 0, 0, 255, 255 );
  136. stringRGBA(screen, w/4+140, h-130, "Rouge", 255, 0, 0, 255);
  137. stringRGBA(screen, w/2+140, h-130, "Vert", 0, 255, 0, 255);
  138. stringRGBA(screen, 3*w/4+140, h-130, "Bleu", 0, 0, 255, 255);
  139. // DRAWING ENDS HERE
  140. // finally, update the screen :)
  141. SDL_Flip(screen);
  142. // time management
  143. do
  144. {
  145. tps = SDL_GetTicks();
  146. } while ( tps-tps_old < delay );
  147. tps_old = tps;
  148. } // end main loop
  149. // all is well ;)
  150. printf("Exited cleanly\n");
  151. return 0;
  152. }