This is basically the minimal necessary support to start using
librsvg to render SVG graphics. Just a single, static red 6 tile
for now.
-Wmissing-prototypes -Wmissing-declarations \
-Wnested-externs -fno-strict-aliasing
-Wmissing-prototypes -Wmissing-declarations \
-Wnested-externs -fno-strict-aliasing
-KUB_CFLAGS=$(WARN_CFLAGS) `pkg-config --cflags gtk+-2.0` -DGTK_DISABLE_DEPRECATED
-KUB_LDFLAGS=`pkg-config --libs gtk+-2.0`
+KUB_CFLAGS=$(WARN_CFLAGS) `pkg-config --cflags gtk+-2.0 librsvg-2.0` -DGTK_DISABLE_DEPRECATED
+KUB_LDFLAGS=`pkg-config --libs gtk+-2.0 librsvg-2.0`
kub: kub.c
$(CC) $(KUB_CFLAGS) $(KUB_LDFLAGS) -o $@ $^
kub: kub.c
$(CC) $(KUB_CFLAGS) $(KUB_LDFLAGS) -o $@ $^
#include <stdlib.h>
#include <time.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <time.h>
#include <gtk/gtk.h>
+#include <librsvg/rsvg.h>
+#include <librsvg/rsvg-cairo.h>
+
+#define FATAL_ERROR(msg) \
+ do { fprintf (stderr, "Error: %s\n", msg); exit (1); } while (0)
char *colors[] = {"Black", "Blue", "Red", "Yellow"};
char *colors[] = {"Black", "Blue", "Red", "Yellow"};
int num_players;
board_t board;
deck_t deck;
int num_players;
board_t board;
deck_t deck;
} game_t;
static void card_print(card_t card)
} game_t;
static void card_print(card_t card)
static void game_init(game_t *game)
{
int i;
static void game_init(game_t *game)
{
int i;
+ GError *error = NULL;
+
game->num_players = 0;
for (i = 0; i < GAME_MAX_PLAYERS; ++i)
game->num_players = 0;
for (i = 0; i < GAME_MAX_PLAYERS; ++i)
board_init(&game->board);
deck_init(&game->deck);
deck_shuffle(&game->deck);
board_init(&game->board);
deck_init(&game->deck);
deck_shuffle(&game->deck);
+
+ game->red6 = rsvg_handle_new_from_file ("tiles/red6.svg", &error);
+ if (error)
+ FATAL_ERROR (error->message);
}
static gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, game_t *game)
}
static gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, game_t *game)
cr = gdk_cairo_create (widget->window);
cr = gdk_cairo_create (widget->window);
- cairo_set_source_rgb (cr, 1, 0, 0); /* red */
- cairo_rectangle (cr, 86, 66, 74, 103);
- cairo_fill (cr);
+ rsvg_handle_render_cairo (game->red6, cr);
game_t game;
srand(time(NULL));
game_t game;
srand(time(NULL));
+
+ gtk_init (&argc, &argv);
game_init(&game);
deck_print(&game.deck);
game_init(&game);
deck_print(&game.deck);
hand_print(&game);
deck_print(&game.deck);
hand_print(&game);
deck_print(&game.deck);
- gtk_init (&argc, &argv);
-
/* Create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window),
/* Create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window),