// 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-font.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"
// #include "fontconfig.go.h"
import _ "unsafe"
import (
	//	"github.com/andre-hub/gotk3/glib"
	//	"github.com/andre-hub/gotk3/cairo"
	"unsafe"

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

func init() {
	tm := []glib.TypeMarshaler{
		// Enums
		// Objects/Interfaces
		{glib.Type(( /*line :37:14*/_Cfunc_pango_font_description_get_type /*line :37:46*/)()), marshalFontDescription},
	}
	glib.RegisterGValueMarshalers(tm)
}

// AddFont adds the font to the configuration.
func AddFont(fontPath string) {
	path := (* /*line :44:12*/_Ctype_uchar /*line :44:19*/)(unsafe.Pointer(( /*line :44:36*/_Cfunc_CString /*line :44:44*/)(fontPath)))
	( /*line :45:2*/_Cfunc_addFont /*line :45:10*/)(path)
}

// FontDescription is a representation of PangoFontDescription.
type FontDescription struct {
	pangoFontDescription * /*line :50:24*/_Ctype_PangoFontDescription /*line :50:46*/
}

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

func (v *FontDescription) native() * /*line :58:37*/_Ctype_PangoFontDescription /*line :58:59*/ {
	return (* /*line :59:11*/_Ctype_PangoFontDescription /*line :59:33*/)(unsafe.Pointer(v.pangoFontDescription))
}

// FontMetrics is a representation of PangoFontMetrics.
type FontMetrics struct {
	pangoFontMetrics * /*line :64:20*/_Ctype_PangoFontMetrics /*line :64:38*/
}

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

func (v *FontMetrics) native() * /*line :72:33*/_Ctype_PangoFontMetrics /*line :72:51*/ {
	return (* /*line :73:11*/_Ctype_PangoFontMetrics /*line :73:29*/)(unsafe.Pointer(v.pangoFontMetrics))
}

const (
	PANGO_SCALE = ( /*line :77:16*/_Ciconst_PANGO_SCALE /*line :77:28*/)
)

type Style int

const (
	STYLE_NORMAL  Style = ( /*line :83:24*/_Ciconst_PANGO_STYLE_NORMAL /*line :83:43*/)
	STYLE_OBLIQUE Style = ( /*line :84:24*/_Ciconst_PANGO_STYLE_OBLIQUE /*line :84:44*/)
	STYLE_ITALIC  Style = ( /*line :85:24*/_Ciconst_PANGO_STYLE_ITALIC /*line :85:43*/)
)

type Variant int

const (
	VARIANT_NORMAL     Variant = ( /*line :91:31*/_Ciconst_PANGO_VARIANT_NORMAL /*line :91:52*/)
	VARIANT_SMALL_CAPS Variant = ( /*line :92:31*/_Ciconst_PANGO_VARIANT_SMALL_CAPS /*line :92:56*/)
)

type Weight int

const (
	WEIGHT_THIN       Weight = ( /*line :98:29*/_Ciconst_PANGO_WEIGHT_THIN /*line :98:47*/)       /* 100 */
	WEIGHT_ULTRALIGHT Weight = ( /*line :99:29*/_Ciconst_PANGO_WEIGHT_ULTRALIGHT /*line :99:53*/) /* 200 */
	WEIGHT_LIGHT      Weight = ( /*line :100:29*/_Ciconst_PANGO_WEIGHT_LIGHT /*line :100:48*/)      /* 300 */
	WEIGHT_SEMILIGHT  Weight = 350                       /* 350 */
	WEIGHT_BOOK       Weight = ( /*line :102:29*/_Ciconst_PANGO_WEIGHT_BOOK /*line :102:47*/)       /* 380 */
	WEIGHT_NORMAL     Weight = ( /*line :103:29*/_Ciconst_PANGO_WEIGHT_NORMAL /*line :103:49*/)     /* 400 */
	WEIGHT_MEDIUM     Weight = ( /*line :104:29*/_Ciconst_PANGO_WEIGHT_MEDIUM /*line :104:49*/)     /* 500 */
	WEIGHT_SEMIBOLD   Weight = ( /*line :105:29*/_Ciconst_PANGO_WEIGHT_SEMIBOLD /*line :105:51*/)   /* 600 */
	WEIGHT_BOLD       Weight = ( /*line :106:29*/_Ciconst_PANGO_WEIGHT_BOLD /*line :106:47*/)       /* 700 */
	WEIGHT_ULTRABOLD  Weight = ( /*line :107:29*/_Ciconst_PANGO_WEIGHT_ULTRABOLD /*line :107:52*/)  /* 800 */
	WEIGHT_HEAVY      Weight = ( /*line :108:29*/_Ciconst_PANGO_WEIGHT_HEAVY /*line :108:48*/)      /* 900 */
	WEIGHT_ULTRAHEAVY Weight = ( /*line :109:29*/_Ciconst_PANGO_WEIGHT_ULTRAHEAVY /*line :109:53*/) /* 1000 */

)

type Stretch int

const (
	STRETCH_ULTRA_CONDENSED        Stretch = ( /*line :116:43*/_Ciconst_PANGO_STRETCH_ULTRA_CONDENSED /*line :116:73*/)
	STRETCH_EXTRA_CONDENSEDStretch Stretch = ( /*line :117:43*/_Ciconst_PANGO_STRETCH_EXTRA_CONDENSED /*line :117:73*/)
	STRETCH_CONDENSEDStretch       Stretch = ( /*line :118:43*/_Ciconst_PANGO_STRETCH_CONDENSED /*line :118:67*/)
	STRETCH_SEMI_CONDENSEDStretch  Stretch = ( /*line :119:43*/_Ciconst_PANGO_STRETCH_SEMI_CONDENSED /*line :119:72*/)
	STRETCH_NORMALStretch          Stretch = ( /*line :120:43*/_Ciconst_PANGO_STRETCH_NORMAL /*line :120:64*/)
	STRETCH_SEMI_EXPANDEDStretch   Stretch = ( /*line :121:43*/_Ciconst_PANGO_STRETCH_SEMI_EXPANDED /*line :121:71*/)
	STRETCH_EXPANDEDStretch        Stretch = ( /*line :122:43*/_Ciconst_PANGO_STRETCH_EXPANDED /*line :122:66*/)
	STRETCH_EXTRA_EXPANDEDStretch  Stretch = ( /*line :123:43*/_Ciconst_PANGO_STRETCH_EXTRA_EXPANDED /*line :123:72*/)
	STRETCH_ULTRA_EXPANDEDStretch  Stretch = ( /*line :124:43*/_Ciconst_PANGO_STRETCH_ULTRA_EXPANDED /*line :124:72*/)
)

type FontMask int

const (
	FONT_MASK_FAMILY          FontMask = ( /*line :130:39*/_Ciconst_PANGO_FONT_MASK_FAMILY /*line :130:62*/)  /*  1 << 0 */
	FONT_MASK_STYLEFontMask   FontMask = ( /*line :131:39*/_Ciconst_PANGO_FONT_MASK_STYLE /*line :131:61*/)   /*  1 << 1 */
	FONT_MASK_VARIANTFontMask FontMask = ( /*line :132:39*/_Ciconst_PANGO_FONT_MASK_VARIANT /*line :132:63*/) /*  1 << 2 */
	FONT_MASK_WEIGHTFontMask  FontMask = ( /*line :133:39*/_Ciconst_PANGO_FONT_MASK_WEIGHT /*line :133:62*/)  /*  1 << 3 */
	FONT_MASK_STRETCHFontMask FontMask = ( /*line :134:39*/_Ciconst_PANGO_FONT_MASK_STRETCH /*line :134:63*/) /*  1 << 4 */
	FONT_MASK_SIZEFontMask    FontMask = ( /*line :135:39*/_Ciconst_PANGO_FONT_MASK_SIZE /*line :135:60*/)    /*  1 << 5 */
	FONT_MASK_GRAVITYFontMask FontMask = ( /*line :136:39*/_Ciconst_PANGO_FONT_MASK_GRAVITY /*line :136:63*/) /*  1 << 6 */
)

type Scale float64

const (
	SCALE_XX_SMALL Scale = /* C.PANGO_SCALE_XX_SMALL */ 0.5787037037037
	SCALE_X_SMALL  Scale = /*C.PANGO_SCALE_X_SMALL  */ 0.6444444444444
	SCALE_SMALL    Scale = /*C.PANGO_SCALE_SMALL    */ 0.8333333333333
	SCALE_MEDIUM   Scale = /*C.PANGO_SCALE_MEDIUM   */ 1.0
	SCALE_LARGE    Scale = /*C.PANGO_SCALE_LARGE    */ 1.2
	SCALE_X_LARGE  Scale = /*C.PANGO_SCALE_X_LARGE  */ 1.4399999999999
	SCALE_XX_LARGE Scale = /*C.PANGO_SCALE_XX_LARGE */ 1.728
)

/*
 * PangoFontDescription
 */

func marshalFontDescription(p uintptr) (interface{}, error) {
	c := ( /*line :156:7*/_Cfunc_g_value_get_boxed /*line :156:25*/)((* /*line :156:29*/_Ctype_GValue /*line :156:37*/)(unsafe.Pointer(p)))
	c2 := (* /*line :157:10*/_Ctype_PangoFontDescription /*line :157:32*/)(unsafe.Pointer(c))
	return wrapFontDescription(c2), nil
}

func wrapFontDescription(obj * /*line :161:31*/_Ctype_PangoFontDescription /*line :161:53*/) *FontDescription {
	return &FontDescription{obj}
}

//PangoFontDescription *pango_font_description_new         (void);
func FontDescriptionNew() *FontDescription {
	c := ( /*line :167:7*/_Cfunc_pango_font_description_new /*line :167:34*/)()
	v := new(FontDescription)
	v.pangoFontDescription = c
	return v
}

//PangoFontDescription *pango_font_description_copy        (const PangoFontDescription  *desc);
func (v *FontDescription) Copy() *FontDescription {
	c := func() *_Ctype_struct__PangoFontDescription{ _cgo0 := /*line :175:37*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :175:48*/_Cfunc_pango_font_description_copy(_cgo0); }()
	v2 := new(FontDescription)
	v2.pangoFontDescription = c
	return v2
}

//PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription  *desc);
func (v *FontDescription) CopyStatic() *FontDescription {
	c := func() *_Ctype_struct__PangoFontDescription{ _cgo0 := /*line :183:44*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :183:55*/_Cfunc_pango_font_description_copy_static(_cgo0); }()
	v2 := new(FontDescription)
	v2.pangoFontDescription = c
	return v2
}

//guint                 pango_font_description_hash        (const PangoFontDescription  *desc) G_GNUC_PURE;
func (v *FontDescription) Hash() uint {
	c := func() _Ctype_guint{ _cgo0 := /*line :191:37*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :191:48*/_Cfunc_pango_font_description_hash(_cgo0); }()
	return uint(c)
}

//gboolean              pango_font_description_equal       (const PangoFontDescription  *desc1,
//							  const PangoFontDescription  *desc2) G_GNUC_PURE;
func (v *FontDescription) Equal(v2 *FontDescription) bool {
	c := func() _Ctype_gboolean{ _cgo0 := /*line :198:38*/v.native(); _cgo1 := /*line :198:50*/v2.native(); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); return /*line :198:62*/_Cfunc_pango_font_description_equal(_cgo0, _cgo1); }()
	return gobool(c)
}

