testdragareas.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <stdio.h>
  2. #include "SDL.h"
  3. /* !!! FIXME: rewrite this to be wired in to test framework. */
  4. int main(int argc, char **argv)
  5. {
  6. int done = 0;
  7. SDL_Window *window;
  8. SDL_Renderer *renderer;
  9. const SDL_Rect drag_areas[] = {
  10. { 20, 20, 100, 100 },
  11. { 200, 70, 100, 100 },
  12. { 400, 90, 100, 100 }
  13. };
  14. const SDL_Rect *areas = drag_areas;
  15. int numareas = SDL_arraysize(drag_areas);
  16. /* !!! FIXME: check for errors. */
  17. SDL_Init(SDL_INIT_VIDEO);
  18. window = SDL_CreateWindow("Drag the red boxes", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_BORDERLESS);
  19. renderer = SDL_CreateRenderer(window, -1, 0);
  20. if (SDL_SetWindowDragAreas(window, areas, numareas) == -1) {
  21. fprintf(stderr, "Setting drag areas failed!\n");
  22. SDL_Quit();
  23. return 1;
  24. }
  25. while (!done)
  26. {
  27. SDL_SetRenderDrawColor(renderer, 0, 0, 127, 255);
  28. SDL_RenderClear(renderer);
  29. SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
  30. SDL_RenderFillRects(renderer, areas, SDL_arraysize(drag_areas));
  31. SDL_RenderPresent(renderer);
  32. SDL_Event e;
  33. int nothing_to_do = 1;
  34. while (SDL_PollEvent(&e)) {
  35. nothing_to_do = 0;
  36. switch (e.type)
  37. {
  38. case SDL_MOUSEBUTTONDOWN:
  39. printf("button down!\n");
  40. break;
  41. case SDL_MOUSEBUTTONUP:
  42. printf("button up!\n");
  43. break;
  44. case SDL_WINDOWEVENT:
  45. if (e.window.event == SDL_WINDOWEVENT_MOVED) {
  46. printf("Window event moved to (%d, %d)!\n", (int) e.window.data1, (int) e.window.data2);
  47. }
  48. break;
  49. case SDL_KEYDOWN:
  50. if (e.key.keysym.sym == SDLK_ESCAPE) {
  51. done = 1;
  52. } else if (e.key.keysym.sym == SDLK_x) {
  53. if (!areas) {
  54. areas = drag_areas;
  55. numareas = SDL_arraysize(drag_areas);
  56. } else {
  57. areas = NULL;
  58. numareas = 0;
  59. }
  60. if (SDL_SetWindowDragAreas(window, areas, numareas) == -1) {
  61. fprintf(stderr, "Setting drag areas failed!\n");
  62. SDL_Quit();
  63. return 1;
  64. }
  65. }
  66. break;
  67. case SDL_QUIT:
  68. done = 1;
  69. break;
  70. }
  71. }
  72. if (nothing_to_do) {
  73. SDL_Delay(50);
  74. }
  75. }
  76. SDL_Quit();
  77. return 0;
  78. }