From e3c446d9470ae8426d0aeb37ecf478b4a6ffd705 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Wed, 4 Mar 2009 15:52:59 -0800 Subject: [PATCH] Fix vertical spacing of the board Previously we were using unit spacing for both X and Y, but the correct answer is to include a sqrt(0.5) factor in the Y axis. --- dvonn.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dvonn.c b/dvonn.c index 1744770..43de664 100644 --- a/dvonn.c +++ b/dvonn.c @@ -166,13 +166,13 @@ on_expose_event_draw (GtkWidget *widget, layout->height = widget->allocation.height; x_size = layout->width; - if (x_size > layout->height * BOARD_X_SIZE / BOARD_Y_SIZE) - x_size = layout->height * BOARD_X_SIZE / BOARD_Y_SIZE; + if (x_size > layout->height * BOARD_X_SIZE / (1 + M_SQRT1_2 * (BOARD_Y_SIZE-1))) + x_size = layout->height * BOARD_X_SIZE / (1 + M_SQRT1_2 * (BOARD_Y_SIZE-1)); /* Size must be a multiple of the integer cell_size */ layout->cell_size = x_size / BOARD_X_SIZE; x_size = layout->cell_size * BOARD_X_SIZE; - y_size = layout->cell_size * BOARD_Y_SIZE; + y_size = layout->cell_size * (1 + M_SQRT1_2 * (BOARD_Y_SIZE-1)); layout->x_offset = (layout->width - x_size) / 2; layout->y_offset = (layout->height - y_size) / 2; @@ -196,7 +196,8 @@ on_expose_event_draw (GtkWidget *widget, cairo_save (cr); cairo_translate(cr, - x + (y - DVONN_BOARD_Y_SIZE/2) / 2.0, y); + x + (y - DVONN_BOARD_Y_SIZE/2) / 2.0, + M_SQRT1_2 * y); ring_path (cr); cairo_set_source_rgba (cr, 0.0, 0.0, 0.2, 0.1); cairo_fill (cr); @@ -257,7 +258,7 @@ loa_game_create_view (loa_game_t *game) view_init (view, game, window); - gtk_window_set_default_size (GTK_WINDOW (window), 561, 255); + gtk_window_set_default_size (GTK_WINDOW (window), 780, 251); g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event_quit), NULL); -- 2.43.0