parent
2f2db98791
commit
b48cde2d60
|
@ -0,0 +1,56 @@
|
||||||
|
IN: sdl
|
||||||
|
USE: alien
|
||||||
|
USE: math
|
||||||
|
USE: namespaces
|
||||||
|
USE: stack
|
||||||
|
USE: compiler
|
||||||
|
USE: words
|
||||||
|
USE: parser
|
||||||
|
USE: kernel
|
||||||
|
USE: errors
|
||||||
|
USE: combinators
|
||||||
|
USE: lists
|
||||||
|
USE: logic
|
||||||
|
|
||||||
|
SYMBOL: surface
|
||||||
|
SYMBOL: width
|
||||||
|
SYMBOL: height
|
||||||
|
|
||||||
|
: rgba ( r g b a -- n )
|
||||||
|
swap 8 shift bitor
|
||||||
|
swap 16 shift bitor
|
||||||
|
swap 24 shift bitor ;
|
||||||
|
|
||||||
|
: pixel-step ( quot #{ x y } -- )
|
||||||
|
tuck >r call >r surface get r> r> >rect rot pixelColor ;
|
||||||
|
|
||||||
|
: with-pixels ( w h quot -- )
|
||||||
|
-rot rect> [ over >r pixel-step r> ] 2times* drop ;
|
||||||
|
|
||||||
|
: (surface) ( -- surface )
|
||||||
|
SDL_GetVideoSurface
|
||||||
|
dup surface set
|
||||||
|
dup surface-w width set
|
||||||
|
dup surface-h height set ;
|
||||||
|
|
||||||
|
: with-surface ( quot -- )
|
||||||
|
#! Execute a quotation, locking the current surface if it
|
||||||
|
#! is required (eg, hardware surface).
|
||||||
|
[
|
||||||
|
(surface) dup must-lock-surface? [
|
||||||
|
dup SDL_LockSurface slip dup SDL_UnlockSurface
|
||||||
|
] [
|
||||||
|
slip
|
||||||
|
] ifte SDL_Flip
|
||||||
|
] with-scope ;
|
||||||
|
|
||||||
|
: event-loop ( event -- )
|
||||||
|
dup SDL_WaitEvent 1 = [
|
||||||
|
dup event-type SDL_QUIT = [
|
||||||
|
drop
|
||||||
|
] [
|
||||||
|
event-loop
|
||||||
|
] ifte
|
||||||
|
] [
|
||||||
|
drop
|
||||||
|
] ifte ;
|
Loading…
Reference in New Issue