+#define KEY_SET_FOCUS (1 << BIT_SET_FOCUS)
+
+#define MV_DIR_FROM_BIT(x) ((x) < NUM_DIRECTIONS ? 1 << (x) : \
+ (x) == MV_BIT_UPLEFT ? MV_UPLEFT : \
+ (x) == MV_BIT_UPRIGHT ? MV_UPRIGHT : \
+ (x) == MV_BIT_DOWNLEFT ? MV_DOWNLEFT : \
+ (x) == MV_BIT_DOWNRIGHT ? MV_DOWNRIGHT : \
+ MV_NONE)
+
+#define MV_DIR_TO_BIT(x) ((x) == MV_LEFT ? MV_BIT_LEFT : \
+ (x) == MV_RIGHT ? MV_BIT_RIGHT : \
+ (x) == MV_UP ? MV_BIT_UP : \
+ (x) == MV_DOWN ? MV_BIT_DOWN : \
+ (x) == MV_UPLEFT ? MV_BIT_UPLEFT : \
+ (x) == MV_UPRIGHT ? MV_BIT_UPRIGHT : \
+ (x) == MV_DOWNLEFT ? MV_BIT_DOWNLEFT : \
+ (x) == MV_DOWNRIGHT ? MV_BIT_DOWNRIGHT : \
+ MV_BIT_DOWN)
+
+#define MV_DIR_OPPOSITE(x) ((x) == MV_LEFT ? MV_RIGHT : \
+ (x) == MV_RIGHT ? MV_LEFT : \
+ (x) == MV_UP ? MV_DOWN : \
+ (x) == MV_DOWN ? MV_UP : \
+ (x) == MV_UPLEFT ? MV_DOWNRIGHT : \
+ (x) == MV_UPRIGHT ? MV_DOWNLEFT : \
+ (x) == MV_DOWNLEFT ? MV_UPRIGHT : \
+ (x) == MV_DOWNRIGHT ? MV_UPLEFT : \
+ MV_NONE)
+
+/* values for animation mode (frame order and direction) */
+/* (stored in level files -- never change existing values) */
+#define ANIM_NONE 0
+#define ANIM_LOOP (1 << 0)
+#define ANIM_LINEAR (1 << 1)
+#define ANIM_PINGPONG (1 << 2)
+#define ANIM_PINGPONG2 (1 << 3)
+#define ANIM_RANDOM (1 << 4)
+#define ANIM_CE_VALUE (1 << 5)
+#define ANIM_CE_SCORE (1 << 6)
+#define ANIM_CE_DELAY (1 << 7)
+#define ANIM_REVERSE (1 << 8)
+#define ANIM_OPAQUE_PLAYER (1 << 9)
+
+/* values for special (non game element) animation modes */
+/* (not stored in level files -- can be changed, if needed) */
+#define ANIM_HORIZONTAL (1 << 10)
+#define ANIM_VERTICAL (1 << 11)
+#define ANIM_CENTERED (1 << 12)
+#define ANIM_STATIC_PANEL (1 << 13)
+#define ANIM_ALL (1 << 14)
+#define ANIM_ONCE (1 << 15)
+
+#define ANIM_DEFAULT ANIM_LOOP
+
+/* values for special drawing styles (currently only for crumbled graphics) */
+#define STYLE_NONE 0
+#define STYLE_ACCURATE_BORDERS (1 << 0)
+#define STYLE_INNER_CORNERS (1 << 1)
+
+#define STYLE_DEFAULT STYLE_NONE
+
+#define ANIM_EVENT_NONE 0
+#define ANIM_EVENT_CLICK_ANIM_1 (1 << 0)
+#define ANIM_EVENT_CLICK_ANIM_2 (1 << 1)
+#define ANIM_EVENT_CLICK_ANIM_3 (1 << 2)
+#define ANIM_EVENT_CLICK_ANIM_4 (1 << 3)
+#define ANIM_EVENT_CLICK_ANIM_5 (1 << 4)
+#define ANIM_EVENT_CLICK_ANIM_6 (1 << 5)
+#define ANIM_EVENT_CLICK_ANIM_7 (1 << 6)
+#define ANIM_EVENT_CLICK_ANIM_8 (1 << 7)
+#define ANIM_EVENT_CLICK_PART_1 (1 << 8)
+#define ANIM_EVENT_CLICK_PART_2 (1 << 9)
+#define ANIM_EVENT_CLICK_PART_3 (1 << 10)
+#define ANIM_EVENT_CLICK_PART_4 (1 << 11)
+#define ANIM_EVENT_CLICK_PART_5 (1 << 12)
+#define ANIM_EVENT_CLICK_PART_6 (1 << 13)
+#define ANIM_EVENT_CLICK_PART_7 (1 << 14)
+#define ANIM_EVENT_CLICK_PART_8 (1 << 15)
+#define ANIM_EVENT_CLICK_SELF (1 << 16)
+#define ANIM_EVENT_CLICK_ANY (1 << 17)
+
+#define ANIM_EVENT_CLICK_ANIM_ALL (ANIM_EVENT_CLICK_ANIM_1 | \
+ ANIM_EVENT_CLICK_ANIM_2 | \
+ ANIM_EVENT_CLICK_ANIM_3 | \
+ ANIM_EVENT_CLICK_ANIM_4 | \
+ ANIM_EVENT_CLICK_ANIM_5 | \
+ ANIM_EVENT_CLICK_ANIM_6 | \
+ ANIM_EVENT_CLICK_ANIM_7 | \
+ ANIM_EVENT_CLICK_ANIM_8)
+
+#define ANIM_EVENT_CLICK_PART_ALL (ANIM_EVENT_CLICK_PART_1 | \
+ ANIM_EVENT_CLICK_PART_2 | \
+ ANIM_EVENT_CLICK_PART_3 | \
+ ANIM_EVENT_CLICK_PART_4 | \
+ ANIM_EVENT_CLICK_PART_5 | \
+ ANIM_EVENT_CLICK_PART_6 | \
+ ANIM_EVENT_CLICK_PART_7 | \
+ ANIM_EVENT_CLICK_PART_8)
+
+#define ANIM_EVENT_DEFAULT ANIM_EVENT_NONE
+
+/* values for fade mode */
+#define FADE_TYPE_NONE 0
+#define FADE_TYPE_FADE_IN (1 << 0)
+#define FADE_TYPE_FADE_OUT (1 << 1)
+#define FADE_TYPE_TRANSFORM (1 << 2)
+#define FADE_TYPE_CROSSFADE (1 << 3)
+#define FADE_TYPE_MELT (1 << 4)
+#define FADE_TYPE_CURTAIN (1 << 5)
+#define FADE_TYPE_SKIP (1 << 6)
+
+#define FADE_MODE_NONE (FADE_TYPE_NONE)
+#define FADE_MODE_FADE_IN (FADE_TYPE_FADE_IN)
+#define FADE_MODE_FADE_OUT (FADE_TYPE_FADE_OUT)
+#define FADE_MODE_FADE (FADE_TYPE_FADE_IN | FADE_TYPE_FADE_OUT)
+#define FADE_MODE_TRANSFORM (FADE_TYPE_TRANSFORM | FADE_TYPE_FADE_IN)
+#define FADE_MODE_CROSSFADE (FADE_MODE_TRANSFORM | FADE_TYPE_CROSSFADE)
+#define FADE_MODE_MELT (FADE_MODE_TRANSFORM | FADE_TYPE_MELT)
+#define FADE_MODE_CURTAIN (FADE_MODE_TRANSFORM | FADE_TYPE_CURTAIN)
+#define FADE_MODE_SKIP_FADE_IN (FADE_TYPE_SKIP | FADE_TYPE_FADE_IN)
+#define FADE_MODE_SKIP_FADE_OUT (FADE_TYPE_SKIP | FADE_TYPE_FADE_OUT)
+
+#define FADE_MODE_DEFAULT FADE_MODE_FADE
+
+/* values for toon positions */
+#define POS_UNDEFINED -1
+#define POS_LEFT 0
+#define POS_RIGHT 1
+#define POS_TOP 2
+#define POS_UPPER 3
+#define POS_MIDDLE 4
+#define POS_LOWER 5
+#define POS_BOTTOM 6
+#define POS_ANY 7
+#define POS_LAST 8
+
+/* values for text alignment */
+#define ALIGN_LEFT (1 << 0)
+#define ALIGN_RIGHT (1 << 1)
+#define ALIGN_CENTER (1 << 2)
+#define ALIGN_DEFAULT ALIGN_LEFT
+
+#define VALIGN_TOP (1 << 0)
+#define VALIGN_BOTTOM (1 << 1)
+#define VALIGN_MIDDLE (1 << 2)
+#define VALIGN_DEFAULT VALIGN_TOP
+
+#define ALIGNED_XPOS(x,w,a) ((a) == ALIGN_CENTER ? (x) - (w) / 2 : \
+ (a) == ALIGN_RIGHT ? (x) - (w) : (x))
+#define ALIGNED_YPOS(y,h,v) ((v) == VALIGN_MIDDLE ? (y) - (h) / 2 : \
+ (v) == VALIGN_BOTTOM ? (y) - (h) : (y))
+#define ALIGNED_TEXT_XPOS(p) ALIGNED_XPOS((p)->x, (p)->width, (p)->align)
+#define ALIGNED_TEXT_YPOS(p) ALIGNED_YPOS((p)->y, (p)->height, (p)->valign)