示例#1
0
文件: spectrum.c 项目: sedwards/xmms3
static void sanalyzer_init(void)
{
	GdkColor color;
	int i;
	if(window)
		return;
	window = gtk_window_new(GTK_WINDOW_DIALOG);
	gtk_window_set_title(GTK_WINDOW(window),_("Spectrum analyzer"));
	gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
	gtk_widget_realize(window);
	bg_pixmap = gdk_pixmap_create_from_xpm_d(window->window,NULL,NULL,sanalyzer_xmms_logo_xpm);
	gdk_window_set_back_pixmap(window->window,bg_pixmap,0);
	gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(sanalyzer_destroy_cb),NULL);
	gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window);
	gtk_widget_set_usize(window, WIDTH, HEIGHT);
	gc = gdk_gc_new(window->window);
	draw_pixmap = gdk_pixmap_new(window->window,WIDTH,HEIGHT,gdk_rgb_get_visual()->depth);
	
	bar = gdk_pixmap_new(window->window,25, HEIGHT, gdk_rgb_get_visual()->depth);
	for(i = 0; i < HEIGHT / 2; i++)
	{
		color.red = 0xFFFF;
		color.green = ((i * 255) / (HEIGHT / 2)) << 8;
		color.blue = 0;
		
		gdk_color_alloc(gdk_colormap_get_system(),&color);
		gdk_gc_set_foreground(gc,&color);
		gdk_draw_line(bar,gc,0,i,24,i);
	}
	for(i = 0; i < HEIGHT / 2; i++)
	{
		color.red = (255 - ((i * 255) / (HEIGHT / 2))) <<8;
		color.green = 0xFFFF;
		color.blue = 0;
		
		gdk_color_alloc(gdk_colormap_get_system(),&color);
		gdk_gc_set_foreground(gc,&color);
		gdk_draw_line(bar,gc,0,i + (HEIGHT / 2),24,i + (HEIGHT / 2));
	}
	scale = HEIGHT / log(256);
	gdk_color_black(gdk_colormap_get_system(),&color);
	gdk_gc_set_foreground(gc,&color);
	
	area = gtk_drawing_area_new();
	gtk_container_add(GTK_CONTAINER(window),area);
	gtk_widget_realize(area);
	gdk_window_set_back_pixmap(area->window,bg_pixmap,0);
	
	gtk_widget_show(area);
	gtk_widget_show(window);
	gdk_window_clear(window->window);
	gdk_window_clear(area->window);
}
static void
gs_theme_engine_clear (GtkWidget *widget)
{
	GdkColor     color = { 0, 0x0000, 0x0000, 0x0000 };
	GdkColormap *colormap;
	GtkStateType state;

	g_return_if_fail (GS_IS_THEME_ENGINE (widget));

	if (! GTK_WIDGET_VISIBLE (widget))
	{
		return;
	}

	state = (GtkStateType) 0;
	while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg))
	{
		gtk_widget_modify_bg (widget, state, &color);
		state++;
	}

	colormap = gdk_drawable_get_colormap (widget->window);
	gdk_colormap_alloc_color (colormap, &color, FALSE, TRUE);
	gdk_window_set_background (widget->window, &color);
	gdk_window_clear (widget->window);
	gdk_flush ();
}
示例#3
0
/*!
  \brief highlight_tinfo() highlights the trace info box on the left side 
  of the logviewer when the mouse goes in there..
  \param tnum is the trace number starting from 0
  \param state if set we highlight the target trace info box
  */
G_MODULE_EXPORT void highlight_tinfo(gint tnum, gboolean state)
{
	GdkRectangle rect;
	extern Logview_Data *lv_data;
	GdkWindow *window = gtk_widget_get_window(lv_data->darea);

	rect.x = 0;
	rect.y = lv_data->spread*tnum;
	rect.width =  lv_data->info_width-1;
	rect.height = lv_data->spread;

	if (state)
		gdk_draw_rectangle(lv_data->pixmap,
				lv_data->highlight_gc,
				FALSE, rect.x,rect.y,
				rect.width,rect.height);
	else
		gdk_draw_rectangle(lv_data->pixmap,
				gtk_widget_get_style(lv_data->darea)->white_gc,
				FALSE, rect.x,rect.y,
				rect.width,rect.height);

	rect.width+=1;
	rect.height+=1;

	gdk_window_clear(window);

	return;

}
示例#4
0
文件: spectrum.c 项目: sedwards/xmms3
static gint draw_func(gpointer data)
{
	gint i;
	
	if(!window)
	{
		timeout_tag = 0;
		return FALSE;
	}
	
	GDK_THREADS_ENTER();
	gdk_draw_rectangle(draw_pixmap,gc,TRUE,0,0,WIDTH,HEIGHT);

	
	for(i = 0; i < NUM_BANDS; i++)
	{
		/*if(bar_heights[i] > 4)
			bar_heights[i] -= 4;
		else
			bar_heights[i] = 0;*/
		gdk_draw_pixmap(draw_pixmap,gc,bar, 0,HEIGHT - 1 - bar_heights[i], i * (WIDTH / NUM_BANDS), HEIGHT - 1 - bar_heights[i], (WIDTH / NUM_BANDS) - 1, bar_heights[i]);
		
	}
	gdk_window_clear(area->window);
	GDK_THREADS_LEAVE();
	
	return TRUE;
}
示例#5
0
void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style)
{
    if (m_hasBgCol && m_backgroundColour.Ok())
    {
        GdkWindow *window = GTK_WIDGET(m_list)->window;
        if ( window )
        {
            m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
            gdk_window_set_background( window, m_backgroundColour.GetColor() );
            gdk_window_clear( window );
        }
    }

    GList *child = m_list->children;
    while (child)
    {
        gtk_widget_modify_style( GTK_WIDGET(child->data), style );

        GtkBin *bin = GTK_BIN( child->data );
        GtkWidget *label = GTK_WIDGET( bin->child );
        gtk_widget_modify_style( label, style );

        child = child->next;
    }
}
示例#6
0
/* logo_add */
static int _logo_add(Logo * logo, GdkWindow * window)
{
	LogoWindow * p;
#if GTK_CHECK_VERSION(3, 4, 0)
	GdkRGBA color = { 0.0, 0.0, 0.0, 0.0 };
#else
	GdkColor color = { 0x0, 0x0, 0x0, 0x0 };
#endif

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s() window=%p\n", __func__, (void *)window);
#endif
	if((p = realloc(logo->windows, sizeof(*p) * (logo->windows_cnt + 1)))
			== NULL)
		return -1;
	logo->windows = p;
	/* set the default color */
#if GTK_CHECK_VERSION(3, 4, 0)
	gdk_window_set_background_rgba(window, &color);
#else
	gdk_window_set_background(window, &color);
	gdk_window_clear(window);
#endif
	logo->windows[logo->windows_cnt].window = window;
	logo->windows[logo->windows_cnt].frame = NULL;
#if GTK_CHECK_VERSION(3, 0, 0)
	logo->windows[logo->windows_cnt++].cairo = gdk_cairo_create(window);
#else
	logo->windows[logo->windows_cnt++].pixmap = NULL;
#endif
	return 0;
}
示例#7
0
文件: buttons.c 项目: UIKit0/eXtace
gint scope_mode(GtkWidget *widget, gpointer data)
{
    int i=GPOINTER_TO_INT(data);
    switch((ScopeMode) i)
    {
    case DOT_SCOPE:
        scope_sub_mode = (ScopeMode) i;
        break;
    case LINE_SCOPE:
        scope_sub_mode = (ScopeMode) i;
        break;
    case GRAD_SCOPE:
        scope_sub_mode = (ScopeMode) i;
        break;
    default:
        break;
    }
    if (mode == SCOPE)
    {
        gdk_draw_rectangle(main_pixmap,
                           main_display->style->black_gc,
                           TRUE, 0,0,
                           width,height);
        gdk_window_clear(main_display->window);
    }
    return 0;
}
示例#8
0
/*!
 \brief gets called to redraw the entire display manually
 \param gauge (MtxPieGauge *) pointer to the gauge object
 */
void mtx_pie_gauge_redraw (MtxPieGauge *gauge)
{
	if (!GTK_WIDGET(gauge)->window) return;

	update_pie_gauge_position(gauge);
	gdk_window_clear(GTK_WIDGET(gauge)->window);
}
示例#9
0
static gboolean
gtk_vkb_button_expose (GtkWidget *widget, GdkEventExpose *event)
{
	GtkVkbButton *button = GTK_VKB_BUTTON(widget);
	GtkWidget *child;
	GList *children;
	GList *tmplist;

	g_return_val_if_fail(widget != NULL, FALSE);
	g_return_val_if_fail (GTK_IS_VKB_BUTTON(widget), FALSE);
	g_return_val_if_fail (event != NULL, FALSE);

	if(GTK_WIDGET_DRAWABLE(widget)){
		GtkStateType state = GTK_WIDGET_STATE(widget);
		if (!button->bg_pixmap) {
			gdk_window_set_background(widget->window, &button->bgcolor[state]);
			gdk_window_clear(widget->window);
		}

		children = gtk_container_get_children(GTK_CONTAINER(widget));
		tmplist = children;
		while (tmplist) {
			child = GTK_WIDGET(tmplist->data);
			tmplist = tmplist->next;
			gtk_container_propagate_expose(GTK_CONTAINER(widget),
							child, event);
		}

		g_list_free(children);
	}

	return FALSE;
}
示例#10
0
bool wxTextCtrl::SetBackgroundColour( const wxColour &colour )
{
    wxCHECK_MSG( m_text != NULL, false, wxT("invalid text ctrl") );

    if ( !wxControl::SetBackgroundColour( colour ) )
        return false;

    if (!m_widget->window)
        return false;

    if (!m_backgroundColour.IsOk())
        return false;

    if (m_windowStyle & wxTE_MULTILINE)
    {
        GdkWindow *window = GTK_TEXT(m_text)->text_area;
        if (!window)
            return false;
        m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
        gdk_window_set_background( window, m_backgroundColour.GetColor() );
        gdk_window_clear( window );
    }

    // change active background color too
    m_defaultStyle.SetBackgroundColour( colour );

    return true;
}
示例#11
0
void
meta_image_window_set (MetaImageWindow *iw,
                       GdkPixbuf       *pixbuf,
                       int              x,
                       int              y)
{
  /* We use a back pixmap to avoid having to handle exposes, because
   * it's really too slow for large clients being minimized, etc.
   * and this way flicker is genuinely zero.
   */

  gdk_draw_pixbuf (iw->pixmap,
                   iw->window->style->black_gc,
		   pixbuf,
                   0, 0,
                   0, 0,
                   gdk_pixbuf_get_width (pixbuf),
                   gdk_pixbuf_get_height (pixbuf),
                   GDK_RGB_DITHER_NORMAL,
                   0, 0);

  gdk_window_set_back_pixmap (iw->window->window,
                              iw->pixmap,
                              FALSE);
  
  gdk_window_move_resize (iw->window->window,
                          x, y,
                          gdk_pixbuf_get_width (pixbuf),
                          gdk_pixbuf_get_height (pixbuf));

  gdk_window_clear (iw->window->window);
}
示例#12
0
文件: spectrum.c 项目: sedwards/xmms3
static void sanalyzer_playback_stop(void)
{
	if(GTK_WIDGET_REALIZED(area))
	{
		gdk_window_set_back_pixmap(area->window,bg_pixmap,0);
		gdk_window_clear(area->window);
	}
}
static void
preview_clear (GtkWidget *widget)
{
	GdkColor color = { 0, 0, 0 };

	gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &color);
	gdk_window_clear (widget->window);
}
示例#14
0
文件: spectrum.c 项目: sedwards/xmms3
static void sanalyzer_playback_start(void)
{
	if(window)
	{
		gdk_window_set_back_pixmap(area->window,draw_pixmap,0);
		gdk_window_clear(area->window);
	}
}
示例#15
0
/*!
 \brief gets called to redraw the entire display manually
 \param chart (MtxStripChart *) pointer to the chart object
 */
