Example #1
0
static void
load_scenario (char *fname)
{
	char *tmp, *fn;
        GdkColor bgcolor;
        GdkImage *tmpimage;
    
	tmp = g_strconcat ( "same-gnome/", fname, NULL);

	fn = gnome_unconditional_pixmap_file ( tmp );
	g_free( tmp );

	if (!g_file_exists (fn)) {
		printf (_("Could not find the \'%s\' theme for SameGnome\n"), fn);
		exit (1);
	}

	if (scenario)
		g_free (scenario);

	scenario = g_strdup(fname);

	configure_sync (fname);

	if (image)
		gdk_imlib_destroy_image (image);

	image = gdk_imlib_load_image (fn);
	gdk_imlib_render (image, image->rgb_width, image->rgb_height);

	stones = gdk_imlib_move_image (image);
	mask = gdk_imlib_move_mask (image);

        tmpimage = gdk_image_get(stones, 0, 0, 1, 1);
        bgcolor.pixel = gdk_image_get_pixel(tmpimage, 0, 0);
        gdk_window_set_background (draw_area->window, &bgcolor);
        gdk_image_destroy(tmpimage);
  
	g_free( fn );

	nstones = image->rgb_width / STONE_SIZE;
/*	ncolors = image->rgb_height / STONE_SIZE; */
	ncolors = 3;


	gtk_widget_draw (draw_area, NULL);
}
Example #2
0
void eplay_load_image()
{

	if (im) {
		gdk_imlib_kill_image(im);
		im = NULL;
	}

	if(!p[image_idx]) {
		im = gdk_imlib_load_image(image_names[image_idx]);
	}


	if (first) {
		w = org_w = im->rgb_width;
		h = org_h = im->rgb_height;
		win_x = (screen_x - w) / 2;
		win_y = (screen_y - h) / 2;
		attr.window_type = GDK_WINDOW_TEMP;
		attr.wclass = GDK_INPUT_OUTPUT;
		attr.event_mask = GDK_ALL_EVENTS_MASK;
		attr.x = attr.y = 0;
		attr.width = screen_x;
		attr.height = screen_y;
		parent = NULL;
		win = gdk_window_new(parent, &attr, ATTRIBUTES_MASK);
		gdk_window_show(win);
		gc = gdk_gc_new(win);
		first = 0;
		gdk_window_set_background(win, &color_bg);
		gdk_keyboard_grab(win, FALSE, CurrentTime);
		gdk_pointer_grab(win, FALSE, event_mask, NULL, cursor, CurrentTime);
		gdk_window_set_hints(win, win_x, win_y, w, h, w, h, GDK_HINT_MIN_SIZE |
							 GDK_HINT_MAX_SIZE | GDK_HINT_POS);
	}
/*	gdk_imlib_free_pixmap(p[image_idx]);  */  /* killing old pixmap */
	if(!p[image_idx]) {
		gdk_imlib_render(im, w, h);     /* Imlib render ... */
		p[image_idx] = gdk_imlib_move_image(im);    /* creating new */
	}

	gdk_draw_pixmap(win, gc, p[image_idx], 0, 0, win_x, win_y, w, h);
	gdk_window_show(win);       /* display image */
}
Example #3
0
void Skin (void)
{
  if ((ifilestuff == 0) && ((biscomputer == 0) || (wiscomputer == 0))
    && (iyesno == 0))
  {
    if ((skindir = opendir (PKGDATADIR"skins/")) == NULL)
    {
      Message ("Error loading skins.", 1, 0);
    }
    else
    {
      skinswindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (skinswindow), "load skin");
      gtk_signal_connect (GTK_OBJECT (skinswindow), "delete_event",
        GTK_SIGNAL_FUNC (DestroyFiles), NULL);
      gtk_window_set_policy (GTK_WINDOW (skinswindow), 0, 0, 1);
      gtk_container_border_width (GTK_CONTAINER (skinswindow), 10);
      gtk_widget_realize (skinswindow);
      skintable = gtk_table_new (100, 3, FALSE);
      gtk_widget_show (skintable);
      gtk_container_add (GTK_CONTAINER (skinswindow), skintable);
      inrskins = 0;
      while ((dir = readdir (skindir)) != NULL)
      {
        if ((strcmp (dir->d_name, ".") != 0) && (strcmp (dir->d_name, "..")
          != 0))
        {
          sprintf (skinnames[inrskins], "%s", dir->d_name);
          inrskins++;
        }
      }
      closedir (skindir);

      for (isskinnames = 0; isskinnames < inrskins; isskinnames++)
      {
        sprintf (skinpix, PKGDATADIR"skins/%s/mmb.png",
          skinnames[isskinnames]);
        skinpixim = gdk_imlib_load_image (skinpix);
        skinpixw = skinpixim->rgb_width;
        skinpixh = skinpixim->rgb_height;
        gdk_imlib_render (skinpixim, skinpixw, skinpixh);
        skinpixmap = gdk_imlib_move_image (skinpixim);
        skinpixmapwid = gtk_pixmap_new (skinpixmap, NULL);
        gtk_table_attach (GTK_TABLE (skintable), skinpixmapwid,
          0, 1, isskinnames, isskinnames + 1, GTK_FILL, GTK_FILL, 0, 0);
        gtk_widget_show (skinpixmapwid);
        gdk_flush ();

        skinbuttons[isskinnames] = gtk_button_new_with_label
          (skinnames[isskinnames]);
        gtk_widget_set_usize (GTK_WIDGET (skinbuttons[isskinnames]), 200, 30);
        gtk_table_attach (GTK_TABLE (skintable), skinbuttons[isskinnames],
          1, 2, isskinnames, isskinnames + 1, GTK_FILL | GTK_EXPAND, GTK_FILL
          | GTK_EXPAND, 4, 2);
        gtk_signal_connect (GTK_OBJECT (skinbuttons[isskinnames]), "clicked",
          GTK_SIGNAL_FUNC (ChangeSkin), (gpointer) skinnames[isskinnames]);
        gtk_widget_show (skinbuttons[isskinnames]);

        sprintf (skinpix, PKGDATADIR"skins/%s/mmw.png",
          skinnames[isskinnames]);
        skinpixim = gdk_imlib_load_image (skinpix);
        skinpixw = skinpixim->rgb_width;
        skinpixh = skinpixim->rgb_height;
        gdk_imlib_render (skinpixim, skinpixw, skinpixh);
        skinpixmap = gdk_imlib_move_image (skinpixim);
        skinpixmapwid = gtk_pixmap_new (skinpixmap, NULL);
        gtk_table_attach (GTK_TABLE (skintable), skinpixmapwid,
          2, 3, isskinnames, isskinnames + 1, GTK_FILL, GTK_FILL, 0, 0);
        gtk_widget_show (skinpixmapwid);
        gdk_flush ();
      }
      gtk_widget_show (skinswindow);
      ifilestuff = 1;
      if (ichangestuff == 0)
      {
        Play ("open.mp3", 0);
      }
    }
  }
  else
  {
    if (ichangestuff == 0)
    {
      Play ("click.mp3", 0);
    }
  }
}
Example #4
0
void ReallyReStart (GtkWidget *rrw, GtkFileSelection *rrfs)
{
  gfloat pvalue = 0;
  if ((ihistory > 0) && (isave == 1))
  {
    JudgeBoard ('w');
    Save ();
  }
  if (isavemes == 1)
  {
    Message (ssavemes, 2, 1);
  }

  x = 0;
  y = 0;
  iCapturedW = 0;
  iCapturedB = 0;
  ilimit = 0;
  ijustundo = 0;
  ifilestuff = 0;
  iduh = 0;
  iother = 0;
  isave = 1;
  iquit = 0;
  isavemes = 0;
  iiamblack = 0;
  ihistory = 0;
  imoves = 0;
  ilastmoveb = 1000;
  ilastmovew = 1000;
  StatusBar ();

  for (iPlace = 1; iPlace <= 361; iPlace++)
  {
    sprintf (Board[iPlace], "%s", "mme");
  }
  sprintf (Board[1], "%s", "lte");
  for (iPlace = 2; iPlace <= 18; iPlace++)
  {
    sprintf (Board[iPlace], "%s", "mte");
  }
  sprintf (Board[19], "%s", "rte");
  sprintf (Board[20], "%s", "lme");
  sprintf (Board[38], "%s", "rme");
  sprintf (Board[39], "%s", "lme");
  sprintf (Board[57], "%s", "rme");
  sprintf (Board[58], "%s", "lme");
  sprintf (Board[61], "%s", "mms");
  sprintf (Board[67], "%s", "mms");
  sprintf (Board[73], "%s", "mms");
  sprintf (Board[76], "%s", "rme");
  sprintf (Board[77], "%s", "lme");
  sprintf (Board[95], "%s", "rme");
  sprintf (Board[96], "%s", "lme");
  sprintf (Board[114], "%s", "rme");
  sprintf (Board[115], "%s", "lme");
  sprintf (Board[133], "%s", "rme");
  sprintf (Board[134], "%s", "lme");
  sprintf (Board[152], "%s", "rme");
  sprintf (Board[153], "%s", "lme");
  sprintf (Board[171], "%s", "rme");
  sprintf (Board[172], "%s", "lme");
  sprintf (Board[175], "%s", "mms");
  sprintf (Board[181], "%s", "mms");
  sprintf (Board[187], "%s", "mms");
  sprintf (Board[190], "%s", "rme");
  sprintf (Board[191], "%s", "lme");
  sprintf (Board[209], "%s", "rme");
  sprintf (Board[210], "%s", "lme");
  sprintf (Board[228], "%s", "rme");
  sprintf (Board[229], "%s", "lme");
  sprintf (Board[247], "%s", "rme");
  sprintf (Board[248], "%s", "lme");
  sprintf (Board[266], "%s", "rme");
  sprintf (Board[267], "%s", "lme");
  sprintf (Board[285], "%s", "rme");
  sprintf (Board[286], "%s", "lme");
  sprintf (Board[289], "%s", "mms");
  sprintf (Board[295], "%s", "mms");
  sprintf (Board[301], "%s", "mms");
  sprintf (Board[304], "%s", "rme");
  sprintf (Board[305], "%s", "lme");
  sprintf (Board[323], "%s", "rme");
  sprintf (Board[324], "%s", "lme");
  sprintf (Board[342], "%s", "rme");
  sprintf (Board[343], "%s", "lue");
  for (iPlace = 344; iPlace <= 360; iPlace++)
  {
    sprintf (Board[iPlace], "%s", "mue");
  }
  sprintf (Board[361], "%s", "rue");

  DoHandicap ();

  for (ibuttonrr = 1; ibuttonrr <= 361; ibuttonrr++)
  {
    sprintf (History[ihistory][ibuttonrr], "%s", Board[ibuttonrr]);
  }
  gtk_widget_hide (window1);

  loadingw = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_position (GTK_WINDOW (loadingw), GTK_WIN_POS_CENTER);
  gtk_window_set_title (GTK_WINDOW (loadingw), "loading...");
  gtk_signal_connect (GTK_OBJECT (loadingw), "delete_event",
    GTK_SIGNAL_FUNC (Quit), NULL);
  gtk_window_set_policy (GTK_WINDOW (loadingw), 0, 0, 1);
  gtk_container_border_width (GTK_CONTAINER (loadingw), 0);
  gtk_widget_realize (loadingw);

  lbox1 = gtk_vbox_new (FALSE, 0);
  gtk_container_border_width (GTK_CONTAINER (lbox1), 0);
  gtk_container_add (GTK_CONTAINER (loadingw), lbox1);
  gtk_widget_show (lbox1);
  lbox2 = gtk_hbox_new (FALSE, 0);
  gtk_container_border_width (GTK_CONTAINER (lbox2), 0);
  gtk_box_pack_start (GTK_BOX (lbox1), lbox2, FALSE, FALSE, 0);
  gtk_widget_show (lbox2);
  ltable1 = gtk_table_new (1, 2, FALSE);
  gtk_box_pack_start (GTK_BOX (lbox2), ltable1, TRUE, TRUE, 0);
  gtk_widget_show (ltable1);

#ifdef USE_GNOME
  im9 = gdk_imlib_load_image (PKGDATADIR"pix/gologog.png");
#else
  im9 = gdk_imlib_load_image (PKGDATADIR"pix/gologo.png");
#endif
  w9 = im9->rgb_width;
  h9 = im9->rgb_height;
  gdk_imlib_render (im9, w9, h9);
  lpixmap = gdk_imlib_move_image (im9);
  lpixmapwid = gtk_pixmap_new (lpixmap, NULL);
  gtk_table_attach (GTK_TABLE (ltable1), lpixmapwid, 0, 1, 0, 1,
    GTK_FILL, GTK_FILL, 0, 0);
  gtk_widget_show (lpixmapwid);
  gdk_flush ();

  lbar = gtk_progress_bar_new ();
  gtk_table_attach (GTK_TABLE (ltable1), lbar, 0, 1, 1, 2,
    GTK_FILL, GTK_FILL, 0, 0);
  gtk_widget_show (lbar);

  gtk_widget_show (loadingw);
  while (gtk_events_pending ())
  {
    gtk_main_iteration ();
  }

  for (ibuttonrr = 1; ibuttonrr <= 361; ibuttonrr++)
  {
    PixmapOnButton (ibuttonrr);
    pvalue = lprogress (pvalue);
  }
  gtk_widget_destroy (loadingw);
  if (itooltips == 0)
  {
    itooltips = 1;
    Tooltips ();
  }
  gtk_widget_show (window1);
}
Example #5
0
GtkWidget *
ghack_init_map_window()
{
    GtkWidget *vbox;
    GtkWidget *hbox;
    GtkWidget *table;
    GtkWidget *frame;
    GtkWidget *w;
    GtkWidget *hSeparator;
    GtkAdjustment *adj;
    GnomeCanvasImage *bg;
    double width, height, x, y;
    int i;

    width = COLNO * ghack_glyph_width();
    height = ROWNO * ghack_glyph_height();

    vbox = gtk_vbox_new(FALSE, 4);
    gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);
    gtk_widget_show(vbox);

    /* Add in a horiz seperator */
    hSeparator = gtk_hseparator_new();
    gtk_box_pack_start(GTK_BOX(vbox), hSeparator, FALSE, FALSE, 2);
    gtk_widget_show(hSeparator);

    hbox = gtk_hbox_new(FALSE, 4);
    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
    gtk_widget_show(hbox);

    /* Create the Zoom spinbutton.
    */
    ghack_map.zoom = 1.0;
    w = gtk_label_new("Zoom:");
    gtk_box_pack_start(GTK_BOX(hbox), w, FALSE, FALSE, 0);
    gtk_widget_show(w);
    adj =
        GTK_ADJUSTMENT(gtk_adjustment_new(1.00, 0.5, 3.00, 0.05, 0.50, 0.50));
    w = gtk_spin_button_new(adj, 0.5, 2);
    gtk_widget_set_usize(w, 50, 0);
    gtk_box_pack_start(GTK_BOX(hbox), w, FALSE, FALSE, 0);
    gtk_widget_show(w);

    /* Canvas and scrollbars
    */
    gtk_widget_push_visual(gdk_imlib_get_visual());
    gtk_widget_push_colormap(gdk_imlib_get_colormap());
    ghack_map.canvas = GNOME_CANVAS(gnome_canvas_new());
    // gtk_widget_push_visual(gdk_rgb_get_visual());
    // gtk_widget_push_colormap(gdk_rgb_get_cmap());
    // ghack_map.canvas = GNOME_CANVAS (gnome_canvas_new_aa());

    gtk_widget_pop_colormap();
    gtk_widget_pop_visual();
    gtk_widget_show(GTK_WIDGET(ghack_map.canvas));

    table = gtk_table_new(2, 2, FALSE);
    gtk_table_set_row_spacings(GTK_TABLE(table), 4);
    gtk_table_set_col_spacings(GTK_TABLE(table), 4);
    gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);
    gtk_widget_show(table);

    frame = gtk_frame_new(NULL);
    ghack_map.frame = frame;
    gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
    gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 0, 1,
                     GTK_EXPAND | GTK_FILL | GTK_SHRINK,
                     GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0);
    gtk_widget_show(frame);

    gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(ghack_map.canvas));
    gnome_canvas_set_scroll_region(GNOME_CANVAS(ghack_map.canvas), 0, 0,
                                   width + 2 * ghack_glyph_width(),
                                   height + 2 * ghack_glyph_height());

    gnome_canvas_set_pixels_per_unit(GNOME_CANVAS(ghack_map.canvas), 1.0);

    w = gtk_hscrollbar_new(GTK_LAYOUT(ghack_map.canvas)->hadjustment);
    gtk_table_attach(GTK_TABLE(table), w, 0, 1, 1, 2,
                     GTK_EXPAND | GTK_FILL | GTK_SHRINK, GTK_FILL, 0, 0);
    gtk_widget_show(w);

    w = gtk_vscrollbar_new(GTK_LAYOUT(ghack_map.canvas)->vadjustment);
    gtk_table_attach(GTK_TABLE(table), w, 1, 2, 0, 1, GTK_FILL,
                     GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0);
    gtk_widget_show(w);

    myCanvasGroup = GNOME_CANVAS_GROUP(gnome_canvas_item_new(
                                           gnome_canvas_root(GNOME_CANVAS(ghack_map.canvas)),
                                           gnome_canvas_group_get_type(), "x", 0.0, "y", 0.0, NULL));

    /* Tile the map background with a pretty image */
    background = gdk_imlib_load_image((char *) "mapbg.xpm");
    if (background == NULL) {
        g_warning(
            "Bummer! Failed to load the map background image (mapbg.xpm)!");
    } else {
        gdk_imlib_render(background, background->rgb_width,
                         background->rgb_height);

        /* Tile the map background */
        for (y = 0; y < height + background->rgb_height;
                y += background->rgb_height) {
            for (x = 0; x < width + background->rgb_width;
                    x += background->rgb_width) {
                bg = GNOME_CANVAS_IMAGE(gnome_canvas_item_new(
                                            myCanvasGroup, gnome_canvas_image_get_type(), "x",
                                            (double) x, "y", (double) y, "width",
                                            (double) background->rgb_width, "height",
                                            (double) background->rgb_height, "image", background,
                                            "anchor", (GtkAnchorType) GTK_ANCHOR_CENTER, NULL));
                gnome_canvas_item_lower_to_bottom(GNOME_CANVAS_ITEM(bg));
            }
        }
    }

    /* ghack_map.map is an array of canvas images.  Each cell of
     * the array will contain one tile.  Here, we create the
     * space for the cells and then create the cells for easy
     * access later.
    */
    for (i = 0, y = 0; y < height; y += ghack_glyph_height()) {
        for (x = 0; x < width; x += ghack_glyph_width()) {
            ghack_map.map[i++] = GNOME_CANVAS_IMAGE(gnome_canvas_item_new(
                    myCanvasGroup, gnome_canvas_image_get_type(), "x", (double) x,
                    "y", (double) y, "width", (double) ghack_glyph_width(),
                    "height", (double) ghack_glyph_height(), "anchor",
                    GTK_ANCHOR_NORTH_WEST, NULL));
        }
    }

    /* Set up the pet mark image */
    petmark = gdk_imlib_create_image_from_xpm_data(pet_mark_xpm);
    if (petmark == NULL) {
        g_warning("Bummer! Failed to load the pet_mark image!");
    } else {
        gdk_imlib_render(petmark, petmark->rgb_width, petmark->rgb_height);

        /* ghack_map.overlay is an array of canvas images used to
         * overlay tile images...
         */
        for (i = 0, y = 0; y < height; y += ghack_glyph_height()) {
            for (x = 0; x < width; x += ghack_glyph_width()) {
                ghack_map.overlay[i] =
                    GNOME_CANVAS_IMAGE(gnome_canvas_item_new(
                                           myCanvasGroup, gnome_canvas_image_get_type(), "x",
                                           (double) x, "y", (double) y, "width",
                                           (double) petmark->rgb_width, "height",
                                           (double) petmark->rgb_height, "image", petmark,
                                           "anchor", GTK_ANCHOR_NORTH_WEST, NULL));
                gnome_canvas_item_lower_to_bottom(
                    GNOME_CANVAS_ITEM(ghack_map.overlay[i++]));
            }
        }
    }

    /* Resize the canvas when the spinbutton changes
    */
    gtk_signal_connect(GTK_OBJECT(adj), "value_changed",
                       (GtkSignalFunc) ghack_map_window_zoom,
                       ghack_map.canvas);

    /* Game signals
    */
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_curs",
                       GTK_SIGNAL_FUNC(ghack_map_cursor_to), NULL);
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_putstr",
                       GTK_SIGNAL_FUNC(ghack_map_putstr), NULL);
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_print_glyph",
                       GTK_SIGNAL_FUNC(ghack_map_print_glyph), NULL);
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_clear",
                       GTK_SIGNAL_FUNC(ghack_map_clear), NULL);
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_display",
                       GTK_SIGNAL_FUNC(ghack_map_display), NULL);
    gtk_signal_connect(GTK_OBJECT(vbox), "ghack_cliparound",
                       GTK_SIGNAL_FUNC(ghack_map_cliparound), NULL);
    gtk_signal_connect(GTK_OBJECT(ghack_map.canvas), "button_press_event",
                       GTK_SIGNAL_FUNC(ghack_handle_button_press), NULL);
    gtk_signal_connect(GTK_OBJECT(ghack_map.canvas), "gnome_delay_output",
                       GTK_SIGNAL_FUNC(ghack_delay), NULL);

    return GTK_WIDGET(vbox);
}
Example #6
0
void OptionsX (void)
{
  if (ixdone == 1)
  {
    ixdone = 0;
    if (ioptionsx == 0)
    {
      ioptionsx = 1;
    }
    else
    {
      ioptionsx = 0;
    }

    gtk_container_remove (GTK_CONTAINER (changebutton), cbpixmapwid);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/1x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/1.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap = gdk_imlib_move_image (im3);
    cbpixmapwid = gtk_pixmap_new (cbpixmap, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton), cbpixmapwid);
    gtk_widget_show (cbpixmapwid);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton2), cbpixmapwid2);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/2x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/2.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap2 = gdk_imlib_move_image (im3);
    cbpixmapwid2 = gtk_pixmap_new (cbpixmap2, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton2), cbpixmapwid2);
    gtk_widget_show (cbpixmapwid2);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton3), cbpixmapwid3);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/3x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/3.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap3 = gdk_imlib_move_image (im3);
    cbpixmapwid3 = gtk_pixmap_new (cbpixmap3, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton3), cbpixmapwid3);
    gtk_widget_show (cbpixmapwid3);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton4), cbpixmapwid4);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/4x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/4.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap4 = gdk_imlib_move_image (im3);
    cbpixmapwid4 = gtk_pixmap_new (cbpixmap4, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton4), cbpixmapwid4);
    gtk_widget_show (cbpixmapwid4);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton5), cbpixmapwid5);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/5x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/5.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap5 = gdk_imlib_move_image (im3);
    cbpixmapwid5 = gtk_pixmap_new (cbpixmap5, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton5), cbpixmapwid5);
    gtk_widget_show (cbpixmapwid5);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebuttonx), cbpixmapwidx);
    if (ioptionsx == 1)
    {
    im3 = gdk_imlib_load_image (PKGDATADIR"pix/5bx.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/5b.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmapx = gdk_imlib_move_image (im3);
    cbpixmapwidx = gtk_pixmap_new (cbpixmapx, NULL);
    gtk_container_add (GTK_CONTAINER (changebuttonx), cbpixmapwidx);
    gtk_widget_show (cbpixmapwidx);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton6), cbpixmapwid6);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap6 = gdk_imlib_move_image (im3);
    cbpixmapwid6 = gtk_pixmap_new (cbpixmap6, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton6), cbpixmapwid6);
    gtk_widget_show (cbpixmapwid6);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton7), cbpixmapwid7);
    if ((ioptionsx == 1) && (itooltips == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6onx.png");
    }
    if ((ioptionsx == 1) && (itooltips == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6offx.png");
    }
    if ((ioptionsx == 0) && (itooltips == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6on.png");
    }
    if ((ioptionsx == 0) && (itooltips == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/6off.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap7 = gdk_imlib_move_image (im3);
    cbpixmapwid7 = gtk_pixmap_new (cbpixmap7, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton7), cbpixmapwid7);
    gtk_widget_show (cbpixmapwid7);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton8), cbpixmapwid8);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap8 = gdk_imlib_move_image (im3);
    cbpixmapwid8 = gtk_pixmap_new (cbpixmap8, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton8), cbpixmapwid8);
    gtk_widget_show (cbpixmapwid8);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton9), cbpixmapwid9);
    if ((ioptionsx == 1) && (ishowlast == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7onx.png");
    }
    if ((ioptionsx == 1) && (ishowlast == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7offx.png");
    }
    if ((ioptionsx == 0) && (ishowlast == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7on.png");
    }
    if ((ioptionsx == 0) && (ishowlast == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/7off.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap9 = gdk_imlib_move_image (im3);
    cbpixmapwid9 = gtk_pixmap_new (cbpixmap9, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton9), cbpixmapwid9);
    gtk_widget_show (cbpixmapwid9);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton10), cbpixmapwid10);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap10 = gdk_imlib_move_image (im3);
    cbpixmapwid10 = gtk_pixmap_new (cbpixmap10, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton10), cbpixmapwid10);
    gtk_widget_show (cbpixmapwid10);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton11), cbpixmapwid11);
    if ((ioptionsx == 1) && (isound == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8onx.png");
    }
    if ((ioptionsx == 1) && (isound == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8offx.png");
    }
    if ((ioptionsx == 0) && (isound == 1))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8on.png");
    }
    if ((ioptionsx == 0) && (isound == 0))
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/8off.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap11 = gdk_imlib_move_image (im3);
    cbpixmapwid11 = gtk_pixmap_new (cbpixmap11, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton11), cbpixmapwid11);
    gtk_widget_show (cbpixmapwid11);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton12), cbpixmapwid12);
    if (ioptionsx == 1)
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/9x.png");
    }
    else
    {
      im3 = gdk_imlib_load_image (PKGDATADIR"pix/9.png");
    }
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap12 = gdk_imlib_move_image (im3);
    cbpixmapwid12 = gtk_pixmap_new (cbpixmap12, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton12), cbpixmapwid12);
    gtk_widget_show (cbpixmapwid12);
    gdk_flush ();

    gtk_container_remove (GTK_CONTAINER (changebutton13), cbpixmapwid13);
    if (ioptionsx == 1)
    {
      sprintf (cThePng3, PKGDATADIR"pix/9%ix.png", ihandicap);
    }
    else
    {
      sprintf (cThePng3, PKGDATADIR"pix/9%i.png", ihandicap);
    }
    im3 = gdk_imlib_load_image (cThePng3);
    w3 = im3->rgb_width;
    h3 = im3->rgb_height;
    gdk_imlib_render (im3, w3, h3);
    cbpixmap13 = gdk_imlib_move_image (im3);
    cbpixmapwid13 = gtk_pixmap_new (cbpixmap13, NULL);
    gtk_container_add (GTK_CONTAINER (changebutton13), cbpixmapwid13);
    gtk_widget_show (cbpixmapwid13);
    gdk_flush ();
    while (gtk_events_pending ())
    {
      gtk_main_iteration ();
    }
    ixdone = 1;
  }
}
Example #7
0
/* load a map file or get it from the cache */
static struct pixmap_info *load_image_mtime(char *name,time_t *mtime  /*GdkWindow *win*/)
{
  GList *cached;
  struct cache_entry ce_search;
  struct cache_entry *ce;
  struct stat st;
  char filename[512];
#ifdef USE_IMLIB
  GdkPixmap *p;
  GdkImlibImage *im;
#else
  struct pixmap_info *p;
#endif

