summaryrefslogtreecommitdiff
path: root/apps/plugins/goban/goban.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/goban/goban.h')
-rw-r--r--apps/plugins/goban/goban.h277
1 files changed, 277 insertions, 0 deletions
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
new file mode 100644
index 0000000000..84866d5b47
--- /dev/null
+++ b/apps/plugins/goban/goban.h
@@ -0,0 +1,277 @@
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_MAIN_H
23#define GOBAN_MAIN_H
24
25/* Enable this to run test mode. (see the end of util.c) */
26#if 0
27#define GBN_TEST
28#endif
29
30#include "types.h"
31#include "util.h"
32
33
34/* Colors of various things. The colors on mono bitmap targets is fixed
35 based on the background/foreground color. */
36#ifdef HAVE_LCD_COLOR
37#define BOARD_COLOR LCD_RGBPACK(184,136,72)
38#define WHITE_COLOR LCD_RGBPACK(255,255,255)
39#define BLACK_COLOR LCD_RGBPACK(0,0,0)
40#define LINE_COLOR LCD_RGBPACK(0,0,0)
41#define BACKGROUND_COLOR LCD_RGBPACK(41,104,74)
42#define CURSOR_COLOR LCD_RGBPACK(222,0,0)
43#define MARK_COLOR LCD_RGBPACK(0,0,255)
44#elif LCD_DEPTH > 1 /* grayscale */
45#define BOARD_COLOR LCD_LIGHTGRAY
46#define WHITE_COLOR LCD_WHITE
47#define BLACK_COLOR LCD_BLACK
48#define LINE_COLOR LCD_BLACK
49#define BACKGROUND_COLOR LCD_DARKGRAY
50#define CURSOR_COLOR LCD_DARKGRAY
51#define MARK_COLOR LCD_DARKGRAY
52#endif
53
54/* Key setups */
55#ifdef HAVE_TOUCHSCREEN
56#define GBN_BUTTON_UP BUTTON_TOPMIDDLE
57#define GBN_BUTTON_DOWN BUTTON_BOTTOMMIDDLE
58#define GBN_BUTTON_LEFT BUTTON_MIDLEFT
59#define GBN_BUTTON_RIGHT BUTTON_MIDRIGHT
60#define GBN_BUTTON_RETREAT BUTTON_BOTTOMLEFT
61#define GBN_BUTTON_ADVANCE BUTTON_BOTTOMRIGHT
62#define GBN_BUTTON_MENU BUTTON_TOPLEFT
63#define GBN_BUTTON_PLAY BUTTON_CENTER | BUTTON_REL
64#define GBN_BUTTON_CONTEXT BUTTON_CENTER | BUTTON_REPEAT
65#define GBN_BUTTON_NEXT_VAR BUTTON_TOPRIGHT
66
67#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
68 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
69 || (CONFIG_KEYPAD == IPOD_4G_PAD)
70#define GBN_BUTTON_UP BUTTON_MENU
71#define GBN_BUTTON_DOWN BUTTON_PLAY
72#define GBN_BUTTON_LEFT BUTTON_LEFT
73#define GBN_BUTTON_RIGHT BUTTON_RIGHT
74#define GBN_BUTTON_RETREAT BUTTON_SCROLL_BACK
75#define GBN_BUTTON_ADVANCE BUTTON_SCROLL_FWD
76#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
77#define GBN_BUTTON_MENU BUTTON_SELECT | BUTTON_REPEAT
78/* no context */
79/* no next var */
80
81#elif (CONFIG_KEYPAD == SANSA_E200_PAD) \
82 || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
83#define GBN_BUTTON_UP BUTTON_UP
84#define GBN_BUTTON_DOWN BUTTON_DOWN
85#define GBN_BUTTON_LEFT BUTTON_LEFT
86#define GBN_BUTTON_RIGHT BUTTON_RIGHT
87#define GBN_BUTTON_RETREAT BUTTON_SCROLL_BACK
88#define GBN_BUTTON_ADVANCE BUTTON_SCROLL_FWD
89#define GBN_BUTTON_MENU BUTTON_POWER
90#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
91#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
92#define GBN_BUTTON_NEXT_VAR BUTTON_REC
93
94#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
95#define GBN_BUTTON_UP BUTTON_UP
96#define GBN_BUTTON_DOWN BUTTON_DOWN
97#define GBN_BUTTON_LEFT BUTTON_LEFT
98#define GBN_BUTTON_RIGHT BUTTON_RIGHT
99#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
100#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
101#define GBN_BUTTON_MENU BUTTON_POWER
102#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
103#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
104#define GBN_BUTTON_NEXT_VAR BUTTON_REC
105
106#elif (CONFIG_KEYPAD == GIGABEAT_PAD) \
107#define GBN_BUTTON_UP BUTTON_UP
108#define GBN_BUTTON_DOWN BUTTON_DOWN
109#define GBN_BUTTON_LEFT BUTTON_LEFT
110#define GBN_BUTTON_RIGHT BUTTON_RIGHT
111#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
112#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
113#define GBN_BUTTON_MENU BUTTON_MENU
114#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
115#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
116#define GBN_BUTTON_NEXT_VAR BUTTON_A
117
118#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
119#define GBN_BUTTON_UP BUTTON_UP
120#define GBN_BUTTON_DOWN BUTTON_DOWN
121#define GBN_BUTTON_LEFT BUTTON_LEFT
122#define GBN_BUTTON_RIGHT BUTTON_RIGHT
123#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
124#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
125#define GBN_BUTTON_MENU BUTTON_MENU
126#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
127#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
128#define GBN_BUTTON_NEXT_VAR BUTTON_PLAY
129
130#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
131#define GBN_BUTTON_UP BUTTON_SCROLL_UP
132#define GBN_BUTTON_DOWN BUTTON_SCROLL_DOWN
133#define GBN_BUTTON_LEFT BUTTON_LEFT
134#define GBN_BUTTON_RIGHT BUTTON_RIGHT
135#define GBN_BUTTON_RETREAT BUTTON_FF
136#define GBN_BUTTON_ADVANCE BUTTON_REW
137#define GBN_BUTTON_MENU BUTTON_POWER
138#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
139#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
140/* No next var */
141
142#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
143 (CONFIG_KEYPAD == IRIVER_H300_PAD)
144#define GBN_BUTTON_UP BUTTON_UP
145#define GBN_BUTTON_DOWN BUTTON_DOWN
146#define GBN_BUTTON_LEFT BUTTON_LEFT
147#define GBN_BUTTON_RIGHT BUTTON_RIGHT
148#define GBN_BUTTON_RETREAT BUTTON_OFF
149#define GBN_BUTTON_ADVANCE BUTTON_ON
150#define GBN_BUTTON_MENU BUTTON_MODE
151#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
152#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
153#define GBN_BUTTON_NEXT_VAR BUTTON_REC
154
155#elif (CONFIG_KEYPAD == MROBE100_PAD)
156#define GBN_BUTTON_UP BUTTON_UP
157#define GBN_BUTTON_DOWN BUTTON_DOWN
158#define GBN_BUTTON_LEFT BUTTON_LEFT
159#define GBN_BUTTON_RIGHT BUTTON_RIGHT
160#define GBN_BUTTON_RETREAT BUTTON_MENU
161#define GBN_BUTTON_ADVANCE BUTTON_PLAY
162#define GBN_BUTTON_MENU BUTTON_DISPLAY
163#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
164#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
165#define GBN_BUTTON_NEXT_VAR BUTTON_POWER
166
167#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
168#define GBN_BUTTON_UP BUTTON_UP
169#define GBN_BUTTON_DOWN BUTTON_DOWN
170#define GBN_BUTTON_LEFT BUTTON_LEFT
171#define GBN_BUTTON_RIGHT BUTTON_RIGHT
172#define GBN_BUTTON_RETREAT BUTTON_PLAY
173#define GBN_BUTTON_ADVANCE BUTTON_REC
174#define GBN_BUTTON_MENU BUTTON_POWER
175#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
176#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
177/* no next var */
178
179#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
180/* TODO: these are basically complete guesses, I have no manual to go by */
181#define GBN_BUTTON_UP BUTTON_RC_VOL_UP
182#define GBN_BUTTON_DOWN BUTTON_RC_VOL_DOWN
183#define GBN_BUTTON_LEFT BUTTON_RC_REW
184#define GBN_BUTTON_RIGHT BUTTON_RC_FF
185#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
186#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
187#define GBN_BUTTON_MENU BUTTON_MODE
188#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
189#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
190/* no next var */
191
192#elif (CONFIG_KEYPAD == RECORDER_PAD)
193#define GBN_BUTTON_UP BUTTON_UP
194#define GBN_BUTTON_DOWN BUTTON_DOWN
195#define GBN_BUTTON_LEFT BUTTON_LEFT
196#define GBN_BUTTON_RIGHT BUTTON_RIGHT
197#define GBN_BUTTON_RETREAT BUTTON_F1
198#define GBN_BUTTON_ADVANCE BUTTON_F3
199#define GBN_BUTTON_MENU BUTTON_F2
200#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
201#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
202#define GBN_BUTTON_NEXT_VAR BUTTON_ON
203
204#elif (CONFIG_KEYPAD == ONDIO_PAD)
205#define GBN_BUTTON_UP BUTTON_UP
206#define GBN_BUTTON_DOWN BUTTON_DOWN
207#define GBN_BUTTON_LEFT BUTTON_LEFT
208#define GBN_BUTTON_RIGHT BUTTON_RIGHT
209#define GBN_BUTTON_MENU BUTTON_MENU | BUTTON_REPEAT
210#define GBN_BUTTON_PLAY BUTTON_MENU | BUTTON_REL
211#define GBN_BUTTON_NAV_MODE BUTTON_OFF
212/* No context */
213/* No advance/retreat */
214/* no next var */
215
216#else
217#error Unsupported keypad
218#endif
219
220
221/* The smallest dimension of the LCD */
222#define LCD_MIN_DIMENSION (LCD_HEIGHT > LCD_WIDTH ? LCD_WIDTH : LCD_HEIGHT)
223
224
225/* Determine if we have a wide screen or a tall screen. This is used to
226 place the board and footer in acceptable locations also, set the
227 LCD_BOARD_SIZE, making sure that we have at least 16 pixels for the
228 "footer" on either the bottom or the right. */
229
230#define FOOTER_RESERVE (16)
231
232#if (LCD_WIDTH > LCD_HEIGHT)
233
234#define GBN_WIDE_SCREEN
235
236#define LCD_BOARD_WIDTH (LCD_WIDTH - FOOTER_RESERVE)
237#define LCD_BOARD_HEIGHT LCD_HEIGHT
238
239#else
240
241#define GBN_TALL_SCREEN
242
243#define LCD_BOARD_WIDTH LCD_WIDTH
244#define LCD_BOARD_HEIGHT (LCD_HEIGHT - FOOTER_RESERVE)
245
246#endif // LCD_WIDTH > LCD_HEIGHT
247
248
249/* The directory we default to for saving crap */
250#define DEFAULT_SAVE_DIR "/sgf"
251
252/* The default file we save to */
253#define DEFAULT_SAVE (DEFAULT_SAVE_DIR "/gbn_def.sgf")
254
255/* The size of the buffer we store filenames in (1 reserved for '\0') */
256#define SAVE_FILE_LENGTH 256
257
258/* The maximum setting for idle autosave time, in minutes */
259#define MAX_AUTOSAVE (30)
260
261/* On mono targets, draw while stones with a black outline so they are
262 actually visibile instead of being white on white */
263#if (LCD_DEPTH == 1)
264#define OUTLINE_STONES
265#endif
266
267/* The current play mode */
268extern enum play_mode_t play_mode;
269
270/* Show comments when redoing onto a move? */
271extern bool auto_show_comments;
272
273/* A stack used for parsing/outputting as well as some board functions
274 such as counting liberties and filling in/ removing stones */
275extern struct stack_t parse_stack;
276
277#endif