diff -ur ScummVM-cvs20020921/scummvm/backends/sdl/sdl-common.cpp ScummVM-cvs20020921+hack/scummvm/backends/sdl/sdl-common.cpp
old
|
new
|
|
432 | 432 | b |= KBD_ALT; |
433 | 433 | event->kbd.flags = b; |
434 | 434 | |
| 435 | // Alt-S creates a screenshot |
| 436 | if (b == KBD_ALT && ev.key.keysym.sym=='s') { |
| 437 | save_screenshot(); |
| 438 | break; |
| 439 | } |
| 440 | |
435 | 441 | // Alt-Return toggles full screen mode |
436 | 442 | if (b == KBD_ALT && ev.key.keysym.sym==SDLK_RETURN) { |
437 | 443 | property(PROP_TOGGLE_FULLSCREEN, NULL); |
… |
… |
|
674 | 680 | |
675 | 681 | return 0; |
676 | 682 | } |
| 683 | |
| 684 | void OSystem_SDL_Common::save_screenshot() { |
| 685 | SDL_Surface *screenshot; |
| 686 | char filename[255]; |
| 687 | bool can_save = false; |
| 688 | int i; |
| 689 | |
| 690 | screenshot = get_screenshot_surface(); |
| 691 | if (screenshot == NULL) |
| 692 | return; |
| 693 | |
| 694 | for (i = 0; i <= 9999; i++) { |
| 695 | FILE *tmpfile; |
| 696 | |
| 697 | // FIXME - Use getSavePath() |
| 698 | sprintf(filename, "scr%04d.bmp", i); |
| 699 | tmpfile = fopen(filename, "rb"); |
| 700 | if (tmpfile == NULL) { |
| 701 | can_save = true; |
| 702 | break; |
| 703 | } |
| 704 | fclose(tmpfile); |
| 705 | } |
| 706 | |
| 707 | if (!can_save) { |
| 708 | warning("Could not make filename for screenshot!"); |
| 709 | return; |
| 710 | } |
| 711 | |
| 712 | if (SDL_SaveBMP(screenshot, filename) == 0) |
| 713 | debug(1, "Screenshot saved as '%s'", filename); |
| 714 | else |
| 715 | warning("Could not save screenshot: %s", SDL_GetError()); |
| 716 | } |
677 | 717 | |
678 | 718 | void OSystem_SDL_Common::quit() { |
679 | 719 | if(cdrom) { |
diff -ur ScummVM-cvs20020921/scummvm/backends/sdl/sdl-common.h ScummVM-cvs20020921+hack/scummvm/backends/sdl/sdl-common.h
old
|
new
|
|
88 | 88 | // Update cdrom audio status |
89 | 89 | void update_cdrom(); |
90 | 90 | |
| 91 | // Save screenshot |
| 92 | void save_screenshot(); |
| 93 | |
91 | 94 | // Quit |
92 | 95 | void quit(); |
93 | 96 | |
… |
… |
|
181 | 184 | virtual void unload_gfx_mode() = 0; |
182 | 185 | virtual void hotswap_gfx_mode() = 0; |
183 | 186 | |
| 187 | virtual SDL_Surface *get_screenshot_surface() = 0; |
| 188 | |
184 | 189 | void get_320x200_image(byte *buf); |
185 | 190 | |
186 | 191 | void setup_icon(); |
diff -ur ScummVM-cvs20020921/scummvm/backends/sdl/sdl.cpp ScummVM-cvs20020921+hack/scummvm/backends/sdl/sdl.cpp
old
|
new
|
|
59 | 59 | virtual void load_gfx_mode(); |
60 | 60 | virtual void unload_gfx_mode(); |
61 | 61 | void hotswap_gfx_mode(); |
| 62 | |
| 63 | SDL_Surface *get_screenshot_surface(); |
62 | 64 | |
63 | 65 | int TMP_SCREEN_WIDTH; |
64 | 66 | }; |
… |
… |
|
431 | 433 | OSystem_SDL_Normal::update_screen(); |
432 | 434 | } |
433 | 435 | |
| 436 | SDL_Surface *OSystem_SDL_Normal::get_screenshot_surface() { |
| 437 | return sdl_hwscreen; |
| 438 | } |
| 439 | |
434 | 440 | uint32 OSystem_SDL_Normal::property(int param, Property *value) { |
435 | 441 | |
436 | 442 | if (param == PROP_TOGGLE_FULLSCREEN) { |
diff -ur ScummVM-cvs20020921/scummvm/backends/sdl/sdl_gl.cpp ScummVM-cvs20020921+hack/scummvm/backends/sdl/sdl_gl.cpp
old
|
new
|
|
60 | 60 | void load_gfx_mode(); |
61 | 61 | void unload_gfx_mode(); |
62 | 62 | void hotswap_gfx_mode(); |
| 63 | |
| 64 | SDL_Surface *get_screenshot_surface(); |
63 | 65 | }; |
64 | 66 | |
65 | 67 | OSystem_SDL_Common *OSystem_SDL_Common::create() { |
… |
… |
|
168 | 170 | update_screen(); |
169 | 171 | } |
170 | 172 | |
| 173 | SDL_Surface *OSystem_SDL_GL::get_screenshot_surface() { |
| 174 | warning("Screenshots not yet supported in SDL / OpenGL."); |
| 175 | return NULL; |
| 176 | } |
| 177 | |
171 | 178 | uint32 OSystem_SDL_GL::property(int param, Property *value) { |
172 | 179 | |
173 | 180 | if (param == PROP_TOGGLE_FULLSCREEN) { |