diff options
author | Kevin Chabowski <kevin@kch42.de> | 2013-08-14 15:04:58 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2013-08-14 15:04:58 +0200 |
commit | e1227f703fc9e754fdb7f1ca8dce8dfb36ada368 (patch) | |
tree | bed1aa5832abacc76ee56c0f67682893adad161c /colorbox.go | |
download | biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.tar.gz biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.tar.bz2 biomed-e1227f703fc9e754fdb7f1ca8dce8dfb36ada368.zip |
Initial commit
General idea of GUI is already there.
Diffstat (limited to 'colorbox.go')
-rw-r--r-- | colorbox.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/colorbox.go b/colorbox.go new file mode 100644 index 0000000..a9d1583 --- /dev/null +++ b/colorbox.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "github.com/mattn/go-gtk/gdk" + "github.com/mattn/go-gtk/gtk" + "image/color" +) + +func colorBox(c color.Color) *gtk.DrawingArea { + r, g, b, _ := c.RGBA() + colstring := fmt.Sprintf("#%02x%02x%02x", (r>>8)&0xff, (g>>8)&0xff, (b>>8)&0xff) + + dArea := gtk.NewDrawingArea() + var pixmap *gdk.Pixmap + var gc *gdk.GC + + dArea.Connect("configure-event", func() { + if pixmap != nil { + pixmap.Unref() + } + alloc := dArea.GetAllocation() + pixmap = gdk.NewPixmap(dArea.GetWindow().GetDrawable(), alloc.Width, alloc.Height, 24) + gc = gdk.NewGC(pixmap.GetDrawable()) + gc.SetRgbFgColor(gdk.NewColor(colstring)) + pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1) + }) + + dArea.Connect("expose-event", func() { + if pixmap != nil { + dArea.GetWindow().GetDrawable().DrawDrawable(gc, pixmap.GetDrawable(), 0, 0, 0, 0, -1, -1) + } + }) + + return dArea +} |