// Code generated by cmd/cgo; DO NOT EDIT.

//line /home/josie/.cache/paru/clone/wiiudownloader/src/pkg/mod/github.com/gotk3/gotk3@v0.6.5-0.20240618185848-ff349ae13f56/pango/pango-layout.go:1:1
/*
 * Copyright (c) 2015- terrak <terrak1975@gmail.com>
 *
 * This file originated from: http://www.terrak.net/
 *
 * 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 pango

// #include <pango/pango.h>
// #include "pango.go.h"
import _ "unsafe"
import (
	"runtime"
	"unsafe"

	"github.com/gotk3/gotk3/glib"
)

func init() {
	tm := []glib.TypeMarshaler{
		// Enums
		{glib.Type(( /*line :34:14*/_Cfunc_pango_alignment_get_type /*line :34:39*/)()), marshalAlignment},
		{glib.Type(( /*line :35:14*/_Cfunc_pango_ellipsize_mode_get_type /*line :35:44*/)()), marshalEllipsizeMode},
		{glib.Type(( /*line :36:14*/_Cfunc_pango_wrap_mode_get_type /*line :36:39*/)()), marshalWrapMode},
		{glib.Type(( /*line :37:14*/_Cfunc_pango_tab_align_get_type /*line :37:39*/)()), marshalTabAlign},

		// Objects/Interfaces
		//		{glib.Type(C.pango_layout_get_type()), marshalLayout},
	}
	glib.RegisterGValueMarshalers(tm)
}

// Layout is a representation of PangoLayout.
type Layout struct {
	pangoLayout * /*line :47:15*/_Ctype_PangoLayout /*line :47:28*/
}

// Native returns a pointer to the underlying PangoLayout.
func (v *Layout) Native() uintptr {
	return uintptr(unsafe.Pointer(v.native()))
}

func (v *Layout) native() * /*line :55:28*/_Ctype_PangoLayout /*line :55:41*/ {
	if v == nil {
		return nil
	}
	return (* /*line :59:11*/_Ctype_PangoLayout /*line :59:24*/)(unsafe.Pointer(v.pangoLayout))
}

func WrapLayout(p uintptr) *Layout {
	layout := new(Layout)
	layout.pangoLayout = (* /*line :64:25*/_Ctype_PangoLayout /*line :64:38*/)(unsafe.Pointer(p))
	return layout
}

// LayoutLine is a representation of PangoLayoutLine.
type LayoutLine struct {
	pangoLayoutLine * /*line :70:19*/_Ctype_PangoLayout /*line :70:32*/
}

// Native returns a pointer to the underlying PangoLayoutLine.
func (v *LayoutLine) Native() uintptr {
	return uintptr(unsafe.Pointer(v.native()))
}

func (v *LayoutLine) native() * /*line :78:32*/_Ctype_PangoLayoutLine /*line :78:49*/ {
	if v == nil {
		return nil
	}
	return (* /*line :82:11*/_Ctype_PangoLayoutLine /*line :82:28*/)(unsafe.Pointer(v.pangoLayoutLine))
}

/*
 * Constants
 */

// Alignment is a representation of Pango's PangoAlignment.
type Alignment int

const (
	ALIGN_LEFT   Alignment = ( /*line :93:27*/_Ciconst_PANGO_ALIGN_LEFT /*line :93:44*/)
	ALIGN_CENTER Alignment = ( /*line :94:27*/_Ciconst_PANGO_ALIGN_CENTER /*line :94:46*/)
	ALIGN_RIGHT  Alignment = ( /*line :95:27*/_Ciconst_PANGO_ALIGN_RIGHT /*line :95:45*/)
)

func marshalAlignment(p uintptr) (interface{}, error) {
	c := ( /*line :99:7*/_Cfunc_g_value_get_enum /*line :99:24*/)((* /*line :99:28*/_Ctype_GValue /*line :99:36*/)(unsafe.Pointer(p)))
	return Alignment(c), nil
}

// WrapMode is a representation of Pango's PangoWrapMode.
type WrapMode int

