summaryrefslogtreecommitdiff
path: root/apps/plugins/goban/display.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/goban/display.h')
-rw-r--r--apps/plugins/goban/display.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/apps/plugins/goban/display.h b/apps/plugins/goban/display.h
new file mode 100644
index 0000000000..2f64f1b6ca
--- /dev/null
+++ b/apps/plugins/goban/display.h
@@ -0,0 +1,111 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007-2009 Joshua Simmons <mud at majidejima dot com>
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#ifndef GOBAN_DISPLAY_H
23#define GOBAN_DISPLAY_H
24
25#include "types.h"
26#include "goban.h"
27
28/* Call before using the display */
29void setup_display (void);
30
31/* Draw the board and the "footer" */
32void draw_screen_display (void);
33
34/* The location of the cursor */
35extern unsigned short cursor_pos;
36
37/* True if we should draw variations */
38extern bool draw_variations;
39
40/* Used to set the zoom level, loaded in from the config file */
41unsigned int saved_circle_size;
42
43/* the size of one intersection on the board, in pixels */
44unsigned int intersection_size;
45
46/* Clear the marks from the board */
47void clear_marks_display (void);
48
49/* Add a mark to the display */
50void set_mark_display (unsigned short pos, unsigned char mark_char);
51
52/* Set to indicate if we should display the 'C' in the footer or not */
53void set_comment_display (bool new_val);
54
55/* Move the display so that the position pos is in view, very useful if
56 we're zoomed in (otherwise does nothing) */
57void move_display (unsigned short pos);
58
59/* These should all be obvious. Zoom levels start at 1. set_zoom_display
60 will set the default zoom level if called with zoom_level == 0 */
61void set_zoom_display (unsigned int zoom_level);
62unsigned int current_zoom_display (void);
63unsigned int min_zoom_display (void);
64unsigned int max_zoom_display (void);
65
66/* MIN and MAX intersection sizes */
67#define MIN_DEFAULT_INT_SIZE (11)
68
69/* The absolute minimum that is allowed */
70#define MIN_INT_SIZE (3)
71
72/* Don't allow one bigger than the size of the screen */
73#define MAX_INT_SIZE (min((LCD_BOARD_WIDTH & 1) ? LCD_BOARD_WIDTH : \
74 LCD_BOARD_WIDTH - 1, \
75 (LCD_BOARD_HEIGHT & 1) ? LCD_BOARD_HEIGHT : \
76 LCD_BOARD_HEIGHT - 1))
77
78
79
80
81/* NOTE: we do one "extra" intersection in each direction which goes off
82 the screen, because it makes drawing a little bit prettier (the board
83 doesn't end before the edge of the screen this way) */
84
85
86/* right is a screen boundary if we're on a tall screen, bottom is a
87 screen boundary if we're on a wide screen */
88#if defined(GBN_TALL_SCREEN)
89#define MIN_X ((min_x_int == 0) ? 0 : min_x_int - 1)
90#define MIN_Y (min_y_int)
91/* always flush with top, no need for extra */
92
93#define MAX_X (min(min_x_int + num_x_ints + 1, board_width))
94#define MAX_Y (min(min_y_int + num_y_ints, board_height))
95#else
96#define MIN_X (min_x_int)
97/* always flush with left, no need for extra */
98
99#define MIN_Y ((min_y_int == 0) ? 0 : min_y_int - 1)
100#define MAX_X (min(min_x_int + num_x_ints, board_width))
101#define MAX_Y (min(min_y_int + num_y_ints + 1, board_height))
102#endif
103
104/* These are the same as above, except without the extra intersection is
105 board-boundary directions */
106#define REAL_MIN_X (min_x_int)
107#define REAL_MIN_Y (min_y_int)
108#define REAL_MAX_X (min(min_x_int + num_x_ints, board_width))
109#define REAL_MAX_Y (min(min_y_int + num_y_ints, board_height))
110
111#endif