43 lines
		
	
	
		
			800 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			800 B
		
	
	
	
		
			V
		
	
	
| module sapp
 | |
| 
 | |
| [heap]
 | |
| pub struct Screenshot {
 | |
| 	width  int
 | |
| 	height int
 | |
| 	size   int
 | |
| mut:
 | |
| 	pixels &byte
 | |
| }
 | |
| 
 | |
| [manualfree]
 | |
| pub fn screenshot_window() &Screenshot {
 | |
| 	img_width := width()
 | |
| 	img_height := height()
 | |
| 	img_size := img_width * img_height * 4
 | |
| 	img_pixels := unsafe { &byte(malloc(img_size)) }
 | |
| 	C.v_sapp_gl_read_rgba_pixels(0, 0, img_width, img_height, img_pixels)
 | |
| 	return &Screenshot{
 | |
| 		width: img_width
 | |
| 		height: img_height
 | |
| 		size: img_size
 | |
| 		pixels: img_pixels
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // free - free *only* the Screenshot pixels.
 | |
| [unsafe]
 | |
| pub fn (mut ss Screenshot) free() {
 | |
| 	unsafe {
 | |
| 		free(ss.pixels)
 | |
| 		ss.pixels = &byte(0)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // destroy - free the Screenshot pixels,
 | |
| // then free the screenshot data structure itself.
 | |
| [unsafe]
 | |
| pub fn (mut ss Screenshot) destroy() {
 | |
| 	unsafe { ss.free() }
 | |
| 	unsafe { free(ss) }
 | |
| }
 |