const (
	WRAP_WORD      WrapMode = ( /*line :107:28*/_Ciconst_PANGO_WRAP_WORD /*line :107:44*/)
	WRAP_CHAR      WrapMode = ( /*line :108:28*/_Ciconst_PANGO_WRAP_CHAR /*line :108:44*/)
	WRAP_WORD_CHAR WrapMode = ( /*line :109:28*/_Ciconst_PANGO_WRAP_WORD_CHAR /*line :109:49*/)
)

func marshalWrapMode(p uintptr) (interface{}, error) {
	c := ( /*line :113:7*/_Cfunc_g_value_get_enum /*line :113:24*/)((* /*line :113:28*/_Ctype_GValue /*line :113:36*/)(unsafe.Pointer(p)))
	return WrapMode(c), nil
}

// EllipsizeMode is a representation of Pango's PangoEllipsizeMode.
type EllipsizeMode int

const (
	ELLIPSIZE_NONE   EllipsizeMode = ( /*line :121:35*/_Ciconst_PANGO_ELLIPSIZE_NONE /*line :121:56*/)
	ELLIPSIZE_START  EllipsizeMode = ( /*line :122:35*/_Ciconst_PANGO_ELLIPSIZE_START /*line :122:57*/)
	ELLIPSIZE_MIDDLE EllipsizeMode = ( /*line :123:35*/_Ciconst_PANGO_ELLIPSIZE_MIDDLE /*line :123:58*/)
	ELLIPSIZE_END    EllipsizeMode = ( /*line :124:35*/_Ciconst_PANGO_ELLIPSIZE_END /*line :124:55*/)
)

func marshalEllipsizeMode(p uintptr) (interface{}, error) {
	c := ( /*line :128:7*/_Cfunc_g_value_get_enum /*line :128:24*/)((* /*line :128:28*/_Ctype_GValue /*line :128:36*/)(unsafe.Pointer(p)))
	return EllipsizeMode(c), nil
}

type TabAlign int

const (
	TAB_LEFT TabAlign = ( /*line :135:22*/_Ciconst_PANGO_TAB_LEFT /*line :135:37*/)
)

func marshalTabAlign(p uintptr) (interface{}, error) {
	c := ( /*line :139:7*/_Cfunc_g_value_get_enum /*line :139:24*/)((* /*line :139:28*/_Ctype_GValue /*line :139:36*/)(unsafe.Pointer(p)))
	return TabAlign(c), nil
}

/*
func marshalLayout(p uintptr) (interface{}, error) {
	c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
	obj := wrapObject(unsafe.Pointer(c))
	return wrapLayout(obj), nil
}

func wrapLayout(obj *glib.Object) *Layout {
	return &Layout{obj}
}
*/

// LayoutNew is a wrapper around pango_layout_new().
func LayoutNew(context *Context) *Layout {
	c := func() *_Ctype_struct__PangoLayout{ _cgo0 := /*line :157:26*/context.native(); _cgoCheckPointer(_cgo0, nil); return /*line :157:43*/_Cfunc_pango_layout_new(_cgo0); }()

	layout := new(Layout)
	layout.pangoLayout = (* /*line :160:25*/_Ctype_PangoLayout /*line :160:38*/)(c)
	return layout
}

// Copy is a wrapper around pango_layout_copy().
func (v *Layout) Copy() *Layout {
	c := func() *_Ctype_struct__PangoLayout{ _cgo0 := /*line :166:27*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :166:38*/_Cfunc_pango_layout_copy(_cgo0); }()

	layout := new(Layout)
	layout.pangoLayout = (* /*line :169:25*/_Ctype_PangoLayout /*line :169:38*/)(c)
	return layout
}

// GetContext is a wrapper around pango_layout_get_context().
func (v *Layout) GetContext() *Context {
	c := func() *_Ctype_struct__PangoContext{ _cgo0 := /*line :175:34*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :175:45*/_Cfunc_pango_layout_get_context(_cgo0); }()

	context := new(Context)
	context.pangoContext = (* /*line :178:27*/_Ctype_PangoContext /*line :178:41*/)(c)

	return context
}

