gtk/gdk/nanox/gdkfont-nanox.c
Paolo Molaro 8a836c07cf Sat, 6 May 2000 13:31:34 +0200 Paolo Molaro <lupus@linuxcare.com>
Sat,  6 May 2000 13:31:34 +0200 Paolo Molaro <lupus@linuxcare.com>

	* gdk/nanox/*: nano-X port work in progress.
	* gdk/simple.c: simple test for Gdk.
	* README.nanox: notes about the port: read this first!
	* gtk/gtk{dnd,plug,selection,window}.c: minimal changes to make gtk compile
	with nano-X.
2000-05-06 11:57:31 +00:00

147 lines
2.9 KiB
C

#include "gdk.h"
#include "gdkprivate-nanox.h"
static GR_GC_ID gc_for_width = 0;
#define ENSURE_GC if (!gc_for_width) gc_for_width = GrNewGC();
GdkFont*
gdk_font_load (const gchar *font_name)
{
GdkFont *font;
GdkFontPrivateX *private;
GR_FONTID xfont;
g_return_val_if_fail (font_name != NULL, NULL);
xfont = GrCreateFont("System", 0, 0);
if (xfont == 0)
return NULL;
{
private = g_new (GdkFontPrivateX, 1);
private->xfont = xfont;
private->base.ref_count = 1;
font = (GdkFont*) private;
font->type = GDK_FONT_FONT;
font->ascent = 8;
font->descent = 4;
}
return font;
}
GdkFont*
gdk_fontset_load (const gchar *fontset_name)
{
return gdk_font_load(fontset_name);
}
void
_gdk_font_destroy (GdkFont *font)
{
GrUnloadFont(GDK_FONT_XFONT(font));
}
gint
_gdk_font_strlen (GdkFont *font,
const gchar *str)
{
return strlen(str);
}
gint
gdk_font_id (const GdkFont *font)
{
return GDK_FONT_XFONT(font);
}
gboolean
gdk_font_equal (const GdkFont *fonta,
const GdkFont *fontb)
{
return GDK_FONT_XFONT(fonta) == GDK_FONT_XFONT(fontb);
}
gint
gdk_text_width (GdkFont *font,
const gchar *text,
gint text_length)
{
gint width, height, base;
ENSURE_GC;
GrSetGCFont(gc_for_width, GDK_FONT_XFONT(font));
GrGetGCTextSize(gc_for_width, text, text_length, TF_UTF8, &width, &height, &base);
return width;
}
gint
gdk_text_width_wc (GdkFont *font,
const GdkWChar *text,
gint text_length)
{
gint width, height, base;
ENSURE_GC;
GrSetGCFont(gc_for_width, GDK_FONT_XFONT(font));
GrGetGCTextSize(gc_for_width, text, text_length, TF_UC32, &width, &height, &base);
return width;
}
void
gdk_text_extents (GdkFont *font,
const gchar *text,
gint text_length,
gint *lbearing,
gint *rbearing,
gint *width,
gint *ascent,
gint *descent)
{
gint mwidth, height, base;
ENSURE_GC;
GrSetGCFont(gc_for_width, GDK_FONT_XFONT(font));
GrGetGCTextSize(gc_for_width, text, text_length, TF_UTF8, &mwidth, &height, &base);
if (width)
*width = mwidth;
if (lbearing)
*lbearing = 0;
if (rbearing)
*rbearing = 0;
if (ascent)
*ascent = base;
if (descent)
*descent = height - base;
}
void
gdk_text_extents_wc (GdkFont *font,
const GdkWChar *text,
gint text_length,
gint *lbearing,
gint *rbearing,
gint *width,
gint *ascent,
gint *descent)
{
gint mwidth, height, base;
ENSURE_GC;
GrSetGCFont(gc_for_width, GDK_FONT_XFONT(font));
GrGetGCTextSize(gc_for_width, text, text_length, TF_UC32, &mwidth, &height, &base);
if (width)
*width = mwidth;
if (lbearing)
*lbearing = 0;
if (rbearing)
*rbearing = 0;
if (ascent)
*ascent = base;
if (descent)
*descent = height - base;
}