Re: Using Pango or Cairo with GTK on DirectFB



Hi

could you please provide a working version of this application?

many thanks

Attilio

Dennis Hall ha scritto:
I'm having trouble with refresh when I used either Pango or Cairo calls with GTK over Direct FB.  I've 
modified the scribble.c sample so that some test text is drawn using pango when a button pressed or a 
movement event occurs but I don't see the text unless I press the meta key (or windows key depending on the 
keyboard) and move the entire region.  It looks like this causes the whole drawing area to be refreshed.

Can anyone explain the concepts or have documentation pointers or better yet a fix for this problem?

gint col_select = 0;
char *szText = "Test String";
int lenText = 11;

/* Draw a rectangle on the screen */
static void draw_brush( GtkWidget *widget,
                        gdouble    x,
                        gdouble    y)
{
  GdkRectangle update_rect;
  GdkColor fgColor;

  update_rect.x = x - 5;
  update_rect.y = y - 5;
  update_rect.width = RECT_WIDTH;
  update_rect.height = RECT_HEIGHT;

  gdk_color_parse(colorStrings[col_select], &fgColor);

 gint col_select = 0;
char *szText = "Test String"; int lenText = 11;

/* Draw a rectangle on the screen */
static void draw_brush( GtkWidget *widget,
                        gdouble    x,
                        gdouble    y)
{
  GdkRectangle update_rect;
  GdkColor fgColor;

  update_rect.x = x - 5;
  update_rect.y = y - 5;
  update_rect.width = RECT_WIDTH;
  update_rect.height = RECT_HEIGHT;

  gdk_color_parse(colorStrings[col_select], &fgColor);



  GdkWindow* root = gdk_get_default_root_window();
  GdkGC* cg = gdk_gc_new(root);
PangoLayout *pLayout = gtk_widget_create_pango_layout( widget, 0); pango_layout_set_text(pLayout, szText, /* lenText */ -1);

  if (!gdk_colormap_alloc_color(
       gdk_colormap_get_system (),
       &fgColor, TRUE, TRUE)
  ) {/*ERROR: NO gdk_colormap_alloc_color*/}

  gdk_draw_layout_with_colors( widget->window ,
cg, x+2, y+2,
        pLayout,
        &fgColor /* NULL */,
        NULL
        );

  g_object_unref(pLayout);

  gdk_draw_rectangle (pixmap,
                      widget->style->black_gc,
                      TRUE,
                      update_rect.x, update_rect.y,
                      update_rect.width, update_rect.height);

  gtk_widget_queue_draw_area (widget,
                              update_rect.x, update_rect.y,
                              update_rect.width, update_rect.height);

  if (col_select==MAX_COL_STRINGS)
      col_select = 0;
  else
      col_select++;

}

static gboolean button_press_event( GtkWidget      *widget,
                                    GdkEventButton *event )
{
  if (event->button == 1 && pixmap != NULL)
    draw_brush (widget, event->x, event->y);

  return TRUE;
}


_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]