[gnome-games] aisleriot: Implement cairo rendering in ArCardThemeSVG
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] aisleriot: Implement cairo rendering in ArCardThemeSVG
- Date: Fri, 13 Aug 2010 14:22:57 +0000 (UTC)
commit e4d4b55b0c02883b4b56c11253fe1e11561d5fc9
Author: Christian Persch <chpe gnome org>
Date: Fri Aug 13 16:22:32 2010 +0200
aisleriot: Implement cairo rendering in ArCardThemeSVG
aisleriot/lib/ar-card-theme-svg.c | 54 +++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
---
diff --git a/aisleriot/lib/ar-card-theme-svg.c b/aisleriot/lib/ar-card-theme-svg.c
index 4685a35..d2aa7d5 100644
--- a/aisleriot/lib/ar-card-theme-svg.c
+++ b/aisleriot/lib/ar-card-theme-svg.c
@@ -99,6 +99,57 @@ ar_card_theme_svg_get_card_pixbuf (ArCardTheme *card_theme,
return subpixbuf;
}
+#if GTK_CHECK_VERSION (2, 10,0)
+static void
+ar_card_theme_svg_paint_card (ArCardTheme *card_theme,
+ cairo_t *cr,
+ int card_id)
+{
+ ArCardThemePreimage *preimage_card_theme = (ArCardThemePreimage *) card_theme;
+ GamesPreimage *preimage = preimage_card_theme->cards_preimage;
+ int suit, rank;
+ double card_width, card_height;
+ double width, height;
+ double offsetx, offsety;
+ double zoomx, zoomy;
+ char node[32];
+
+ g_print ("really here!\n");
+ if (G_UNLIKELY (card_id == AR_CARD_SLOT)) {
+ games_preimage_render_cairo (preimage_card_theme->slot_preimage,
+ cr,
+ preimage_card_theme->card_size.width,
+ preimage_card_theme->card_size.height);
+ return;
+ }
+
+ 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;
+
+ ar_card_get_node_by_suit_and_rank_snprintf (node, sizeof (node), suit, rank);
+
+ games_preimage_render_cairo_sub (preimage,
+ cr,
+ node,
+ preimage_card_theme->card_size.width,
+ preimage_card_theme->card_size.height,
+ offsetx, offsety,
+ zoomx, zoomy);
+}
+#endif /* GTK 2.10 */
+
static void
ar_card_theme_svg_init (ArCardThemeSVG * cardtheme)
{
@@ -147,6 +198,9 @@ ar_card_theme_svg_class_init (ArCardThemeSVGClass * klass)
theme_class->foreach_theme_dir = ar_card_theme_svg_class_foreach_theme_dir;
theme_class->get_card_pixbuf = ar_card_theme_svg_get_card_pixbuf;
+#if GTK_CHECK_VERSION (2, 10, 0)
+ theme_class->paint_card = ar_card_theme_svg_paint_card;
+#endif
preimage_theme_class->needs_scalable_cards = TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]