void mtx_stripchart_redraw (MtxStripChart *chart)
{
	if (!GTK_WIDGET(chart)->window) return;

	update_stripchart_position(chart);
	render_marker(chart);
	gdk_window_clear(GTK_WIDGET(chart)->window);
}
示例#16
0
/* Init function. Here we setup all the gtk stuff */
static GtkWidget *init_fftscope_window()
{
	GtkWidget *fftscope_win;
	GtkStyle *style;
	GdkColor color;
	guint32 colors[129];
	int i;

	pthread_mutex_init(&fftscope_mutex, NULL);

	style = gtk_style_new();
	fftscope_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(fftscope_win), "FFTscope");
	gtk_widget_set_usize(fftscope_win, 256, SCOPE_HEIGHT);
	gtk_window_set_wmclass(GTK_WINDOW(fftscope_win), "FFTscope",
			       "AlsaPlayer");
	gtk_window_set_policy(GTK_WINDOW(fftscope_win), FALSE, FALSE,
			      FALSE);
	style =
	    gtk_style_copy(gtk_widget_get_style(GTK_WIDGET(fftscope_win)));

	color.red = SCOPE_BG_RED << 8;
	color.blue = SCOPE_BG_BLUE << 8;
	color.green = SCOPE_BG_GREEN << 8;
	gdk_color_alloc(gdk_colormap_get_system(), &color);
	gtk_widget_set_style(GTK_WIDGET(fftscope_win), style);

	for (i = 0; i < 32; i++) {
		colors[i * 2] = colors[i * 2 + 1] =
		    ((i * 8) << 16) + (255 << 8);
		colors[i * 2 + 64] = colors[i * 2 + 65] =
		    (255 << 16) + (((31 - i) * 8) << 8);
	}
	colors[128] = 0;
	color_map = gdk_rgb_cmap_new(colors, 129);
	area = gtk_drawing_area_new();
	gtk_container_add(GTK_CONTAINER(fftscope_win), area);
	gtk_widget_realize(area);
	gdk_window_set_background(area->window, &color);

	gtk_widget_show(area);
	gtk_widget_show(fftscope_win);

	/* Signals */

	gtk_signal_connect(GTK_OBJECT(fftscope_win), "delete_event",
			   GTK_SIGNAL_FUNC(close_fftscope_window),
			   fftscope_win);


	/* Clear and show the window */
	gdk_window_clear(fftscope_win->window);
	gdk_flush();

	ready_state = 1;

	return fftscope_win;
}
示例#17
0
/*!
 \brief gets called to redraw the entire display manually
 \param chart is the pointer to the chart object
 */
void mtx_stripchart_redraw (MtxStripChart *chart)
{
	GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(chart));
	if (!window) 
		return;

	update_stripchart_position(chart);
	render_marker(chart);
	gdk_window_clear(window);
}
示例#18
0
文件: yuiviewer.c 项目: GPDP2/yabause
void yui_viewer_draw_pixbuf(YuiViewer * yv, GdkPixbuf * pixbuf, int w, int h) {
    if (yv->pixbuf) {
        g_object_unref(yv->pixbuf);
    }
    yv->pixbuf = g_object_ref(pixbuf);
    yv->w = w;
    yv->h = h;
    gdk_window_clear(GTK_WIDGET(yv)->window);
    gtk_widget_queue_draw_area(GTK_WIDGET(yv), 0, 0, w, h);
}
示例#19
0
/*! 
  \brief lv_configure_event() is the logviewer configure event that gets called
  whenever the display is resized or created
  \param widget is the pointer to widget receiving event
  \param event is the pointer to Config event structure
  \param data is unused)
  \returns FALSE
  */
