You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fw-daemon/vendor/github.com/gotk3/gotk3.old/pango/pango-attributes.go

358 lines
13 KiB

/*
* 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
// #cgo pkg-config: pango
// #include <pango/pango.h>
// #include "pango.go.h"
import "C"
import (
"unsafe"
"github.com/gotk3/gotk3/glib"
)
func init() {
tm := []glib.TypeMarshaler{
// Enums
{glib.Type(C.pango_attr_type_get_type()), marshalAttrType},
{glib.Type(C.pango_underline_get_type()), marshalUnderline},
}
glib.RegisterGValueMarshalers(tm)
}
/* PangoColor */
// Color is a representation of PangoColor.
type Color struct {
pangoColor *C.PangoColor
}
// Native returns a pointer to the underlying PangoColor.
func (v *Color) Native() uintptr {
return uintptr(unsafe.Pointer(v.native()))
}
func (v *Color) native() *C.PangoColor {
return (*C.PangoColor)(unsafe.Pointer(v.pangoColor))
}
func (v *Color) Set(red, green, blue uint16) {
v.native().red = C.guint16(red)
v.native().green = C.guint16(green)
v.native().blue = C.guint16(blue)
}
func (v *Color) Get() (red, green, blue uint16) {
return uint16(v.native().red), uint16(v.native().green), uint16(v.native().blue)
}
//PangoColor *pango_color_copy (const PangoColor *src);
func (v *Color) Copy(c *Color) *Color {
w := new(Color)
w.pangoColor = C.pango_color_copy(v.native())
return w
}
//void pango_color_free (PangoColor *color);
func (v *Color) Free() {
C.pango_color_free(v.native())
}
//gboolean pango_color_parse (PangoColor *color,
// const char *spec);
func (v *Color) Parse(spec string) bool {
cstr := C.CString(spec)
defer C.free(unsafe.Pointer(cstr))
c := C.pango_color_parse(v.native(), (*C.char)(cstr))
return gobool(c)
}
//gchar *pango_color_to_string(const PangoColor *color);
func (v *Color) ToString() string {
c := C.pango_color_to_string(v.native())
return C.GoString((*C.char)(c))
}
/* --- --- --- Attributes --- --- --- */
// AttrList is a representation of PangoAttrList.
type AttrList struct {
pangoAttrList *C.PangoAttrList
}
// Native returns a pointer to the underlying PangoLayout.
func (v *AttrList) Native() uintptr {
return uintptr(unsafe.Pointer(v.native()))
}
func (v *AttrList) native() *C.PangoAttrList {
return (*C.PangoAttrList)(unsafe.Pointer(v.pangoAttrList))
}
// AttrType is a representation of Pango's PangoAttrType.
type AttrType int
const (
ATTR_INVALID AttrType = C.PANGO_ATTR_INVALID /* 0 is an invalid attribute type */
ATTR_LANGUAGE AttrType = C.PANGO_ATTR_LANGUAGE /* PangoAttrLanguage */
ATTR_FAMILY AttrType = C.PANGO_ATTR_FAMILY /* PangoAttrString */
ATTR_STYLE AttrType = C.PANGO_ATTR_STYLE /* PangoAttrInt */
ATTR_WEIGHT AttrType = C.PANGO_ATTR_WEIGHT /* PangoAttrInt */
ATTR_VARIANT AttrType = C.PANGO_ATTR_VARIANT /* PangoAttrInt */
ATTR_STRETCH AttrType = C.PANGO_ATTR_STRETCH /* PangoAttrInt */
ATTR_SIZE AttrType = C.PANGO_ATTR_SIZE /* PangoAttrSize */
ATTR_FONT_DESC AttrType = C.PANGO_ATTR_FONT_DESC /* PangoAttrFontDesc */
ATTR_FOREGROUND AttrType = C.PANGO_ATTR_FOREGROUND /* PangoAttrColor */
ATTR_BACKGROUND AttrType = C.PANGO_ATTR_BACKGROUND /* PangoAttrColor */
ATTR_UNDERLINE AttrType = C.PANGO_ATTR_UNDERLINE /* PangoAttrInt */
ATTR_STRIKETHROUGH AttrType = C.PANGO_ATTR_STRIKETHROUGH /* PangoAttrInt */
ATTR_RISE AttrType = C.PANGO_ATTR_RISE /* PangoAttrInt */
ATTR_SHAPE AttrType = C.PANGO_ATTR_SHAPE /* PangoAttrShape */
ATTR_SCALE AttrType = C.PANGO_ATTR_SCALE /* PangoAttrFloat */
ATTR_FALLBACK AttrType = C.PANGO_ATTR_FALLBACK /* PangoAttrInt */
ATTR_LETTER_SPACING AttrType = C.PANGO_ATTR_LETTER_SPACING /* PangoAttrInt */
ATTR_UNDERLINE_COLOR AttrType = C.PANGO_ATTR_UNDERLINE_COLOR /* PangoAttrColor */
ATTR_STRIKETHROUGH_COLOR AttrType = C.PANGO_ATTR_STRIKETHROUGH_COLOR /* PangoAttrColor */
ATTR_ABSOLUTE_SIZE AttrType = C.PANGO_ATTR_ABSOLUTE_SIZE /* PangoAttrSize */
ATTR_GRAVITY AttrType = C.PANGO_ATTR_GRAVITY /* PangoAttrInt */
ATTR_GRAVITY_HINT AttrType = C.PANGO_ATTR_GRAVITY_HINT /* PangoAttrInt */
)
func marshalAttrType(p uintptr) (interface{}, error) {
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
return AttrType(c), nil
}
// Underline is a representation of Pango's PangoUnderline.
type Underline int
const (
UNDERLINE_NONE Underline = C.PANGO_UNDERLINE_NONE
UNDERLINE_SINGLE Underline = C.PANGO_UNDERLINE_SINGLE
UNDERLINE_DOUBLE Underline = C.PANGO_UNDERLINE_DOUBLE
UNDERLINE_LOW Underline = C.PANGO_UNDERLINE_LOW
UNDERLINE_ERROR Underline = C.PANGO_UNDERLINE_ERROR
)
func marshalUnderline(p uintptr) (interface{}, error) {
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
return Underline(c), nil
}
const (
ATTR_INDEX_FROM_TEXT_BEGINNING uint = 0
ATTR_INDEX_TO_TEXT_END uint = C.G_MAXUINT
)
// Attribute is a representation of Pango's PangoAttribute.
type Attribute struct {
pangoAttribute *C.PangoAttribute
//start_index, end_index uint
}
// Native returns a pointer to the underlying PangoColor.
func (v *Attribute) Native() uintptr {
return uintptr(unsafe.Pointer(v.native()))
}
func (v *Attribute) native() *C.PangoAttribute {
return (*C.PangoAttribute)(unsafe.Pointer(v.pangoAttribute))
}
/*
//typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute,
// gpointer user_data);
func (v *Attribute) AttrFilterFunc(user_data uintptr) bool {
c := C.PangoAttrFilterFunc(Attribute.native(), C.gpointer(user_data))
return gobool(c)
}
//typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data);
func AttrDataCopyFunc(user_data uintptr) uintptr {
c := C.PangoAttrDataCopyFunc(C.gpointer(user_data))
return uintptr(c)
}
*/
// AttrClass is a representation of Pango's PangoAttrClass.
type AttrClass struct {
//PangoAttrType type;
}
// AttrString is a representation of Pango's PangoAttrString.
type AttrString struct {
Attribute
//char *value;
}
// AttrLanguage is a representation of Pango's PangoAttrLanguage.
type AttrLanguage struct {
Attribute
//PangoLanguage *value;
}
// AttrInt is a representation of Pango's PangoAttrInt.
type AttrInt struct {
Attribute
//int value;
}
// AttrFloat is a representation of Pango's PangoAttrFloat.
type AttrFloat struct {
Attribute
//double value;
}
// AttrColor is a representation of Pango's AttrColor.
type AttrColor struct {
Attribute
Color
}
// AttrSize is a representation of Pango's PangoAttrSize.
type AttrSize struct {
Attribute
//int size;
//guint absolute : 1;
}
// AttrShape is a representation of Pango's PangoAttrShape.
type AttrShape struct {
Attribute
//PangoRectangle ink_rect;
//PangoRectangle logical_rect;
//gpointer data;
//PangoAttrDataCopyFunc copy_func;
//GDestroyNotify destroy_func;
}
// AttrFontDesc is a representation of Pango's PangoAttrFontDesc.
type AttrFontDesc struct {
Attribute
//PangoFontDescription *desc;
}
/*
PangoAttrType pango_attr_type_register (const gchar *name);
const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST;
void pango_attribute_init (PangoAttribute *attr,
const PangoAttrClass *klass);
PangoAttribute * pango_attribute_copy (const PangoAttribute *attr);
void pango_attribute_destroy (PangoAttribute *attr);
gboolean pango_attribute_equal (const PangoAttribute *attr1,
const PangoAttribute *attr2) G_GNUC_PURE;
PangoAttribute *pango_attr_language_new (PangoLanguage *language);
PangoAttribute *pango_attr_family_new (const char *family);
PangoAttribute *pango_attr_foreground_new (guint16 red,
guint16 green,
guint16 blue);
PangoAttribute *pango_attr_background_new (guint16 red,
guint16 green,
guint16 blue);
PangoAttribute *pango_attr_size_new (int size);
PangoAttribute *pango_attr_size_new_absolute (int size);
PangoAttribute *pango_attr_style_new (PangoStyle style);
PangoAttribute *pango_attr_weight_new (PangoWeight weight);
PangoAttribute *pango_attr_variant_new (PangoVariant variant);
PangoAttribute *pango_attr_stretch_new (PangoStretch stretch);
PangoAttribute *pango_attr_font_desc_new (const PangoFontDescription *desc);
PangoAttribute *pango_attr_underline_new (PangoUnderline underline);
PangoAttribute *pango_attr_underline_color_new (guint16 red,
guint16 green,
guint16 blue);
PangoAttribute *pango_attr_strikethrough_new (gboolean strikethrough);
PangoAttribute *pango_attr_strikethrough_color_new (guint16 red,
guint16 green,
guint16 blue);
PangoAttribute *pango_attr_rise_new (int rise);
PangoAttribute *pango_attr_scale_new (double scale_factor);
PangoAttribute *pango_attr_fallback_new (gboolean enable_fallback);
PangoAttribute *pango_attr_letter_spacing_new (int letter_spacing);
PangoAttribute *pango_attr_shape_new (const PangoRectangle *ink_rect,
const PangoRectangle *logical_rect);
PangoAttribute *pango_attr_shape_new_with_data (const PangoRectangle *ink_rect,
const PangoRectangle *logical_rect,
gpointer data,
PangoAttrDataCopyFunc copy_func,
GDestroyNotify destroy_func);
PangoAttribute *pango_attr_gravity_new (PangoGravity gravity);
PangoAttribute *pango_attr_gravity_hint_new (PangoGravityHint hint);
GType pango_attr_list_get_type (void) G_GNUC_CONST;
PangoAttrList * pango_attr_list_new (void);
PangoAttrList * pango_attr_list_ref (PangoAttrList *list);
void pango_attr_list_unref (PangoAttrList *list);
PangoAttrList * pango_attr_list_copy (PangoAttrList *list);
void pango_attr_list_insert (PangoAttrList *list,
PangoAttribute *attr);
void pango_attr_list_insert_before (PangoAttrList *list,
PangoAttribute *attr);
void pango_attr_list_change (PangoAttrList *list,
PangoAttribute *attr);
void pango_attr_list_splice (PangoAttrList *list,
PangoAttrList *other,
gint pos,
gint len);
PangoAttrList *pango_attr_list_filter (PangoAttrList *list,
PangoAttrFilterFunc func,
gpointer data);
PangoAttrIterator *pango_attr_list_get_iterator (PangoAttrList *list);
void pango_attr_iterator_range (PangoAttrIterator *iterator,
gint *start,
gint *end);
gboolean pango_attr_iterator_next (PangoAttrIterator *iterator);
PangoAttrIterator *pango_attr_iterator_copy (PangoAttrIterator *iterator);
void pango_attr_iterator_destroy (PangoAttrIterator *iterator);
PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator,
PangoAttrType type);
void pango_attr_iterator_get_font (PangoAttrIterator *iterator,
PangoFontDescription *desc,
PangoLanguage **language,
GSList **extra_attrs);
GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator);
gboolean pango_parse_markup (const char *markup_text,
int length,
gunichar accel_marker,
PangoAttrList **attr_list,
char **text,
gunichar *accel_char,
GError **error);
GMarkupParseContext * pango_markup_parser_new (gunichar accel_marker);
gboolean pango_markup_parser_finish (GMarkupParseContext *context,
PangoAttrList **attr_list,
char **text,
gunichar *accel_char,
GError **error);
*/