//void                  pango_font_description_free        (PangoFontDescription        *desc);
func (v *FontDescription) Free() {
	func() { _cgo0 := /*line :204:32*/v.native(); _cgoCheckPointer(_cgo0, nil); /*line :204:43*/_Cfunc_pango_font_description_free(_cgo0); }()
}

//void                  pango_font_descriptions_free       (PangoFontDescription       **descs,
//							  int                          n_descs);
//func (v *FontDescription) FontDescriptionsFree(n_descs int) {
//	C.pango_font_descriptions_free(v.native(), C.int(n_descs))
//}

//void                 pango_font_description_set_family        (PangoFontDescription *desc,
//							       const char           *family);
func (v *FontDescription) SetFamily(family string) {
	cstr := ( /*line :216:10*/_Cfunc_CString /*line :216:18*/)(family)
	defer func() func() { _cgo0 := /*line :217:15*/unsafe.Pointer(cstr); return func() { _cgoCheckPointer(_cgo0, nil); /*line :217:36*/_Cfunc_free(_cgo0); }}()()
	func() { _cgo0 := /*line :218:38*/v.native(); var _cgo1 *_Ctype_char = /*line :218:50*/(*_Ctype_char /*line :218:58*/)(cstr); _cgoCheckPointer(_cgo0, nil); /*line :218:66*/_Cfunc_pango_font_description_set_family(_cgo0, _cgo1); }()
}

