static void render_graphics (void) { theme_pixbuf = games_preimage_render (theme_preimage, 14 * tile_width, tile_height); rerender_needed = FALSE; }
void bj_chip_set_size (gint width, gint height) { static const gchar *names[4] = { CHIP_FILENAME_100, CHIP_FILENAME_25, CHIP_FILENAME_5, CHIP_FILENAME_1 }; const char *pixmapdir; pixmapdir = games_runtime_get_directory (GAMES_RUNTIME_GAME_PIXMAP_DIRECTORY); for (guint i = 0; i < G_N_ELEMENTS (names); i++) { gchar *fullname; fullname = g_build_filename (pixmapdir, names[i], NULL); if (!fullname) continue; if (!chip_preimage[i]) chip_preimage[i] = games_preimage_new_from_file (fullname, NULL); if (chip_scaled_pixbuf[i]) g_object_unref (chip_scaled_pixbuf[i]); chip_scaled_pixbuf[i] = games_preimage_render (chip_preimage[i], width, height); g_free (fullname); } }
static GdkPixbuf * games_card_theme_svg_get_card_pixbuf (GamesCardTheme *card_theme, int card_id) { GamesCardThemePreimage *preimage_card_theme = (GamesCardThemePreimage *) card_theme; GamesPreimage *preimage = preimage_card_theme->cards_preimage; GdkPixbuf *subpixbuf; int suit, rank; double card_width, card_height; double width, height; double offsetx, offsety; double zoomx, zoomy; char node[32]; if (G_UNLIKELY (card_id == GAMES_CARD_SLOT)) { subpixbuf = games_preimage_render (preimage_card_theme->slot_preimage, preimage_card_theme->card_size.width, preimage_card_theme->card_size.height); return subpixbuf; } suit = card_id / 13; rank = card_id % 13; card_width = ((double) games_preimage_get_width (preimage)) / N_COLS; card_height = ((double) games_preimage_get_height (preimage)) / N_ROWS; width = preimage_card_theme->card_size.width - 2 * DELTA; height = preimage_card_theme->card_size.height - 2 * DELTA; offsetx = -((double) rank) * card_width + DELTA; offsety = -((double) suit) * card_height + DELTA; zoomx = width / card_width; zoomy = height / card_height; games_card_get_node_by_suit_and_rank_snprintf (node, sizeof (node), suit, rank); subpixbuf = games_preimage_render_sub (preimage, node, preimage_card_theme->card_size.width, preimage_card_theme->card_size.height, offsetx, offsety, zoomx, zoomy); return subpixbuf; }
static GdkPixbuf * ar_card_theme_sliced_get_card_pixbuf (ArCardTheme *card_theme, int card_id) { ArCardThemePreimage *preimage_card_theme = (ArCardThemePreimage *) card_theme; ArCardThemeSliced *theme = (ArCardThemeSliced *) card_theme; GdkPixbuf *subpixbuf, *card_pixbuf; int suit, rank; if (G_UNLIKELY (card_id == AR_CARD_SLOT)) { subpixbuf = games_preimage_render (preimage_card_theme->slot_preimage, preimage_card_theme->card_size.width, preimage_card_theme->card_size.height); return subpixbuf; } suit = card_id / 13; rank = card_id % 13; if (!theme->source && (!theme->scalable || !ar_card_theme_sliced_prerender_scalable (theme))) return NULL; subpixbuf = gdk_pixbuf_new_subpixbuf (theme->source, rank * theme->subsize.width, suit * theme->subsize.height, theme->subsize.width, theme->subsize.height); if (theme->scalable) { card_pixbuf = subpixbuf; } else { card_pixbuf = gdk_pixbuf_scale_simple (subpixbuf, preimage_card_theme->card_size.width, preimage_card_theme->card_size.height, GDK_INTERP_BILINEAR); g_object_unref (subpixbuf); } return card_pixbuf; }
static gboolean ar_card_theme_sliced_prerender_scalable (ArCardThemeSliced *theme) { ArCardThemePreimage *preimage_card_theme = (ArCardThemePreimage *) theme; g_assert (theme->source == NULL); _games_profile_start ("prerendering source pixbuf for %s card theme %s", G_OBJECT_TYPE_NAME (theme), ((ArCardTheme*)theme)->theme_info->display_name); theme->source = games_preimage_render (preimage_card_theme->cards_preimage, preimage_card_theme->card_size.width * 13, preimage_card_theme->card_size.height * 5); _games_profile_end ("prerendering source pixbuf for %s card theme %s", G_OBJECT_TYPE_NAME (theme), ((ArCardTheme*)theme)->theme_info->display_name); if (!theme->source) return FALSE; theme->subsize.width = gdk_pixbuf_get_width (theme->source) / 13; theme->subsize.height = gdk_pixbuf_get_height (theme->source) / 5; return TRUE; }