// SetAttributes is a wrapper around pango_layout_set_attributes().
func (v *Layout) SetAttributes(attrs *AttrList) {
	func() { _cgo0 := /*line :185:32*/v.native(); _cgo1 := /*line :185:44*/attrs.native(); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); /*line :185:59*/_Cfunc_pango_layout_set_attributes(_cgo0, _cgo1); }()
}

// GetAttributes is a wrapper around pango_layout_get_attributes().
func (v *Layout) GetAttributes() *AttrList {
	c := func() *_Ctype_struct__PangoAttrList{ _cgo0 := /*line :190:37*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :190:48*/_Cfunc_pango_layout_get_attributes(_cgo0); }()
	return wrapAttrList(c)
}

// SetText is a wrapper around pango_layout_set_text().
func (v *Layout) SetText(text string, length int) {
	cstr := ( /*line :196:10*/_Cfunc_CString /*line :196:18*/)(text)
	defer func() func() { _cgo0 := /*line :197:15*/unsafe.Pointer(cstr); return func() { _cgoCheckPointer(_cgo0, nil); /*line :197:36*/_Cfunc_free(_cgo0); }}()()
	func() { _cgo0 := /*line :198:26*/v.native(); var _cgo1 *_Ctype_char = /*line :198:38*/(*_Ctype_char /*line :198:46*/)(cstr); var _cgo2 _Ctype_int = /*line :198:55*/(_Ctype_int /*line :198:61*/)(length); _cgoCheckPointer(_cgo0, nil); /*line :198:71*/_Cfunc_pango_layout_set_text(_cgo0, _cgo1, _cgo2); }()
}

// GetText is a wrapper around pango_layout_get_text().
func (v *Layout) GetText() string {
	c := func() *_Ctype_char{ _cgo0 := /*line :203:31*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :203:42*/_Cfunc_pango_layout_get_text(_cgo0); }()
	return ( /*line :204:9*/_Cfunc_GoString /*line :204:18*/)((* /*line :204:22*/_Ctype_char /*line :204:28*/)(c))
}

// GetCharacterCount is a wrapper around pango_layout_get_character_count().
func (v *Layout) GetCharacterCount() int {
	c := func() _Ctype_gint{ _cgo0 := /*line :209:42*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :209:53*/_Cfunc_pango_layout_get_character_count(_cgo0); }()
	return int(c)
}

// SetMarkup is a wrapper around pango_layout_set_markup().
func (v *Layout) SetMarkup(text string, length int) {
	cstr := ( /*line :215:10*/_Cfunc_CString /*line :215:18*/)(text)
	defer func() func() { _cgo0 := /*line :216:15*/unsafe.Pointer(cstr); return func() { _cgoCheckPointer(_cgo0, nil); /*line :216:36*/_Cfunc_free(_cgo0); }}()()
	func() { _cgo0 := /*line :217:28*/v.native(); var _cgo1 *_Ctype_char = /*line :217:40*/(*_Ctype_char /*line :217:48*/)(cstr); var _cgo2 _Ctype_int = /*line :217:57*/(_Ctype_int /*line :217:63*/)(length); _cgoCheckPointer(_cgo0, nil); /*line :217:73*/_Cfunc_pango_layout_set_markup(_cgo0, _cgo1, _cgo2); }()
}

//void           pango_layout_set_markup_with_accel (PangoLayout    *layout,
//						   const char     *markup,
//						   int             length,
//						   gunichar        accel_marker,
//						   gunichar       *accel_char);

/*
func (v *Layout) SetMarkupWithAccel (text string, length int, accel_marker, accel_char rune){
	cstr := C.CString(text)
	defer C.free(unsafe.Pointer(cstr))
	C.pango_layout_set_markup_with_accel (v.native(),  (*C.char)(cstr), (C.int)(length), (C.gunichar)(accel_marker), (C.gunichar)(accel_char) )
}
*/

// SetFontDescription is a wrapper around pango_layout_set_font_description().
func (v *Layout) SetFontDescription(desc *FontDescription) {
	func() { _cgo0 := /*line :236:38*/v.native(); _cgo1 := /*line :236:50*/desc.native(); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); /*line :236:64*/_Cfunc_pango_layout_set_font_description(_cgo0, _cgo1); }()
}

// GetFontDescription is a wrapper around pango_layout_get_font_description().
func (v *Layout) GetFontDescription() *FontDescription {
	c := func() *_Ctype_struct__PangoFontDescription{ _cgo0 := /*line :241:43*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :241:54*/_Cfunc_pango_layout_get_font_description(_cgo0); }()

	desc := new(FontDescription)
	desc.pangoFontDescription = (* /*line :244:32*/_Ctype_PangoFontDescription /*line :244:54*/)(c)

	return desc
}

// SetWidth is a wrapper around pango_layout_set_width().
func (v *Layout) SetWidth(width int) {
	func() { _cgo0 := /*line :251:27*/v.native(); var _cgo1 _Ctype_int = _Ctype_int /*line :251:44*/(width); _cgoCheckPointer(_cgo0, nil); /*line :251:52*/_Cfunc_pango_layout_set_width(_cgo0, _cgo1); }()
}

// GetWidth is a wrapper around pango_layout_get_width().
func (v *Layout) GetWidth() int {
	c := func() _Ctype_int{ _cgo0 := /*line :256:32*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :256:43*/_Cfunc_pango_layout_get_width(_cgo0); }()
	return int(c)
}

// SetHeight is a wrapper around pango_layout_set_height().
func (v *Layout) SetHeight(width int) {
	func() { _cgo0 := /*line :262:28*/v.native(); var _cgo1 _Ctype_int = _Ctype_int /*line :262:45*/(width); _cgoCheckPointer(_cgo0, nil); /*line :262:53*/_Cfunc_pango_layout_set_height(_cgo0, _cgo1); }()
}

// GetHeight is a wrapper around pango_layout_get_height().
func (v *Layout) GetHeight() int {
	c := func() _Ctype_int{ _cgo0 := /*line :267:33*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :267:44*/_Cfunc_pango_layout_get_height(_cgo0); }()
	return int(c)
}

// SetWrap is a wrapper around pango_layout_set_wrap().
func (v *Layout) SetWrap(wrap WrapMode) {
	func() { _cgo0 := /*line :273:26*/v.native(); var _cgo1 _Ctype_PangoWrapMode = _Ctype_PangoWrapMode /*line :273:53*/(wrap); _cgoCheckPointer(_cgo0, nil); /*line :273:60*/_Cfunc_pango_layout_set_wrap(_cgo0, _cgo1); }()
}

// WrapMode is a wrapper around pango_layout_get_wrap().
func (v *Layout) GetWrap() WrapMode {
	c := func() _Ctype_PangoWrapMode{ _cgo0 := /*line :278:31*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :278:42*/_Cfunc_pango_layout_get_wrap(_cgo0); }()
	return WrapMode(c)
}

// IsWrapped is a wrapper around pango_layout_is_wrapped().
func (v *Layout) IsWrapped() bool {
	c := func() _Ctype_gboolean{ _cgo0 := /*line :284:33*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :284:44*/_Cfunc_pango_layout_is_wrapped(_cgo0); }()
	return gobool(c)
}

// SetIndent is a wrapper around pango_layout_set_indent().
func (v *Layout) SetIndent(indent int) {
	func() { _cgo0 := /*line :290:28*/v.native(); var _cgo1 _Ctype_int = _Ctype_int /*line :290:45*/(indent); _cgoCheckPointer(_cgo0, nil); /*line :290:54*/_Cfunc_pango_layout_set_indent(_cgo0, _cgo1); }()
}

// GetIndent is a wrapper around pango_layout_get_indent().
func (v *Layout) GetIndent() int {
	c := func() _Ctype_int{ _cgo0 := /*line :295:33*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :295:44*/_Cfunc_pango_layout_get_indent(_cgo0); }()
	return int(c)
}

// SetTabs is a wrapper around pango_layout_set_tabs().
func (v *Layout) SetTabs(tabs *TabArray) {
	func() { _cgo0 := /*line :301:26*/v.native(); _cgo1 := /*line :301:38*/tabs.native(); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); /*line :301:52*/_Cfunc_pango_layout_set_tabs(_cgo0, _cgo1); }()
}

// GetTabs is a wrapper around pango_layout_get_tabs().
func (v *Layout) GetTabs() (*TabArray, error) {
	c := func() *_Ctype_struct__PangoTabArray{ _cgo0 := /*line :306:31*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :306:42*/_Cfunc_pango_layout_get_tabs(_cgo0); }()
	if c == nil {
		return nil, nilPtrErr
	}
	ta := wrapTabArray(c)
	runtime.SetFinalizer(ta, func(v *TabArray) { glib.FinalizerStrategy(v.free) })
	return ta, nil
}

// GetSize is a wrapper around pango_layout_get_size().
func (v *Layout) GetSize() (int, int) {
	var w, h  /*line :317:11*/_Ctype_int /*line :317:16*/
	func() { _cgo0 := /*line :318:26*/v.native(); var _cgo1 *_Ctype_int = /*line :318:38*/&w; var _cgo2 *_Ctype_int = /*line :318:42*/&h; _cgoCheckPointer(_cgo0, nil); /*line :318:45*/_Cfunc_pango_layout_get_size(_cgo0, _cgo1, _cgo2); }()
	return int(w), int(h)
}

/*
 * TabArray
 */

// TabArray is a representation of PangoTabArray.
type TabArray struct {
	pangoTabArray * /*line :328:17*/_Ctype_PangoTabArray /*line :328:32*/
}

// Native returns a pointer to the underlying PangoTabArray.
func (v *TabArray) Native() uintptr {
	return uintptr(unsafe.Pointer(v.native()))
}

func (v *TabArray) native() * /*line :336:30*/_Ctype_PangoTabArray /*line :336:45*/ {
	if v == nil {
		return nil
	}
	return (* /*line :340:11*/_Ctype_PangoTabArray /*line :340:26*/)(unsafe.Pointer(v.pangoTabArray))
}

func wrapTabArray(tabArray * /*line :343:29*/_Ctype_PangoTabArray /*line :343:44*/) *TabArray {
	return &TabArray{tabArray}
}

func WrapTabArray(p uintptr) *TabArray {
	tabArray := new(TabArray)
	tabArray.pangoTabArray = (* /*line :349:29*/_Ctype_PangoTabArray /*line :349:44*/)(unsafe.Pointer(p))
	return tabArray
}

// TabArrayNew is a wrapper around pango_tab_array_new().
func TabArrayNew(initialSize int, positionsInPixels bool) *TabArray {
	c := ( /*line :355:7*/_Cfunc_pango_tab_array_new /*line :355:27*/)( /*line :355:29*/_Ctype_gint /*line :355:35*/(initialSize), gbool(positionsInPixels))

	tabArray := new(TabArray)
	runtime.SetFinalizer(tabArray, func(v *TabArray) { glib.FinalizerStrategy(v.free) })
	tabArray.pangoTabArray = (* /*line :359:29*/_Ctype_PangoTabArray /*line :359:44*/)(c)
	return tabArray
}

// TabArrayNewWithPositions is a wrapper around pango_tab_array_new_with_positions().
// func TabArrayNewWithPositions(size int, positionsInPixels bool, ...) *TabArray {
// 	c := C.pango_tab_array_new_with_positions(C.gint(size), gbool(positionsInPixels), ...)

// 	tabArray := new(TabArray)
//	runtime.SetFinalizer(e, func(v *TabArray) { glib.FinalizerStrategy(v.free) })
// 	tabArray.pangoTabArray = (*C.PangoTabArray)(c)
// 	return tabArray
// }

// Copy is a wrapper around pango_tab_array_copy().
func (v *TabArray) Copy() (*TabArray, error) {
	c := func() *_Ctype_struct__PangoTabArray{ _cgo0 := /*line :375:30*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :375:41*/_Cfunc_pango_tab_array_copy(_cgo0); }()
	if c == nil {
		return nil, nilPtrErr
	}
	ta := wrapTabArray(c)
	runtime.SetFinalizer(ta, func(v *TabArray) { glib.FinalizerStrategy(v.free) })
	return ta, nil
}