//void                 pango_font_description_set_family_static (PangoFontDescription *desc,
//							       const char           *family);
func (v *FontDescription) SetFamilyStatic(family string) {
	cstr := ( /*line :224:10*/_Cfunc_CString /*line :224:18*/)(family)
	defer func() func() { _cgo0 := /*line :225:15*/unsafe.Pointer(cstr); return func() { _cgoCheckPointer(_cgo0, nil); /*line :225:36*/_Cfunc_free(_cgo0); }}()()
	func() { _cgo0 := /*line :226:45*/v.native(); var _cgo1 *_Ctype_char = /*line :226:57*/(*_Ctype_char /*line :226:65*/)(cstr); _cgoCheckPointer(_cgo0, nil); /*line :226:73*/_Cfunc_pango_font_description_set_family_static(_cgo0, _cgo1); }()
}

//const char          *pango_font_description_get_family        (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetFamily() string {
	c := func() *_Ctype_char{ _cgo0 := /*line :231:43*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :231:54*/_Cfunc_pango_font_description_get_family(_cgo0); }()
	return ( /*line :232:9*/_Cfunc_GoString /*line :232:18*/)((* /*line :232:22*/_Ctype_char /*line :232:28*/)(c))
}

//void                 pango_font_description_set_style         (PangoFontDescription *desc,
//							       PangoStyle            style);
func (v *FontDescription) SetStyle(style Style) {
	func() { _cgo0 := /*line :238:37*/v.native(); var _cgo1 _Ctype_PangoStyle = /*line :238:49*/(_Ctype_PangoStyle /*line :238:62*/)(style); _cgoCheckPointer(_cgo0, nil); /*line :238:71*/_Cfunc_pango_font_description_set_style(_cgo0, _cgo1); }()
}

