func ScaleSimple(p *Pixbuf, width, height int, interp InterpType) *Pixbuf { gpixbuf := C.gdk_pixbuf_scale_simple(p.GPixbuf, C.int(width), C.int(height), C.GdkInterpType(interp)) return &Pixbuf{ GdkPixbuf: &GdkPixbuf{gpixbuf}, GObject: glib.ObjectFromNative(unsafe.Pointer(gpixbuf)), } }
/* Create a new #GdkPixbuf containing a copy of @src scaled to @dest_width x @dest_height. Leaves @src unaffected. @interp_type should be #GDK_INTERP_NEAREST if you want maximum speed (but when scaling down #GDK_INTERP_NEAREST is usually unusably ugly). The default @interp_type should be #GDK_INTERP_BILINEAR which offers reasonable quality and speed. You can scale a sub-portion of @src by creating a sub-pixbuf pointing into @src; see gdk_pixbuf_new_subpixbuf(). For more complicated scaling/compositing see gdk_pixbuf_scale() and gdk_pixbuf_composite(). */ func (self *TraitPixbuf) ScaleSimple(dest_width int, dest_height int, interp_type C.GdkInterpType) (return__ *Pixbuf) { var __cgo__return__ *C.GdkPixbuf __cgo__return__ = C.gdk_pixbuf_scale_simple(self.CPointer, C.int(dest_width), C.int(dest_height), interp_type) if __cgo__return__ != nil { return__ = NewPixbufFromCPointer(unsafe.Pointer(reflect.ValueOf(__cgo__return__).Pointer())) } return }
// ScaleSimple is a wrapper around gdk_pixbuf_scale_simple(). func (v *Pixbuf) ScaleSimple(width, height int, interp InterpType) (*Pixbuf, error) { c := C.gdk_pixbuf_scale_simple(v.Native(), C.int(width), C.int(height), C.GdkInterpType(interp)) if c == nil { return nil, nilPtrErr } obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))} p := &Pixbuf{obj} runtime.SetFinalizer(obj, (*glib.Object).Unref) return p, nil }
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.gdk_pixbuf_unref(basepixbuf) C.cairo_surface_destroy(surface) }