  cache_count++;
  ce_search.name=name;
  p=NULL;
 
  cached=g_list_find_custom(cache_list,
			    &ce_search,find_cache);
  if (cached)
    {
      ce=(struct cache_entry *)cached->data;
      if (ce) {
	ce->count=cache_count;
	if (mtime)
	  *mtime=ce->mtime;
	return ce->p;
      }
    }
  if (g_list_length(cache_list)>=MAX_CACHE)
    {
      GList *rem;
      cache_list=g_list_sort(cache_list,compare_cache);
      ce=(struct cache_entry *)g_list_nth_data(cache_list,0);
      if (ce->p)
#ifdef USE_IMLIB
	gdk_imlib_free_pixmap(ce->p);
#else
      free_pinfo(ce->p);
#endif
      /* printf("entferne %s\n",ce->name); */
      g_free(ce->name);
      g_free(ce);
      rem=g_list_first(cache_list);
      cache_list=g_list_remove_link(cache_list,rem);
      g_list_free(rem);
      
    }
  
    snprintf(filename,sizeof(filename),"%s.str", name);
    read_str_file(filename,name);
    snprintf(filename,sizeof(filename),"%s.png", name);
#ifndef USE_IMLIB
    p=load_gfxfile(filename);
    if (!p) {
      if (!stat(filename,&st)) {
	if (mtime)
	  *mtime=st.st_mtime;
	return NULL;
      }
      snprintf(filename,sizeof(filename),"%s.jpg", name);
      p=load_gfxfile(filename);
    }
#endif
#ifdef USE_IMLIB
    im=gdk_imlib_load_image(filename);
    if (im)
      break;
    snprintf(filename,sizeof(filename),"%s/%s.bmp",kartenpfad[i],
	     name);
    im=gdk_imlib_load_image(filename);
    if (im)
      break;
#endif
#ifdef USE_IMLIB
  if (!im)
    return NULL;
  w=im->rgb_width; h=im->rgb_height;
  if (!gdk_imlib_render(im,w,h)) {
    gdk_imlib_destroy_image(im);
    return NULL;
  }
  p=gdk_imlib_move_image(im);
  gdk_imlib_destroy_image(im);
#endif
  if (p) {
    struct stat st;
    ce=g_malloc(sizeof(struct cache_entry));
    ce->p=p;
    ce->name=g_strdup(name);
    ce->count=cache_count;
    cache_list=g_list_append(cache_list,ce);
    stat(filename,&st);
    ce->mtime=st.st_mtime;
    if (mtime)
	*mtime=ce->mtime;
  } else {
    if (!stat(filename,&st)) {
      if (mtime)
	*mtime=st.st_mtime;
      return NULL;
    }
      
  }
  
  return p;  
}