Exemple #1
0
void free_pixmaps (void)
{
  unsigned i;

  free_pixmap (&update_pix);
  free_pixmap (&refresh_pix);
  free_pixmap (&refrsel_pix);
  free_pixmap (&stop_pix);

  free_pixmap (&connect_pix);
  free_pixmap (&observe_pix);
  free_pixmap (&record_pix);

  free_pixmap (&sfilter_pix);
  free_pixmap (&sfilter_cfg_pix);
  free_pixmap (&pfilter_pix);
  free_pixmap (&pfilter_cfg_pix);

  free_pixmap (&gplus_pix);
  free_pixmap (&rminus_pix);

  free_pixmap (&man_black_pix);
  free_pixmap (&man_red_pix);
  free_pixmap (&man_yellow_pix); // He's actually green

  for (i = 0; i < 3; i++)
    free_pixmap (&group_pix[i]);

  for (i = 0; i < 9; i++)
    free_pixmap (&buddy_pix[i]);

  free_pixmap (&error_pix);
  free_pixmap (&delete_pix);

  for (i = 0; i < 5; i++)
    free_pixmap (&server_status[i]);

  free_pixmap (&locked_pix);

  free_pixmap (&punkbuster_pix);
  free_pixmap (&locked_punkbuster_pix);

  for (i = 0; i < GAMES_TOTAL; i++)
  {
    free_pixmap(games[i].pix);
    g_free(games[i].pix);
    games[i].pix = NULL;
  }

  if (pixmaps_gc) {
    gdk_gc_destroy (pixmaps_gc);
    pixmaps_gc = NULL;
  }

  if (masks_gc) {
    gdk_gc_destroy (masks_gc);
    masks_gc = NULL;
  }
}
Exemple #2
0
GdkBitmap *
arc_clip_mask(gint width,
	      gint height)
{
  GdkBitmap *result;
  GdkGC *gc;
  GdkColor color;

  result = (GdkBitmap *)gdk_pixmap_new(NULL, width, height, 1);
  gc = gdk_gc_new(result);
	
  color.pixel = 0;
  gdk_gc_set_foreground(gc, &color);

  gdk_draw_rectangle(result, gc, TRUE, 0, 0, width, height);
  gdk_draw_rectangle(result, gc, FALSE, 0, 0, width, height);

  color.pixel = 1;
  gdk_gc_set_foreground(gc, &color);

  gdk_draw_arc(result, gc, TRUE, 0, 0, width, height, 0, 360*64);
  gdk_draw_arc(result, gc, FALSE, 0, 0, width, height, 0, 360*64);

  gdk_gc_destroy(gc);

  return result;
}
Exemple #3
0
void SystemDraw::DrawRectOp(int x, int y, int cx, int cy, Color color)
{
	if(IsNull(color))
		return;
	FlushText();
	cairo_rectangle(cr, x, y, cx, cy);
	if(color == InvertColor()) {
#if GTK_CHECK_VERSION(2,24,0) && (CAIRO_VERSION_MAJOR > 1 || CAIRO_VERSION_MINOR > 9)
		SetColor(White());
		cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE);
		cairo_fill(cr);
		cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
#else
		if(drawable) {
			GdkGC *gc = gdk_gc_new(drawable);
	        gdk_gc_set_function(gc, GDK_INVERT);
	        Point o = GetOffset();
	        gdk_draw_drawable(drawable, gc, drawable, x + o.x, y + o.y, x + o.x, y + o.y, cx, cy);
	        gdk_gc_set_function(gc, GDK_COPY);
	        gdk_gc_destroy(gc);
		}
#endif
	}
	else {
		SetColor(color);
		cairo_fill(cr);
	}
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose
  (JNIEnv *env, jobject obj)
{
  struct graphics *g;

  
  g = (struct graphics *) NSA_DEL_PTR (env, obj);

  if (!g) return;		/* dispose has been called more than once */
  
  gdk_threads_enter ();
  XFlush (GDK_DISPLAY ());

  gdk_gc_destroy (g->gc);

  if (GDK_STABLE_IS_PIXMAP (g->drawable))
    gdk_pixmap_unref (g->drawable);
  else /* GDK_IS_WINDOW (g->drawable) */
    gdk_window_unref (g->drawable);

  gdk_colormap_unref (g->cm);

  gdk_threads_leave ();


  free (g);
}
Exemple #5
0
void gpk_rectangle_draw(GtkWidget *widget,              /* plot on this widged */
			gdouble *xcord, gdouble *ycord, /* corners */
			gdouble xmn,gdouble ymn,        /* coordinates of corners */
			gdouble xmx,gdouble ymx,
			GdkColor *color)
{
  GdkPixmap **ppixmap;
  GdkPoint points[2];
  int i;
  gint16 width,height;
  GdkGC *gc;


  gc = gdk_gc_new(widget->window);
  gdk_gc_set_foreground(gc, color);


  if ((ppixmap=findpixmap(widget))) {
    width = widget->allocation.width;
    height = widget->allocation.height;


    for (i=0; i<2 ; i++) {
      points[i].x =.5+  ((xcord[i]-xmn)*(width-1)/(xmx-xmn));
      points[i].y =.5+  ((ycord[i]-ymx)*(height-1)/(ymn-ymx));
    }
    width=points[1].x-points[0].x + 1;
    height=points[1].y-points[0].y + 1;
    gdk_draw_rectangle(*ppixmap,gc,TRUE,
		       points[0].x,points[0].y,width,height);
    gpk_redraw(*ppixmap,widget);
  }
  gdk_gc_destroy(gc);
}
Exemple #6
0
gint
wgra_configure(GtkWidget *widget,GdkEventConfigure *ee,gpointer data)
{
  GdkGC *mygc;
  int x,y,cx,xs;
  int i,v;
  long max;
  float fac;
  GdkFont *fn;

  if (wcanvas!=NULL)
    gdk_pixmap_unref(wcanvas);

  mygc=gdk_gc_new(widget->window);

  wcanvas=gdk_pixmap_new(widget->window,x=widget->allocation.width,
			 y=widget->allocation.height,-1);
  gdk_draw_rectangle(wcanvas,widget->style->white_gc,TRUE,0,0,x,y);
  gdk_draw_rectangle(wcanvas,widget->style->black_gc,FALSE,0,0,x-1,y-1);

  max=0;
  for(i=0;i<7;i++)
    if (weekly[i]>max)
      max=weekly[i];

  if (!max) max=1;
  fac=((float)(y-18-16))/((float)max);

  cx=1;
  xs=(x-2)/7;
  fn=gdk_font_load("-*-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*");
  for (i=0;i<7;i++) {
    v=(int)(((float)weekly[i])*fac);
    gdk_rgb_gc_set_foreground(mygc,0xc0c0c0);
    gdk_draw_line(wcanvas,mygc,cx,1,cx,y-2);
    gdk_rgb_gc_set_foreground(mygc,0x004080);
    gdk_draw_rectangle(wcanvas,mygc,TRUE,cx,y-18-v,xs,v);
    gdk_rgb_gc_set_foreground(mygc,0x000000);
    gdk_draw_string(wcanvas,fn,mygc,cx,y-6,wdays[i]);
    cx+=xs;
  }

  gdk_draw_line(wcanvas,widget->style->black_gc,0,y-18,x-1,y-18);

  gdk_rgb_gc_set_foreground(mygc,0xffffff);
  gdk_draw_rectangle(wcanvas,mygc,TRUE,0,0,23*4,13);
  gdk_rgb_gc_set_foreground(mygc,0x000000);
  gdk_draw_rectangle(wcanvas,mygc,FALSE,0,0,23*4,13);

  gdk_font_unref(fn);
  fn=gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");

  gdk_draw_string(wcanvas,fn,mygc,5,10,"weekday summary");

  gdk_font_unref(fn);
  gdk_gc_destroy(mygc);

  return FALSE;
}
Exemple #7
0
/* update_window:
 * Copy the backing image onto the window. */
