Created
December 28, 2023 20:43
-
-
Save petabyt/7e3d03fc27cf0cc0db00841c6227acd8 to your computer and use it in GitHub Desktop.
gimp_label_set_attributes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void | |
gimp_label_set_attributes (GtkLabel *label, | |
...) | |
{ | |
PangoAttribute *attr = NULL; | |
PangoAttrList *attrs; | |
va_list args; | |
g_return_if_fail (GTK_IS_LABEL (label)); | |
attrs = pango_attr_list_new (); | |
va_start (args, label); | |
do | |
{ | |
PangoAttrType attr_type = va_arg (args, PangoAttrType); | |
if (attr_type == -1) | |
attr_type = PANGO_ATTR_INVALID; | |
switch (attr_type) | |
{ | |
case PANGO_ATTR_LANGUAGE: | |
attr = pango_attr_language_new (va_arg (args, PangoLanguage *)); | |
break; | |
case PANGO_ATTR_FAMILY: | |
attr = pango_attr_family_new (va_arg (args, const gchar *)); | |
break; | |
case PANGO_ATTR_STYLE: | |
attr = pango_attr_style_new (va_arg (args, PangoStyle)); | |
break; | |
case PANGO_ATTR_WEIGHT: | |
attr = pango_attr_weight_new (va_arg (args, PangoWeight)); | |
break; | |
case PANGO_ATTR_VARIANT: | |
attr = pango_attr_variant_new (va_arg (args, PangoVariant)); | |
break; | |
case PANGO_ATTR_STRETCH: | |
attr = pango_attr_stretch_new (va_arg (args, PangoStretch)); | |
break; | |
case PANGO_ATTR_SIZE: | |
attr = pango_attr_size_new (va_arg (args, gint)); | |
break; | |
case PANGO_ATTR_FONT_DESC: | |
attr = pango_attr_font_desc_new (va_arg (args, | |
const PangoFontDescription *)); | |
break; | |
case PANGO_ATTR_FOREGROUND: | |
{ | |
const PangoColor *color = va_arg (args, const PangoColor *); | |
attr = pango_attr_foreground_new (color->red, | |
color->green, | |
color->blue); | |
} | |
break; | |
case PANGO_ATTR_BACKGROUND: | |
{ | |
const PangoColor *color = va_arg (args, const PangoColor *); | |
attr = pango_attr_background_new (color->red, | |
color->green, | |
color->blue); | |
} | |
break; | |
case PANGO_ATTR_UNDERLINE: | |
attr = pango_attr_underline_new (va_arg (args, PangoUnderline)); | |
break; | |
case PANGO_ATTR_STRIKETHROUGH: | |
attr = pango_attr_strikethrough_new (va_arg (args, gboolean)); | |
break; | |
case PANGO_ATTR_RISE: | |
attr = pango_attr_rise_new (va_arg (args, gint)); | |
break; | |
case PANGO_ATTR_SCALE: | |
attr = pango_attr_scale_new (va_arg (args, gdouble)); | |
break; | |
default: | |
g_warning ("%s: invalid PangoAttribute type %d", | |
G_STRFUNC, attr_type); | |
case PANGO_ATTR_INVALID: | |
attr = NULL; | |
break; | |
} | |
if (attr) | |
{ | |
attr->start_index = 0; | |
attr->end_index = -1; | |
pango_attr_list_insert (attrs, attr); | |
} | |
} | |
while (attr); | |
va_end (args); | |
gtk_label_set_attributes (label, attrs); | |
pango_attr_list_unref (attrs); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment