• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     SDL - Simple DirectMedia Layer
3     Copyright (C) 1997-2006 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@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 
GEM_SetCaption(_THIS,const char * title,const char * icon)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 
GEM_SetIcon(_THIS,SDL_Surface * icon,Uint8 * mask)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 
GEM_IconifyWindow(_THIS)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 
GEM_GrabInput(_THIS,SDL_GrabMode mode)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