diff options
Diffstat (limited to 'distrib/sdl-1.2.15/src/video/gem/SDL_gemwm.c')
-rw-r--r-- | distrib/sdl-1.2.15/src/video/gem/SDL_gemwm.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.15/src/video/gem/SDL_gemwm.c b/distrib/sdl-1.2.15/src/video/gem/SDL_gemwm.c new file mode 100644 index 0000000..10776fd --- /dev/null +++ b/distrib/sdl-1.2.15/src/video/gem/SDL_gemwm.c @@ -0,0 +1,116 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +/* + GEM SDL video driver + Window manager functions + + Patrice Mandin +*/ + +/* Mint includes */ +#include <gem.h> + +#include "SDL_gemwm_c.h" + +/* Defines */ + +#define ICONWIDTH 64 +#define ICONHEIGHT 64 + +/* Functions */ + +void GEM_SetCaption(_THIS, const char *title, const char *icon) +{ + if (title) { + GEM_title_name = title; + GEM_refresh_name = SDL_TRUE; + } + + if (icon) { + GEM_icon_name = icon; + GEM_refresh_name = SDL_TRUE; + } +} + +void GEM_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask) +{ + SDL_Surface *sicon; + SDL_Rect bounds; + +#if 0 + if ((GEM_wfeatures & (1<<WF_ICONIFY))==0) { + return; + } +#endif + + if (icon == NULL) { + return; + } + + /* Convert icon to the screen format */ + sicon = SDL_CreateRGBSurface(SDL_SWSURFACE, icon->w, icon->h, + VDI_bpp, VDI_redmask, VDI_greenmask, VDI_bluemask, 0); + if ( sicon == NULL ) { + return; + } + + bounds.x = 0; + bounds.y = 0; + bounds.w = icon->w; + bounds.h = icon->h; + if ( SDL_LowerBlit(icon, &bounds, sicon, &bounds) < 0 ) { + SDL_FreeSurface(sicon); + return; + } + + GEM_icon = sicon; +} + +int GEM_IconifyWindow(_THIS) +{ + if ((GEM_wfeatures & (1<<WF_ICONIFY))==0) + return 0; + + GEM_message[0] = WM_ICONIFY; + GEM_message[1] = gl_apid; + GEM_message[2] = 0; + GEM_message[3] = GEM_handle; + GEM_message[4] = 0; + GEM_message[5] = GEM_desk_h-ICONHEIGHT; + GEM_message[6] = ICONWIDTH; + GEM_message[7] = ICONHEIGHT; + + appl_write(gl_apid, sizeof(GEM_message), GEM_message); + + return 1; +} + +SDL_GrabMode GEM_GrabInput(_THIS, SDL_GrabMode mode) +{ + if (this->screen == NULL) { + return SDL_GRAB_OFF; + } + + return mode; +} |