/
goss.go
54 lines (45 loc) · 873 Bytes
/
goss.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* Go Screenshot Package
*/
package goss
import (
"image"
"github.com/ww24/goss/screenshot"
)
// Screenshot structure
type Screenshot struct {
image image.Image
}
// Goss API
type Goss interface {
ToImage() image.Image
ToRGBA() *image.RGBA
}
// Capture method
func Capture() (img image.Image, err error) {
img, err = screenshot.Capture()
return
}
// New constructor
func New() (ss *Screenshot, err error) {
ss = &Screenshot{}
ss.image, err = screenshot.Capture()
return
}
// ToImage method
func (ss *Screenshot) ToImage() (img image.Image) {
img = ss.image
return
}
// ToRGBA method
func (ss *Screenshot) ToRGBA() (rgba *image.RGBA) {
rect := ss.image.Bounds()
rgba = image.NewRGBA(rect)
for x := rect.Min.X; x < rect.Max.X; x++ {
for y := rect.Min.Y; y < rect.Max.Y; y++ {
col := ss.image.At(x, y)
rgba.Set(x, y, col)
}
}
return
}