Exemple #1
0
PangoContext* wxApp::GetPangoContext()
{
    static PangoContext *s_pangoContext = NULL;
    if ( !s_pangoContext )
    {
        Display *dpy = wxGlobalDisplay();

#ifdef HAVE_PANGO_XFT
        int xscreen = DefaultScreen(dpy);
        static int use_xft = -1;
        if (use_xft == -1)
        {
            wxString val = wxGetenv( L"GDK_USE_XFT" );
            use_xft = val == L"1";
        }

        if (use_xft)
            s_pangoContext = pango_xft_get_context(dpy, xscreen);
        else
#endif // HAVE_PANGO_XFT
            s_pangoContext = pango_x_get_context(dpy);

        if (!PANGO_IS_CONTEXT(s_pangoContext))
        {
            wxLogError( wxT("No pango context.") );
        }
    }

    return s_pangoContext;
}
Exemple #2
0
static int
_pango_xft_Load(TextState * ts, const char *name)
{
   FontCtxPangoXft    *fdc;
   PangoFontDescription *font;
   PangoFontMask       flags;

   if (!_pango_ctx)
      _pango_ctx = pango_xft_get_context(disp, Dpy.screen);
   if (!_pango_ctx)
      return -1;

   font = pango_font_description_from_string(name);
   if (!font)
      return -1;

   flags = pango_font_description_get_set_fields(font);
   if ((flags & PANGO_FONT_MASK_FAMILY) == 0)
      pango_font_description_set_family(font, "sans");
   if ((flags & PANGO_FONT_MASK_SIZE) == 0)
      pango_font_description_set_size(font, 10 * PANGO_SCALE);

   fdc = EMALLOC(FontCtxPangoXft, 1);
   if (!fdc)
      return -1;
   fdc->font = font;
   ts->fdc = fdc;
   ts->need_utf8 = 1;
   ts->type = FONT_TYPE_PANGO_XFT;
   ts->ops = &FontOps_pango;
   return 0;
}
Exemple #3
0
static bool
pango_load (Lisp_Font *f)
{
    PangoLanguage *language;
    PangoFontDescription *fontdesc;
    PangoFont *font;
    PangoFontMetrics *metrics;

    if (pango_context)
    {
	language = pango_context_get_language (pango_context);
    }
    else
    {
	char *langname, *p;

#ifdef HAVE_PANGO_XFT
	pango_context = pango_xft_get_context (dpy, screen_num);
#endif

	langname = g_strdup (setlocale (LC_CTYPE, NULL));
	p = strchr (langname, '.');
	if (p)
	    *p = 0;
	p = strchr (langname, '@');
	if (p)
	    *p = 0;
	language = pango_language_from_string (langname);
	pango_context_set_language (pango_context, language);
	g_free (langname);
    }

    fontdesc = pango_font_description_from_string (rep_STR (f->name));

    if (!pango_font_description_get_family (fontdesc))
	pango_font_description_set_family (fontdesc, "Sans");
    if (pango_font_description_get_size (fontdesc) <= 0)
	pango_font_description_set_size (fontdesc, 12 * PANGO_SCALE);

    pango_context_set_font_description (pango_context, fontdesc);
    font = pango_context_load_font (pango_context, fontdesc);

    if (!font) {
        pango_font_description_free(fontdesc);
	return FALSE;
    }

    metrics = pango_font_get_metrics (font, language);

    f->ascent = metrics->ascent / PANGO_SCALE;
    f->descent = metrics->descent / PANGO_SCALE;

    pango_font_metrics_unref (metrics);

    f->font = fontdesc; /* We save the font description, not the font itself!
                        That's because it seems we can't recover it perfectly
                        later, and the layout routines want a description */

    return TRUE;
}
RrInstance* RrInstanceNew (Display *display, gint screen)
{
    definst = g_slice_new(RrInstance);
    definst->display = display;
    definst->screen = screen;

    definst->depth = DefaultDepth(display, screen);
    definst->visual = DefaultVisual(display, screen);
    definst->colormap = DefaultColormap(display, screen);
    definst->pango = pango_xft_get_context(display, screen);

    definst->pseudo_colors = NULL;

    definst->color_hash = g_hash_table_new_full(g_int_hash, g_int_equal,
                                                NULL, dest);

    switch (definst->visual->class) {
    case TrueColor:
        RrTrueColorSetup(definst);
        break;
    case PseudoColor:
    case StaticColor:
    case GrayScale:
    case StaticGray:
        RrPseudoColorSetup(definst);
        break;
    default:
        g_critical("Unsupported visual class");
        g_free (definst);
        return definst = NULL;
    }
    return definst;
}
Exemple #5
0
Fichier : draw.c Projet : wm4/dunst
void
initfont(DC *dc, const char *fontstr) {
    dc->pgc = pango_xft_get_context(dc->dpy, screen);
    dc->pfd = pango_font_description_from_string(fontstr);

    dc->plo = pango_layout_new(dc->pgc);
    pango_layout_set_font_description(dc->plo, dc->pfd);
    pango_layout_set_wrap(dc->plo, PANGO_WRAP_WORD_CHAR);
    pango_layout_set_alignment(dc->plo, PANGO_ALIGN_LEFT);
}
Exemple #6
0
PangoContext* wxApp::GetPangoContext()
{
    static PangoContext *s_pangoContext = NULL;
    if ( !s_pangoContext )
    {
        Display *dpy = wxGlobalDisplay();
        int xscreen = DefaultScreen(dpy);

        s_pangoContext = pango_xft_get_context(dpy, xscreen);

        if (!PANGO_IS_CONTEXT(s_pangoContext))
        {
            wxLogError( wxT("No pango context.") );
        }
    }

    return s_pangoContext;
}
Exemple #7
0
void
initfont(DC *dc, const char *fontstr) {
	PangoFontMetrics *metrics;

	dc->pgc = pango_xft_get_context(dc->dpy, 0);
	dc->pfd = pango_font_description_from_string(fontstr);
	if(pango_font_description_get_size(dc->pfd) == 0)
		pango_font_description_set_size(dc->pfd, 12 * PANGO_SCALE);

	metrics = pango_context_get_metrics(dc->pgc, dc->pfd, pango_language_from_string(""));
	dc->font.ascent = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
	dc->font.descent = pango_font_metrics_get_descent(metrics) / PANGO_SCALE;
	dc->font.height = dc->font.ascent + dc->font.descent;

	pango_font_metrics_unref(metrics);

	dc->plo = pango_layout_new(dc->pgc);
	pango_layout_set_font_description(dc->plo, dc->pfd);
}
Exemple #8
0
int main(int argc, char *argv[])
{
    pango_xft_get_context(NULL, 0);
    return 0;
}