G_MODULE_EXPORT gboolean lv_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
{
	GdkPixmap *pixmap = NULL;
	GdkPixmap *pmap = NULL;
	GtkAllocation allocation;
	GdkWindow *window = gtk_widget_get_window(widget);

	gtk_widget_get_allocation(widget,&allocation);
	/* Get pointer to backing pixmap ... */
	if (!lv_data)
	{
		lv_data = g_new0(Logview_Data,1);
		lv_data->traces = g_hash_table_new(g_str_hash,g_str_equal);
	}
	pixmap = lv_data->pixmap;
	pmap = lv_data->pmap;
			
	if (window)
	{
		if (pixmap)
			g_object_unref(pixmap);

		if (pmap)
			g_object_unref(pmap);

		gint w = allocation.width;
		gint h = allocation.height;
		pixmap=gdk_pixmap_new(window,
				w,h,
				gtk_widget_get_visual(widget)->depth);
		gdk_draw_rectangle(pixmap,
				gtk_widget_get_style(widget)->black_gc,
				TRUE, 0,0,
				w,h);
		pmap=gdk_pixmap_new(window,
				w,h,
				gtk_widget_get_visual(widget)->depth);
		gdk_draw_rectangle(pmap,
				gtk_widget_get_style(widget)->black_gc,
				TRUE, 0,0,
				w,h);
		gdk_window_set_back_pixmap(window,pixmap,0);
		lv_data->pixmap = pixmap;
		lv_data->pmap = pmap;

		if ((lv_data->traces) && (g_list_length(lv_data->tlist) > 0))
		{
			draw_infotext();
			trace_update(TRUE);
		}
		gdk_window_clear(window);
	}

	return FALSE;
}
示例#20
0
void
draw_preview_image (gint docompute)
{
  gint startx, starty, pw, ph;
  GdkColor  color;

  color.red   = 0x0;
  color.green = 0x0;
  color.blue  = 0x0;
  gdk_gc_set_rgb_bg_color (gc, &color);

  color.red   = 0xFFFF;
  color.green = 0xFFFF;
  color.blue  = 0xFFFF;
  gdk_gc_set_rgb_fg_color (gc, &color);

  gdk_gc_set_function (gc, GDK_COPY);
  linetab[0].x1 = -1;

  pw = PREVIEW_WIDTH * mapvals.zoom;
  ph = PREVIEW_HEIGHT * mapvals.zoom;
  startx = (PREVIEW_WIDTH - pw) / 2;
  starty = (PREVIEW_HEIGHT - ph) / 2;

  if (docompute == TRUE)
    {
      GdkDisplay *display = gtk_widget_get_display (previewarea);
      GdkCursor  *cursor;

      cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
      gdk_window_set_cursor (previewarea->window, cursor);
      gdk_cursor_unref (cursor);

      compute_preview (0, 0, width - 1, height - 1, pw, ph);

      cursor = gdk_cursor_new_for_display (display, GDK_HAND2);
      gdk_window_set_cursor(previewarea->window, cursor);
      gdk_cursor_unref (cursor);

      clear_light_marker ();
    }

  if (pw != PREVIEW_WIDTH || ph != PREVIEW_HEIGHT)
    gdk_window_clear (previewarea->window);

  gdk_draw_rgb_image (previewarea->window, gc,
                      startx, starty, pw, ph,
                      GDK_RGB_DITHER_MAX,
                      preview_rgb_data, 3 * pw);

  draw_lights (startx, starty, pw, ph);
}
static void
draw_background (MateBGCrossfade *fade)
{
	if (GDK_WINDOW_TYPE (fade->priv->window) == GDK_WINDOW_ROOT) {
		GdkDisplay *display;
		display = gdk_drawable_get_display (fade->priv->window);
		gdk_window_clear (fade->priv->window);
		gdk_flush ();
	} else {
		gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE);
		gdk_window_process_updates (fade->priv->window, FALSE);
	}
}
示例#22
0
static gboolean
preview_expose (GtkWidget      *widget,
		GdkEventExpose *event,
		gpointer        data)
{
  PreviewOp *pop = data;

  gdk_window_clear (pop->area->window);
  gtk_print_operation_preview_render_page (pop->preview,
					   pop->page - 1);

  return TRUE;
}
示例#23
0
/*!
  Flushes the display buffer.
  It's necessary to use this function to see the results of any drawing.
*/
void vpDisplayGTK::flushDisplay()
{
  if (displayHasBeenInitialized)
  {
    gdk_window_clear(widget->window);
    gdk_flush();
  }
  else
  {
    vpERROR_TRACE("GTK not initialized " ) ;
    throw(vpDisplayException(vpDisplayException::notInitializedError,
                             "GTK not initialized")) ;
  }
}
示例#24
0
/*!
  Flushes the display buffer.
  It's necessary to use this function to see the results of any drawing.
*/
void vpDisplayGTK::flushDisplayROI(const vpImagePoint &/*iP*/, const unsigned int /*width*/, const unsigned int /*height*/)
{
  if (displayHasBeenInitialized)
  {
    gdk_window_clear(widget->window);
    gdk_flush();
  }
  else
  {
    vpERROR_TRACE("GTK not initialized " ) ;
    throw(vpDisplayException(vpDisplayException::notInitializedError,
                             "GTK not initialized")) ;
  }
}
示例#25
0
void MdispGtkView::Paint()
   {
   GdkColor textColor;
   if(!m_MilDisplay)
      {
      /* red color */
      textColor.red  = 65535;
      textColor.green = 0;
      textColor.blue = 0;
      gdk_window_clear(GDK_WINDOW(m_window->window));
      m_cf->DrawText("Display Allocation Failed",(m_imageSizeX/2),10,textColor);
      }
   else if(m_isWindowed)
      {
      if(m_isX11AnnotationsEnabled)
         {
         /* pink color */
         textColor.red  = 65535;
         textColor.green = 0;
         textColor.blue = 65535;         
         m_cf->DrawText("Window Annotation",
                        (m_isFillDisplayEnabled)?(m_window->allocation.width/2):(m_imageSizeX/2),
                        10,
                        textColor);
         }
      }
   else
      {
      /* black color */
      textColor.red  = 0;
      textColor.green = 0;
      textColor.blue = 0;         
      gdk_window_clear(GDK_WINDOW(m_window->window));
      m_cf->DrawText("Image Displayed on external Screen",(m_imageSizeX/2),10,textColor);
      }
   }
