pods::SDL::Pango(3pm)

πŸ’– NAME πŸ’–

hey bestie, welcome to pods::SDL::Pango(3pm) from the User Contributed Perl Documentation collection 🫢 this is literally SDL::Pango β€” the Text rendering engine. main character energy fr fr ✨

🌸 CATEGORY 🌸

Pango πŸŽ€

✨ SYNOPSIS ✨

okay so here's the whole vibe, no cap πŸ‘‘

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 πŸŽ€

so these constants are exported by default, bestie πŸ’… you can avoid that by doing:

use SDL::Pango ();

and then access them directly like this:

SDL::Pango::SDLPANGO_DIRECTION_NEUTRAL;

or you can choose 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();

okay so this initializes the Glib and Pango API. it must be called before using other functions in this library, excepting SDL::Pango::was_init ⚠️ and ngl, SDL does not have to be initialized before this call.

Returns: always 0.

was_init

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

queries 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 the 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. periodt.

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);

sets 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);

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

see PangoMarkupFormat at 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 at 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 arguments 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


that's the whole manual, bestie β€” perl v5.42.3, 2026-08-19, and pods::SDL::Pango(3pm) signing off πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from