Permalink
founderio
Use C.gint to support building on go <= 1.9
a50afd1
Nov 25, 2019
Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12,!gtk_3_14 | |
// Supports building with gtk 3.16+ | |
/* | |
* Copyright (c) 2013-2014 Conformal Systems <info@conformal.com> | |
* | |
* This file originated from: http://opensource.conformal.com/ | |
* | |
* Permission to use, copy, modify, and distribute this software for any | |
* purpose with or without fee is hereby granted, provided that the above | |
* copyright notice and this permission notice appear in all copies. | |
* | |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
*/ | |
package gtk | |
// #include <gtk/gtk.h> | |
// #include "gtk_since_3_16.go.h" | |
import "C" | |
import ( | |
"errors" | |
"unsafe" | |
"github.com/gotk3/gotk3/gdk" | |
"github.com/gotk3/gotk3/glib" | |
) | |
func init() { | |
tm := []glib.TypeMarshaler{ | |
{glib.Type(C.gtk_gl_area_get_type()), marshalGLArea}, | |
} | |
glib.RegisterGValueMarshalers(tm) | |
WrapMap["GtkGLArea"] = wrapGLArea | |
} | |
/* | |
* GtkGLArea | |
*/ | |
// GLArea is a representation of GTK's GtkGLArea. | |
type GLArea struct { | |
Widget | |
} | |
// native returns a pointer to the underlying GtkGLArea. | |
func (v *GLArea) native() *C.GtkGLArea { | |
if v == nil || v.GObject == nil { | |
return nil | |
} | |
p := unsafe.Pointer(v.GObject) | |
return C.toGtkGLArea(p) | |
} | |
func marshalGLArea(p uintptr) (interface{}, error) { | |
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) | |
obj := glib.Take(unsafe.Pointer(c)) | |
return wrapGLArea(obj), nil | |
} | |
func wrapGLArea(obj *glib.Object) *GLArea { | |
return &GLArea{Widget{glib.InitiallyUnowned{obj}}} | |
} | |
func WidgetToGLArea(widget *Widget) (*GLArea, error) { | |
obj := glib.Take(unsafe.Pointer(widget.GObject)) | |
return wrapGLArea(obj), nil | |
} | |
// GLAreaNew is a wrapper around gtk_gl_area_new(). | |
func GLAreaNew() (*GLArea, error) { | |
c := C.gtk_gl_area_new() | |
if c == nil { | |
return nil, nilPtrErr | |
} | |
obj := glib.Take(unsafe.Pointer(c)) | |
return wrapGLArea(obj), nil | |
} | |
// MajorVersion is a representation of OpenGL major version. | |
type MajorVersion int | |
// MinorVersion is a representation of OpenGL minor version. | |
type MinorVersion int | |
// GetRequiredVersion is a wrapper around gtk_gl_area_get_required_version(). | |
func (v *GLArea) GetRequiredVersion() (MajorVersion, MinorVersion) { | |
var major, minor int | |
C.gtk_gl_area_get_required_version(v.native(), | |
(*C.gint)(unsafe.Pointer(&major)), (*C.gint)(unsafe.Pointer(&minor))) | |
return MajorVersion(major), MinorVersion(minor) | |
} | |
// SetRequiredVersion is a wrapper around gtk_gl_area_set_required_version(). | |
func (v *GLArea) SetRequiredVersion(major, minor int) { | |
C.gtk_gl_area_set_required_version(v.native(), (C.gint)(major), (C.gint)(minor)) | |
} | |
// HasDepthBuffer is a wrapper around gtk_gl_area_get_has_depth_buffer(). | |
func (v *GLArea) HasDepthBuffer() bool { | |
return gobool(C.gtk_gl_area_get_has_depth_buffer(v.native())) | |
} | |
// SetHasDepthBuffer is a wrapper around gtk_gl_area_set_has_depth_buffer(). | |
func (v *GLArea) SetHasDepthBuffer(hasDepthBuffer bool) { | |
C.gtk_gl_area_set_has_depth_buffer(v.native(), gbool(hasDepthBuffer)) | |
} | |
// HasStencilBuffer is a wrapper around gtk_gl_area_get_has_stencil_buffer(). | |
func (v *GLArea) HasStencilBuffer() bool { | |
return gobool(C.gtk_gl_area_get_has_stencil_buffer(v.native())) | |
} | |
// SetHasStencilBuffer is a wrapper around gtk_gl_area_set_has_stencil_buffer(). | |
func (v *GLArea) SetHasStencilBuffer(hasStencilBuffer bool) { | |
C.gtk_gl_area_set_has_stencil_buffer(v.native(), gbool(hasStencilBuffer)) | |
} | |
// GetAutoRender is a wrapper around gtk_gl_area_get_auto_render(). | |
func (v *GLArea) GetAutoRender() bool { | |
return gobool(C.gtk_gl_area_get_auto_render(v.native())) | |
} | |
// SetAutoRender is a wrapper around gtk_gl_area_set_has_stencil_buffer(). | |
func (v *GLArea) SetAutoRender(autoRender bool) { | |
C.gtk_gl_area_set_auto_render(v.native(), gbool(autoRender)) | |
} | |
// QueueRender is a wrapper around gtk_gl_area_queue_render(). | |
func (v *GLArea) QueueRender() { | |
C.gtk_gl_area_queue_render(v.native()) | |
} | |
// GetContext is a wrapper around gtk_gl_area_get_context(). | |
func (v *GLArea) GetContext() (*gdk.GLContext, error) { | |
c := C.gtk_gl_area_get_context(v.native()) | |
if c == nil { | |
return nil, nilPtrErr | |
} | |
obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))} | |
return &(gdk.GLContext{obj}), nil | |
} | |
// MakeCurrent is a wrapper around gtk_gl_area_make_current(). | |
func (v *GLArea) MakeCurrent() { | |
C.gtk_gl_area_make_current(v.native()) | |
} | |
// AttachBuffers is a wrapper around gtk_gl_area_attach_buffers(). | |
func (v *GLArea) AttachBuffers() { | |
C.gtk_gl_area_attach_buffers(v.native()) | |
} | |
// GError* gtk_gl_area_get_error (GtkGLArea *area); | |
func (v *GLArea) GetError() error { | |
var err *C.GError = nil | |
err = C.gtk_gl_area_get_error(v.native()) | |
if err != nil { | |
defer C.g_error_free(err) | |
return errors.New(goString(err.message)) | |
} | |
return nil | |
} | |
// void gtk_gl_area_set_error (GtkGLArea *area, const GError *error); |