示例#26
0
  static void
set_bg(GtkWidget *widget, panel *p)
{
    ENTER;
    if (p->gtopbg)
        g_object_unref(p->gtopbg);
    p->gtopbg = bg_new_for_win(p->topxwin);

    modify_drawable(p->gtopbg, p->topgwin->style->black_gc, p->tintcolor, p->alpha);

    gdk_window_set_back_pixmap(p->topgwin->window, p->gtopbg, FALSE);
    gdk_window_clear(p->topgwin->window);
    gtk_widget_queue_draw_area (p->topgwin, 0, 0, 2000, 2000);
    RET();
}
示例#27
0
void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style)
{
    if (m_hasBgCol && m_backgroundColour.Ok())
    {
        GdkWindow *window = gtk_tree_view_get_bin_window(m_treeview);
        if (window)
        {
            m_backgroundColour.CalcPixel( gdk_drawable_get_colormap( window ) );
            gdk_window_set_background( window, m_backgroundColour.GetColor() );
            gdk_window_clear( window );
        }
    }

    gtk_widget_modify_style( GTK_WIDGET(m_treeview), style );
}
示例#28
0
文件: blursk.cpp 项目: PyroOS/Pyro
static void blursk_playback_stop(void)
{
	
	if (config.fullscreen_revert)
	{
#if HAVE_XV
		xv_end();
#endif
		if (can_fullscreen)
			xmms_fullscreen_cleanup(blursk_window);
		fullscreen_method = NULL;
	}

	if(GTK_WIDGET_REALIZED(area))
		gdk_window_clear(area->window);
}
示例#29
0
int
clip_GDK_WINDOWCLEAR(ClipMachine * cm)
{
	C_widget    *cwin = _fetch_cw_arg(cm);
	GdkWindow *win = NULL;

	CHECKCWID(cwin,GTK_IS_WIDGET);

	if (cwin && cwin->widget) win = cwin->widget->window;

	gdk_window_clear(win);

	return 0;
err:
	return 1;
}
示例#30
0
static gboolean touchscreen_callback(GtkWidget *widget, GdkEventMotion *event)
{
	GdkGC *gc;
	PangoLayout *layout;
	char buf[64];

	sprintf(buf, "<span size=\"30000\">[%d, %d]</span>",
		(int)event->x, (int)event->y);
	gdk_window_clear(widget->window);
	gc = gdk_gc_new(widget->window);

	layout = gtk_widget_create_pango_layout(widget, "");
	pango_layout_set_markup(layout, buf, -1);
	gdk_draw_layout(widget->window, gc, 80, 80, layout);
	g_object_unref(layout);
	gdk_gc_destroy(gc);

	return TRUE;
}