summaryrefslogtreecommitdiff
path: root/drw/x.go
blob: 70b29da4fdde03b73bffb218b7689b2ccce0a153 (plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package drw // import "hhvn.uk/hbspbar/drw"

import (
	"os"
	"image/color"

	"hhvn.uk/hbspbar/config"
	"hhvn.uk/hbspbar/common"

	"github.com/jezek/xgb"
	"github.com/jezek/xgb/xproto"
	"github.com/jezek/xgbutil"
	"github.com/jezek/xgbutil/xgraphics"
	"github.com/BurntSushi/freetype-go/freetype"
	"github.com/BurntSushi/freetype-go/freetype/truetype"
)

var InitErr error
var X       *xgb.Conn
var XU      *xgbutil.XUtil
var Screen  *xproto.ScreenInfo

var font    *truetype.Font
var ft      *freetype.Context

func init() {
	var err error

	X, err = xgb.NewConn()
	if err != nil {
		InitErr = err
		return
	}

	XU, err = xgbutil.NewConnXgb(X)
	if err != nil {
		InitErr = err
		return
	}

	setup := xproto.Setup(X)
	Screen = setup.DefaultScreen(X)

	read, err := os.Open(config.Font)
	if err != nil {
		InitErr = common.Perror("os.Open", err)
		return
	}

	font, err = xgraphics.ParseFont(read)
	if err != nil {
		InitErr = common.Perror("xgraphics.ParseFont", err)
		return
	}

	ft = freetype.NewContext()
	ft.SetDPI(72)
	ft.SetFont(font)
	ft.SetFontSize(config.FontSize)
}

func int2rgb(argb uint32) (color.RGBA) {
	return color.RGBA{
		B: uint8( argb & 0x000000ff),
		G: uint8((argb & 0x0000ff00) >> 8),
		R: uint8((argb & 0x00ff0000) >> 16),
		A: uint8((argb & 0xff000000) >> 24) }
}