Home | History | Annotate | Download | only in gem
      1 /*
      2     SDL - Simple DirectMedia Layer
      3     Copyright (C) 1997-2012 Sam Lantinga
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Lesser General Public
      7     License as published by the Free Software Foundation; either
      8     version 2.1 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Lesser General Public License for more details.
     14 
     15     You should have received a copy of the GNU Lesser General Public
     16     License along with this library; if not, write to the Free Software
     17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18 
     19     Sam Lantinga
     20     slouken (at) libsdl.org
     21 */
     22 #include "SDL_config.h"
     23 
     24 /*
     25 	GEM SDL video driver
     26 	Window manager functions
     27 
     28 	Patrice Mandin
     29 */
     30 
     31 /* Mint includes */
     32 #include <gem.h>
     33 
     34 #include "SDL_gemwm_c.h"
     35 
     36 /* Defines */
     37 
     38 #define ICONWIDTH 64
     39 #define ICONHEIGHT 64
     40 
     41 /* Functions */
     42 
     43 void GEM_SetCaption(_THIS, const char *title, const char *icon)
     44 {
     45 	if (title) {
     46 		GEM_title_name = title;
     47 		GEM_refresh_name = SDL_TRUE;
     48 	}
     49 
     50 	if (icon) {
     51 		GEM_icon_name = icon;
     52 		GEM_refresh_name = SDL_TRUE;
     53 	}
     54 }
     55 
     56 void GEM_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask)
     57 {
     58 	SDL_Surface *sicon;
     59 	SDL_Rect bounds;
     60 
     61 #if 0
     62 	if ((GEM_wfeatures & (1<<WF_ICONIFY))==0) {
     63 		return;
     64 	}
     65 #endif
     66 
     67 	if (icon == NULL) {
     68 		return;
     69 	}
     70 
     71 	/* Convert icon to the screen format */
     72 	sicon = SDL_CreateRGBSurface(SDL_SWSURFACE, icon->w, icon->h,
     73 		VDI_bpp, VDI_redmask, VDI_greenmask, VDI_bluemask, 0);
     74 	if ( sicon == NULL ) {
     75 		return;
     76 	}
     77 
     78 	bounds.x = 0;
     79 	bounds.y = 0;
     80 	bounds.w = icon->w;
     81 	bounds.h = icon->h;
     82 	if ( SDL_LowerBlit(icon, &bounds, sicon, &bounds) < 0 ) {
     83 		SDL_FreeSurface(sicon);
     84 		return;
     85 	}
     86 
     87 	GEM_icon = sicon;
     88 }
     89 
     90 int GEM_IconifyWindow(_THIS)
     91 {
     92 	if ((GEM_wfeatures & (1<<WF_ICONIFY))==0)
     93 		return 0;
     94 
     95 	GEM_message[0] = WM_ICONIFY;
     96 	GEM_message[1] = gl_apid;
     97 	GEM_message[2] = 0;
     98 	GEM_message[3] = GEM_handle;
     99 	GEM_message[4] = 0;
    100 	GEM_message[5] = GEM_desk_h-ICONHEIGHT;
    101 	GEM_message[6] = ICONWIDTH;
    102 	GEM_message[7] = ICONHEIGHT;
    103 
    104 	appl_write(gl_apid, sizeof(GEM_message), GEM_message);
    105 
    106 	return 1;
    107 }
    108 
    109 SDL_GrabMode GEM_GrabInput(_THIS, SDL_GrabMode mode)
    110 {
    111 	if (this->screen == NULL) {
    112 		return SDL_GRAB_OFF;
    113 	}
    114 
    115 	return mode;
    116 }
    117