// free is a wrapper around pango_tab_array_free().
func (v *TabArray) free() {
	func() { _cgo0 := /*line :386:25*/v.native(); _cgoCheckPointer(_cgo0, nil); /*line :386:36*/_Cfunc_pango_tab_array_free(_cgo0); }()
}

// free is a wrapper around pango_tab_array_free().
// This is only to enable other packages within gotk. Should not be used outside the gotk library.
func (v *TabArray) Free() {
	func() { _cgo0 := /*line :392:25*/v.native(); _cgoCheckPointer(_cgo0, nil); /*line :392:36*/_Cfunc_pango_tab_array_free(_cgo0); }()
}

// GetSize is a wrapper around pango_tab_array_get_size().
func (v *TabArray) GetSize() int {
	return int(func() _Ctype_gint{ _cgo0 := /*line :397:40*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :397:51*/_Cfunc_pango_tab_array_get_size(_cgo0); }())
}

// Resize is a wrapper around pango_tab_array_resize().
func (v *TabArray) Resize(newSize int) {
	func() { _cgo0 := /*line :402:27*/v.native(); var _cgo1 _Ctype_gint = _Ctype_gint /*line :402:45*/(newSize); _cgoCheckPointer(_cgo0, nil); /*line :402:55*/_Cfunc_pango_tab_array_resize(_cgo0, _cgo1); }()
}

// SetTab is a wrapper around pango_tab_array_set_tab().
func (v *TabArray) SetTab(tabIndex int, alignment TabAlign, location int) {
	func() { _cgo0 := /*line :407:28*/v.native(); var _cgo1 _Ctype_gint = _Ctype_gint /*line :407:46*/(tabIndex); var _cgo2 _Ctype_PangoTabAlign = _Ctype_PangoTabAlign /*line :407:73*/(alignment); var _cgo3 _Ctype_gint = _Ctype_gint /*line :407:92*/(location); _cgoCheckPointer(_cgo0, nil); /*line :407:103*/_Cfunc_pango_tab_array_set_tab(_cgo0, _cgo1, _cgo2, _cgo3); }()
}

// GetTab is a wrapper around pango_tab_array_get_tab().
func (v *TabArray) GetTab(tabIndex int) (TabAlign, int) {
	var alignment  /*line :412:16*/_Ctype_PangoTabAlign /*line :412:31*/
	var location  /*line :413:15*/_Ctype_gint /*line :413:21*/
	func() { _cgo0 := /*line :414:28*/v.native(); var _cgo1 _Ctype_gint = _Ctype_gint /*line :414:46*/(tabIndex); var _cgo2 *_Ctype_PangoTabAlign = /*line :414:58*/&alignment; var _cgo3 *_Ctype_gint = /*line :414:70*/&location; _cgoCheckPointer(_cgo0, nil); /*line :414:80*/_Cfunc_pango_tab_array_get_tab(_cgo0, _cgo1, _cgo2, _cgo3); }()
	return TabAlign(alignment), int(location)
}

// GetTabs is a wrapper around pango_tab_array_get_tabs().
// func (v *TabArray) GetTabs() ([]TabAlign, []int) {
// 	var alignment *C.PangoTabAlign
// 	var location *C.gint

// 	C.pango_tab_array_get_tabs(v.native(), &alignment, &location)

// 	size := v.GetSize()

// 	var goAlignments []TabAlign
// 	var goLocations []int

// 	if &alignment != nil {
// 		var ginthelp C.gint
// 		sizeOf := unsafe.Sizeof(ginthelp)
// 		for i := 0; i < int(size); i++ {
// 			goAlignmentElement := TabAlign(*((*C.gint)(unsafe.Pointer(location))))
// 			goAlignments = append(goAlignments, goAlignmentElement)
// 			location += sizeOf
// 		}
// 	}

// 	if &location != nil {
// 		var ginthelp C.gint
// 		sizeOf := unsafe.Sizeof(ginthelp)
// 		for i := 0; i < int(size); i++ {
// 			goLocationElement := int(*((*C.gint)(unsafe.Pointer(location))))
// 			goLocations = append(goLocations, goLocationElement)
// 			location += sizeOf
// 		}

