Example #1
0
static void scope_realize(GtkWidget *widget)
{
	Scope *scope;
	GdkWindowAttr attributes;
	gint attributes_mask;
	GdkGCValues gc_values;
	GtkAllocation allocation;
	GdkWindow *window;
	GtkStyle *style;

	g_return_if_fail(widget != NULL);
	g_return_if_fail(IS_SCOPE(widget));

	scope = SCOPE(widget);
	gtk_widget_set_realized(widget, TRUE);
	gtk_widget_get_allocation(widget, &allocation);

	attributes.window_type = GDK_WINDOW_CHILD;
	attributes.x = allocation.x;
	attributes.y = allocation.y;
	attributes.width = allocation.width;
	attributes.height = allocation.height;
	attributes.wclass = GDK_INPUT_OUTPUT;
	attributes.visual = gtk_widget_get_visual(widget);
	attributes.colormap = gtk_widget_get_colormap(widget);
	attributes.event_mask = gtk_widget_get_events(widget) | GDK_EXPOSURE_MASK;

	attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;

	gtk_widget_set_has_window(widget, TRUE);
	window = gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attributes_mask);
	gtk_widget_set_window(widget, window);
	gdk_window_set_user_data(window, scope);

	gtk_widget_style_attach(widget);
	style = gtk_widget_get_style(widget);
	gtk_style_set_background(style, window, GTK_STATE_NORMAL);

	/* gc's if necessary */
	if (!gdk_colormap_alloc_color(style->colormap, &scope->tracecol,
				      FALSE, TRUE))
		g_warning("unable to allocate color: ( %d %d %d )",
			  scope->tracecol.red, scope->tracecol.green, scope->tracecol.blue);
	gc_values.foreground = scope->tracecol;
	scope->trace_gc = gtk_gc_get(style->depth, 
				    style->colormap,
				    &gc_values, GDK_GC_FOREGROUND);
	if (!gdk_colormap_alloc_color(style->colormap, &scope->gridcol,
				      FALSE, TRUE))
		g_warning("unable to allocate color: ( %d %d %d )",
			  scope->gridcol.red, scope->gridcol.green, scope->gridcol.blue);
	gc_values.foreground = scope->gridcol;
	scope->grid_gc = gtk_gc_get(style->depth,
				   style->colormap,
				   &gc_values, GDK_GC_FOREGROUND);
	/* create backing store */
	scope->pixmap = gdk_pixmap_new(window, SCOPE_WIDTH, SCOPE_HEIGHT, -1);

	scope_send_configure(SCOPE(widget));
}
Example #2
0
GdkGC *
new_color_gc (GtkStyle * style, GdkColor * color)
{
  GdkGCValues gc_values;
  GdkColormap *cmap = style->colormap;
  gint depth = style->depth;
  
  if (!(cmap)) {
    cmap = gdk_colormap_get_system();
    depth = gdk_colormap_get_visual(cmap)->depth;
  }
  
  gdk_colormap_alloc_color (cmap, color, FALSE, TRUE);

  gc_values.foreground = *color;

  return gtk_gc_get (depth, cmap,
		     &gc_values, GDK_GC_FOREGROUND);
}
Example #3
0
static void _mt_gc_set_foreground(MT_GC *gc, MT_COLOR *col)
{
   GdkGCValues gc_values;
   GdkGCValuesMask gc_values_mask;
   GdkColor color;
   GdkGC *gdkgc;
   MT_GTK_GC *mtgc = (MT_GTK_GC *)gc;
   
   color.red = col->r * 256;
   color.green = col->g * 256;
   color.blue = col->b * 256;
   if (!gdk_colormap_alloc_color(GTK_STYLE(mt_style)->colormap, &color, FALSE, TRUE)) return;
   
   gc_values_mask = GDK_GC_FOREGROUND;
   gc_values.foreground = color;
   gdkgc = gtk_gc_get(GTK_STYLE(mt_style)->depth, GTK_STYLE(mt_style)->colormap, &gc_values, gc_values_mask);

   gtk_gc_release(mtgc->gc);
   mtgc->gc = gdkgc;
}
Example #4
0
static MT_GC *_mt_gc_new_with_foreground(MT_COLOR *col)
{
   GdkGCValues gc_values;
   GdkGCValuesMask gc_values_mask;
   GdkColor color;
   GdkGC *gc;
   MT_GTK_GC *mtgc;
   
   color.red = col->r * 256;
   color.green = col->g * 256;
   color.blue = col->b * 256;
   if (!gdk_colormap_alloc_color(GTK_STYLE(mt_style)->colormap, &color, FALSE, TRUE)) return NULL;
   
   gc_values_mask = GDK_GC_FOREGROUND;
   gc_values.foreground = color;
   gc = gtk_gc_get(GTK_STYLE(mt_style)->depth, GTK_STYLE(mt_style)->colormap, &gc_values, gc_values_mask);

   mtgc = (MT_GC *)malloc(sizeof(MT_GTK_GC));
   mtgc->gc = gc;
   mtgc->clip.width = -1;
   mtgc->clip.height = -1;
   return mtgc;
}