Author: cazfi Date: Thu Oct 6 06:45:22 2016 New Revision: 34014 URL: http://svn.gna.org/viewcvs/freeciv?rev=34014&view=rev Log: Show terrain gfx on gtk3-client help browser.
See bug #15132 Modified: trunk/client/gui-gtk-3.0/editgui.c trunk/client/gui-gtk-3.0/helpdlg.c trunk/client/gui-gtk-3.22/editgui.c trunk/client/gui-gtk-3.22/helpdlg.c Modified: trunk/client/gui-gtk-3.0/editgui.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/editgui.c?rev=34014&r1=34013&r2=34014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/editgui.c (original) +++ trunk/client/gui-gtk-3.0/editgui.c Thu Oct 6 06:45:22 2016 @@ -734,8 +734,7 @@ ****************************************************************************/ static GdkPixbuf *create_terrain_pixbuf(struct terrain *pterrain) { - struct drawn_sprite sprs[80]; - int count, w, h, canvas_x, canvas_y, i; + int w, h, i; GdkPixbuf *pixbuf; struct canvas canvas = FC_STATIC_CANVAS_INIT; cairo_t *cr; @@ -744,8 +743,6 @@ h = tileset_tile_height(tileset); canvas.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h); - canvas_x = 0; - canvas_y = 0; cr = cairo_create(canvas.surface); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); @@ -753,9 +750,11 @@ cairo_destroy(cr); for (i = 0; i < 3; i++) { - count = fill_basic_terrain_layer_sprite_array(tileset, sprs, - i, pterrain); - put_drawn_sprites(&canvas, 1.0, canvas_x, canvas_y, count, sprs, FALSE); + struct drawn_sprite sprs[80]; + int count = fill_basic_terrain_layer_sprite_array(tileset, sprs, + i, pterrain); + + put_drawn_sprites(&canvas, 1.0, 0, 0, count, sprs, FALSE); } pixbuf = surface_get_pixbuf(canvas.surface, w, h); Modified: trunk/client/gui-gtk-3.0/helpdlg.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/helpdlg.c?rev=34014&r1=34013&r2=34014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/helpdlg.c (original) +++ trunk/client/gui-gtk-3.0/helpdlg.c Thu Oct 6 06:45:22 2016 @@ -750,6 +750,37 @@ gtk_image_set_from_surface(GTK_IMAGE(help_tile), spr->surface); gtk_widget_show(help_tile); +} + +/************************************************************************** + Set sprite to show for current terrain. +**************************************************************************/ +static void set_help_tile_from_terrain(struct terrain *pterr) +{ + struct canvas canvas = FC_STATIC_CANVAS_INIT; + cairo_t *cr; + int i; + + canvas.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, + tileset_tile_width(tileset), + tileset_tile_height(tileset)); + + cr = cairo_create(canvas.surface); + cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); + cairo_paint(cr); + cairo_destroy(cr); + + for (i = 0; i < 3; i++) { + struct drawn_sprite sprs[80]; + int count = fill_basic_terrain_layer_sprite_array(tileset, sprs, + i, pterr); + + put_drawn_sprites(&canvas, 1.0, 0, 0, count, sprs, FALSE); + } + + gtk_image_set_from_surface(GTK_IMAGE(help_tile), canvas.surface); + gtk_widget_show(help_tile); + cairo_surface_destroy(canvas.surface); } /************************************************************************** @@ -1166,10 +1197,13 @@ if (pterrain) { struct universal for_terr = { .kind = VUT_TERRAIN, .value = { .terrain = pterrain }}; + set_help_tile_from_terrain(pterrain); + { /* 25 => "1.25"; 50 => "1.5"; 100 => "2.0" */ int defbonus = pterrain->defense_bonus + 100; int frac = defbonus % 100; + if ((frac % 10) == 0) { frac /= 10; } Modified: trunk/client/gui-gtk-3.22/editgui.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.22/editgui.c?rev=34014&r1=34013&r2=34014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.22/editgui.c (original) +++ trunk/client/gui-gtk-3.22/editgui.c Thu Oct 6 06:45:22 2016 @@ -734,8 +734,7 @@ ****************************************************************************/ static GdkPixbuf *create_terrain_pixbuf(struct terrain *pterrain) { - struct drawn_sprite sprs[80]; - int count, w, h, canvas_x, canvas_y, i; + int w, h, i; GdkPixbuf *pixbuf; struct canvas canvas = FC_STATIC_CANVAS_INIT; cairo_t *cr; @@ -744,8 +743,6 @@ h = tileset_tile_height(tileset); canvas.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h); - canvas_x = 0; - canvas_y = 0; cr = cairo_create(canvas.surface); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); @@ -753,9 +750,11 @@ cairo_destroy(cr); for (i = 0; i < 3; i++) { - count = fill_basic_terrain_layer_sprite_array(tileset, sprs, - i, pterrain); - put_drawn_sprites(&canvas, 1.0, canvas_x, canvas_y, count, sprs, FALSE); + struct drawn_sprite sprs[80]; + int count = fill_basic_terrain_layer_sprite_array(tileset, sprs, + i, pterrain); + + put_drawn_sprites(&canvas, 1.0, 0, 0, count, sprs, FALSE); } pixbuf = surface_get_pixbuf(canvas.surface, w, h); Modified: trunk/client/gui-gtk-3.22/helpdlg.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.22/helpdlg.c?rev=34014&r1=34013&r2=34014&view=diff ============================================================================== --- trunk/client/gui-gtk-3.22/helpdlg.c (original) +++ trunk/client/gui-gtk-3.22/helpdlg.c Thu Oct 6 06:45:22 2016 @@ -749,6 +749,37 @@ gtk_image_set_from_surface(GTK_IMAGE(help_tile), spr->surface); gtk_widget_show(help_tile); +} + +/************************************************************************** + Set sprite to show for current terrain. +**************************************************************************/ +static void set_help_tile_from_terrain(struct terrain *pterr) +{ + struct canvas canvas = FC_STATIC_CANVAS_INIT; + cairo_t *cr; + int i; + + canvas.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, + tileset_tile_width(tileset), + tileset_tile_height(tileset)); + + cr = cairo_create(canvas.surface); + cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); + cairo_paint(cr); + cairo_destroy(cr); + + for (i = 0; i < 3; i++) { + struct drawn_sprite sprs[80]; + int count = fill_basic_terrain_layer_sprite_array(tileset, sprs, + i, pterr); + + put_drawn_sprites(&canvas, 1.0, 0, 0, count, sprs, FALSE); + } + + gtk_image_set_from_surface(GTK_IMAGE(help_tile), canvas.surface); + gtk_widget_show(help_tile); + cairo_surface_destroy(canvas.surface); } /************************************************************************** @@ -1165,10 +1196,13 @@ if (pterrain) { struct universal for_terr = { .kind = VUT_TERRAIN, .value = { .terrain = pterrain }}; + set_help_tile_from_terrain(pterrain); + { /* 25 => "1.25"; 50 => "1.5"; 100 => "2.0" */ int defbonus = pterrain->defense_bonus + 100; int frac = defbonus % 100; + if ((frac % 10) == 0) { frac /= 10; } _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits