LINUX.ORG.RU

Подробная документация к GTK(GDK,Pango)?


0

0

Есть ли где-нить подробная документация с примерами к GTK,GDK и Pango? А то я не нашел (/usr/share/gtk-doc - НЕ подробная документация). Или скажите, как вывести простой текст без видимости главного окна? Как я понял, надо просто создать окно, но не показывать его. А текст вывести функцией gdk_draw_layout. Только у меня проблемы с аргументами. Идея-то правильная?

★★★★★

Ответ на: комментарий от anonymous

Надо не API, а типа tutorial'а с подробными примерами. А то на gtk.org какой-то древний лежит.

init ★★★★★
() автор топика
Ответ на: комментарий от init

#include <gtk/gtk.h>

int main( int   argc, 
          char *argv[] )
{
  GtkWidget *window;

  GdkPixmap* pixmap;
  GdkPixmap* pixbuf_pixmap;
  GdkBitmap* mask;
  GdkPixbuf* pixbuf;
  GdkPixbuf* alpha_pixbuf;
  
  PangoLayout *layout;
  PangoFontDescription *font_desc;
  
  int width, height;
    
  gtk_init (&argc, &argv);
  
  window = gtk_window_new (GTK_WINDOW_POPUP);
  /* We should init colormap and layout */
  gtk_widget_realize (window);
  
  /* Prepare layout */
  layout = gtk_widget_create_pango_layout (window, "Hello World");

  font_desc = pango_font_description_from_string ("Helvetica");
  pango_font_description_set_size (font_desc, 30 * PANGO_SCALE);
  pango_layout_set_font_description (layout, font_desc);
  pango_font_description_free (font_desc);
  
  pango_layout_get_pixel_size (layout, &width, &height);
  
  gtk_widget_set_size_request (window, width, height);
  gtk_window_set_position (GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);

  /* Draw pixmap */
  pixmap = gdk_pixmap_new (window->window,  width, height, -1);  
  gdk_draw_rectangle (pixmap, window->style->white_gc, TRUE,0, 0, width, height);
  gdk_draw_layout (pixmap, window->style->black_gc, 0, 0, layout);

  /* Get mask by applying alpha to pixbuf */
  pixbuf = gdk_pixbuf_get_from_drawable (NULL, pixmap, NULL, 0, 0, 0, 0, width, height);
  alpha_pixbuf = gdk_pixbuf_add_alpha (pixbuf, TRUE, 255, 255, 255);
  gdk_pixbuf_render_pixmap_and_mask (alpha_pixbuf, &pixbuf_pixmap, &mask, 100);
  gtk_widget_shape_combine_mask (window, mask, 0, 0);
  g_object_unref (pixbuf);
  g_object_unref (alpha_pixbuf);

  gtk_widget_show (window);
  gtk_main ();
  
  return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, это как раз то, что нужно. :)

init ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.