1 // SDL interface that is compatible with Windows.slate
4 typedef SDL_Surface Window
;
5 #include "slate-windows.h"
8 # define EXPORT __declspec(dllexport)
13 SDL_Surface
*surface
; // Ick! SDL only supports 1 window
15 slate_int_t eventValid
= 0;
19 SDL_Init(SDL_INIT_VIDEO
);
20 printf("enable unicode!!!!!!\n");
24 EXPORT
void shutdown()
29 EXPORT SDL_Surface
*createWindow(slate_int_t width
, slate_int_t height
)
31 return surface
= SDL_SetVideoMode(width
, height
, 32, SDL_HWSURFACE
| SDL_RESIZABLE
);
34 EXPORT slate_int_t
haveEvent()
38 else if(SDL_PollEvent(&event
))
47 // Returns 1 if there is a message. Returns 0 if error
48 EXPORT slate_int_t
waitForEvent()
52 else if(SDL_WaitEvent(&event
))
61 EXPORT
void popEvent()
66 EXPORT slate_int_t
getEventType()
71 return keyDownMessageType
;
74 return keyUpMessageType
;
77 return mouseMoveMessageType
;
79 case SDL_MOUSEBUTTONDOWN
:
80 switch(event
.button
.button
)
83 return leftDownMessageType
;
84 case SDL_BUTTON_MIDDLE
:
85 return middleDownMessageType
;
86 case SDL_BUTTON_RIGHT
:
87 return rightDownMessageType
;
92 case SDL_MOUSEBUTTONUP
:
93 switch(event
.button
.button
)
96 return leftUpMessageType
;
97 case SDL_BUTTON_MIDDLE
:
98 return middleUpMessageType
;
99 case SDL_BUTTON_RIGHT
:
100 return rightUpMessageType
;
106 return closeWindowMessageType
;
108 case SDL_VIDEORESIZE
:
109 return positionWindowMessageType
;
111 case SDL_VIDEOEXPOSE
:
112 return repaintWindowMessageType
;
116 } // switch(event.type)
119 EXPORT SDL_Surface
*getEventWindow()
121 return surface
; // Ick! SDL only supports 1 window
124 EXPORT slate_int_t
getEventMouseMotionX()
126 return event
.motion
.x
;
129 EXPORT slate_int_t
getEventMouseMotionY()
131 return event
.motion
.y
;
134 EXPORT slate_int_t
getEventMouseButtonX()
136 return event
.button
.x
;
139 EXPORT slate_int_t
getEventMouseButtonY()
141 return event
.button
.y
;
144 EXPORT slate_int_t
getKeyboardKey()
146 return event
.key
.keysym
.unicode
; /*unicode must be enabled for this to work*/
149 EXPORT slate_int_t
getKeyboardMod()
151 return event
.key
.keysym
.mod
;
156 SDL_Surface
*dest
, slate_int_t destX
, slate_int_t destY
, slate_int_t destWidth
, slate_int_t destHeight
,
157 void *src
, slate_int_t srcX
, slate_int_t srcY
, slate_int_t srcWidth
, slate_int_t srcHeight
, slate_int_t srcStride
)
159 SDL_Rect destRect
= {destX
, destY
, destWidth
, destHeight
};
160 SDL_Rect srcRect
= {srcX
, srcY
, srcWidth
, srcHeight
};
161 SDL_Surface
*srcSurf
= SDL_CreateRGBSurfaceFrom(
162 src
, srcWidth
, srcHeight
, 32, srcStride
, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000);
166 SDL_SetAlpha(dest
, 0, 0);
167 SDL_SetAlpha(srcSurf
, 0, 0);
168 SDL_BlitSurface(srcSurf
, &srcRect
, dest
, &destRect
);
169 SDL_UpdateRect(dest
, destX
, destY
, destWidth
, destHeight
);
170 SDL_FreeSurface(srcSurf
);