Move offscreen-world widget and support words into ui.offscreen vocab

db4
Joe Groff 2008-12-09 10:07:57 -08:00
parent c861ed9e2c
commit 98c0daae2a
4 changed files with 34 additions and 17 deletions

View File

@ -27,6 +27,8 @@ GENERIC: select-gl-context ( handle -- )
GENERIC: flush-gl-context ( handle -- )
GENERIC: offscreen-pixels ( handle -- alien )
HOOK: beep ui-backend ( -- )
: with-gl-context ( handle quot -- )

View File

@ -16,10 +16,6 @@ TUPLE: offscreen-handle < handle context buffer ;
C: <window-handle> window-handle
C: <offscreen-handle> offscreen-handle
! XXX gross!
M: offscreen-handle window>> drop f ;
M: offscreen-handle view>> drop f ;
SINGLETON: cocoa-ui-backend
M: cocoa-ui-backend do-events ( -- )
@ -117,15 +113,18 @@ M: cocoa-ui-backend (close-offscreen-buffer) ( handle -- )
[ context>> -> release ]
[ buffer>> free ] bi ;
GENERIC: gl-context ( handle -- context )
M: window-handle gl-context view>> -> openGLContext ;
M: offscreen-handle gl-context context>> ;
GENERIC: (gl-context) ( handle -- context )
M: window-handle (gl-context) view>> -> openGLContext ;
M: offscreen-handle (gl-context) context>> ;
M: handle select-gl-context ( handle -- )
gl-context -> makeCurrentContext ;
(gl-context) -> makeCurrentContext ;
M: handle flush-gl-context ( handle -- )
gl-context -> flushBuffer ;
(gl-context) -> flushBuffer ;
M: offscreen-handle offscreen-pixels ( handle -- alien )
buffer>> ;
M: cocoa-ui-backend beep ( -- )
NSBeep ;

View File

@ -81,14 +81,6 @@ M: world ungraft*
[ handle>> (close-window) ]
[ reset-world ] tri ;
M: offscreen-world graft*
(open-offscreen-buffer) ;
M: offscreen-world ungraft*
[ (ungraft-world) ]
[ handle>> (close-offscreen-buffer) ]
[ reset-world ] tri ;
: find-window ( quot -- world )
windows get values
[ gadget-child swap call ] with find-last nip ; inline

View File

@ -0,0 +1,24 @@
USING: accessors graphics.bitmap kernel math sequences
ui.gadgets ui.gadgets.worlds ui ui.backend ;
IN: ui.offscreen
TUPLE: offscreen-world < world ;
: <offscreen-world> ( gadget title status -- world )
offscreen-world new-world ;
M: offscreen-world graft*
(open-offscreen-buffer) ;
M: offscreen-world ungraft*
[ (ungraft-world) ]
[ handle>> (close-offscreen-buffer) ]
[ reset-world ] tri ;
: open-offscreen ( gadget -- world )
"" f <offscreen-world> [ open-world-window ] keep ;
: offscreen-world>bitmap ( world -- bitmap )
[ handle>> offscreen-pixels ] [ dim>> first2 neg ] bi
bgra>bitmap ;