//PangoStyle           pango_font_description_get_style         (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetStyle() Style {
	c := func() _Ctype_PangoStyle{ _cgo0 := /*line :243:42*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :243:53*/_Cfunc_pango_font_description_get_style(_cgo0); }()
	return Style(c)
}

//void                 pango_font_description_set_variant       (PangoFontDescription *desc,
//							       PangoVariant          variant);
func (v *FontDescription) SetVariant(variant Variant) {
	func() { _cgo0 := /*line :250:39*/v.native(); var _cgo1 _Ctype_PangoVariant = /*line :250:51*/(_Ctype_PangoVariant /*line :250:66*/)(variant); _cgoCheckPointer(_cgo0, nil); /*line :250:77*/_Cfunc_pango_font_description_set_variant(_cgo0, _cgo1); }()
}

//PangoVariant         pango_font_description_get_variant       (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetVariant() Variant {
	c := func() _Ctype_PangoVariant{ _cgo0 := /*line :255:44*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :255:55*/_Cfunc_pango_font_description_get_variant(_cgo0); }()
	return Variant(c)
}

//void                 pango_font_description_set_weight        (PangoFontDescription *desc,
//							       PangoWeight           weight);
func (v *FontDescription) SetWeight(weight Weight) {
	func() { _cgo0 := /*line :262:38*/v.native(); var _cgo1 _Ctype_PangoWeight = /*line :262:50*/(_Ctype_PangoWeight /*line :262:64*/)(weight); _cgoCheckPointer(_cgo0, nil); /*line :262:74*/_Cfunc_pango_font_description_set_weight(_cgo0, _cgo1); }()
}

//PangoWeight          pango_font_description_get_weight        (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetWeight() Weight {
	c := func() _Ctype_PangoWeight{ _cgo0 := /*line :267:43*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :267:54*/_Cfunc_pango_font_description_get_weight(_cgo0); }()
	return Weight(c)
}

//void                 pango_font_description_set_stretch       (PangoFontDescription *desc,
//							       PangoStretch          stretch);
func (v *FontDescription) SetStretch(stretch Stretch) {
	func() { _cgo0 := /*line :274:39*/v.native(); var _cgo1 _Ctype_PangoStretch = /*line :274:51*/(_Ctype_PangoStretch /*line :274:66*/)(stretch); _cgoCheckPointer(_cgo0, nil); /*line :274:77*/_Cfunc_pango_font_description_set_stretch(_cgo0, _cgo1); }()
}

//PangoStretch         pango_font_description_get_stretch       (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetStretch() Stretch {
	c := func() _Ctype_PangoStretch{ _cgo0 := /*line :279:44*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :279:55*/_Cfunc_pango_font_description_get_stretch(_cgo0); }()
	return Stretch(c)
}

//void                 pango_font_description_set_size          (PangoFontDescription *desc,
//							       gint                  size);
func (v *FontDescription) SetSize(size int) {
	func() { _cgo0 := /*line :286:36*/v.native(); var _cgo1 _Ctype_gint = /*line :286:48*/(_Ctype_gint /*line :286:55*/)(size); _cgoCheckPointer(_cgo0, nil); /*line :286:63*/_Cfunc_pango_font_description_set_size(_cgo0, _cgo1); }()
}

