## Tab Stops

Tab Stops — Structures for storing Tab Stops

## Synopsis

    struct      PangoTabArray;
    #define     PANGO_TYPE_TAB_ARRAY
    enum        PangoTabAlign;
    #define     PANGO_TYPE_TAB_ALIGN
    PangoTabArray* pango_tab_array_new          (gint initial_size,
                                                 gboolean positions_in_pixels);
    PangoTabArray* pango_tab_array_new_with_positions
                                                (gint size,
                                                 gboolean positions_in_pixels,
                                                 PangoTabAlign first_alignment,
                                                 gint first_position,
                                                 ...);
    PangoTabArray* pango_tab_array_copy         (PangoTabArray *src);
    void        pango_tab_array_free            (PangoTabArray *tab_array);
    gint        pango_tab_array_get_size        (PangoTabArray *tab_array);
    void        pango_tab_array_resize          (PangoTabArray *tab_array,
                                                 gint new_size);
    void        pango_tab_array_set_tab         (PangoTabArray *tab_array,
                                                 gint tab_index,
                                                 PangoTabAlign alignment,
                                                 gint location);
    void        pango_tab_array_get_tab         (PangoTabArray *tab_array,
                                                 gint tab_index,
                                                 PangoTabAlign *alignment,
                                                 gint *location);
    void        pango_tab_array_get_tabs        (PangoTabArray *tab_array,
                                                 PangoTabAlign **alignments,
                                                 gint **locations);
    gboolean    pango_tab_array_get_positions_in_pixels
                                                (PangoTabArray *tab_array);

## Description

## Details

### struct PangoTabArray

    struct PangoTabArray;

A PangoTabArray struct contains an array of tab stops. Each tab stop has an alignment and a position.

### PANGO_TYPE_TAB_ARRAY

    #define PANGO_TYPE_TAB_ARRAY (pango_tab_array_get_type ())

The GObject type for PangoTabArray.

### enum PangoTabAlign

    typedef enum
    {
      PANGO_TAB_LEFT

      /* These are not supported now, but may be in the
       * future.
       *
       *  PANGO_TAB_RIGHT,
       *  PANGO_TAB_CENTER,
       *  PANGO_TAB_NUMERIC
       */
    } PangoTabAlign;

A PangoTabAlign specifies where a tab stop appears relative to the text.

`PANGO_TAB_LEFT` | the tab stop appears to the left of the text.

### PANGO_TYPE_TAB_ALIGN

    #define PANGO_TYPE_TAB_ALIGN (pango_tab_align_get_type())

The GObject type for PangoTabAlign.

### pango_tab_array_new ()

    PangoTabArray* pango_tab_array_new          (gint initial_size,
                                                 gboolean positions_in_pixels);

Creates an array of `initial_size` tab stops. Tab stops are specified in pixel units if `positions_in_pixels` is TRUE, otherwise in Pango units. All stops are initially at position 0.

`initial_size` : | Initial number of tab stops to allocate, can be 0
`positions_in_pixels` : | whether positions are in pixel units
Returns : | a PangoTabArray

### pango_tab_array_new_with_positions ()

    PangoTabArray* pango_tab_array_new_with_positions
                                                (gint size,
                                                 gboolean positions_in_pixels,
                                                 PangoTabAlign first_alignment,
                                                 gint first_position,
                                                 ...);

This is a convenience function that creates a PangoTabArray and allows you to specify the alignment and position of each tab stop. You must provide an alignment and position for `size` tab stops.

`size` : | number of tab stops in the array
`positions_in_pixels` : | whether positions are in pixel units
`first_alignment` : | alignment of first tab stop
`first_position` : | position of first tab stop
`...` : | additional alignment/position pairs
Returns : | a new PangoTabArray

### pango_tab_array_copy ()

    PangoTabArray* pango_tab_array_copy         (PangoTabArray *src);

Copies a PangoTabArray

`src` : | PangoTabArray to copy
Returns : | Newly-allocated PangoTabArray

### pango_tab_array_free ()

    void        pango_tab_array_free            (PangoTabArray *tab_array);

Frees a tab array and associated resources.

`tab_array` : | a PangoTabArray

### pango_tab_array_get_size ()

    gint        pango_tab_array_get_size        (PangoTabArray *tab_array);

Gets the number of tab stops in `tab_array`.

`tab_array` : | a PangoTabArray
Returns : | the number of tab stops in the array.

### pango_tab_array_resize ()

    void        pango_tab_array_resize          (PangoTabArray *tab_array,
                                                 gint new_size);

Resizes a tab array. You must subsequently initialize any tabs that were added as a result of growing the array.

`tab_array` : | a PangoTabArray
`new_size` : | new size of the array

### pango_tab_array_set_tab ()

    void        pango_tab_array_set_tab         (PangoTabArray *tab_array,
                                                 gint tab_index,
                                                 PangoTabAlign alignment,
                                                 gint location);

Sets the alignment and location of a tab stop. `alignment` must always be PANGO_TAB_LEFT in the current implementation.

`tab_array` : | a PangoTabArray
`tab_index` : | the index of a tab stop
`alignment` : | tab alignment
`location` : | tab location in pango units

### pango_tab_array_get_tab ()

    void        pango_tab_array_get_tab         (PangoTabArray *tab_array,
                                                 gint tab_index,
                                                 PangoTabAlign *alignment,
                                                 gint *location);

Gets the alignment and position of a tab stop. `alignment` or `location` may be NULL if you aren't interested in their value.

`tab_array` : | a PangoTabArray
`tab_index` : | tab stop index
`alignment` : | location to store alignment
`location` : | location to store tab position

### pango_tab_array_get_tabs ()

    void        pango_tab_array_get_tabs        (PangoTabArray *tab_array,
                                                 PangoTabAlign **alignments,
                                                 gint **locations);

If non-NULL, `alignments` and `locations` are filled with allocated arrays of length `pango_tab_array_get_size()`. You must free the returned array.

`tab_array` : | a PangoTabArray
`alignments` : | location to store an array of tab stop alignments
`locations` : | location to store an array of tab positions

### pango_tab_array_get_positions_in_pixels ()

    gboolean    pango_tab_array_get_positions_in_pixels
                                                (PangoTabArray *tab_array);

Returns TRUE if the tab positions are in pixels, FALSE if they are in Pango units.

`tab_array` : | a PangoTabArray
Returns : | whether positions are in pixels