diff options
| author | hhvn <dev@hhvn.uk> | 2023-11-18 14:13:25 +0000 |
|---|---|---|
| committer | hhvn <dev@hhvn.uk> | 2023-11-18 19:55:08 +0000 |
| commit | 6117c8a98a39cd8bc1ca6b2436b6dab8873053f9 (patch) | |
| tree | f122e56d14c4d7f4facb154186443e932e21026f /x/x.go | |
| parent | 2b7504f96fcb8878ac5ed089940868517a74da79 (diff) | |
Draw to an image.RGBA
Diffstat (limited to 'x/x.go')
| -rw-r--r-- | x/x.go | 100 |
1 files changed, 0 insertions, 100 deletions
@@ -1,100 +0,0 @@ -package x // import "hhvn.uk/hbspbar/x" - -import ( - "os" - "image" - - "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/truetype" -) - -var InitErr error -var X *xgb.Conn -var XU *xgbutil.XUtil -var Screen *xproto.ScreenInfo - -var font *truetype.Font -var tw, th int -var tbpad int - -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 - } - - test := xgraphics.New(XU, image.Rect(0, 0, int(config.FontSize * 10), int(config.FontSize * 10))) - tw, th, _ = test.Text(0, 0, int2BGRA(config.Fg), config.FontSize, font, "X") - tbpad = (int(config.H) - th) / 2 -} - -func int2BGRA(argb uint32) (xgraphics.BGRA) { - return xgraphics.BGRA{ - B: uint8( argb & 0x000000ff), - G: uint8((argb & 0x0000ff00) >> 8), - R: uint8((argb & 0x00ff0000) >> 16), - A: uint8((argb & 0xff000000) >> 24) } -} - -func GraphicReInit(i **xgraphics.Image, r image.Rectangle) { - if *i != nil { - (*i).Destroy() - } - - *i = xgraphics.New(XU, r) -} - -func DrawText(i *xgraphics.Image, x int, col uint32, text string) (int, error) { - nx, _, err := i.Text(x, config.FontYPad, - int2BGRA(col), config.FontSize, font, text) - return nx - x, err -} - -func TextWidth(text string) (int) { - return tw * len(text) -} - -func DrawRect(i *xgraphics.Image, x, y, w, h int, c uint32, fill bool) { - col := int2BGRA(c) - - var ix, iy int - - for ix = x; ix < x + w; ix++ { - for iy = y; iy < y + h; iy++ { - if fill || ix == x || ix == x + w - 1 || - iy == y || iy == y + h - 1 { - i.Set(ix, iy, col) - } - } - } -} |