## IBusText IBusText — Text with decorating information. |

## Synopsis

    struct              IBusText;
    struct              IBusTextClass;
    IBusText *          ibus_text_new_from_string           (const gchar *str);
    IBusText *          ibus_text_new_from_ucs4             (const gunichar *str);
    IBusText *          ibus_text_new_from_static_string    (const gchar *str);
    IBusText *          ibus_text_new_from_printf           (const gchar *fmt,
                                                             ...);
    IBusText *          ibus_text_new_from_unichar          (gunichar c);
    void                ibus_text_append_attribute          (IBusText *text,
                                                             guint type,
                                                             guint value,
                                                             guint start_index,
                                                             gint end_index);
    guint               ibus_text_get_length                (IBusText *text);
    gboolean            ibus_text_get_is_static             (IBusText *text);
    const gchar *       ibus_text_get_text                  (IBusText *text);
    IBusAttrList *      ibus_text_get_attributes            (IBusText *text);
    void                ibus_text_set_attributes            (IBusText *text,
                                                             IBusAttrList *attrs);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusSerializable
                         +----IBusText

## Description

An IBusText is the main text object in IBus. The text is decorated according to associated IBusAttribute, e.g. the foreground/background color, underline, and applied scope.

see_also: IBusAttribute

## Details

### struct IBusText

    struct IBusText {
        gboolean is_static;
        gchar  *text;
        IBusAttrList *attrs;
    };

A text object in IBus.

gboolean `is_static`; | Whether `text` is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from `ibus_text_new_from_static_string()`.
gchar *`text`; | The string content of IBusText in UTF-8.
IBusAttrList *`attrs`; | Associated IBusAttributes.

### struct IBusTextClass

    struct IBusTextClass {
        IBusSerializableClass parent;
    };

### ibus_text_new_from_string ()

    IBusText *          ibus_text_new_from_string           (const gchar *str);

New an IBusText from a string.

`str` will be duplicated in IBusText, so feel free to free `str` after this function.

`str` : | An text string to be set.
Returns : | A newly allocated IBusText.

### ibus_text_new_from_ucs4 ()

    IBusText *          ibus_text_new_from_ucs4             (const gunichar *str);

New an IBusText from an UCS-4 encoded string.

`str` will be duplicated in IBusText, so feel free to free `str` after this function.

`str` : | An text string to be set.
Returns : | A newly allocated IBusText.

### ibus_text_new_from_static_string ()

    IBusText *          ibus_text_new_from_static_string    (const gchar *str);

New an IBusText from a static string.

Since `str` is a static string which won't be freed. This function will NOT duplicate `str`.

`str` : | An text string to be set.
Returns : | A newly allocated IBusText.

### ibus_text_new_from_printf ()

    IBusText *          ibus_text_new_from_printf           (const gchar *fmt,
                                                             ...);

New an IBusText from a printf expression.

The result of printf expression is stored in the new IBusText instance.

`fmt` : | printf format string.
`...` : | arguments for `fmt`.
Returns : | A newly allocated IBusText.

### ibus_text_new_from_unichar ()

    IBusText *          ibus_text_new_from_unichar          (gunichar c);

New an IBusText from a single UCS4-encoded character.

`c` : | A single UCS4-encoded character.
Returns : | A newly allocated IBusText.

### ibus_text_append_attribute ()

    void                ibus_text_append_attribute          (IBusText *text,
                                                             guint type,
                                                             guint value,
                                                             guint start_index,
                                                             gint end_index);

Append an IBusAttribute for IBusText.

`text` : | an IBusText
`type` : | IBusAttributeType for `text`.
`value` : | Value for the type.
`start_index` : | The starting index, inclusive.
`end_index` : | The ending index, exclusive.

### ibus_text_get_length ()

    guint               ibus_text_get_length                (IBusText *text);

Return number of characters in an IBusText. This function is based on `g_utf8_strlen()`, so unlike `strlen()`, it does not count by bytes but characters instead.

`text` : | An IBusText.
Returns : | Number of character in `text`, not counted by bytes.

### ibus_text_get_is_static ()

    gboolean            ibus_text_get_is_static             (IBusText *text);

Return the is_static in an IBusText.

`text` : | An IBusText.
Returns : | the is_static in `text`.

### ibus_text_get_text ()

    const gchar *       ibus_text_get_text                  (IBusText *text);

Return the text in an IBusText. Should not be freed.

`text` : | An IBusText.
Returns : | the text in `text`.

### ibus_text_get_attributes ()

    IBusAttrList *      ibus_text_get_attributes            (IBusText *text);

Return the attributes in an IBusText. Should not be freed.

`text` : | An IBusText.
Returns : | the attrs in `text`. [transfer none]

### ibus_text_set_attributes ()

    void                ibus_text_set_attributes            (IBusText *text,
                                                             IBusAttrList *attrs);

`text` : | An IBusText.
`attrs` : | An IBusAttrList