void update_window() {
    if (backing_image) {
        GdkGC *gc;
        gc = gdk_gc_new(drawable);
        gdk_draw_rgb_32_image(drawable, gc, 0, 0, width, height, GDK_RGB_DITHER_NORMAL, (guchar*)backing_image->flat, sizeof(pel) * width);
        gdk_gc_destroy(gc);
    }
}
Exemple #8
0
static void
gtk_plot_gdk_finalize (GtkObject *object)
{
  gdk_window_unref(GTK_PLOT_GDK(object)->window);

  if(GTK_PLOT_GDK(object)->ref_count > 0 && GTK_PLOT_GDK(object)->gc)
          gdk_gc_destroy(GTK_PLOT_GDK(object)->gc);
}
Exemple #9
0
void gpk_graph_draw(GtkWidget *widget,               /* plot on this widged */
		   int n,                           /* number of data points */
		   gdouble *xcord, gdouble *ycord,  /* data */
		   gdouble xmn,gdouble ymn,         /* coordinates of corners */
		   gdouble xmx,gdouble ymx,
                   int clear,                       /* clear old plot first */
		   char *title,                     /* add a title (only if clear=1) */
                   GdkColor *color)		    
{
  GdkPixmap **ppixmap;
  GdkPoint *points;
  int i;
  gint16 width,height;
  GdkFont *fixed_font;
  GdkGC *gc;

  gc = gdk_gc_new(widget->window);
  gdk_gc_set_foreground(gc, color);



  if ((ppixmap=findpixmap(widget))) {
    width = widget->allocation.width;
    height = widget->allocation.height;


    if (clear) {
      /* white background */
      gdk_draw_rectangle (*ppixmap,
			  widget->style->white_gc,
			  TRUE,0, 0,width,height);
      /* title */
#ifdef _WIN32
      fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*");
#else
      fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1");
#endif

      gdk_draw_text (*ppixmap,fixed_font,
		     widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
		     0,10,title,strlen(title));
    }
      

    points = g_malloc(n*sizeof(GdkPoint));
    for (i=0; i<n ; i++) {
      points[i].x =.5+  ((xcord[i]-xmn)*(width-1)/(xmx-xmn));
      points[i].y =.5+  ((ycord[i]-ymx)*(height-1)/(ymn-ymx));
    }
    gdk_draw_lines(*ppixmap,gc,points,n);
    g_free(points);
    gpk_redraw(*ppixmap,widget);
  }
  gdk_gc_destroy(gc);
}
Exemple #10
0
static gboolean
ui_update(Bubblemon *base)
{
  int w, h, i;
  const bubblemon_picture_t *bubblePic;
  bubblemon_color_t *pixel;
  guchar *p;

  GdkGC *gc;

  GtkWidget *draw_area = base->draw_area;

  if((draw_area == NULL) ||
     !GTK_WIDGET_REALIZED(draw_area) ||
     !GTK_WIDGET_DRAWABLE(draw_area) ||
     base->width <= 0)
    {
      return TRUE;
    }

  bubblePic = bubblemon_getPicture(base->bubblemon);
  if ((bubblePic == NULL) ||
      (bubblePic->width == 0) ||
      (bubblePic->pixels == 0))
    {
      return TRUE;
    }
  w = bubblePic->width;
  h = bubblePic->height;

  gc = gdk_gc_new(draw_area->window);

  p = base->rgb_buffer;
  pixel = bubblePic->pixels;
  for(i = 0; i < w * h; i++) {
    *(p++) = pixel->components.r;
    *(p++) = pixel->components.g;
    *(p++) = pixel->components.b;
    pixel++;
  }

  gdk_draw_rgb_image(draw_area->window, gc,
                     0, 0,
                     base->width, base->height,
                     GDK_RGB_DITHER_NORMAL,
                     base->rgb_buffer, w * 3);

  gdk_gc_destroy(gc);

  return TRUE;
}
static void
embeddable_clear_image (embeddable_data_t *embeddable_data)
{
	GdkGC *temp_gc;

	temp_gc = gdk_gc_new (embeddable_data->pixmap);

	gdk_draw_rectangle (embeddable_data->pixmap,
			    temp_gc,
			    TRUE, 0, 0,
			    embeddable_data->width,
			    embeddable_data->height);
	gdk_gc_destroy (temp_gc);
}
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;
}
Exemple #13
0
static void
gtk_hex_entry_unrealize (GtkWidget *widget)
{
	GtkHexEntry *hex_entry;

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

	hex_entry = GTK_HEX_ENTRY (widget);

	gdk_gc_destroy (hex_entry->gc);
	hex_entry->gc = NULL;

	gdk_cursor_destroy (hex_entry->cursor);
	hex_entry->cursor = NULL;

	if (GTK_WIDGET_CLASS (parent_class)->unrealize)
	(* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
}
static void
gtk_plot_gdk_finalize (GObject *object)
{
  GtkPlotGdk *pc = GTK_PLOT_GDK(object);

  GTK_PLOT_GDK(object)->window = NULL;

  if(GTK_PLOT_GDK(object)->ref_count > 0 && GTK_PLOT_GDK(object)->gc){
          gdk_gc_destroy(GTK_PLOT_GDK(object)->gc);
          GTK_PLOT_GDK(object)->gc = NULL;
  }

  if(pc->layout)
    g_object_unref(G_OBJECT(pc->layout));
  pc->layout = NULL;

  if(pc->context)
    g_object_unref(G_OBJECT(pc->context));
  pc->context = NULL;
}
Exemple #15
0
static int about_dialog_load_logo(GtkWidget * window)
{
	GtkWidget *preview;
	GdkGC *gc;
	char buf[1024];
        char *c;
	unsigned char *pixelrow;
	FILE *fp;
	int count;
	int i;

	if (logo_pixmap)
		return TRUE;

	snprintf(buf, sizeof(buf), "%s/aube_logo.ppm", DATADIR);

	fp = fopen(buf, "rb");
	if (!fp)
		return FALSE;

	c = fgets(buf, 1024, fp);
	if (!c || strcmp(buf, "P6\n") != 0)
                goto out_err;

	if (!fgets(buf, 1024, fp))
                goto out_err;
	if (!fgets(buf, 1024, fp))
                goto out_err;

	sscanf(buf, "%d %d", &logo_width, &logo_height);

	if (!fgets(buf, 1024, fp))
                goto out_err;

	if (strcmp(buf, "255\n") != 0)
                goto out_err;

	preview = gtk_preview_new(GTK_PREVIEW_COLOR);
	gtk_preview_size(GTK_PREVIEW(preview), logo_width, logo_height);
	pixelrow = g_new(guchar, logo_width * 3);

	for (i = 0; i < logo_height; i++) {
		count =
		    fread(pixelrow, sizeof(unsigned char), logo_width * 3,
			  fp);
		if (count != (logo_width * 3)) {
			gtk_widget_destroy(preview);
			g_free(pixelrow);
                        goto out_err;
		}
		gtk_preview_draw_row(GTK_PREVIEW(preview), pixelrow, 0, i,
				     logo_width);
	}

	gtk_widget_realize(window);
	logo_pixmap =
	    gdk_pixmap_new(window->window, logo_width, logo_height,
			   gtk_preview_get_visual()->depth);
	gc = gdk_gc_new(logo_pixmap);
	gtk_preview_put(GTK_PREVIEW(preview),
			logo_pixmap, gc,
			0, 0, 0, 0, logo_width, logo_height);
	gdk_gc_destroy(gc);

	gtk_widget_unref(preview);
	g_free(pixelrow);

	fclose(fp);
	return TRUE;

out_err:
	fclose(fp);
	return FALSE;
}
Exemple #16
0
void
gpk_bargraph_draw(GtkWidget * widget, /* plot on this widged */
                  int n,     /* number of data points */
                  gdouble * xcord, gdouble * ycord, /* data */
                  gdouble xmn, gdouble ymn, /* coordinates of corners */
                  gdouble xmx, gdouble ymx, int clear, /* clear old plot first */
                  char *title, /* add a title (only if clear=1) */
                  int barwidth, /* bar width. 0=compute based on window size */
                  GdkColor * color)
{
    GdkPixmap **ppixmap;
    GdkPoint points[2];
    int     i;
    gint16  width, height, x, y, barheight;
    GdkFont *fixed_font;
    GdkGC  *gc;
    int     titleSplit;


    gc = gdk_gc_new(widget->window);
    gdk_gc_set_foreground(gc, color);


    if ((ppixmap = findpixmap(widget))) {
        width = widget->allocation.width;
        height = widget->allocation.height;


        if (clear) {
            /* white background */
            gdk_draw_rectangle(*ppixmap, widget->style->white_gc, TRUE, 0, 0, width, height);
            /* title */
#ifdef _WIN32
            fixed_font = gdk_font_load("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*");
#else
            fixed_font = gdk_font_load("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1");
#endif

            titleSplit = strcspn(title, "\n");

            if (titleSplit && (titleSplit != strlen(title))) {
                gdk_draw_text(*ppixmap, fixed_font,
                              widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                              0, 10, title, titleSplit);

                gdk_draw_text(*ppixmap, fixed_font,
                              widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                              0, 22, title + titleSplit + 1, (strlen(title) - titleSplit) - 1);


            }
            else {
                gdk_draw_text(*ppixmap, fixed_font,
                              widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                              0, 10, title, strlen(title));
            }
        }


        for (i = 0; i < n; i++) {
            points[1].x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn));
            points[1].y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx));
            points[0].x = points[1].x;
            points[0].y = height - 1;

            x = .5 + ((xcord[i] - xmn) * (width - 1) / (xmx - xmn));
            y = .5 + ((ycord[i] - ymx) * (height - 1) / (ymn - ymx));
            if (!barwidth)
                barwidth = (width / (n + 1)) - 1;
            barwidth = barwidth > 5 ? 5 : barwidth;
            barwidth = barwidth < 1 ? 1 : barwidth;
            barheight = height - 1 - y;
            /* gdk_draw_lines(*ppixmap,gc,points,2); */
            gdk_draw_rectangle(*ppixmap, gc, TRUE, x, y, barwidth, barheight);

        }
        gpk_redraw(*ppixmap, widget);
    }
    gdk_gc_destroy(gc);
}
Exemple #17
0
//! initialization of the board
void board_init ()
{
	int i;
	GdkColormap *board_colormap;
	Game *game = opt_game;
	GdkGC *def_gc = gdk_gc_new ((GdkWindow *)board_area->window);
//	GtkWidget *hbox, *vbox;
	state_board_flipped = FALSE;

	if (!game)
	{
#if GTK_MAJOR_VERSION == 1
		gtk_drawing_area_size (GTK_DRAWING_AREA (board_area), 300, 300);
#else
		gtk_widget_set_size_request (GTK_WIDGET (board_area), 300, 300);
#endif
		return;
	}
	
#if GTK_MAJOR_VERSION == 1
	gtk_drawing_area_size (GTK_DRAWING_AREA (board_area), 
			cell_size * board_wid, cell_size * board_heit);
#else
	gtk_widget_set_size_request (GTK_WIDGET (board_area), 
			cell_size * board_wid, cell_size * board_heit);
#endif
	pieces = (GdkPixmap **) malloc (2 * num_pieces * sizeof (GdkPixmap *));
	g_assert (pieces);
	piece_masks = (GdkBitmap **) malloc (2 * num_pieces * sizeof (GdkBitmap *));
	g_assert (piece_masks);
	for (i=0; i<2*num_pieces; i++)
		pieces[i] = NULL;

	if (game_file_label)
	{
		board_rowbox_real = gtk_hbox_new (TRUE, 0);
		gtk_box_pack_end (GTK_BOX (board_rowbox), board_rowbox_real, FALSE, FALSE, 0);
#if GTK_MAJOR_VERSION == 1
		gtk_widget_set_usize (GTK_WIDGET (board_rowbox_real),
				cell_size * board_wid, -1);
#else
		gtk_widget_set_size_request 
			(GTK_WIDGET (board_rowbox_real), cell_size * board_wid, -1);
#endif
		for (i=0; i<board_wid; i++)
			gtk_container_add (GTK_CONTAINER (board_rowbox_real), 
				gtk_label_new (board_get_file_label_str (game_file_label, i)));
		gtk_widget_show_all (board_rowbox);
	}
	if (game_rank_label)
	{
		board_colbox_real = gtk_vbox_new (TRUE, 0);
		gtk_box_pack_start (GTK_BOX (board_colbox), board_colbox_real, FALSE, FALSE, 0);
#if GTK_MAJOR_VERSION == 1
		gtk_widget_set_usize (GTK_WIDGET (board_colbox_real),
				-1, cell_size * board_heit);
#else
		gtk_widget_set_size_request 
			(GTK_WIDGET (board_colbox_real), -1, cell_size * board_heit);
#endif
		for (i=0; i<board_heit; i++)
			gtk_container_add (GTK_CONTAINER (board_colbox_real), 
				gtk_label_new (board_get_rank_label_str 
					(game_rank_label, i)));
		gtk_widget_show_all (board_colbox);
	}
	
	
	if (game->colors == NULL) game->colors = board_default_colors;
	board_colormap = gdk_colormap_get_system ();

	board_color_init (&game->colors[0], 
			&board_colors[0], &board_gcs[0], board_colormap, board_area);
	board_color_init (&game->colors[3], 
			&board_colors[1], &board_gcs[1], board_colormap, board_area);
	if (game_draw_cell_boundaries)
		board_color_init (&game->colors[6], 
				&board_colors[2], &board_gcs[2], board_colormap, board_area);
	if (game_highlight_colors)
		for (i=0; i<3; i++)
			board_color_init (&game_highlight_colors[3*i],
					&board_highlight_colors[i], &board_highlight_gcs[i], 
					board_colormap, board_area);
	{
	char buttonize_colors [6] = {240, 240, 240, 128, 128, 128};
	for (i=0; i<2; i++)
	board_color_init (&buttonize_colors[3*i], &board_buttonize_colors[i],
			&board_buttonize_gcs[i], board_colormap, board_area);
	}

	g_assert (num_pieces);
	for (i=0; i<2*num_pieces; i++)
	{
		char **pixmap = NULL;
		guchar *rgbbuf = NULL;
		{
			byte *colors = game->colors;
			if (i >= num_pieces && colors[0] == colors[3] && colors[1] == colors[4] 
					&& colors[2] == colors[5])
			{
				pieces[i] = pieces[i-num_pieces];
				piece_masks[i] = piece_masks[i-num_pieces];
				continue;
			}
		}
		if (game_get_rgbmap)
		{
			rgbbuf = game_get_rgbmap(1+i%num_pieces, i < num_pieces ? WHITE: BLACK);
			if (rgbbuf)
			{
				pieces[i] = gdk_pixmap_new (
						board_area->window, cell_size, cell_size, -1);
				gdk_draw_rgb_image ((GdkDrawable *)pieces[i], 
						def_gc, 0, 0, 
						cell_size, cell_size, GDK_RGB_DITHER_MAX,
						rgbbuf, cell_size * 3);
			}
			piece_masks[i] = NULL;
		}			
		else 
		{
			if (game_get_pixmap)
				pixmap = game_get_pixmap
					(1+i%num_pieces, i < num_pieces ? WHITE: BLACK);
			else 
				pixmap = game->pixmaps [i%num_pieces];
			if (pixmap)
			{
				pieces[i] = gdk_pixmap_colormap_create_from_xpm_d (NULL,
					board_colormap, &piece_masks[i], 
					board_colors + i / num_pieces, pixmap);
				assert (pieces[i]);
			}
			else piece_masks[i] = NULL;
		}
	}

	if (game_bg_pixmap)
	{
		board_bgimage = gdk_pixmap_colormap_create_from_xpm_d (NULL,
			board_colormap, NULL, board_colors, game_bg_pixmap);
		assert (board_bgimage);
	}

	gdk_gc_destroy (def_gc);
}
Exemple #18
0
static void *font_gtk_get_glyph(unsigned char *str) {
	agsurface_t *dst;
	int h, w, l;
	BYTE *conv;
	
	GdkPixmap    *pix_gdk;
	GdkGC        *gc_gdk;
	GdkImage     *img_gdk;
	GdkColor     col_gdk;

	
	/* convert string code from sjis to euc (or LANG) */
	conv = sjis2lang(str);
	
	l = strlen(conv);
	w = gdk_text_width(fontset, conv, l);
	
	if (w == 0) {
		free(conv);
		return NULL;
	}
	
#ifdef GTKV12
	h = gdk_text_height(fontset, conv, l);
#else
	h = font_ascent + fontset->ascent;
#endif
	
	if (w > GLYPH_PIXMAP_WIDTH)  w = GLYPH_PIXMAP_WIDTH;
	if (h > GLYPH_PIXMAP_HEIGHT) h = GLYPH_PIXMAP_HEIGHT;
	
	pix_gdk = gdk_pixmap_new(mainwin->window, w, h, gdk_depth);
	gc_gdk  = gdk_gc_new(pix_gdk);

	/* color */
	col_gdk.pixel = 0;
	gdk_gc_set_foreground(gc_gdk, &col_gdk);
	// gdk_gc_set_background(gc_gdk, &col_gdk);
	gdk_draw_rectangle(pix_gdk, gc_gdk, TRUE, 0, 0, w, h);
	
	col_gdk.pixel = 1;
	gdk_gc_set_foreground(gc_gdk, &col_gdk);
	gdk_draw_text(pix_gdk, fontset, gc_gdk, 0, fontset->ascent, conv, l);
	
	gdk_gc_destroy(gc_gdk);
	img_gdk = gdk_image_get(&((GdkWindowPrivate *)pix_gdk)->window,
				0, 0, w, h);
	gdk_pixmap_unref(pix_gdk);

	dst = g_new(agsurface_t, 1);

	dst->width = w;
	dst->height = h;
	dst->bytes_per_pixel = (img_gdk->bpp+1)/8; /* むーん */
	dst->bytes_per_line  = img_gdk->bpl;
	dst->pixel            = img_gdk->mem;
	
	image_get_glyph(dst, &img_glyph);

	if (this->antialiase_on) {
		aa_make(img_glyph.pixel, w, dst->height, img_glyph.bytes_per_line);
	}
	
	img_glyph.width  = w;
	img_glyph.height = h;
	
	g_free(dst);
	g_free(conv);
	gdk_image_destroy(img_gdk);
	
	return &img_glyph;
}
/*
 * This callback is envoked when the view is destroyed.  We use it to
 * free up our ancillary view-centric data structures.
 */
static void
view_destroy_cb (BonoboView *view, view_data_t *view_data)
{
	gdk_gc_destroy (view_data->gc);
	g_free (view_data);
}
Exemple #20
0
static PyObject *Py_agg_to_gtk_drawable(PyObject *self, PyObject *args, PyObject *kwds)
{
    typedef agg::pixfmt_rgba32_plain pixfmt;
    typedef agg::renderer_base<pixfmt> renderer_base;

    PyGObject *py_drawable;
    numpy::array_view<agg::int8u, 3> buffer;
    agg::rect_d rect;

    // args are gc, renderer, bbox where bbox is a transforms BBox
    // (possibly None).  If bbox is None, blit the entire agg buffer
    // to gtk.  If bbox is not None, blit only the region defined by
    // the bbox

    if (!PyArg_ParseTuple(args,
                          "OO&O&:agg_to_gtk_drawable",
                          &py_drawable,
                          &buffer.converter,
                          &buffer,
                          &convert_rect,
                          &rect)) {
        return NULL;
    }

    if (buffer.dim(2) != 4) {
        PyErr_SetString(PyExc_ValueError, "Invalid image buffer.  Must be NxMx4.");
        return NULL;
    }

    GdkDrawable *drawable = GDK_DRAWABLE(py_drawable->obj);
    GdkGC *gc = gdk_gc_new(drawable);

    int srcstride = buffer.dim(1) * 4;
    int srcwidth = buffer.dim(1);
    int srcheight = buffer.dim(0);

    // these three will be overridden below
    int destx = 0;
    int desty = 0;
    int destwidth = 1;
    int destheight = 1;
    int deststride = 1;

    std::vector<agg::int8u> destbuffer;
    agg::int8u *destbufferptr;

    if (rect.x1 == 0.0 && rect.x2 == 0.0 && rect.y1 == 0.0 && rect.y2 == 0.0) {
        // bbox is None; copy the entire image
        destbufferptr = (agg::int8u *)buffer.data();
        destwidth = srcwidth;
        destheight = srcheight;
        deststride = srcstride;
    } else {
        destx = (int)rect.x1;
        desty = srcheight - (int)rect.y2;
        destwidth = (int)(rect.x2 - rect.x1);
        destheight = (int)(rect.y2 - rect.y1);
        deststride = destwidth * 4;
        destbuffer.reserve(destheight * deststride);
        destbufferptr = &destbuffer[0];

        agg::rendering_buffer destrbuf;
        destrbuf.attach(destbufferptr, destwidth, destheight, deststride);
        pixfmt destpf(destrbuf);
        renderer_base destrb(destpf);

        agg::rendering_buffer srcrbuf;
        srcrbuf.attach((agg::int8u *)buffer.data(), buffer.dim(1), buffer.dim(0), buffer.dim(1) * 4);

        agg::rect_base<int> region(destx, desty, (int)rect.x2, srcheight - (int)rect.y1);
        destrb.copy_from(srcrbuf, &region, -destx, -desty);
    }

    gdk_draw_rgb_32_image(drawable,
                          gc,
                          destx,
                          desty,
                          destwidth,
                          destheight,
                          GDK_RGB_DITHER_NORMAL,
                          destbufferptr,
                          deststride);

    gdk_gc_destroy(gc);

    Py_RETURN_NONE;
}
Exemple #21
0
static void
gtk_gc_destroy (gpointer value)
{
  gdk_gc_destroy ((GdkGC*) value);
}
Exemple #22
0
int  main(int argc, char *argv[])
{
	gnome_init(VERSION, VERSION, argc, argv);

	/* Set up to draw from card class */
	GtkWidget *vbox, *vbox1, *vbox2, *vbox3;
	GtkWidget *tbar;
	GtkWidget *setbutton, *nosetbutton;
	GdkColor white, black, blue;
	/* Done setting up */

	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "Set Game");
	gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);
	gtk_container_border_width(GTK_CONTAINER(window), 0);

	vbox= gtk_vbox_new(FALSE, 0);
	vbox1 = gtk_vbox_new(FALSE, 0);
	vbox2 = gtk_vbox_new(FALSE, 0);
	vbox3 = gtk_vbox_new(FALSE, 0);

	drawing_area = gtk_drawing_area_new();
  gtk_widget_set_events(drawing_area,
    GDK_EXPOSURE_MASK|GDK_BUTTON_PRESS_MASK);
  gtk_widget_set_events(window, GDK_KEY_PRESS_MASK);
  gtk_signal_connect(GTK_OBJECT(drawing_area), "expose_event",
    GTK_SIGNAL_FUNC(expose_event), 0);
  gtk_signal_connect(GTK_OBJECT(drawing_area), "button_press_event",
    GTK_SIGNAL_FUNC(button_event), 0);
	GnomeUIInfo toolbar[ ] = {
GNOMEUIINFO_ITEM_STOCK ("New Game", "Start new Game", newgame, GNOME_STOCK_PIXMAP_NEW),
GNOMEUIINFO_ITEM_STOCK ("High Scores", "Shows High scores", gtk_main_quit, GNOME_STOCK_PIXMAP_SCORES),
GNOMEUIINFO_ITEM_STOCK ("End Game", "Ends Current Game", gtk_main_quit, GNOME_STOCK_PIXMAP_STOP),
GNOMEUIINFO_ITEM_STOCK ("Exit", "Exit the application", gtk_main_quit, GNOME_STOCK_PIXMAP_EXIT),
GNOMEUIINFO_END
};
	tbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
	gnome_app_fill_toolbar(GTK_TOOLBAR(tbar), toolbar, gtk_accel_group_new());
	gtk_box_pack_start(GTK_BOX(vbox1), tbar, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), vbox1, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), vbox2, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), vbox3, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), drawing_area, TRUE, TRUE, 5);
	gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area), SPACE_INTER+CARD_WS*4, SPACE_INTER+CARD_HS*3);
	gtk_box_pack_start(GTK_BOX(vbox3), gtk_label_new("Player"), TRUE, TRUE, 1);
	playerscore = gtk_label_new("0");
	gtk_box_pack_start(GTK_BOX(vbox3), playerscore, TRUE, TRUE, 1);
	gtk_box_pack_start(GTK_BOX(vbox3), gtk_label_new("Computer"), TRUE, TRUE, 1);
	computerscore = gtk_label_new("0");
	gtk_box_pack_start(GTK_BOX(vbox3), computerscore, TRUE, TRUE, 1);
	gtk_box_pack_start(GTK_BOX(vbox3), gtk_label_new("Cards Remaining"), TRUE, TRUE, 1);
	cards_remain = gtk_label_new("81");
	gtk_box_pack_start(GTK_BOX(vbox3), cards_remain, TRUE, TRUE, 1);
	gtk_container_add(GTK_CONTAINER(window), vbox);
	gtk_widget_show_all(window);

	gtk_idle_add( myidle, NULL);