//gint                 pango_font_description_get_size          (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSize() int {
	c := func() _Ctype_gint{ _cgo0 := /*line :291:41*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :291:52*/_Cfunc_pango_font_description_get_size(_cgo0); }()
	return int(c)
}

//void                 pango_font_description_set_absolute_size (PangoFontDescription *desc,
//							       double                size);
func (v *FontDescription) SetAbsoluteSize(size float64) {
	func() { _cgo0 := /*line :298:45*/v.native(); var _cgo1 _Ctype_double = /*line :298:57*/(_Ctype_double /*line :298:66*/)(size); _cgoCheckPointer(_cgo0, nil); /*line :298:74*/_Cfunc_pango_font_description_set_absolute_size(_cgo0, _cgo1); }()
}

//gboolean             pango_font_description_get_size_is_absolute (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSizeIsAbsolute() bool {
	c := func() _Ctype_gboolean{ _cgo0 := /*line :303:53*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :303:64*/_Cfunc_pango_font_description_get_size_is_absolute(_cgo0); }()
	return gobool(c)
}

//void                 pango_font_description_set_gravity       (PangoFontDescription *desc,
//							       PangoGravity          gravity);
func (v *FontDescription) SetGravity(gravity Gravity) {
	func() { _cgo0 := /*line :310:39*/v.native(); var _cgo1 _Ctype_PangoGravity = /*line :310:51*/(_Ctype_PangoGravity /*line :310:66*/)(gravity); _cgoCheckPointer(_cgo0, nil); /*line :310:77*/_Cfunc_pango_font_description_set_gravity(_cgo0, _cgo1); }()
}

//PangoGravity         pango_font_description_get_gravity       (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetGravity() Gravity {
	c := func() _Ctype_PangoGravity{ _cgo0 := /*line :315:44*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :315:55*/_Cfunc_pango_font_description_get_gravity(_cgo0); }()
	return Gravity(c)
}

//PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc) G_GNUC_PURE;
func (v *FontDescription) GetSetFields() FontMask {
	c := func() _Ctype_PangoFontMask{ _cgo0 := /*line :321:47*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :321:58*/_Cfunc_pango_font_description_get_set_fields(_cgo0); }()
	return FontMask(c)
}

//void          pango_font_description_unset_fields   (PangoFontDescription       *desc,
//						     PangoFontMask               to_unset);
func (v *FontDescription) GetUnsetFields(to_unset FontMask) {
	func() { _cgo0 := /*line :328:40*/v.native(); var _cgo1 _Ctype_PangoFontMask = /*line :328:52*/(_Ctype_PangoFontMask /*line :328:68*/)(to_unset); _cgoCheckPointer(_cgo0, nil); /*line :328:80*/_Cfunc_pango_font_description_unset_fields(_cgo0, _cgo1); }()
}

//void pango_font_description_merge        (PangoFontDescription       *desc,
//					  const PangoFontDescription *desc_to_merge,
//					  gboolean                    replace_existing);
func (v *FontDescription) Merge(desc_to_merge *FontDescription, replace_existing bool) {
	func() { _cgo0 := /*line :335:33*/v.native(); _cgo1 := /*line :335:45*/desc_to_merge.native(); var _cgo2 _Ctype_gboolean = /*line :335:69*/gbool(replace_existing); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); /*line :335:93*/_Cfunc_pango_font_description_merge(_cgo0, _cgo1, _cgo2); }()
}

//void pango_font_description_merge_static (PangoFontDescription       *desc,
//					  const PangoFontDescription *desc_to_merge,
//					  gboolean                    replace_existing);
func (v *FontDescription) MergeStatic(desc_to_merge *FontDescription, replace_existing bool) {
	func() { _cgo0 := /*line :342:40*/v.native(); _cgo1 := /*line :342:52*/desc_to_merge.native(); var _cgo2 _Ctype_gboolean = /*line :342:76*/gbool(replace_existing); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); /*line :342:100*/_Cfunc_pango_font_description_merge_static(_cgo0, _cgo1, _cgo2); }()
}

