#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <glib/gi18n.h>
#include <glib/gprintf.h>
#include <glib/gstdio.h>
#include <cairo.h>
static PangoFontDescription *font_desc;
static void
set_font_desc ()
{
if (font_desc)
pango_font_description_free (font_desc);
font_desc = pango_font_description_from_string ("Roboto 14");
}
static void
draw_text (cairo_t *cr,
int x,
int y,
const gchar *text)
{
PangoLayout *layout;
PangoContext *context;
PangoRectangle rect;
layout = pango_cairo_create_layout (cr);
context = pango_layout_get_context (layout);
pango_layout_set_text (layout, text, -1);
pango_layout_set_font_description (layout, font_desc);
pango_layout_get_pixel_extents (layout, NULL, &rect);
cairo_move_to (cr, x, y);
pango_cairo_show_layout (cr, layout);
g_object_unref (layout);
g_object_unref (context);
}
static gboolean
on_draw_event (GtkWidget *widget,
cairo_t *cr,
gpointer data)
{
const gchar *text = "Hello, Material UI!";
set_font_desc ();
draw_text (cr, 50, 50, text);
return FALSE;
}
static void
on_destroy (GtkWidget *widget,
gpointer data)
{
gtk_main_quit ();
}
int
main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *drawing_area;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Material UI with Roboto Font");
gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (on_destroy), NULL);
drawing_area = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (window), drawing_area);
g_signal_connect (G_OBJECT (drawing_area), "draw", G_CALLBACK (on_draw_event), NULL);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}