Author: mir3x Date: Thu Feb 2 20:47:49 2017 New Revision: 34935 URL: http://svn.gna.org/viewcvs/freeciv?rev=34935&view=rev Log: Gtk2 client - added scaling tileset
See patch #8094 Modified: branches/S3_0/client/gui-gtk-2.0/citydlg.c branches/S3_0/client/gui-gtk-2.0/gui_main.c branches/S3_0/client/gui-gtk-2.0/happiness.c branches/S3_0/client/gui-gtk-2.0/sprite.c Modified: branches/S3_0/client/gui-gtk-2.0/citydlg.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/client/gui-gtk-2.0/citydlg.c?rev=34935&r1=34934&r2=34935&view=diff ============================================================================== --- branches/S3_0/client/gui-gtk-2.0/citydlg.c (original) +++ branches/S3_0/client/gui-gtk-2.0/citydlg.c Thu Feb 2 20:47:49 2017 @@ -1344,8 +1344,9 @@ gtk_box_pack_start(GTK_BOX(cbox), ebox, FALSE, FALSE, 0); pdialog->citizen_pixmap = gtk_pixcomm_new(tileset_small_sprite_width(tileset) - * NUM_CITIZENS_SHOWN, - tileset_small_sprite_height(tileset)); + * NUM_CITIZENS_SHOWN / tileset_scale(tileset), + tileset_small_sprite_height(tileset) + / tileset_scale(tileset)); gtk_misc_set_padding(GTK_MISC(pdialog->citizen_pixmap), 2, 2); gtk_misc_set_alignment(GTK_MISC(pdialog->citizen_pixmap), 0.0f, 0.5f); gtk_container_add(GTK_CONTAINER(ebox), pdialog->citizen_pixmap); @@ -1501,11 +1502,11 @@ /* tileset_small_sprite_width(tileset) pixels. */ if (num_citizens > 1) { - width = MIN(tileset_small_sprite_width(tileset), - ((NUM_CITIZENS_SHOWN - 1) * tileset_small_sprite_width(tileset)) / - (num_citizens - 1)); + width = MIN(tileset_small_sprite_width(tileset) / tileset_scale(tileset), + ((NUM_CITIZENS_SHOWN - 1) * (tileset_small_sprite_width(tileset)) + / tileset_scale(tileset)) / (num_citizens - 1)); } else { - width = tileset_small_sprite_width(tileset); + width = tileset_small_sprite_width(tileset) / tileset_scale(tileset); } pdialog->cwidth = width; @@ -2554,7 +2555,7 @@ return FALSE; } - tlen = tileset_small_sprite_width(tileset); + tlen = tileset_small_sprite_width(tileset) / tileset_scale(tileset); len = (city_size_get(pcity) - 1) * pdialog->cwidth + tlen; if (ev->x > len) { return FALSE; /* no citizen that far to the right */ Modified: branches/S3_0/client/gui-gtk-2.0/gui_main.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/client/gui-gtk-2.0/gui_main.c?rev=34935&r1=34934&r2=34935&view=diff ============================================================================== --- branches/S3_0/client/gui-gtk-2.0/gui_main.c (original) +++ branches/S3_0/client/gui-gtk-2.0/gui_main.c Thu Feb 2 20:47:49 2017 @@ -561,7 +561,14 @@ case GDK_Escape: key_cancel_action(); return TRUE; - + case GDK_KEY_plus: + tilespec_reread(tileset_basename(tileset), true, tileset_scale(tileset) + * 1.2f); + return TRUE; + case GDK_KEY_minus: + tilespec_reread(tileset_basename(tileset), true, tileset_scale(tileset) + / 1.2f); + return TRUE; case GDK_b: if (tiles_hilited_cities) { buy_production_in_selected_cities(); Modified: branches/S3_0/client/gui-gtk-2.0/happiness.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/client/gui-gtk-2.0/happiness.c?rev=34935&r1=34934&r2=34935&view=diff ============================================================================== --- branches/S3_0/client/gui-gtk-2.0/happiness.c (original) +++ branches/S3_0/client/gui-gtk-2.0/happiness.c Thu Feb 2 20:47:49 2017 @@ -42,8 +42,10 @@ /* semi-arbitrary number that controls the width of the happiness widget */ #define HAPPINESS_PIX_WIDTH 30 -#define PIXCOMM_WIDTH (HAPPINESS_PIX_WIDTH * tileset_small_sprite_width(tileset)) -#define PIXCOMM_HEIGHT (tileset_small_sprite_height(tileset)) +#define PIXCOMM_WIDTH (HAPPINESS_PIX_WIDTH * tileset_small_sprite_width(tileset) \ + / tileset_scale(tileset)) +#define PIXCOMM_HEIGHT (tileset_small_sprite_height(tileset) \ + / tileset_scale(tileset)) #define NUM_HAPPINESS_MODIFIERS 6 @@ -276,7 +278,8 @@ enum citizen_category categories[MAX_CITY_SIZE]; int i; int num_citizens = get_city_citizen_types(pcity, index, categories); - int offset = MIN(tileset_small_sprite_width(tileset), PIXCOMM_WIDTH / num_citizens); + int offset = MIN(tileset_small_sprite_width(tileset) + / tileset_scale(tileset), PIXCOMM_WIDTH / num_citizens); gtk_pixcomm_freeze(dst); gtk_pixcomm_clear(dst); Modified: branches/S3_0/client/gui-gtk-2.0/sprite.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/client/gui-gtk-2.0/sprite.c?rev=34935&r1=34934&r2=34935&view=diff ============================================================================== --- branches/S3_0/client/gui-gtk-2.0/sprite.c (original) +++ branches/S3_0/client/gui-gtk-2.0/sprite.c Thu Feb 2 20:47:49 2017 @@ -18,6 +18,7 @@ /* utility */ #include "log.h" #include "mem.h" +#include "math.h" #include "shared.h" /* client/gtk-2.0 */ @@ -67,7 +68,13 @@ height = CLIP(0, height, source->height - y); sub = gdk_pixbuf_new_subpixbuf(sprite_get_pixbuf(source), x, y, width, height); - mypixbuf = gdk_pixbuf_copy(sub); + if (scale == 1.0f) { + mypixbuf = gdk_pixbuf_copy(sub); + } else { + mypixbuf = gdk_pixbuf_scale_simple(sub, ceil(width *scale), + ceil(height * scale), + GDK_INTERP_NEAREST); + } g_object_unref(sub); /* Now mask. This reduces the alpha of the final image proportional to the @@ -97,8 +104,8 @@ g_object_unref(p2); } - for (x1 = 0; x1 < width; x1++) { - for (y1 = 0; y1 < height; y1++) { + for (x1 = 0; x1 < ceil(width * scale); x1++) { + for (y1 = 0; y1 < ceil(height * scale); y1++) { int mask_x = x1 - mask_offset_x, mask_y = y1 - mask_offset_y; guchar *alpha = gdk_pixbuf_get_pixels(mypixbuf) + y1 * gdk_pixbuf_get_rowstride(mypixbuf) _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits