2008-11-01 16:48:35 -04:00
|
|
|
! Copyright (C) 2008 Doug Coleman, Joe Groff.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2018-01-11 17:16:58 -05:00
|
|
|
USING: accessors byte-arrays images images.normalization
|
2019-05-20 23:15:53 -04:00
|
|
|
images.viewer kernel locals math namespaces opengl opengl.gl
|
|
|
|
sequences ui ui.gadgets.worlds ;
|
2008-10-30 19:16:03 -04:00
|
|
|
IN: cap
|
|
|
|
|
2018-01-04 22:49:20 -05:00
|
|
|
<PRIVATE
|
|
|
|
|
2008-10-30 19:16:03 -04:00
|
|
|
: screenshot-array ( world -- byte-array )
|
2012-11-01 19:30:20 -04:00
|
|
|
dim>> [ first 4 * ] [ second ] bi
|
|
|
|
[ gl-scale ] bi@ * >fixnum <byte-array> ;
|
2008-10-30 19:16:03 -04:00
|
|
|
|
|
|
|
: gl-screenshot ( gadget -- byte-array )
|
2018-01-19 18:09:48 -05:00
|
|
|
[ find-gl-context ]
|
2008-10-30 19:16:03 -04:00
|
|
|
[
|
2009-03-10 17:35:47 -04:00
|
|
|
[
|
|
|
|
GL_BACK glReadBuffer
|
|
|
|
GL_PACK_ALIGNMENT 4 glPixelStorei
|
|
|
|
0 0
|
|
|
|
] dip
|
2012-11-01 19:30:20 -04:00
|
|
|
dim>> first2 [ gl-scale >fixnum ] bi@
|
|
|
|
GL_RGBA GL_UNSIGNED_BYTE
|
2009-03-10 17:35:47 -04:00
|
|
|
]
|
2018-01-11 17:16:58 -05:00
|
|
|
[ screenshot-array ] tri
|
2008-10-30 19:16:03 -04:00
|
|
|
[ glReadPixels ] keep ;
|
|
|
|
|
2018-01-04 22:49:20 -05:00
|
|
|
PRIVATE>
|
|
|
|
|
2019-05-20 23:15:53 -04:00
|
|
|
:: screenshot ( window -- bitmap )
|
|
|
|
<image>
|
2018-01-04 22:49:20 -05:00
|
|
|
gl-scale-factor get-global [ 2.0 = >>2x? ] when*
|
2019-05-20 23:15:53 -04:00
|
|
|
window gl-screenshot >>bitmap
|
|
|
|
window dim>> [ gl-scale >fixnum ] map >>dim
|
|
|
|
ubyte-components >>component-type
|
|
|
|
RGBA >>component-order
|
|
|
|
t >>upside-down?
|
2009-03-10 17:35:47 -04:00
|
|
|
normalize-image ;
|
2008-10-30 19:16:03 -04:00
|
|
|
|
|
|
|
: screenshot. ( window -- )
|
2015-06-29 19:43:15 -04:00
|
|
|
[ screenshot <image-gadget> ] [ title>> ] bi open-window ;
|