//gboolean pango_font_description_better_match (const PangoFontDescription *desc,
//					      const PangoFontDescription *old_match,
//					      const PangoFontDescription *new_match) G_GNUC_PURE;
func (v *FontDescription) BetterMatch(old_match, new_match *FontDescription) bool {
	c := func() _Ctype_gboolean{ _cgo0 := /*line :349:45*/v.native(); _cgo1 := /*line :349:57*/old_match.native(); _cgo2 := /*line :349:77*/new_match.native(); _cgoCheckPointer(_cgo0, nil); _cgoCheckPointer(_cgo1, nil); _cgoCheckPointer(_cgo2, nil); return /*line :349:96*/_Cfunc_pango_font_description_better_match(_cgo0, _cgo1, _cgo2); }()
	return gobool(c)
}

//PangoFontDescription *pango_font_description_from_string (const char                  *str);
func FontDescriptionFromString(str string) *FontDescription {
	cstr := ( /*line :355:10*/_Cfunc_CString /*line :355:18*/)(str)
	defer func() func() { _cgo0 := /*line :356:15*/unsafe.Pointer(cstr); return func() { _cgoCheckPointer(_cgo0, nil); /*line :356:36*/_Cfunc_free(_cgo0); }}()()
	c := ( /*line :357:7*/_Cfunc_pango_font_description_from_string /*line :357:42*/)((* /*line :357:46*/_Ctype_char /*line :357:52*/)(cstr))
	v := new(FontDescription)
	v.pangoFontDescription = c
	return v
}

//char *                pango_font_description_to_string   (const PangoFontDescription  *desc);
func (v *FontDescription) ToString() string {
	c := func() *_Ctype_char{ _cgo0 := /*line :365:42*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :365:53*/_Cfunc_pango_font_description_to_string(_cgo0); }()
	return ( /*line :366:9*/_Cfunc_GoString /*line :366:18*/)((* /*line :366:22*/_Ctype_char /*line :366:28*/)(c))
}

//char *                pango_font_description_to_filename (const PangoFontDescription  *desc);
func (v *FontDescription) ToFilename() string {
	c := func() *_Ctype_char{ _cgo0 := /*line :371:44*/v.native(); _cgoCheckPointer(_cgo0, nil); return /*line :371:55*/_Cfunc_pango_font_description_to_filename(_cgo0); }()
	return ( /*line :372:9*/_Cfunc_GoString /*line :372:18*/)((* /*line :372:22*/_Ctype_char /*line :372:28*/)(c))
}