// 		// TODO: free locations
// 	}

// 	return goAlignments, goLocations
// }

// GetPositionsInPixels is a wrapper around pango_tab_array_get_positions_in_pixels().
func (v *TabArray) GetPositionsInPixels() bool {
	return gobool(func() _Ctype_gboolean{ _cgo0 := /*line :457:58*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :457:69*/_Cfunc_pango_tab_array_get_positions_in_pixels(_cgo0); }())
}

//void           pango_layout_set_spacing          (PangoLayout                *layout,
//						  int                         spacing);
//int            pango_layout_get_spacing          (PangoLayout                *layout);
//void           pango_layout_set_justify          (PangoLayout                *layout,
//						  gboolean                    justify);
//gboolean       pango_layout_get_justify          (PangoLayout                *layout);
//void           pango_layout_set_auto_dir         (PangoLayout                *layout,
//						  gboolean                    auto_dir);
//gboolean       pango_layout_get_auto_dir         (PangoLayout                *layout);
//void           pango_layout_set_alignment        (PangoLayout                *layout,
//						  PangoAlignment              alignment);
//PangoAlignment pango_layout_get_alignment        (PangoLayout                *layout);
//
//void           pango_layout_set_single_paragraph_mode (PangoLayout                *layout,
//						       gboolean                    setting);
//gboolean       pango_layout_get_single_paragraph_mode (PangoLayout                *layout);
//
//void               pango_layout_set_ellipsize (PangoLayout        *layout,
//					       PangoEllipsizeMode  ellipsize);
//PangoEllipsizeMode pango_layout_get_ellipsize (PangoLayout        *layout);
//gboolean           pango_layout_is_ellipsized (PangoLayout        *layout);
//
//int      pango_layout_get_unknown_glyphs_count (PangoLayout    *layout);
//
//void     pango_layout_context_changed (PangoLayout    *layout);
//guint    pango_layout_get_serial      (PangoLayout    *layout);
//
//void     pango_layout_get_log_attrs (PangoLayout    *layout,
//				     PangoLogAttr  **attrs,
//				     gint           *n_attrs);
//
//const PangoLogAttr *pango_layout_get_log_attrs_readonly (PangoLayout *layout,
//							 gint        *n_attrs);
//
//void     pango_layout_index_to_pos         (PangoLayout    *layout,
//					    int             index_,
//					    PangoRectangle *pos);
//void     pango_layout_index_to_line_x      (PangoLayout    *layout,
//					    int             index_,
//					    gboolean        trailing,
//					    int            *line,
//					    int            *x_pos);
//void     pango_layout_get_cursor_pos       (PangoLayout    *layout,
//					    int             index_,
//					    PangoRectangle *strong_pos,
//					    PangoRectangle *weak_pos);
//void     pango_layout_move_cursor_visually (PangoLayout    *layout,
//					    gboolean        strong,
//					    int             old_index,
//					    int             old_trailing,
//					    int             direction,
//					    int            *new_index,
//					    int            *new_trailing);
//gboolean pango_layout_xy_to_index          (PangoLayout    *layout,
//					    int             x,
//					    int             y,
//					    int            *index_,
//					    int            *trailing);
//void     pango_layout_get_extents          (PangoLayout    *layout,
//					    PangoRectangle *ink_rect,
//					    PangoRectangle *logical_rect);
//void     pango_layout_get_pixel_extents    (PangoLayout    *layout,
//					    PangoRectangle *ink_rect,
//					    PangoRectangle *logical_rect);
//void     pango_layout_get_pixel_size       (PangoLayout    *layout,
//					    int            *width,
//					    int            *height);
//int      pango_layout_get_baseline         (PangoLayout    *layout);
//
//int              pango_layout_get_line_count       (PangoLayout    *layout);
//PangoLayoutLine *pango_layout_get_line             (PangoLayout    *layout,
//						    int             line);
//PangoLayoutLine *pango_layout_get_line_readonly    (PangoLayout    *layout,
//						    int             line);
//GSList *         pango_layout_get_lines            (PangoLayout    *layout);
//GSList *         pango_layout_get_lines_readonly   (PangoLayout    *layout);
//
//
//#define PANGO_TYPE_LAYOUT_LINE (pango_layout_line_get_type ())
//
//GType    pango_layout_line_get_type     (void) G_GNUC_CONST;
//
//PangoLayoutLine *pango_layout_line_ref   (PangoLayoutLine *line);
//void             pango_layout_line_unref (PangoLayoutLine *line);
//
//gboolean pango_layout_line_x_to_index   (PangoLayoutLine  *line,
//					 int               x_pos,
//					 int              *index_,
//					 int              *trailing);
//void     pango_layout_line_index_to_x   (PangoLayoutLine  *line,
//					 int               index_,
//					 gboolean          trailing,
//					 int              *x_pos);
//void     pango_layout_line_get_x_ranges (PangoLayoutLine  *line,
//					 int               start_index,
//					 int               end_index,
//					 int             **ranges,
//					 int              *n_ranges);
//void     pango_layout_line_get_extents  (PangoLayoutLine  *line,
//					 PangoRectangle   *ink_rect,
//					 PangoRectangle   *logical_rect);
//void     pango_layout_line_get_pixel_extents (PangoLayoutLine *layout_line,
//					      PangoRectangle  *ink_rect,
//					      PangoRectangle  *logical_rect);
//
//typedef struct _PangoLayoutIter PangoLayoutIter;
//
//#define PANGO_TYPE_LAYOUT_ITER         (pango_layout_iter_get_type ())
//
//GType            pango_layout_iter_get_type (void) G_GNUC_CONST;
//
//PangoLayoutIter *pango_layout_get_iter  (PangoLayout     *layout);
//PangoLayoutIter *pango_layout_iter_copy (PangoLayoutIter *iter);
//void             pango_layout_iter_free (PangoLayoutIter *iter);
//
//int              pango_layout_iter_get_index  (PangoLayoutIter *iter);
//PangoLayoutRun  *pango_layout_iter_get_run    (PangoLayoutIter *iter);
//PangoLayoutRun  *pango_layout_iter_get_run_readonly   (PangoLayoutIter *iter);
//PangoLayoutLine *pango_layout_iter_get_line   (PangoLayoutIter *iter);
//PangoLayoutLine *pango_layout_iter_get_line_readonly  (PangoLayoutIter *iter);
//gboolean         pango_layout_iter_at_last_line (PangoLayoutIter *iter);
//PangoLayout     *pango_layout_iter_get_layout (PangoLayoutIter *iter);
//
//gboolean pango_layout_iter_next_char    (PangoLayoutIter *iter);
//gboolean pango_layout_iter_next_cluster (PangoLayoutIter *iter);
//gboolean pango_layout_iter_next_run     (PangoLayoutIter *iter);
//gboolean pango_layout_iter_next_line    (PangoLayoutIter *iter);
//
//void pango_layout_iter_get_char_extents    (PangoLayoutIter *iter,
//					    PangoRectangle  *logical_rect);
//void pango_layout_iter_get_cluster_extents (PangoLayoutIter *iter,
//					    PangoRectangle  *ink_rect,
//					    PangoRectangle  *logical_rect);
//void pango_layout_iter_get_run_extents     (PangoLayoutIter *iter,
//					    PangoRectangle  *ink_rect,
//					    PangoRectangle  *logical_rect);
//void pango_layout_iter_get_line_extents    (PangoLayoutIter *iter,
//					    PangoRectangle  *ink_rect,
//					    PangoRectangle  *logical_rect);
/* All the yranges meet, unlike the logical_rect's (i.e. the yranges
 * assign between-line spacing to the nearest line)
 */
//void pango_layout_iter_get_line_yrange     (PangoLayoutIter *iter,
//					    int             *y0_,
//					    int             *y1_);
//void pango_layout_iter_get_layout_extents  (PangoLayoutIter *iter,
//					    PangoRectangle  *ink_rect,
//					    PangoRectangle  *logical_rect);
//int  pango_layout_iter_get_baseline        (PangoLayoutIter *iter);
//
