JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkClasspathFontPeer_setFont
  (JNIEnv *env, jobject self, jstring family_name_str, jint style_int, jint size)
{
  struct peerfont *pfont = NULL;
  PangoFontMap *map = NULL; 
  char const *family_name = NULL;

  gdk_threads_enter ();
  enum java_awt_font_style style = (enum java_awt_font_style) style_int;

  g_assert (self != NULL);
  pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self);
  g_assert (pfont != NULL);

  if (pfont->ctx != NULL)
    g_object_unref (pfont->ctx);
  if (pfont->font != NULL)
    g_object_unref (pfont->font);
  if (pfont->desc != NULL)
    pango_font_description_free (pfont->desc);

  pfont->desc = pango_font_description_new ();
  g_assert (pfont->desc != NULL);

  family_name = (*env)->GetStringUTFChars(env, family_name_str, 0);
  g_assert (family_name != NULL);
  pango_font_description_set_family (pfont->desc, family_name);
  (*env)->ReleaseStringUTFChars(env, family_name_str, family_name);

  pango_font_description_set_size (pfont->desc, size * PANGO_SCALE);  

  if (style & java_awt_font_BOLD)
    pango_font_description_set_weight (pfont->desc, PANGO_WEIGHT_BOLD);

  if (style & java_awt_font_ITALIC)
    pango_font_description_set_style (pfont->desc, PANGO_STYLE_ITALIC);
  
  /* 
     FIXME: these are possibly wrong, and should in any case
     probably be cached between calls.
   */

  map = pango_ft2_font_map_for_display ();
  g_assert (map != NULL);
  
  if (pfont->ctx == NULL)
    pfont->ctx = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (map));  
  g_assert (pfont->ctx != NULL);

  if (pfont->font != NULL)
    g_object_unref (pfont->font);

  pfont->font = pango_font_map_load_font (map, pfont->ctx, pfont->desc);
  g_assert (pfont->font != NULL);

  gdk_threads_leave ();
}
Пример #2
0
/**
 * gnome_print_pango_create_context:
 * @fontmap: a #PangoFontMap from gnome_print_pango_get_default_font_map()
 *  or gnome_print_pango_create_font_map().
 * 
 * Creates a new #PangoContext object for the specified fontmap.
 * 
 * Return value: a newly created #PangoContext object
 **/
PangoContext *
gnome_print_pango_create_context (PangoFontMap *fontmap)
{
	PangoContext *context;

	g_return_val_if_fail (PANGO_FT2_IS_FONT_MAP (fontmap), NULL);
	g_return_val_if_fail (is_gnome_print_object (G_OBJECT (fontmap)), NULL);

	context = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (fontmap));
	set_is_gnome_print_object (G_OBJECT (context));

	return context;
}
Пример #3
0
FontSupport::FontSupport(WPaintDevice *paintDevice)
  : device_(paintDevice),
    matchFont_(0)
{
  PANGO_LOCK;

  if (!pangoFontMap)
    pangoFontMap = pango_ft2_font_map_new();

  context_
    = pango_ft2_font_map_create_context((PangoFT2FontMap*)pangoFontMap);

  currentFont_ = 0;
}
Пример #4
0
FontSupport::FontSupport(WPaintDevice *paintDevice)
  : device_(paintDevice),
    cache_(10)
{
  PANGO_LOCK;

  if (!pangoFontMap)
    pangoFontMap = pango_ft2_font_map_new();

#if PANGO_VERSION_MAJOR > 1 || PANGO_VERSION_MINOR > 21
  context_ = pango_font_map_create_context(pangoFontMap);
#else
  context_ = pango_ft2_font_map_create_context(PANGO_FT2_FONT_MAP(pangoFontMap));
#endif

  currentFont_ = 0;
}
Пример #5
0
void
gimp_font_list_restore (GimpFontList *list)
{
  PangoFontMap *fontmap;
  PangoContext *context;

  g_return_if_fail (GIMP_IS_FONT_LIST (list));

  if (font_desc_to_string == NULL)
    {
      PangoFontDescription *desc;
      gchar                *name;
      gchar                 last_char;

      desc = pango_font_description_new ();
      pango_font_description_set_family (desc, "Wilber 12");

      name = pango_font_description_to_string (desc);
      last_char = name[strlen (name) - 1];

      g_free (name);
      pango_font_description_free (desc);

      if (last_char != ',')
        font_desc_to_string = &gimp_font_util_pango_font_description_to_string;
      else
        font_desc_to_string = &pango_font_description_to_string;
    }

  fontmap = pango_ft2_font_map_new ();
  pango_ft2_font_map_set_resolution (PANGO_FT2_FONT_MAP (fontmap),
                                     list->xresolution, list->yresolution);

  context = pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (fontmap));
  g_object_unref (fontmap);

  gimp_container_freeze (GIMP_CONTAINER (list));

  gimp_font_list_load_names (list, fontmap, context);
  g_object_unref (context);

  gimp_list_sort_by_name (GIMP_LIST (list));

  gimp_container_thaw (GIMP_CONTAINER (list));
}
Пример #6
0
static bool lnx_pango_objects_intialize()
{
    bool t_success;
	t_success = true;
    
    PangoFontMap *t_font_map;
    PangoContext *t_pango;
    PangoLayout *t_layout;
    if (t_success)
    {
        t_font_map = (PangoFontMap *)pthread_getspecific(s_font_map_key);
        t_pango = (PangoContext *)pthread_getspecific(s_pango_key);
        t_layout = (PangoLayout *)pthread_getspecific(s_layout_key);
    }
    
    if (t_success)
		if (t_font_map == NULL)
		{
			t_font_map = pango_ft2_font_map_new();
			t_success = t_font_map != NULL;
            if (t_success)
                pthread_setspecific(s_font_map_key, t_font_map);
		}
	
	if (t_success)
		if (t_pango == NULL)
		{
			t_pango = pango_ft2_font_map_create_context((PangoFT2FontMap *) t_font_map);
			t_success = t_pango != NULL;
            if (t_success)
                pthread_setspecific(s_pango_key, t_pango);
		}
	
	if (t_success)
		if (t_layout == NULL)
		{
			t_layout = pango_layout_new(t_pango);
			t_success = t_layout != NULL;
            if (t_success)
                pthread_setspecific(s_layout_key, t_layout);
		}
    
	return t_success;
}
Пример #7
0
FontSupport::FontSupport(WPaintDevice *paintDevice, EnabledFontFormats enabledFontFormats)
  : device_(paintDevice),
    enabledFontFormats_(enabledFontFormats),
    cache_(10)
{
  PANGO_LOCK;

  if (!pangoFontMap) {
    pangoFontMap = pango_ft2_font_map_new();

    pango_ft2_font_map_set_default_substitute(PANGO_FT2_FONT_MAP(pangoFontMap),
	addTrueTypePattern, NULL, NULL);
  }

#if PANGO_VERSION_MAJOR > 1 || PANGO_VERSION_MINOR > 21
  context_ = pango_font_map_create_context(pangoFontMap);
#else
  context_ = pango_ft2_font_map_create_context(PANGO_FT2_FONT_MAP(pangoFontMap));
#endif

  currentFont_ = nullptr;
}
Пример #8
0
static bool lnx_pango_initialize(void)
{
	bool t_success;
	t_success = true;
	
	// MW-2013-12-19: [[ Bug 11559 ]] Use '=' not '=='!
	if (t_success)
		t_success =
			initialise_weak_link_pango() != 0 &&
			initialise_weak_link_pangoft2() != 0 &&
			initialise_weak_link_gobject() != 0 &&
			initialise_weak_link_glib() != 0;
	
	if (t_success)
		if (s_font_map == NULL)
		{
			s_font_map = pango_ft2_font_map_new();
			t_success = s_font_map != NULL;
		}
	
	if (t_success)
		if (s_pango == NULL)
		{
			s_pango = pango_ft2_font_map_create_context((PangoFT2FontMap *) s_font_map);
			t_success = s_pango != nil;
		}	
	
	if (t_success)		
		if (s_layout == NULL)
		{
			s_layout = pango_layout_new(s_pango);
			t_success = s_layout != NULL;
		}
	
	return t_success;
}
Пример #9
0
static PangoContext *
pangoft2_view_get_context (gpointer instance)
{
  return pango_ft2_font_map_create_context (PANGO_FT2_FONT_MAP (instance));
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont
  (JNIEnv *env, jobject self, jstring family_name_str, jint style_int, jint size, jboolean useGraphics2D)
{
  struct peerfont *pfont = NULL;
  char const *family_name = NULL;
  enum java_awt_font_style style;
  PangoFT2FontMap *ft2_map;

  gdk_threads_enter ();
  style = (enum java_awt_font_style) style_int;

  g_assert (self != NULL);
  pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self);
  g_assert (pfont != NULL);

  if (pfont->ctx != NULL)
    g_object_unref (pfont->ctx);
  if (pfont->font != NULL)
    g_object_unref (pfont->font);
  if (pfont->desc != NULL)
    pango_font_description_free (pfont->desc);

  pfont->desc = pango_font_description_new ();
  g_assert (pfont->desc != NULL);

  family_name = (*env)->GetStringUTFChars(env, family_name_str, 0);
  g_assert (family_name != NULL);
  pango_font_description_set_family (pfont->desc, family_name);
  (*env)->ReleaseStringUTFChars(env, family_name_str, family_name);


  if (style & java_awt_font_BOLD)
    pango_font_description_set_weight (pfont->desc, PANGO_WEIGHT_BOLD);

  if (style & java_awt_font_ITALIC)
    pango_font_description_set_style (pfont->desc, PANGO_STYLE_ITALIC);

  if (useGraphics2D)
    {
      pango_font_description_set_size (pfont->desc, size * PANGO_SCALE);
      if (pfont->ctx == NULL)
	{
	  ft2_map = PANGO_FT2_FONT_MAP(pango_ft2_font_map_for_display ());
	  pfont->ctx = pango_ft2_font_map_create_context (ft2_map);
	}
    }
  else
    {
      /* GDK uses a slightly different DPI setting. */
      pango_font_description_set_size (pfont->desc, 
				       size * dpi_conversion_factor);
      if (pfont->ctx == NULL)
	pfont->ctx = gdk_pango_context_get();
    }

  g_assert (pfont->ctx != NULL);
  
  if (pfont->font != NULL)
    {
      g_object_unref (pfont->font);
      pfont->font = NULL;
    }
  
  pango_context_set_font_description (pfont->ctx, pfont->desc);
  pango_context_set_language (pfont->ctx, gtk_get_default_language());
  pfont->font = pango_context_load_font (pfont->ctx, pfont->desc);
  g_assert (pfont->font != NULL);

  if (pfont->layout == NULL)
    pfont->layout = pango_layout_new (pfont->ctx);
  g_assert (pfont->layout != NULL);

  gdk_threads_leave ();
}