///*
// * PangoFontMetrics
// */
//
///**
// * PANGO_TYPE_FONT_METRICS:
// *
// * The #GObject type for #PangoFontMetrics.
// */
//#define PANGO_TYPE_FONT_METRICS  (pango_font_metrics_get_type ())
//GType             pango_font_metrics_get_type                    (void) G_GNUC_CONST;
//PangoFontMetrics *pango_font_metrics_ref                         (PangoFontMetrics *metrics);
//void              pango_font_metrics_unref                       (PangoFontMetrics *metrics);
//int               pango_font_metrics_get_ascent                  (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_descent                 (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_approximate_char_width  (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_underline_position      (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_underline_thickness     (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_strikethrough_position  (PangoFontMetrics *metrics) G_GNUC_PURE;
//int               pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//PangoFontMetrics *pango_font_metrics_new (void);
//
//struct _PangoFontMetrics
//{
//  guint ref_count;
//
//  int ascent;
//  int descent;
//  int approximate_char_width;
//  int approximate_digit_width;
//  int underline_position;
//  int underline_thickness;
//  int strikethrough_position;
//  int strikethrough_thickness;
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFontFamily
// */
//
///**
// * PANGO_TYPE_FONT_FAMILY:
// *
// * The #GObject type for #PangoFontFamily.
// */
///**
// * PANGO_FONT_FAMILY:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFontFamily.
// */
///**
// * PANGO_IS_FONT_FAMILY:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFontFamily.
// */
//#define PANGO_TYPE_FONT_FAMILY              (pango_font_family_get_type ())
//#define PANGO_FONT_FAMILY(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily))
//#define PANGO_IS_FONT_FAMILY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY))
//
//typedef struct _PangoFontFamily      PangoFontFamily;
//typedef struct _PangoFontFace        PangoFontFace;
//
//GType      pango_font_family_get_type       (void) G_GNUC_CONST;
//
//void                 pango_font_family_list_faces (PangoFontFamily  *family,
//						   PangoFontFace  ***faces,
//						   int              *n_faces);
//const char *pango_font_family_get_name   (PangoFontFamily  *family) G_GNUC_PURE;
//gboolean   pango_font_family_is_monospace         (PangoFontFamily  *family) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_FAMILY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
//#define PANGO_IS_FONT_FAMILY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FAMILY))
//#define PANGO_FONT_FAMILY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass))
//
//typedef struct _PangoFontFamilyClass PangoFontFamilyClass;
//
//
///**
// * PangoFontFamily:
// *
// * The #PangoFontFamily structure is used to represent a family of related
// * font faces. The faces in a family share a common design, but differ in
// * slant, weight, width and other aspects.
// */
//struct _PangoFontFamily
//{
//  GObject parent_instance;
//};
//
//struct _PangoFontFamilyClass
//{
//  GObjectClass parent_class;
//
//  /*< public >*/
//
//  void  (*list_faces)      (PangoFontFamily  *family,
//			    PangoFontFace  ***faces,
//			    int              *n_faces);
//  const char * (*get_name) (PangoFontFamily  *family);
//  gboolean (*is_monospace) (PangoFontFamily *family);
//
//  /*< private >*/
//
//  /* Padding for future expansion */
//  void (*_pango_reserved2) (void);
//  void (*_pango_reserved3) (void);
//  void (*_pango_reserved4) (void);
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFontFace
// */
//
///**
// * PANGO_TYPE_FONT_FACE:
// *
// * The #GObject type for #PangoFontFace.
// */
///**
// * PANGO_FONT_FACE:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFontFace.
// */
///**
// * PANGO_IS_FONT_FACE:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFontFace.
// */
//#define PANGO_TYPE_FONT_FACE              (pango_font_face_get_type ())
//#define PANGO_FONT_FACE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace))
//#define PANGO_IS_FONT_FACE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE))
//
//GType      pango_font_face_get_type       (void) G_GNUC_CONST;
//
//PangoFontDescription *pango_font_face_describe       (PangoFontFace  *face);
//const char           *pango_font_face_get_face_name  (PangoFontFace  *face) G_GNUC_PURE;
//void                  pango_font_face_list_sizes     (PangoFontFace  *face,
//						      int           **sizes,
//						      int            *n_sizes);
//gboolean              pango_font_face_is_synthesized (PangoFontFace  *face) G_GNUC_PURE;
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_FACE_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
//#define PANGO_IS_FONT_FACE_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FACE))
//#define PANGO_FONT_FACE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FACE, PangoFontFaceClass))
//
//typedef struct _PangoFontFaceClass   PangoFontFaceClass;
//
///**
// * PangoFontFace:
// *
// * The #PangoFontFace structure is used to represent a group of fonts with
// * the same family, slant, weight, width, but varying sizes.
// */
//struct _PangoFontFace
//{
//  GObject parent_instance;
//};
//
//struct _PangoFontFaceClass
//{
//  GObjectClass parent_class;
//
//  /*< public >*/
//
//  const char           * (*get_face_name)  (PangoFontFace *face);
//  PangoFontDescription * (*describe)       (PangoFontFace *face);
//  void                   (*list_sizes)     (PangoFontFace  *face,
//					    int           **sizes,
//					    int            *n_sizes);
//  gboolean               (*is_synthesized) (PangoFontFace *face);
//
//  /*< private >*/
//
//  /* Padding for future expansion */
//  void (*_pango_reserved3) (void);
//  void (*_pango_reserved4) (void);
//};
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///*
// * PangoFont
// */
//
///**
// * PANGO_TYPE_FONT:
// *
// * The #GObject type for #PangoFont.
// */
///**
// * PANGO_FONT:
// * @object: a #GObject.
// *
// * Casts a #GObject to a #PangoFont.
// */
///**
// * PANGO_IS_FONT:
// * @object: a #GObject.
// *
// * Returns: %TRUE if @object is a #PangoFont.
// */
//#define PANGO_TYPE_FONT              (pango_font_get_type ())
//#define PANGO_FONT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont))
//#define PANGO_IS_FONT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT))
//
//GType                 pango_font_get_type          (void) G_GNUC_CONST;
//
//PangoFontDescription *pango_font_describe          (PangoFont        *font);
//PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont        *font);
//PangoCoverage *       pango_font_get_coverage      (PangoFont        *font,
//						    PangoLanguage    *language);
//PangoEngineShape *    pango_font_find_shaper       (PangoFont        *font,
//						    PangoLanguage    *language,
//						    guint32           ch);
//PangoFontMetrics *    pango_font_get_metrics       (PangoFont        *font,
//						    PangoLanguage    *language);
//void                  pango_font_get_glyph_extents (PangoFont        *font,
//						    PangoGlyph        glyph,
//						    PangoRectangle   *ink_rect,
//						    PangoRectangle   *logical_rect);
//PangoFontMap         *pango_font_get_font_map      (PangoFont        *font);
//
//#ifdef PANGO_ENABLE_BACKEND
//
//#define PANGO_FONT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass))
//#define PANGO_IS_FONT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT))
//#define PANGO_FONT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT, PangoFontClass))
//
//typedef struct _PangoFontClass       PangoFontClass;
//
///**
// * PangoFont:
// *
// * The #PangoFont structure is used to represent
// * a font in a rendering-system-independent matter.
// * To create an implementation of a #PangoFont,
// * the rendering-system specific code should allocate
// * a larger structure that contains a nested
// * #PangoFont, fill in the <structfield>klass</structfield> member of
// * the nested #PangoFont with a pointer to
// * a appropriate #PangoFontClass, then call
// * pango_font_init() on the structure.
// *
// * The #PangoFont structure contains one member
// * which the implementation fills in.
// */
//struct _PangoFont
//{
//  GObject parent_instance;
//};
//
//struct _PangoFontClass
//{
//  GObjectClass parent_class;
//
//  /*< public >*/
//
//  PangoFontDescription *(*describe)           (PangoFont      *font);
//  PangoCoverage *       (*get_coverage)       (PangoFont      *font,
//					       PangoLanguage  *lang);
//  PangoEngineShape *    (*find_shaper)        (PangoFont      *font,
//					       PangoLanguage  *lang,
//					       guint32         ch);
//  void                  (*get_glyph_extents)  (PangoFont      *font,
//					       PangoGlyph      glyph,
//					       PangoRectangle *ink_rect,
//					       PangoRectangle *logical_rect);
//  PangoFontMetrics *    (*get_metrics)        (PangoFont      *font,
//					       PangoLanguage  *language);
//  PangoFontMap *        (*get_font_map)       (PangoFont      *font);
//  PangoFontDescription *(*describe_absolute)  (PangoFont      *font);
//  /*< private >*/
//
//  /* Padding for future expansion */
//  void (*_pango_reserved1) (void);
//  void (*_pango_reserved2) (void);
//};
//
///* used for very rare and miserable situtations that we cannot even
// * draw a hexbox
// */
//#define PANGO_UNKNOWN_GLYPH_WIDTH  10
//#define PANGO_UNKNOWN_GLYPH_HEIGHT 14
//
//#endif /* PANGO_ENABLE_BACKEND */
//
///**
// * PANGO_GLYPH_EMPTY:
// *
// * The %PANGO_GLYPH_EMPTY macro represents a #PangoGlyph value that has a
// *  special meaning, which is a zero-width empty glyph.  This is useful for
// * example in shaper modules, to use as the glyph for various zero-width
// * Unicode characters (those passing pango_is_zero_width()).
// */
///**
// * PANGO_GLYPH_INVALID_INPUT:
// *
// * The %PANGO_GLYPH_INVALID_INPUT macro represents a #PangoGlyph value that has a
// * special meaning of invalid input.  #PangoLayout produces one such glyph
// * per invalid input UTF-8 byte and such a glyph is rendered as a crossed
// * box.
// *
// * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG
// * on.
// *
// * Since: 1.20
// */
///**
// * PANGO_GLYPH_UNKNOWN_FLAG:
// *
// * The %PANGO_GLYPH_UNKNOWN_FLAG macro is a flag value that can be added to
// * a #gunichar value of a valid Unicode character, to produce a #PangoGlyph
// * value, representing an unknown-character glyph for the respective #gunichar.
// */
///**
// * PANGO_GET_UNKNOWN_GLYPH:
// * @wc: a Unicode character
// *
// * The way this unknown glyphs are rendered is backend specific.  For example,
// * a box with the hexadecimal Unicode code-point of the character written in it
// * is what is done in the most common backends.
// *
// * Returns: a #PangoGlyph value that means no glyph was found for @wc.
// */
//#define PANGO_GLYPH_EMPTY           ((PangoGlyph)0x0FFFFFFF)
//#define PANGO_GLYPH_INVALID_INPUT   ((PangoGlyph)0xFFFFFFFF)
//#define PANGO_GLYPH_UNKNOWN_FLAG    ((PangoGlyph)0x10000000)
//#define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG)
//
//
