mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 09:58:01 +00:00
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
|
/*
|
||
|
* Determine the dimensions of a piece of text in the standard
|
||
|
* font used in GTK interface elements like labels. We do this by
|
||
|
* instantiating an actual GtkLabel, and then querying its size.
|
||
|
*/
|
||
|
|
||
|
#include <gtk/gtk.h>
|
||
|
#include "putty.h"
|
||
|
#include "gtkcompat.h"
|
||
|
#include "gtkmisc.h"
|
||
|
|
||
|
void get_label_text_dimensions(const char *text, int *width, int *height)
|
||
|
{
|
||
|
GtkWidget *label = gtk_label_new(text);
|
||
|
|
||
|
/*
|
||
|
* GTK2 and GTK3 require us to query the size completely
|
||
|
* differently. I'm sure there ought to be an easier approach than
|
||
|
* the way I'm doing this in GTK3, too!
|
||
|
*/
|
||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||
|
PangoLayout *layout = gtk_label_get_layout(GTK_LABEL(label));
|
||
|
PangoRectangle logrect;
|
||
|
pango_layout_get_extents(layout, NULL, &logrect);
|
||
|
if (width)
|
||
|
*width = logrect.width / PANGO_SCALE;
|
||
|
if (height)
|
||
|
*height = logrect.height / PANGO_SCALE;
|
||
|
#else
|
||
|
GtkRequisition req;
|
||
|
gtk_widget_size_request(label, &req);
|
||
|
if (width)
|
||
|
*width = req.width;
|
||
|
if (height)
|
||
|
*height = req.height;
|
||
|
#endif
|
||
|
|
||
|
g_object_ref_sink(G_OBJECT(label));
|
||
|
#if GTK_CHECK_VERSION(2,10,0)
|
||
|
g_object_unref(label);
|
||
|
#endif
|
||
|
}
|