summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--imagelist.go29
-rw-r--r--imagelist_darwin.go38
-rw-r--r--imagelist_unix.go78
-rw-r--r--imagelist_windows.go45
4 files changed, 0 insertions, 190 deletions
diff --git a/imagelist.go b/imagelist.go
deleted file mode 100644
index 6b34b28..0000000
--- a/imagelist.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// 16 august 2014
-
-package ui
-
-import (
- "image"
-)
-
-// ImageList is a list of images that can be used in the rows of a Table or Tree.
-// ImageList maintains a copy of each image added.
-// Images in an ImageList will be automatically scaled to the needed size.
-type ImageList interface {
- // Append inserts an image into the ImageList.
- Append(i *image.RGBA)
-
- // Len returns the number of images in the ImageList.
- Len() ImageIndex
-
- imageListApply
-}
-
-// NewImageList creates a new ImageList.
-// The ImageList is initially empty.
-func NewImageList() ImageList {
- return newImageList()
-}
-
-// ImageIndex is a special type used to denote an entry in a Table or Tree's ImageList.
-type ImageIndex int
diff --git a/imagelist_darwin.go b/imagelist_darwin.go
deleted file mode 100644
index add9584..0000000
--- a/imagelist_darwin.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// 16 august 2014
-
-package ui
-
-import (
- "image"
- "unsafe"
-)
-
-// #include "objc_darwin.h"
-import "C"
-
-type imagelist struct {
- list []C.id
-}
-
-func newImageList() ImageList {
- return new(imagelist)
-}
-
-func (i *imagelist) Append(img *image.RGBA) {
- id := C.toImageListImage(
- unsafe.Pointer(pixelData(img)), C.intptr_t(img.Rect.Dx()), C.intptr_t(img.Rect.Dy()), C.intptr_t(img.Stride))
- i.list = append(i.list, id)
-}
-
-func (i *imagelist) Len() ImageIndex {
- return ImageIndex(len(i.list))
-}
-
-type imageListApply interface {
- apply(*[]C.id)
-}
-
-func (i *imagelist) apply(out *[]C.id) {
- *out = make([]C.id, len(i.list))
- copy(*out, i.list)
-}
diff --git a/imagelist_unix.go b/imagelist_unix.go
deleted file mode 100644
index 1729705..0000000
--- a/imagelist_unix.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// +build !windows,!darwin
-
-// 16 august 2014
-
-package ui
-
-import (
- "fmt"
- "image"
- "unsafe"
-)
-
-// #include "gtk_unix.h"
-import "C"
-
-type imagelist struct {
- list []*C.GdkPixbuf
-}
-
-func newImageList() ImageList {
- return new(imagelist)
-}
-
-// this is what GtkFileChooserWidget uses
-// technically it uses max(width from that, height from that) if the call below fails and 16x16 otherwise, but we won't worry about that here (yet?)
-const scaleTo = C.GTK_ICON_SIZE_MENU
-
-func (i *imagelist) Append(img *image.RGBA) {
- var width, height C.gint
-
- surface := C.cairo_image_surface_create(C.CAIRO_FORMAT_ARGB32,
- C.int(img.Rect.Dx()),
- C.int(img.Rect.Dy()))
- if status := C.cairo_surface_status(surface); status != C.CAIRO_STATUS_SUCCESS {
- panic(fmt.Errorf("cairo_create_image_surface() failed in ImageList.Append(): %s\n",
- C.GoString(C.cairo_status_to_string(status))))
- }
- C.cairo_surface_flush(surface)
- toARGB(img, uintptr(unsafe.Pointer(C.cairo_image_surface_get_data(surface))),
- int(C.cairo_image_surface_get_stride(surface)), false) // not NRGBA
- C.cairo_surface_mark_dirty(surface)
- basepixbuf := C.gdk_pixbuf_get_from_surface(surface, 0, 0, C.gint(img.Rect.Dx()), C.gint(img.Rect.Dy()))
- if basepixbuf == nil {
- panic(fmt.Errorf("gdk_pixbuf_get_from_surface() failed in ImageList.Append() (no reason available)"))
- }
-
- if C.gtk_icon_size_lookup(scaleTo, &width, &height) == C.FALSE {
- panic(fmt.Errorf("gtk_icon_size_lookup() failed in ImageList.Append() (no reason available)"))
- }
- if int(width) == img.Rect.Dx() && int(height) == img.Rect.Dy() {
- // just add the base pixbuf; we're good
- i.list = append(i.list, basepixbuf)
- C.cairo_surface_destroy(surface)
- return
- }
- // else scale
- pixbuf := C.gdk_pixbuf_scale_simple(basepixbuf, C.int(width), C.int(height), C.GDK_INTERP_NEAREST)
- if pixbuf == nil {
- panic(fmt.Errorf("gdk_pixbuf_scale_simple() failed in ImageList.Append() (no reason available)"))
- }
-
- i.list = append(i.list, pixbuf)
- C.g_object_unref(C.gpointer(unsafe.Pointer(basepixbuf)))
- C.cairo_surface_destroy(surface)
-}
-
-func (i *imagelist) Len() ImageIndex {
- return ImageIndex(len(i.list))
-}
-
-type imageListApply interface {
- apply(*[]*C.GdkPixbuf)
-}
-
-func (i *imagelist) apply(out *[]*C.GdkPixbuf) {
- *out = make([]*C.GdkPixbuf, len(i.list))
- copy(*out, i.list)
-}
diff --git a/imagelist_windows.go b/imagelist_windows.go
deleted file mode 100644
index 087bbda..0000000
--- a/imagelist_windows.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// 16 august 2014
-
-package ui
-
-import (
- "image"
- "unsafe"
-)
-
-// #include "winapi_windows.h"
-import "C"
-
-type imagelist struct {
- list []C.HBITMAP
- width []int
- height []int
-}
-
-func newImageList() ImageList {
- return new(imagelist)
-}
-
-func (i *imagelist) Append(img *image.RGBA) {
- i.list = append(i.list, C.unscaledBitmap(unsafe.Pointer(img), C.intptr_t(img.Rect.Dx()), C.intptr_t(img.Rect.Dy())))
- i.width = append(i.width, img.Rect.Dx())
- i.height = append(i.height, img.Rect.Dy())
-}
-
-func (i *imagelist) Len() ImageIndex {
- return ImageIndex(len(i.list))
-}
-
-type imageListApply interface {
- apply(C.HWND, C.UINT)
-}
-
-func (i *imagelist) apply(hwnd C.HWND, uMsg C.UINT) {
- width := C.GetSystemMetrics(C.SM_CXSMICON)
- height := C.GetSystemMetrics(C.SM_CYSMICON)
- il := C.newImageList(width, height)
- for index := range i.list {
- C.addImage(il, hwnd, i.list[index], C.int(i.width[index]), C.int(i.height[index]), width, height)
- }
- C.SendMessageW(hwnd, uMsg, 0, C.LPARAM(uintptr(unsafe.Pointer(il))))
-}