---
name: "SDL::Pango"
section: "3pm"
platform: "linux"
package: "libsdl-perl"
version: "2.548-5+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SDL::Pango"
---

# SDL::Pango(3pm)

Text rendering engine

## NAME

SDL::Pango - Text rendering engine

## CATEGORY

Pango

## SYNOPSIS

```
 use SDL;
 use SDL::Color;
 use SDL::Surface;
 use SDL::Overlay;
 use SDL::Rect;
 use SDL::Video;
 use SDL::PixelFormat;
 use SDL::Pango;
 use SDL::Pango::Context;

 SDL::Pango::init();

 my $context = SDL::Pango::Context->new;
 SDL::Pango::set_default_color($context, 0xA7C344FF, 0);
 SDL::Pango::set_markup($context, 'Hello <b>W<span foreground="red">o</span><i>r</i><u>l</u>d</b>!', -1);
 SDL::init(SDL_INIT_VIDEO);

 my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE);
 my $bg      = SDL::Video::map_RGB($display->format, 0x12, 0x22, 0x45);
 SDL::Video::fill_rect($display, SDL::Rect->new(0, 0, 640, 480), $bg);
 my $surface = SDL::Pango::create_surface_draw($context);
 SDL::Video::blit_surface($surface, SDL::Rect->new(0, 0, 640, 480), $display, SDL::Rect->new(0, 0, 640, 480));

 SDL::Video::update_rect($display, 0, 0, 0, 0);
 SDL::delay(2000);
```

## CONSTANTS

The constants are exported by default. You can avoid this by doing:

```
 use SDL::Pango ();
```

and access them directly:

```
 SDL::Pango::SDLPANGO_DIRECTION_NEUTRAL;
```

or by choosing the export tags below:

Export tag: ':align'

- SDLPANGO\_ALIGN\_LEFT

  Left alignment

- SDLPANGO\_ALIGN\_CENTER

  Centered

- SDLPANGO\_ALIGN\_RIGHT

  Right alignment

Export tag: ':direction'

- SDLPANGO\_DIRECTION\_LTR

  Left to right

- SDLPANGO\_DIRECTION\_RTL

  Right to left

- SDLPANGO\_DIRECTION\_WEAK\_LTR

  Left to right (weak)

- SDLPANGO\_DIRECTION\_WEAK\_RTL

  Right to left (weak)

- SDLPANGO\_DIRECTION\_NEUTRAL

  Neutral

## METHODS

### init

```
 SDL::Pango::init();
```

Initialize the Glib and Pango API. This must be called before using other functions in this library, excepting SDL::Pango::was\_init.  SDL does not have to be initialized before this call.

Returns: always `0`.

### was\_init

```
 my $was_init = SDL::Pango::was_init();
```

Query the initialization status of the Glib and Pango API. You may, of course, use this before SDL::Pango::init to avoid initializing twice  in a row.

Returns: Non-zero when already initialized. Zero when not initialized.

### set\_default\_color

```
 SDL::Pango::set_default_color($context, $foreground, $background);
 SDL::Pango::set_default_color($context, $r1, $g1, $b1, $a1, $r2, $g2, $b2, $a2);
```

Sets default foreground and background color when rendering text and markup.

You can call it with either 2 color-parameters (32-bit RRGGBBAA values), or with 4 separate values for foreground and 4 separate values for  background.

### set\_minimum\_size

```
 SDL::Pango::set_minimum_size($context, $width, $height);
```

Sets the minimum size of the drawing rectangle.

### set\_text

```
 SDL::Pango::set_text($context, $text, $length);
 SDL::Pango::set_text($context, $text, $length, $alignment);
```

Set plain text to context. Text must be utf-8. `$length` chars will be rendered, pass `-1` to render the whole text.

`$alignment` can be:

- •

  SDLPANGO\_ALIGN\_LEFT (default)

- •

  SDLPANGO\_ALIGN\_CENTER

- •

  SDLPANGO\_ALIGN\_RIGHT

### set\_markup

```
 SDL::Pango::set_markup($context, $text, $length);
```

Set markup text to context. Text must be utf-8. `$length` chars will be rendered, pass `-1` to render the whole text.

See PangoMarkupFormat \<http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html\> for a description about the markup format.

### get\_layout\_width

```
 my $w = SDL::Pango::get_layout_width($context);
```

Returns the width of the resulting surface of the given text/markup for this context.

### get\_layout\_height

```
 my $h = SDL::Pango::get_layout_height($context);
```

Returns the height of the resulting surface of the given text/markup for this context.

### set\_base\_direction

```
 SDL::Pango::set_base_direction($context, $direction);
```

Sets the direction of the text to either left-to-right or right-to-left.

See "CONSTANTS".

### set\_dpi

```
 SDL::Pango::set_dpi($context, $dpi_x, $dpi_y);
```

Sets the DPI (dots per inch) for this context. Default is `96`.

### set\_language

```
 SDL::Pango::set_language($context, $language);
```

Sets the language name for this context.

See ISO639-2 \<http://www.loc.gov/standards/iso639-2/php/code\_list.php\>.

Example:

```
 SDL::Pango::set_language($context, "en");
```

### draw

```
 SDL::Pango::draw($context, $display, $x, $y);
```

Draws the text or markup to an existing surface at position `$x`/`$y`.

### set\_surface\_create\_args

```
 SDL::Pango::set_surface_create_args($context, $flags, $bits, $r_mask, $g_mask, $b_mask, $a_mask);
```

Sets the argument that are used when creating a surface via SDL::Pango::create\_surface\_draw.

Example:

```
 SDL::Pango::set_surface_create_args(
     $context,
     SDL_SWSURFACE,
     32,
     0xFF000000,
     0x00FF0000,
     0x0000FF00,
     0x000000FF
 );
```

### create\_surface\_draw

```
 my $surface = SDL::Pango::create_surface_draw($context);
```

Creates a new surface and draws the text/markup. You can specify the attributes of the surfaces using SDL::Pango::set\_surface\_create\_args.

## AUTHORS

See "AUTHORS" in SDL.

## SEE ALSO

SDL::Pango::Context, SDL::Video, SDL::Surface, SDL::TTF
