SDL_resize.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. #ifdef SAVE_RCSID
  19. static char rcsid =
  20.  "@(#) $Id: SDL_resize.c,v 1.4 2002/04/22 21:38:02 wmay Exp $";
  21. #endif
  22. /* Resize event handling code for SDL */
  23. #include "SDL_events.h"
  24. #include "SDL_events_c.h"
  25. #include "SDL_sysvideo.h"
  26. /* Keep the last resize event so we don't post duplicates */
  27. static struct {
  28. int w;
  29. int h;
  30. } last_resize;
  31. /* This is global for SDL_eventloop.c */
  32. int SDL_PrivateResize(int w, int h)
  33. {
  34. int posted;
  35. SDL_Event events[32];
  36. /* See if this event would change the video surface */
  37. if ( !w || !h ||
  38.      ((last_resize.w == w) && (last_resize.h == h)) ) {
  39. return(0);
  40. }
  41.         last_resize.w = w;
  42.         last_resize.h = h;
  43. if ( ! SDL_VideoSurface ||
  44.      ((w == SDL_VideoSurface->w) && (h == SDL_VideoSurface->h)) ) {
  45. return(0);
  46. }
  47. /* Pull out all old resize events */
  48. SDL_PeepEvents(events, sizeof(events)/sizeof(events[0]),
  49.                     SDL_GETEVENT, SDL_VIDEORESIZEMASK);
  50. /* Post the event, if desired */
  51. posted = 0;
  52. if ( SDL_ProcessEvents[SDL_VIDEORESIZE] == SDL_ENABLE ) {
  53. SDL_Event event;
  54. event.type = SDL_VIDEORESIZE;
  55. event.resize.w = w;
  56. event.resize.h = h;
  57. if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) {
  58. posted = 1;
  59. SDL_PushEvent(&event);
  60. }
  61. }
  62. return(posted);
  63. }