gnu_java_awt_peer_gtk_GtkLabelPeer.c [plain text]
#include "gtkpeer.h"
#include "gnu_java_awt_peer_gtk_GtkLabelPeer.h"
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkLabelPeer_create
(JNIEnv *env, jobject obj, jstring text, jfloat xalign)
{
GtkWidget *label;
GtkWidget *ebox;
GtkContainer *ebox_container;
const char *str;
NSA_SET_GLOBAL_REF (env, obj);
str = (*env)->GetStringUTFChars (env, text, 0);
gdk_threads_enter ();
ebox = gtk_event_box_new ();
ebox_container = GTK_CONTAINER (ebox);
label = gtk_label_new (str);
gtk_misc_set_alignment (GTK_MISC (label), xalign, 0.5);
gtk_container_add (ebox_container, label);
gtk_widget_show (label);
gdk_threads_leave ();
(*env)->ReleaseStringUTFChars (env, text, str);
NSA_SET_PTR (env, obj, ebox);
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkLabelPeer_gtkSetFont
(JNIEnv *env, jobject obj, jstring name, jint style, jint size)
{
const char *font_name;
void *ptr;
GtkWidget *label;
PangoFontDescription *font_desc;
ptr = NSA_GET_PTR (env, obj);
font_name = (*env)->GetStringUTFChars (env, name, NULL);
gdk_threads_enter ();
label = gtk_bin_get_child (GTK_BIN (ptr));
if (!label)
return;
font_desc = pango_font_description_from_string (font_name);
pango_font_description_set_size (font_desc, size * dpi_conversion_factor);
if (style & AWT_STYLE_BOLD)
pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
if (style & AWT_STYLE_ITALIC)
pango_font_description_set_style (font_desc, PANGO_STYLE_OBLIQUE);
gtk_widget_modify_font (GTK_WIDGET (label), font_desc);
pango_font_description_free (font_desc);
gdk_threads_leave ();
(*env)->ReleaseStringUTFChars (env, name, font_name);
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText
(JNIEnv *env, jobject obj, jstring text)
{
const char *str;
void *ptr;
GtkWidget *label;
ptr = NSA_GET_PTR (env, obj);
str = (*env)->GetStringUTFChars (env, text, 0);
gdk_threads_enter ();
label = gtk_bin_get_child (GTK_BIN(ptr));
gtk_label_set_label (GTK_LABEL (label), str);
gdk_threads_leave ();
(*env)->ReleaseStringUTFChars (env, text, str);
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkLabelPeer_nativeSetAlignment
(JNIEnv *env, jobject obj, jfloat xalign)
{
void *ptr;
GtkWidget *label;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
label = gtk_bin_get_child (GTK_BIN(ptr));
gtk_misc_set_alignment (GTK_MISC (label), xalign, 0.5);
gdk_threads_leave ();
}