+struct EditorButtonInfo
+{
+ struct XY prev_level;
+ struct XY next_level;
+
+ struct XY properties;
+
+ struct XY draw_single;
+ struct XY draw_connected;
+ struct XY draw_line;
+ struct XY draw_arc;
+ struct XY draw_rectangle;
+ struct XY draw_filled_box;
+ struct XY rotate_up;
+ struct XY draw_text;
+ struct XY flood_fill;
+ struct XY rotate_left;
+ struct XY zoom_level;
+ struct XY rotate_right;
+ struct XY draw_random;
+ struct XY grab_brush;
+ struct XY rotate_down;
+ struct XY pick_element;
+
+ struct XY ce_copy_from;
+ struct XY ce_copy_to;
+ struct XY ce_swap;
+ struct XY ce_copy;
+ struct XY ce_paste;
+
+ struct XY undo;
+ struct XY conf;
+ struct XY save;
+ struct XY clear;
+ struct XY test;
+ struct XY exit;
+};
+
+struct EditorInputInfo
+{
+ struct XY level_number;
+};
+
+struct EditorPaletteElementInfo
+{
+ int x, y;
+ int tile_size;
+};
+
+struct EditorPaletteInfo
+{
+ int x, y;
+ int cols, rows;
+ int tile_size;
+
+ struct EditorPaletteElementInfo element_left;
+ struct EditorPaletteElementInfo element_middle;
+ struct EditorPaletteElementInfo element_right;
+};
+
+struct EditorInfo
+{
+ struct EditorButtonInfo button;
+ struct EditorInputInfo input;
+ struct EditorPaletteInfo palette;
+};
+
+struct ViewportInfo
+{
+ struct RectWithBorder window;
+ struct RectWithBorder playfield[NUM_SPECIAL_GFX_ARGS];
+ struct RectWithBorder door_1[NUM_SPECIAL_GFX_ARGS];
+ struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS];
+};
+