/************************ Start Deck Setup *************************/
unsigned char *pixmap_data[] = {
    bean_e_bits,
    bean_s_bits,
    bean_f_bits,
    blob_e_bits,
    blob_s_bits,
    blob_f_bits,
    diamond_e_bits,
    diamond_s_bits,
    diamond_f_bits
  };
  int i, j;
  GdkWindow *wn = window->window;
  GdkColor col[4];
  GdkColormap *cmap = gdk_window_get_colormap(wn);
  GdkGC *gc;
  GtkStyle *style = gtk_widget_get_style(window);
  col[0].red = 54000; col[0].green = col[0].blue = 0;
  col[1].green = 40000; col[1].red = col[1].blue = 0;
  col[2].red = col[2].blue = 32000; col[2].green = 0;
  gdk_color_white(cmap, &white);
  gdk_color_black(cmap, &black);
  blue.red = blue.green = 0; blue.blue = 48000;
  gdk_color_alloc(cmap, &blue);
  for (i=0; i<3; i++)
    gdk_color_alloc(cmap, &col[i]);
  for (i=0; i<9; i++)
    for (j=0; j<3; j++)
      card_pixmap[i*3+j] = gdk_pixmap_create_from_data(wn, (gchar*) pixmap_data[i],
        SHAPE_W, SHAPE_H, -1, &col[j], &white);
  /* free colors? !! */

  gc = gdk_gc_new(wn);

  /*** cards in normal state ***/
  card_bkg = gdk_pixmap_new(wn, CARD_WIDTH, CARD_HEIGHT, -1);
  /* clear the card */
  gdk_gc_set_foreground(gc, &style->bg[GTK_STATE_NORMAL]);
  gdk_draw_rectangle(card_bkg, gc, 1, 0, 0, CARD_WIDTH, CARD_HEIGHT);
  /* draw corner arcs */
  gdk_gc_set_foreground(gc, &white);
  gdk_draw_arc(card_bkg, gc, 1, 0,                 0,
    2*ARC_SIZE, 2*ARC_SIZE, 90*64,  90*64);
  gdk_draw_arc(card_bkg, gc, 1, CARD_WIDTH-2*ARC_SIZE, 0,
    2*ARC_SIZE, 2*ARC_SIZE, 0,      90*64);
  gdk_draw_arc(card_bkg, gc, 1, 0,                 CARD_HEIGHT-2*ARC_SIZE,
    2*ARC_SIZE, 2*ARC_SIZE, 180*64, 90*64);
  gdk_draw_arc(card_bkg, gc, 1, CARD_WIDTH-2*ARC_SIZE,
    CARD_HEIGHT-2*ARC_SIZE, 2*ARC_SIZE, 2*ARC_SIZE, 270*64, 90*64);
  /* draw the rest */
  gdk_draw_rectangle(card_bkg, gc, 1, ARC_SIZE, 0, CARD_WIDTH-2*ARC_SIZE, CARD_HEIGHT);
  gdk_draw_rectangle(card_bkg, gc, 1, 0, ARC_SIZE, CARD_WIDTH, CARD_HEIGHT-2*ARC_SIZE);
	  gdk_gc_destroy(gc);

/************************ End Deck Setup *************************/



  /* done setting up for once 
	  to draw
	  wn = drawing_area->window;
	  gc-gdk_gc_new(wn);
	  card1.draw();
	  .............draw();
	  gdk_gc_destroy();
	  
	  
	  Card(int colr, int shp, int num, int shdng);
  */
 

		mytable.Draw();
	gtk_main();
	return 0;
}