summaryrefslogtreecommitdiff
path: root/BBB_GOFILES/image.go
diff options
context:
space:
mode:
Diffstat (limited to 'BBB_GOFILES/image.go')
-rw-r--r--BBB_GOFILES/image.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/BBB_GOFILES/image.go b/BBB_GOFILES/image.go
new file mode 100644
index 0000000..9b791fe
--- /dev/null
+++ b/BBB_GOFILES/image.go
@@ -0,0 +1,58 @@
+// 21 august 2018
+
+package ui
+
+import (
+ "image"
+)
+
+// #include <stdlib.h>
+// #include "ui.h"
+import "C"
+
+// Image stores an image for display on screen.
+//
+// Images are built from one or more representations, each with the
+// same aspect ratio but a different pixel size. Package ui
+// automatically selects the most appropriate representation for
+// drawing the image when it comes time to draw the image; what
+// this means depends on the pixel density of the target context.
+// Therefore, one can use Image to draw higher-detailed images on
+// higher-density displays. The typical use cases are either:
+//
+// - have just a single representation, at which point all screens
+// use the same image, and thus uiImage acts like a simple
+// bitmap image, or
+// - have two images, one at normal resolution and one at 2x
+// resolution; this matches the current expectations of some
+// desktop systems at the time of writing (mid-2018)
+//
+// Image allocates OS resources; you must explicitly free an Image
+// when you are finished with it.
+type Image struct {
+ i *C.uiImage
+}
+
+// NewImage creates a new Image with the given width and
+// height. This width and height should be the size in points of the
+// image in the device-independent case; typically this is the 1x size.
+func NewImage(width, height float64) *Image {
+ return &Image{
+ i: C.uiNewImage(C.double(width), C.double(height)),
+ }
+}
+
+// Free frees the Image.
+func (i *Image) Free() {
+ C.uiFreeImage(i.i)
+}
+
+// Append adds the given image as a representation of the Image.
+func (i *Image) Append(img *image.NRGBA) {
+ cpix := C.CBytes(img.Pix)
+ defer C.free(cpix)
+ C.uiImageAppend(i.i, cpix,
+ C.int(img.Rect.Dx()),
+ C.int(img.Rect.Dy()),
+ C.int(img.Stride))
+}