rnd-20140305-2-src
authorHolger Schemel <info@artsoft.org>
Wed, 5 Mar 2014 16:45:17 +0000 (17:45 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 09:01:10 +0000 (11:01 +0200)
src/conf_gfx.c
src/conf_gfx.h
src/conf_var.c
src/conftime.h
src/editor.c
src/main.h

index 66f823c27713a14c59291cb46a87e7b55587dcd8..5c8048dc0c9fb1af8a539272ba2e5324694c68b3 100644 (file)
@@ -5226,10 +5226,82 @@ struct ConfigInfo image_config[] =
   { "editor.cascade_list.active.ypos",         "8"                     },
   { "editor.cascade_list.active.frames",       "1"                     },
 
   { "editor.cascade_list.active.ypos",         "8"                     },
   { "editor.cascade_list.active.frames",       "1"                     },
 
-  { "editor.palette_button",                   "RocksDoor.png"         },
-  { "editor.palette_button.x",                 "525"                   },
-  { "editor.palette_button.y",                 "30"                    },
-  { "editor.palette_button.pressed_xoffset",   "-20"                   },
+  { "editor.palette.button",                   "RocksDoor.png"         },
+  { "editor.palette.button.x",                 "525"                   },
+  { "editor.palette.button.y",                 "30"                    },
+  { "editor.palette.button.width",             "20"                    },
+  { "editor.palette.button.height",            "20"                    },
+  { "editor.palette.button.pressed_xoffset",   "-20"                   },
+
+  { "editor.palette.scroll_up",                        "RocksDoor.png"         },
+  { "editor.palette.scroll_up.x",              "750"                   },
+  { "editor.palette.scroll_up.y",              "0"                     },
+  { "editor.palette.scroll_up.width",          "10"                    },
+  { "editor.palette.scroll_up.height",         "10"                    },
+  { "editor.palette.scroll_up.pressed_xoffset",        "-10"                   },
+
+  { "editor.palette.scroll_down",              "RocksDoor.png"         },
+  { "editor.palette.scroll_down.x",            "750"                   },
+  { "editor.palette.scroll_down.y",            "10"                    },
+  { "editor.palette.scroll_down.width",                "10"                    },
+  { "editor.palette.scroll_down.height",       "10"                    },
+  { "editor.palette.scroll_down.pressed_xoffset", "-10"                        },
+
+  { "editor.palette.scrollbar",                        "RocksDoor.png"         },
+  { "editor.palette.scrollbar.x",              "750"                   },
+  { "editor.palette.scrollbar.y",              "20"                    },
+  { "editor.palette.scrollbar.width",          "10"                    },
+  { "editor.palette.scrollbar.height",         "10"                    },
+  { "editor.palette.scrollbar.pressed_xoffset",        "-10"                   },
+
+  { "editor.playfield.scroll_up",              "RocksDoor.png"         },
+  { "editor.playfield.scroll_up.x",            "724"                   },
+  { "editor.playfield.scroll_up.y",            "0"                     },
+  { "editor.playfield.scroll_up.width",                "16"                    },
+  { "editor.playfield.scroll_up.height",       "16"                    },
+  { "editor.playfield.scroll_up.pressed_xoffset", "-16"                        },
+
+  { "editor.playfield.scroll_down",            "RocksDoor.png"         },
+  { "editor.playfield.scroll_down.x",          "724"                   },
+  { "editor.playfield.scroll_down.y",          "16"                    },
+  { "editor.playfield.scroll_down.width",      "16"                    },
+  { "editor.playfield.scroll_down.height",     "16"                    },
+  { "editor.playfield.scroll_down.pressed_xoffset", "-16"              },
+
+  { "editor.playfield.scroll_left",            "RocksDoor.png"         },
+  { "editor.playfield.scroll_left.x",          "724"                   },
+  { "editor.playfield.scroll_left.y",          "32"                    },
+  { "editor.playfield.scroll_left.width",      "16"                    },
+  { "editor.playfield.scroll_left.height",     "16"                    },
+  { "editor.playfield.scroll_left.pressed_xoffset", "-16"              },
+
+  { "editor.playfield.scroll_right",           "RocksDoor.png"         },
+  { "editor.playfield.scroll_right.x",         "724"                   },
+  { "editor.playfield.scroll_right.y",         "48"                    },
+  { "editor.playfield.scroll_right.width",     "16"                    },
+  { "editor.playfield.scroll_right.height",    "16"                    },
+  { "editor.playfield.scroll_right.pressed_xoffset", "-16"             },
+
+  { "editor.playfield.scrollbar",              "RocksDoor.png"         },
+  { "editor.playfield.scrollbar.x",            "724"                   },
+  { "editor.playfield.scrollbar.y",            "64"                    },
+  { "editor.playfield.scrollbar.width",                "16"                    },
+  { "editor.playfield.scrollbar.height",       "16"                    },
+  { "editor.playfield.scrollbar.pressed_xoffset", "-16"                        },
+
+  { "editor.button.gfx.prev_level",            "RocksDoor.png"         },
+  { "editor.button.gfx.prev_level.x",          "724"                   },
+  { "editor.button.gfx.prev_level.y",          "32"                    },
+  { "editor.button.gfx.prev_level.width",      "16"                    },
+  { "editor.button.gfx.prev_level.height",     "16"                    },
+  { "editor.button.gfx.prev_level.pressed_xoffset", "-16"              },
+
+  { "editor.button.gfx.next_level",            "RocksDoor.png"         },
+  { "editor.button.gfx.next_level.x",          "724"                   },
+  { "editor.button.gfx.next_level.y",          "48"                    },
+  { "editor.button.gfx.next_level.width",      "16"                    },
+  { "editor.button.gfx.next_level.height",     "16"                    },
+  { "editor.button.gfx.next_level.pressed_xoffset", "-16"              },
 
   { "background",                              UNDEFINED_FILENAME      },
   { "background.TITLE_INITIAL",                        UNDEFINED_FILENAME      },
 
   { "background",                              UNDEFINED_FILENAME      },
   { "background.TITLE_INITIAL",                        UNDEFINED_FILENAME      },
@@ -7005,12 +7077,12 @@ struct ConfigInfo image_config[] =
   { "editor.palette.cols",                     "4"                     },
   { "editor.palette.rows",                     "11"                    },
 
   { "editor.palette.cols",                     "4"                     },
   { "editor.palette.rows",                     "11"                    },
 
-  { "editor.element_left.x",                   "6"                     },
-  { "editor.element_left.y",                   "258"                   },
-  { "editor.element_middle.x",                 "42"                    },
-  { "editor.element_middle.y",                 "258"                   },
-  { "editor.element_right.x",                  "78"                    },
-  { "editor.element_right.y",                  "258"                   },
+  { "editor.palette.element_left.x",           "6"                     },
+  { "editor.palette.element_left.y",           "258"                   },
+  { "editor.palette.element_middle.x",         "42"                    },
+  { "editor.palette.element_middle.y",         "258"                   },
+  { "editor.palette.element_right.x",          "78"                    },
+  { "editor.palette.element_right.y",          "258"                   },
 
   { "request.button.yes.x",                    "2"                     },
   { "request.button.yes.y",                    "250"                   },
 
   { "request.button.yes.x",                    "2"                     },
   { "request.button.yes.y",                    "250"                   },
index f5c592564ebd6ab3295e0951a94fcbce230abbae..017b1a4147801363877b56f385d5c0e61d883b25 100644 (file)
 #define IMG_EDITOR_CASCADE_LIST                                1793
 #define IMG_EDITOR_CASCADE_LIST_ACTIVE                 1794
 #define IMG_EDITOR_PALETTE_BUTTON                      1795
 #define IMG_EDITOR_CASCADE_LIST                                1793
 #define IMG_EDITOR_CASCADE_LIST_ACTIVE                 1794
 #define IMG_EDITOR_PALETTE_BUTTON                      1795
-#define IMG_BACKGROUND                                 1796
-#define IMG_BACKGROUND_TITLE_INITIAL                   1797
-#define IMG_BACKGROUND_TITLE                           1798
-#define IMG_BACKGROUND_MAIN                            1799
-#define IMG_BACKGROUND_LEVELS                          1800
-#define IMG_BACKGROUND_LEVELNR                         1801
-#define IMG_BACKGROUND_SCORES                          1802
-#define IMG_BACKGROUND_EDITOR                          1803
-#define IMG_BACKGROUND_INFO                            1804
-#define IMG_BACKGROUND_INFO_ELEMENTS                   1805
-#define IMG_BACKGROUND_INFO_MUSIC                      1806
-#define IMG_BACKGROUND_INFO_CREDITS                    1807
-#define IMG_BACKGROUND_INFO_PROGRAM                    1808
-#define IMG_BACKGROUND_INFO_VERSION                    1809
-#define IMG_BACKGROUND_INFO_LEVELSET                   1810
-#define IMG_BACKGROUND_SETUP                           1811
-#define IMG_BACKGROUND_PLAYING                         1812
-#define IMG_BACKGROUND_DOOR                            1813
-#define IMG_BACKGROUND_TAPE                            1814
-#define IMG_BACKGROUND_PANEL                           1815
-#define IMG_BACKGROUND_PALETTE                         1816
-#define IMG_BACKGROUND_TOOLBOX                         1817
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1           1818
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2           1819
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3           1820
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4           1821
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5           1822
-#define IMG_BACKGROUND_TITLESCREEN_1                   1823
-#define IMG_BACKGROUND_TITLESCREEN_2                   1824
-#define IMG_BACKGROUND_TITLESCREEN_3                   1825
-#define IMG_BACKGROUND_TITLESCREEN_4                   1826
-#define IMG_BACKGROUND_TITLESCREEN_5                   1827
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1          1828
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2          1829
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3          1830
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4          1831
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5          1832
-#define IMG_BACKGROUND_TITLEMESSAGE_1                  1833
-#define IMG_BACKGROUND_TITLEMESSAGE_2                  1834
-#define IMG_BACKGROUND_TITLEMESSAGE_3                  1835
-#define IMG_BACKGROUND_TITLEMESSAGE_4                  1836
-#define IMG_BACKGROUND_TITLEMESSAGE_5                  1837
-#define IMG_BACKGROUND_ENVELOPE_1                      1838
-#define IMG_BACKGROUND_ENVELOPE_2                      1839
-#define IMG_BACKGROUND_ENVELOPE_3                      1840
-#define IMG_BACKGROUND_ENVELOPE_4                      1841
-#define IMG_BACKGROUND_REQUEST                         1842
-#define IMG_TITLESCREEN_INITIAL_1                      1843
-#define IMG_TITLESCREEN_INITIAL_2                      1844
-#define IMG_TITLESCREEN_INITIAL_3                      1845
-#define IMG_TITLESCREEN_INITIAL_4                      1846
-#define IMG_TITLESCREEN_INITIAL_5                      1847
-#define IMG_TITLESCREEN_1                              1848
-#define IMG_TITLESCREEN_2                              1849
-#define IMG_TITLESCREEN_3                              1850
-#define IMG_TITLESCREEN_4                              1851
-#define IMG_TITLESCREEN_5                              1852
-#define IMG_DOOR_1_GFX_PART_1                          1853
-#define IMG_DOOR_1_GFX_PART_2                          1854
-#define IMG_DOOR_1_GFX_PART_3                          1855
-#define IMG_DOOR_1_GFX_PART_4                          1856
-#define IMG_DOOR_1_GFX_PART_5                          1857
-#define IMG_DOOR_1_GFX_PART_6                          1858
-#define IMG_DOOR_1_GFX_PART_7                          1859
-#define IMG_DOOR_1_GFX_PART_8                          1860
-#define IMG_DOOR_2_GFX_PART_1                          1861
-#define IMG_DOOR_2_GFX_PART_2                          1862
-#define IMG_DOOR_2_GFX_PART_3                          1863
-#define IMG_DOOR_2_GFX_PART_4                          1864
-#define IMG_DOOR_2_GFX_PART_5                          1865
-#define IMG_DOOR_2_GFX_PART_6                          1866
-#define IMG_DOOR_2_GFX_PART_7                          1867
-#define IMG_DOOR_2_GFX_PART_8                          1868
-#define IMG_DOOR_2_TOP_BORDER_CORRECTION               1869
-#define IMG_LAST_IMAGE_ENTRY_BUG                       1870
+#define IMG_EDITOR_PALETTE_SCROLL_UP                   1796
+#define IMG_EDITOR_PALETTE_SCROLL_DOWN                 1797
+#define IMG_EDITOR_PALETTE_SCROLLBAR                   1798
+#define IMG_EDITOR_PLAYFIELD_SCROLL_UP                 1799
+#define IMG_EDITOR_PLAYFIELD_SCROLL_DOWN               1800
+#define IMG_EDITOR_PLAYFIELD_SCROLL_LEFT               1801
+#define IMG_EDITOR_PLAYFIELD_SCROLL_RIGHT              1802
+#define IMG_EDITOR_PLAYFIELD_SCROLLBAR                 1803
+#define IMG_EDITOR_BUTTON_GFX_PREV_LEVEL               1804
+#define IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL               1805
+#define IMG_BACKGROUND                                 1806
+#define IMG_BACKGROUND_TITLE_INITIAL                   1807
+#define IMG_BACKGROUND_TITLE                           1808
+#define IMG_BACKGROUND_MAIN                            1809
+#define IMG_BACKGROUND_LEVELS                          1810
+#define IMG_BACKGROUND_LEVELNR                         1811
+#define IMG_BACKGROUND_SCORES                          1812
+#define IMG_BACKGROUND_EDITOR                          1813
+#define IMG_BACKGROUND_INFO                            1814
+#define IMG_BACKGROUND_INFO_ELEMENTS                   1815
+#define IMG_BACKGROUND_INFO_MUSIC                      1816
+#define IMG_BACKGROUND_INFO_CREDITS                    1817
+#define IMG_BACKGROUND_INFO_PROGRAM                    1818
+#define IMG_BACKGROUND_INFO_VERSION                    1819
+#define IMG_BACKGROUND_INFO_LEVELSET                   1820
+#define IMG_BACKGROUND_SETUP                           1821
+#define IMG_BACKGROUND_PLAYING                         1822
+#define IMG_BACKGROUND_DOOR                            1823
+#define IMG_BACKGROUND_TAPE                            1824
+#define IMG_BACKGROUND_PANEL                           1825
+#define IMG_BACKGROUND_PALETTE                         1826
+#define IMG_BACKGROUND_TOOLBOX                         1827
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1           1828
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2           1829
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3           1830
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4           1831
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5           1832
+#define IMG_BACKGROUND_TITLESCREEN_1                   1833
+#define IMG_BACKGROUND_TITLESCREEN_2                   1834
+#define IMG_BACKGROUND_TITLESCREEN_3                   1835
+#define IMG_BACKGROUND_TITLESCREEN_4                   1836
+#define IMG_BACKGROUND_TITLESCREEN_5                   1837
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1          1838
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2          1839
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3          1840
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4          1841
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5          1842
+#define IMG_BACKGROUND_TITLEMESSAGE_1                  1843
+#define IMG_BACKGROUND_TITLEMESSAGE_2                  1844
+#define IMG_BACKGROUND_TITLEMESSAGE_3                  1845
+#define IMG_BACKGROUND_TITLEMESSAGE_4                  1846
+#define IMG_BACKGROUND_TITLEMESSAGE_5                  1847
+#define IMG_BACKGROUND_ENVELOPE_1                      1848
+#define IMG_BACKGROUND_ENVELOPE_2                      1849
+#define IMG_BACKGROUND_ENVELOPE_3                      1850
+#define IMG_BACKGROUND_ENVELOPE_4                      1851
+#define IMG_BACKGROUND_REQUEST                         1852
+#define IMG_TITLESCREEN_INITIAL_1                      1853
+#define IMG_TITLESCREEN_INITIAL_2                      1854
+#define IMG_TITLESCREEN_INITIAL_3                      1855
+#define IMG_TITLESCREEN_INITIAL_4                      1856
+#define IMG_TITLESCREEN_INITIAL_5                      1857
+#define IMG_TITLESCREEN_1                              1858
+#define IMG_TITLESCREEN_2                              1859
+#define IMG_TITLESCREEN_3                              1860
+#define IMG_TITLESCREEN_4                              1861
+#define IMG_TITLESCREEN_5                              1862
+#define IMG_DOOR_1_GFX_PART_1                          1863
+#define IMG_DOOR_1_GFX_PART_2                          1864
+#define IMG_DOOR_1_GFX_PART_3                          1865
+#define IMG_DOOR_1_GFX_PART_4                          1866
+#define IMG_DOOR_1_GFX_PART_5                          1867
+#define IMG_DOOR_1_GFX_PART_6                          1868
+#define IMG_DOOR_1_GFX_PART_7                          1869
+#define IMG_DOOR_1_GFX_PART_8                          1870
+#define IMG_DOOR_2_GFX_PART_1                          1871
+#define IMG_DOOR_2_GFX_PART_2                          1872
+#define IMG_DOOR_2_GFX_PART_3                          1873
+#define IMG_DOOR_2_GFX_PART_4                          1874
+#define IMG_DOOR_2_GFX_PART_5                          1875
+#define IMG_DOOR_2_GFX_PART_6                          1876
+#define IMG_DOOR_2_GFX_PART_7                          1877
+#define IMG_DOOR_2_GFX_PART_8                          1878
+#define IMG_DOOR_2_TOP_BORDER_CORRECTION               1879
+#define IMG_LAST_IMAGE_ENTRY_BUG                       1880
 
 
-#define NUM_IMAGE_FILES                                        1871
+#define NUM_IMAGE_FILES                                        1881
 
 #endif /* CONF_GFX_H */
 
 #endif /* CONF_GFX_H */
index 239c6030b807fc480296eb1b47dfd9a6e3b1916b..7710041e25ecd28957798819f65bfca47e2bc355 100644 (file)
@@ -6085,28 +6085,28 @@ struct TokenIntPtrInfo image_config_vars[] =
     &editor.palette.rows
   },
   {
     &editor.palette.rows
   },
   {
-    "editor.element_left.x",
-    &editor.element_left.x
+    "editor.palette.element_left.x",
+    &editor.palette.element_left.x
   },
   {
   },
   {
-    "editor.element_left.y",
-    &editor.element_left.y
+    "editor.palette.element_left.y",
+    &editor.palette.element_left.y
   },
   {
   },
   {
-    "editor.element_middle.x",
-    &editor.element_middle.x
+    "editor.palette.element_middle.x",
+    &editor.palette.element_middle.x
   },
   {
   },
   {
-    "editor.element_middle.y",
-    &editor.element_middle.y
+    "editor.palette.element_middle.y",
+    &editor.palette.element_middle.y
   },
   {
   },
   {
-    "editor.element_right.x",
-    &editor.element_right.x
+    "editor.palette.element_right.x",
+    &editor.palette.element_right.x
   },
   {
   },
   {
-    "editor.element_right.y",
-    &editor.element_right.y
+    "editor.palette.element_right.y",
+    &editor.palette.element_right.y
   },
   {
     "request.button.yes.x",
   },
   {
     "request.button.yes.x",
index aa86d326a57e1a3b3b9dcac6043ec89a7f34da6f..3e7a1e94b2b1e7fd894abefe2c5259764b96a8b8 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2014-03-05 02:22"
+#define COMPILE_DATE_STRING "2014-03-05 17:41"
index 1b8f0c4bedaaeb42744e70ac82f311e5b189d3fb..67ff7203a7daa07ecb965df27e3967de2083647c 100644 (file)
 
 /* positions in the level editor */
 #if 1
 
 /* positions in the level editor */
 #if 1
-#define ED_WIN_MB_LEFT_XPOS            (editor.element_left.x)
-#define ED_WIN_MB_LEFT_YPOS            (editor.element_left.y)
-#define ED_WIN_MB_MIDDLE_XPOS          (editor.element_middle.x)
-#define ED_WIN_MB_MIDDLE_YPOS          (editor.element_middle.y)
-#define ED_WIN_MB_RIGHT_XPOS           (editor.element_right.x)
-#define ED_WIN_MB_RIGHT_YPOS           (editor.element_right.y)
+#define ED_WIN_MB_LEFT_XPOS            (editor.palette.element_left.x)
+#define ED_WIN_MB_LEFT_YPOS            (editor.palette.element_left.y)
+#define ED_WIN_MB_MIDDLE_XPOS          (editor.palette.element_middle.x)
+#define ED_WIN_MB_MIDDLE_YPOS          (editor.palette.element_middle.y)
+#define ED_WIN_MB_RIGHT_XPOS           (editor.palette.element_right.x)
+#define ED_WIN_MB_RIGHT_YPOS           (editor.palette.element_right.y)
 #else
 #define ED_WIN_MB_LEFT_XPOS            6
 #define ED_WIN_MB_LEFT_YPOS            258
 #else
 #define ED_WIN_MB_LEFT_XPOS            6
 #define ED_WIN_MB_LEFT_YPOS            258
 #if 1
 #define ED_ELEMENTLIST_XPOS            (editor.palette.x)
 #define ED_ELEMENTLIST_YPOS            (editor.palette.y)
 #if 1
 #define ED_ELEMENTLIST_XPOS            (editor.palette.x)
 #define ED_ELEMENTLIST_YPOS            (editor.palette.y)
+#define ED_ELEMENTLIST_XSIZE           20
+#define ED_ELEMENTLIST_YSIZE           20
 #else
 #define ED_ELEMENTLIST_XPOS            5
 #define ED_ELEMENTLIST_YPOS            30
 #else
 #define ED_ELEMENTLIST_XPOS            5
 #define ED_ELEMENTLIST_YPOS            30
-#endif
 #define ED_ELEMENTLIST_XSIZE           20
 #define ED_ELEMENTLIST_YSIZE           20
 #define ED_ELEMENTLIST_XSIZE           20
 #define ED_ELEMENTLIST_YSIZE           20
-#define ED_ELEMENTLIST_BUTTONS_HORIZ   4
+#endif
 #if 1
 #if 1
-#define ED_ELEMENTLIST_BUTTONS_VERT    9
+// #define ED_ELEMENTLIST_BUTTONS_HORIZ        4
+// #define ED_ELEMENTLIST_BUTTONS_VERT 9
+#define ED_ELEMENTLIST_BUTTONS_HORIZ   (editor.palette.cols)
+#define ED_ELEMENTLIST_BUTTONS_VERT    (editor.palette.rows)
 #else
 #else
+#define ED_ELEMENTLIST_BUTTONS_HORIZ   4
 #define ED_ELEMENTLIST_BUTTONS_VERT    11
 #endif
 #define ED_NUM_ELEMENTLIST_BUTTONS     (ED_ELEMENTLIST_BUTTONS_HORIZ * \
 #define ED_ELEMENTLIST_BUTTONS_VERT    11
 #endif
 #define ED_NUM_ELEMENTLIST_BUTTONS     (ED_ELEMENTLIST_BUTTONS_HORIZ * \
 #define ED_SCROLLBUTTON2_XSIZE         10
 #define ED_SCROLLBUTTON2_YSIZE         10
 
 #define ED_SCROLLBUTTON2_XSIZE         10
 #define ED_SCROLLBUTTON2_YSIZE         10
 
+#if 1
+#define ED_SCROLL2_UP_XPOS             (ED_ELEMENTLIST_XPOS +          \
+                                        ED_ELEMENTLIST_BUTTONS_HORIZ * \
+                                        ED_ELEMENTLIST_XSIZE)
+#define ED_SCROLL2_UP_YPOS             ED_ELEMENTLIST_YPOS
+#define ED_SCROLL2_DOWN_XPOS           ED_SCROLL2_UP_XPOS
+#define ED_SCROLL2_DOWN_YPOS           (ED_SCROLL2_UP_YPOS +           \
+                                        ED_ELEMENTLIST_BUTTONS_VERT *  \
+                                        ED_ELEMENTLIST_YSIZE -         \
+                                        ED_SCROLLBUTTON2_YSIZE)
+#define ED_SCROLL2_VERTICAL_XPOS       ED_SCROLL2_UP_XPOS
+#define ED_SCROLL2_VERTICAL_YPOS       (ED_SCROLL2_UP_YPOS +           \
+                                        ED_SCROLLBUTTON2_YSIZE)
+#define ED_SCROLL2_VERTICAL_XSIZE      ED_SCROLLBUTTON2_XSIZE
+#define ED_SCROLL2_VERTICAL_YSIZE      (ED_ELEMENTLIST_BUTTONS_VERT *  \
+                                        ED_ELEMENTLIST_YSIZE -         \
+                                        2 * ED_SCROLLBUTTON2_YSIZE)
+#else
 #define ED_SCROLL2_UP_XPOS             85
 #define ED_SCROLL2_UP_YPOS             30
 #define ED_SCROLL2_DOWN_XPOS           ED_SCROLL2_UP_XPOS
 #define ED_SCROLL2_UP_XPOS             85
 #define ED_SCROLL2_UP_YPOS             30
 #define ED_SCROLL2_DOWN_XPOS           ED_SCROLL2_UP_XPOS
 #define ED_SCROLL2_VERTICAL_YSIZE      (ED_ELEMENTLIST_BUTTONS_VERT *  \
                                         ED_ELEMENTLIST_YSIZE -         \
                                         2 * ED_SCROLLBUTTON2_YSIZE)
 #define ED_SCROLL2_VERTICAL_YSIZE      (ED_ELEMENTLIST_BUTTONS_VERT *  \
                                         ED_ELEMENTLIST_YSIZE -         \
                                         2 * ED_SCROLLBUTTON2_YSIZE)
+#endif
 
 /* values for checkbutton gadgets */
 #define ED_CHECKBUTTON_XSIZE           ED_BUTTON_COUNT_XSIZE
 
 /* values for checkbutton gadgets */
 #define ED_CHECKBUTTON_XSIZE           ED_BUTTON_COUNT_XSIZE
@@ -2491,6 +2515,90 @@ static struct
   },
 };
 
   },
 };
 
+#if 1
+
+static struct
+{
+  int x, y;
+} scrollbutton_pos[ED_NUM_SCROLLBUTTONS];
+
+static struct
+{
+  int graphic;
+  int gadget_id;
+  char *infotext;
+} scrollbutton_info[ED_NUM_SCROLLBUTTONS] =
+{
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLL_UP,
+    GADGET_ID_SCROLL_UP,
+    "scroll level editing area up"
+  },
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLL_DOWN,
+    GADGET_ID_SCROLL_DOWN,
+    "scroll level editing area down"
+  },
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLL_LEFT,
+    GADGET_ID_SCROLL_LEFT,
+    "scroll level editing area left"
+  },
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLL_RIGHT,
+    GADGET_ID_SCROLL_RIGHT,
+    "scroll level editing area right"
+  },
+  {
+    IMG_EDITOR_PALETTE_SCROLL_UP,
+    GADGET_ID_SCROLL_LIST_UP,
+    "scroll element list up ('Page Up')"
+  },
+  {
+    IMG_EDITOR_PALETTE_SCROLL_DOWN,
+    GADGET_ID_SCROLL_LIST_DOWN,
+    "scroll element list down ('Page Down')"
+  },
+};
+
+static struct
+{
+  int x, y;
+  int width, height;
+  int wheel_x, wheel_y;
+  int wheel_width, wheel_height;
+} scrollbar_pos[ED_NUM_SCROLLBARS];
+
+static struct
+{
+  int graphic;
+  int type;
+  int gadget_id;
+  char *infotext;
+} scrollbar_info[ED_NUM_SCROLLBARS] =
+{
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLLBAR,
+    GD_TYPE_SCROLLBAR_HORIZONTAL,
+    GADGET_ID_SCROLL_HORIZONTAL,
+    "scroll level editing area horizontally"
+  },
+  {
+    IMG_EDITOR_PLAYFIELD_SCROLLBAR,
+    GD_TYPE_SCROLLBAR_VERTICAL,
+    GADGET_ID_SCROLL_VERTICAL,
+    "scroll level editing area vertically"
+  },
+  {
+    IMG_EDITOR_PALETTE_SCROLLBAR,
+    GD_TYPE_SCROLLBAR_VERTICAL,
+    GADGET_ID_SCROLL_LIST_VERTICAL,
+    "scroll element list vertically"
+  }
+};
+
+#else
+
 static struct
 {
   int gd_x, gd_y;
 static struct
 {
   int gd_x, gd_y;
@@ -2618,6 +2726,8 @@ static struct
   }
 };
 
   }
 };
 
+#endif
+
 static struct
 {
   int x, y;
 static struct
 {
   int x, y;
@@ -3377,8 +3487,13 @@ static void HandleControlButtons(struct GadgetInfo *);
 static void HandleDrawingAreaInfo(struct GadgetInfo *);
 static void PrintEditorGadgetInfoText(struct GadgetInfo *);
 
 static void HandleDrawingAreaInfo(struct GadgetInfo *);
 static void PrintEditorGadgetInfoText(struct GadgetInfo *);
 
+#if 1
+static struct GadgetInfo **level_editor_gadget = NULL;
+static int *right_gadget_border = NULL;
+#else
 static struct GadgetInfo *level_editor_gadget[NUM_EDITOR_GADGETS];
 static int right_gadget_border[NUM_EDITOR_GADGETS];
 static struct GadgetInfo *level_editor_gadget[NUM_EDITOR_GADGETS];
 static int right_gadget_border[NUM_EDITOR_GADGETS];
+#endif
 
 static int drawing_function = GADGET_ID_SINGLE_ITEMS;
 static int last_drawing_function = GADGET_ID_SINGLE_ITEMS;
 
 static int drawing_function = GADGET_ID_SINGLE_ITEMS;
 static int last_drawing_function = GADGET_ID_SINGLE_ITEMS;
@@ -4681,10 +4796,18 @@ static int num_editor_hl_dynamic = SIZEOF_ARRAY_INT(editor_hl_dynamic);
 static int num_editor_el_dynamic = 0;
 
 static int editor_hl_empty[] = { };
 static int num_editor_el_dynamic = 0;
 
 static int editor_hl_empty[] = { };
+#if 1
+static int *editor_el_empty = NULL;
+#else
 static int editor_el_empty[ED_NUM_ELEMENTLIST_BUTTONS];
 static int editor_el_empty[ED_NUM_ELEMENTLIST_BUTTONS];
+#endif
 
 static int *editor_hl_empty_ptr = editor_hl_empty;
 
 static int *editor_hl_empty_ptr = editor_hl_empty;
+#if 1
+static int *editor_el_empty_ptr = NULL;
+#else
 static int *editor_el_empty_ptr = editor_el_empty;
 static int *editor_el_empty_ptr = editor_el_empty;
+#endif
 static int num_editor_hl_empty = 0;
 static int num_editor_el_empty = 0;    /* dynamically determined, if needed */
 
 static int num_editor_hl_empty = 0;
 static int num_editor_el_empty = 0;    /* dynamically determined, if needed */
 
@@ -5385,6 +5508,20 @@ static void CreateControlButtons()
   }
 
   /* these values are not constant, but can change at runtime */
   }
 
   /* these values are not constant, but can change at runtime */
+#if 1
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_UP].x    = ED_SCROLL_UP_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_UP].y    = ED_SCROLL_UP_YPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].x  = ED_SCROLL_DOWN_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].y  = ED_SCROLL_DOWN_YPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_LEFT].x  = ED_SCROLL_LEFT_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_LEFT].y  = ED_SCROLL_LEFT_YPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].x = ED_SCROLL_RIGHT_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].y = ED_SCROLL_RIGHT_YPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_UP].x    = ED_SCROLL2_UP_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_UP].y    = ED_SCROLL2_UP_YPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_DOWN].x  = ED_SCROLL2_DOWN_XPOS;
+  scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_DOWN].y  = ED_SCROLL2_DOWN_YPOS;
+#else
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].x    = ED_SCROLL_UP_XPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].y    = ED_SCROLL_UP_YPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].x  = ED_SCROLL_DOWN_XPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].x    = ED_SCROLL_UP_XPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].y    = ED_SCROLL_UP_YPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].x  = ED_SCROLL_DOWN_XPOS;
@@ -5393,16 +5530,26 @@ static void CreateControlButtons()
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_LEFT].y  = ED_SCROLL_LEFT_YPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x = ED_SCROLL_RIGHT_XPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].y = ED_SCROLL_RIGHT_YPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_LEFT].y  = ED_SCROLL_LEFT_YPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x = ED_SCROLL_RIGHT_XPOS;
   scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].y = ED_SCROLL_RIGHT_YPOS;
+#endif
 
   /* create buttons for scrolling of drawing area and element list */
   for (i = 0; i < ED_NUM_SCROLLBUTTONS; i++)
   {
     int id = scrollbutton_info[i].gadget_id;
 
   /* create buttons for scrolling of drawing area and element list */
   for (i = 0; i < ED_NUM_SCROLLBUTTONS; i++)
   {
     int id = scrollbutton_info[i].gadget_id;
+#if 1
+    int graphic = scrollbutton_info[i].graphic;
+    struct GraphicInfo *gd = &graphic_info[graphic];
+#endif
     int x, y, width, height;
     int gd_x1, gd_x2, gd_y1, gd_y2;
 
     int x, y, width, height;
     int gd_x1, gd_x2, gd_y1, gd_y2;
 
+#if 1
+    x = scrollbutton_pos[i].x;
+    y = scrollbutton_pos[i].y;
+#else
     x = scrollbutton_info[i].x;
     y = scrollbutton_info[i].y;
     x = scrollbutton_info[i].x;
     y = scrollbutton_info[i].y;
+#endif
 
     event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
 
 
     event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
 
@@ -5411,23 +5558,41 @@ static void CreateControlButtons()
     {
       x += DX;
       y += DY;
     {
       x += DX;
       y += DY;
+#if 1
+      width  = gd->width;
+      height = gd->height;
+      gd_x1 = gd->src_x;
+      gd_y1 = gd->src_y;
+      gd_x2 = gd->src_x + gd->pressed_xoffset;
+      gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
       width = ED_SCROLLBUTTON2_XSIZE;
       height = ED_SCROLLBUTTON2_YSIZE;
       gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
       gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
       gd_x2 = gd_x1 - ED_SCROLLBUTTON2_XSIZE;
       gd_y2 = gd_y1;
       width = ED_SCROLLBUTTON2_XSIZE;
       height = ED_SCROLLBUTTON2_YSIZE;
       gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
       gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
       gd_x2 = gd_x1 - ED_SCROLLBUTTON2_XSIZE;
       gd_y2 = gd_y1;
+#endif
     }
     else
     {
       x += SX;
       y += SY;
     }
     else
     {
       x += SX;
       y += SY;
+#if 1
+      width  = gd->width;
+      height = gd->height;
+      gd_x1 = gd->src_x;
+      gd_y1 = gd->src_y;
+      gd_x2 = gd->src_x + gd->pressed_xoffset;
+      gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
       width = ED_SCROLLBUTTON_XSIZE;
       height = ED_SCROLLBUTTON_YSIZE;
       gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
       gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
       gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
       gd_y2 = gd_y1;
       width = ED_SCROLLBUTTON_XSIZE;
       height = ED_SCROLLBUTTON_YSIZE;
       gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
       gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
       gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
       gd_y2 = gd_y1;
+#endif
     }
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
     }
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
@@ -5459,7 +5624,11 @@ static void CreateControlButtons()
     Bitmap *deco_bitmap;
     int deco_x, deco_y, deco_xpos, deco_ypos;
     int gd_xoffset, gd_yoffset;
     Bitmap *deco_bitmap;
     int deco_x, deco_y, deco_xpos, deco_ypos;
     int gd_xoffset, gd_yoffset;
+#if 1
+    int gd_x1, gd_y1, gd_x2, gd_y2;
+#else
     int gd_x1, gd_x2, gd_y;
     int gd_x1, gd_x2, gd_y;
+#endif
     int x = i % ED_ELEMENTLIST_BUTTONS_HORIZ;
     int y = i / ED_ELEMENTLIST_BUTTONS_HORIZ;
     int id = GADGET_ID_ELEMENTLIST_FIRST + i;
     int x = i % ED_ELEMENTLIST_BUTTONS_HORIZ;
     int y = i / ED_ELEMENTLIST_BUTTONS_HORIZ;
     int id = GADGET_ID_ELEMENTLIST_FIRST + i;
@@ -5467,34 +5636,52 @@ static void CreateControlButtons()
 
     event_mask = GD_EVENT_RELEASED;
 
 
     event_mask = GD_EVENT_RELEASED;
 
-    gd_xoffset = ED_ELEMENTLIST_XPOS + x * ED_ELEMENTLIST_XSIZE;
-    gd_yoffset = ED_ELEMENTLIST_YPOS + y * ED_ELEMENTLIST_YSIZE;
-
 #if 1
 #if 1
+    gd_xoffset = ED_ELEMENTLIST_XPOS + x * gd->width;
+    gd_yoffset = ED_ELEMENTLIST_YPOS + y * gd->height;
+
     gd_x1 = gd->src_x;
     gd_x1 = gd->src_x;
+    gd_y1 = gd->src_y;
     gd_x2 = gd->src_x + gd->pressed_xoffset;
     gd_x2 = gd->src_x + gd->pressed_xoffset;
-    gd_y  = gd->src_y;
+    gd_y2 = gd->src_y + gd->pressed_yoffset;
+
+    getMiniGraphicSource(el2edimg(element), &deco_bitmap, &deco_x, &deco_y);
+    deco_xpos = (gd->width  - MINI_TILEX) / 2;
+    deco_ypos = (gd->height - MINI_TILEY) / 2;
 #else
 #else
+    gd_xoffset = ED_ELEMENTLIST_XPOS + x * ED_ELEMENTLIST_XSIZE;
+    gd_yoffset = ED_ELEMENTLIST_YPOS + y * ED_ELEMENTLIST_YSIZE;
+
     gd_x1 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS + ED_ELEMENTLIST_XSIZE;
     gd_x2 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS;
     gd_y  = DOOR_GFX_PAGEY1 + ED_ELEMENTLIST_YPOS;
     gd_x1 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS + ED_ELEMENTLIST_XSIZE;
     gd_x2 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS;
     gd_y  = DOOR_GFX_PAGEY1 + ED_ELEMENTLIST_YPOS;
-#endif
 
     getMiniGraphicSource(el2edimg(element), &deco_bitmap, &deco_x, &deco_y);
     deco_xpos = (ED_ELEMENTLIST_XSIZE - MINI_TILEX) / 2;
     deco_ypos = (ED_ELEMENTLIST_YSIZE - MINI_TILEY) / 2;
 
     getMiniGraphicSource(el2edimg(element), &deco_bitmap, &deco_x, &deco_y);
     deco_xpos = (ED_ELEMENTLIST_XSIZE - MINI_TILEX) / 2;
     deco_ypos = (ED_ELEMENTLIST_YSIZE - MINI_TILEY) / 2;
+#endif
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_CUSTOM_TYPE_ID, i,
                      GDI_INFO_TEXT, getElementInfoText(element),
                      GDI_X, DX + gd_xoffset,
                      GDI_Y, DY + gd_yoffset,
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_CUSTOM_TYPE_ID, i,
                      GDI_INFO_TEXT, getElementInfoText(element),
                      GDI_X, DX + gd_xoffset,
                      GDI_Y, DY + gd_yoffset,
+#if 1
+                     GDI_WIDTH, gd->width,
+                     GDI_HEIGHT, gd->height,
+#else
                      GDI_WIDTH, ED_ELEMENTLIST_XSIZE,
                      GDI_HEIGHT, ED_ELEMENTLIST_YSIZE,
                      GDI_WIDTH, ED_ELEMENTLIST_XSIZE,
                      GDI_HEIGHT, ED_ELEMENTLIST_YSIZE,
+#endif
                      GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
                      GDI_STATE, GD_BUTTON_UNPRESSED,
                      GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
                      GDI_STATE, GD_BUTTON_UNPRESSED,
+#if 1
+                     GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+                     GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+#else
                      GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y,
                      GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y,
                      GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y,
                      GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y,
+#endif
                      GDI_DECORATION_DESIGN, deco_bitmap, deco_x, deco_y,
                      GDI_DECORATION_POSITION, deco_xpos, deco_ypos,
                      GDI_DECORATION_SIZE, MINI_TILEX, MINI_TILEY,
                      GDI_DECORATION_DESIGN, deco_bitmap, deco_x, deco_y,
                      GDI_DECORATION_POSITION, deco_xpos, deco_ypos,
                      GDI_DECORATION_SIZE, MINI_TILEX, MINI_TILEY,
@@ -5543,7 +5730,7 @@ static void CreateCounterButtons()
                counterbutton_info[i].gadget_id_down :
                counterbutton_info[i].gadget_id_up);
       int gd_xoffset;
                counterbutton_info[i].gadget_id_down :
                counterbutton_info[i].gadget_id_up);
       int gd_xoffset;
-      int gd_x, gd_x1, gd_x2, gd_y;
+      int gd_x, gd_y, gd_x1, gd_x2, gd_y1, gd_y2;
       int x_size, y_size;
       unsigned int event_mask;
       char infotext[max_infotext_len + 1];
       int x_size, y_size;
       unsigned int event_mask;
       char infotext[max_infotext_len + 1];
@@ -5552,6 +5739,27 @@ static void CreateCounterButtons()
 
       if (i == ED_COUNTER_ID_SELECT_LEVEL)
       {
 
       if (i == ED_COUNTER_ID_SELECT_LEVEL)
       {
+#if 1
+       int graphic = (j == 0 ?
+                      IMG_EDITOR_BUTTON_GFX_PREV_LEVEL :
+                      IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL);
+       struct GraphicInfo *gd = &graphic_info[graphic];
+
+       gd_bitmap = gd->bitmap;
+
+       event_mask |= GD_EVENT_RELEASED;
+
+       if (j == 1)
+         x += 2 * ED_GADGET_DISTANCE;
+       y += ED_GADGET_DISTANCE;
+
+       gd_x1 = gd->src_x;
+       gd_y1 = gd->src_y;
+       gd_x2 = gd->src_x + gd->pressed_xoffset;
+       gd_y2 = gd->src_y + gd->pressed_yoffset;
+       x_size = gd->width;
+       y_size = gd->height;
+#else
        int sid = (j == 0 ?
                   ED_SCROLLBUTTON_ID_AREA_LEFT :
                   ED_SCROLLBUTTON_ID_AREA_RIGHT);
        int sid = (j == 0 ?
                   ED_SCROLLBUTTON_ID_AREA_LEFT :
                   ED_SCROLLBUTTON_ID_AREA_RIGHT);
@@ -5564,16 +5772,19 @@ static void CreateCounterButtons()
 
        gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[sid].gd_x;
        gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
 
        gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[sid].gd_x;
        gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
-       gd_y  = DOOR_GFX_PAGEY1 + scrollbutton_info[sid].gd_y;
+       gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[sid].gd_y;
+       gd_y2 = gd_y1;
        x_size = ED_SCROLLBUTTON_XSIZE;
        y_size = ED_SCROLLBUTTON_YSIZE;
        x_size = ED_SCROLLBUTTON_XSIZE;
        y_size = ED_SCROLLBUTTON_YSIZE;
+#endif
       }
       else
       {
        gd_xoffset = (j == 0 ? ED_BUTTON_MINUS_XPOS : ED_BUTTON_PLUS_XPOS);
        gd_x1 = DOOR_GFX_PAGEX4 + gd_xoffset;
        gd_x2 = DOOR_GFX_PAGEX3 + gd_xoffset;
       }
       else
       {
        gd_xoffset = (j == 0 ? ED_BUTTON_MINUS_XPOS : ED_BUTTON_PLUS_XPOS);
        gd_x1 = DOOR_GFX_PAGEX4 + gd_xoffset;
        gd_x2 = DOOR_GFX_PAGEX3 + gd_xoffset;
-       gd_y  = DOOR_GFX_PAGEY1 + ED_BUTTON_COUNT_YPOS;
+       gd_y1 = DOOR_GFX_PAGEY1 + ED_BUTTON_COUNT_YPOS;
+       gd_y2 = gd_y1;
        x_size = ED_BUTTON_COUNT_XSIZE;
        y_size = ED_BUTTON_COUNT_YSIZE;
       }
        x_size = ED_BUTTON_COUNT_XSIZE;
        y_size = ED_BUTTON_COUNT_YSIZE;
       }
@@ -5590,8 +5801,8 @@ static void CreateCounterButtons()
                        GDI_HEIGHT, y_size,
                        GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
                        GDI_STATE, GD_BUTTON_UNPRESSED,
                        GDI_HEIGHT, y_size,
                        GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
                        GDI_STATE, GD_BUTTON_UNPRESSED,
-                       GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y,
-                       GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y,
+                       GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
+                       GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
                        GDI_EVENT_MASK, event_mask,
                        GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
                        GDI_CALLBACK_ACTION, HandleCounterButtons,
                        GDI_EVENT_MASK, event_mask,
                        GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
                        GDI_CALLBACK_ACTION, HandleCounterButtons,
@@ -6046,6 +6257,46 @@ static void CreateScrollbarGadgets()
   int i;
 
   /* these values are not constant, but can change at runtime */
   int i;
 
   /* these values are not constant, but can change at runtime */
+#if 1
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].x =
+    SX + ED_SCROLL_HORIZONTAL_XPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].y =
+    SY + ED_SCROLL_HORIZONTAL_YPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width =
+    ED_SCROLL_HORIZONTAL_XSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].height =
+    ED_SCROLL_HORIZONTAL_YSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_x      = SX;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_y      = SY;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_width  = SXSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_height = SYSIZE;
+
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].x =
+    SX + ED_SCROLL_VERTICAL_XPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].y =
+    SY + ED_SCROLL_VERTICAL_YPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].width =
+    ED_SCROLL_VERTICAL_XSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].height =
+    ED_SCROLL_VERTICAL_YSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_x      = SX;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_y      = SY;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_width  = SXSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_height = SYSIZE;
+
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].x =
+    DX + ED_SCROLL2_VERTICAL_XPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].y =
+    DY + ED_SCROLL2_VERTICAL_YPOS;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].width =
+    ED_SCROLL2_VERTICAL_XSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].height =
+    ED_SCROLL2_VERTICAL_YSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_x = DX;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_y = DY;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_width  = DXSIZE;
+  scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_height = DYSIZE;
+#else
   scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].x =
     SX + ED_SCROLL_HORIZONTAL_XPOS;
   scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].y =
   scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].x =
     SX + ED_SCROLL_HORIZONTAL_XPOS;
   scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].y =
@@ -6076,15 +6327,26 @@ static void CreateScrollbarGadgets()
     DX + ED_SCROLL2_VERTICAL_XPOS;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].y =
     DY + ED_SCROLL2_VERTICAL_YPOS;
     DX + ED_SCROLL2_VERTICAL_XPOS;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].y =
     DY + ED_SCROLL2_VERTICAL_YPOS;
+  scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].width =
+    ED_SCROLL2_VERTICAL_XSIZE;
+  scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].height =
+    ED_SCROLL2_VERTICAL_YSIZE;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_x = DX;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_y = DY;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_width  = DXSIZE;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_height = DYSIZE;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_x = DX;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_y = DY;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_width  = DXSIZE;
   scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_height = DYSIZE;
+#endif
 
   for (i = 0; i < ED_NUM_SCROLLBARS; i++)
   {
     int id = scrollbar_info[i].gadget_id;
 
   for (i = 0; i < ED_NUM_SCROLLBARS; i++)
   {
     int id = scrollbar_info[i].gadget_id;
+#if 1
+    int graphic = scrollbar_info[i].graphic;
+    struct GraphicInfo *gd = &graphic_info[graphic];
+    Bitmap *gd_bitmap = gd->bitmap;
+#else
     Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
     Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
+#endif
     int gd_x1, gd_x2, gd_y1, gd_y2;
     struct GadgetInfo *gi;
     int items_max, items_visible, item_position;
     int gd_x1, gd_x2, gd_y1, gd_y2;
     struct GadgetInfo *gi;
     int items_max, items_visible, item_position;
@@ -6114,27 +6376,48 @@ static void CreateScrollbarGadgets()
 
     event_mask = GD_EVENT_MOVING | GD_EVENT_OFF_BORDERS;
 
 
     event_mask = GD_EVENT_MOVING | GD_EVENT_OFF_BORDERS;
 
+#if 1
+    gd_x1 = gd->src_x;
+    gd_y1 = gd->src_y;
+    gd_x2 = gd->src_x + gd->pressed_xoffset;
+    gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
     gd_x1 = DOOR_GFX_PAGEX8 + scrollbar_info[i].gd_x;
     gd_x2 = (gd_x1 - (scrollbar_info[i].type == GD_TYPE_SCROLLBAR_HORIZONTAL ?
                      scrollbar_info[i].height : scrollbar_info[i].width));
     gd_y1 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
     gd_y2 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
     gd_x1 = DOOR_GFX_PAGEX8 + scrollbar_info[i].gd_x;
     gd_x2 = (gd_x1 - (scrollbar_info[i].type == GD_TYPE_SCROLLBAR_HORIZONTAL ?
                      scrollbar_info[i].height : scrollbar_info[i].width));
     gd_y1 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
     gd_y2 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
+#endif
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_CUSTOM_TYPE_ID, i,
                      GDI_INFO_TEXT, scrollbar_info[i].infotext,
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_CUSTOM_TYPE_ID, i,
                      GDI_INFO_TEXT, scrollbar_info[i].infotext,
+#if 1
+                     GDI_X, scrollbar_pos[i].x,
+                     GDI_Y, scrollbar_pos[i].y,
+                     GDI_WIDTH, scrollbar_pos[i].width,
+                     GDI_HEIGHT, scrollbar_pos[i].height,
+#else
                      GDI_X, scrollbar_info[i].x,
                      GDI_Y, scrollbar_info[i].y,
                      GDI_WIDTH, scrollbar_info[i].width,
                      GDI_HEIGHT, scrollbar_info[i].height,
                      GDI_X, scrollbar_info[i].x,
                      GDI_Y, scrollbar_info[i].y,
                      GDI_WIDTH, scrollbar_info[i].width,
                      GDI_HEIGHT, scrollbar_info[i].height,
+#endif
                      GDI_TYPE, scrollbar_info[i].type,
                      GDI_SCROLLBAR_ITEMS_MAX, items_max,
                      GDI_SCROLLBAR_ITEMS_VISIBLE, items_visible,
                      GDI_SCROLLBAR_ITEM_POSITION, item_position,
                      GDI_TYPE, scrollbar_info[i].type,
                      GDI_SCROLLBAR_ITEMS_MAX, items_max,
                      GDI_SCROLLBAR_ITEMS_VISIBLE, items_visible,
                      GDI_SCROLLBAR_ITEM_POSITION, item_position,
+#if 1
+                     GDI_WHEEL_AREA_X, scrollbar_pos[i].wheel_x,
+                     GDI_WHEEL_AREA_Y, scrollbar_pos[i].wheel_y,
+                     GDI_WHEEL_AREA_WIDTH, scrollbar_pos[i].wheel_width,
+                     GDI_WHEEL_AREA_HEIGHT, scrollbar_pos[i].wheel_height,
+#else
                      GDI_WHEEL_AREA_X, scrollbar_info[i].wheel_x,
                      GDI_WHEEL_AREA_Y, scrollbar_info[i].wheel_y,
                      GDI_WHEEL_AREA_WIDTH, scrollbar_info[i].wheel_width,
                      GDI_WHEEL_AREA_HEIGHT, scrollbar_info[i].wheel_height,
                      GDI_WHEEL_AREA_X, scrollbar_info[i].wheel_x,
                      GDI_WHEEL_AREA_Y, scrollbar_info[i].wheel_y,
                      GDI_WHEEL_AREA_WIDTH, scrollbar_info[i].wheel_width,
                      GDI_WHEEL_AREA_HEIGHT, scrollbar_info[i].wheel_height,
+#endif
                      GDI_STATE, GD_BUTTON_UNPRESSED,
                      GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
                      GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
                      GDI_STATE, GD_BUTTON_UNPRESSED,
                      GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
                      GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
@@ -6287,6 +6570,14 @@ void CreateLevelEditorGadgets()
   ed_fieldx = MAX_ED_FIELDX - 1;
   ed_fieldy = MAX_ED_FIELDY - 1;
 
   ed_fieldx = MAX_ED_FIELDX - 1;
   ed_fieldy = MAX_ED_FIELDY - 1;
 
+  level_editor_gadget =
+    checked_calloc(NUM_EDITOR_GADGETS * sizeof(struct GadgetInfo *));
+  right_gadget_border =
+    checked_calloc(NUM_EDITOR_GADGETS * sizeof(int));
+
+  editor_el_empty = checked_calloc(ED_NUM_ELEMENTLIST_BUTTONS * sizeof(int));
+  editor_el_empty_ptr = editor_el_empty;
+
   ReinitializeElementList();
 
   CreateControlButtons();
   ReinitializeElementList();
 
   CreateControlButtons();
@@ -6316,6 +6607,11 @@ void FreeLevelEditorGadgets()
 
     level_editor_gadget[i] = NULL;
   }
 
     level_editor_gadget[i] = NULL;
   }
+
+  checked_free(level_editor_gadget);
+  checked_free(right_gadget_border);
+
+  checked_free(editor_el_empty);
 }
 
 static void MapCounterButtons(int id)
 }
 
 static void MapCounterButtons(int id)
@@ -7586,14 +7882,24 @@ static void AdjustDrawingAreaGadgets()
   xoffset = (ed_fieldx == MAX_ED_FIELDX ? ED_SCROLLBUTTON_XSIZE : 0);
   yoffset = (ed_fieldy == MAX_ED_FIELDY ? ED_SCROLLBUTTON_YSIZE : 0);
 
   xoffset = (ed_fieldx == MAX_ED_FIELDX ? ED_SCROLLBUTTON_XSIZE : 0);
   yoffset = (ed_fieldy == MAX_ED_FIELDY ? ED_SCROLLBUTTON_YSIZE : 0);
 
+#if 1
+  x = SX + scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
+  y = SX + scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
+#else
   x = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
   y = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
   x = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
   y = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
+#endif
 
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_RIGHT], GDI_X, x, GDI_END);
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_DOWN], GDI_Y, y, GDI_END);
 
 
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_RIGHT], GDI_X, x, GDI_END);
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_DOWN], GDI_Y, y, GDI_END);
 
-  width = scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
+#if 1
+  width  = scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
+  height = scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].height + yoffset;
+#else
+  width  = scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
   height = scrollbar_info[ED_SCROLLBAR_ID_AREA_VERTICAL].height + yoffset;
   height = scrollbar_info[ED_SCROLLBAR_ID_AREA_VERTICAL].height + yoffset;
+#endif
 
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_HORIZONTAL],
               GDI_WIDTH, width,
 
   ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_HORIZONTAL],
               GDI_WIDTH, width,
index 5db3c88f8aa26379e1d250dc8eb33bcd22cd6035..f9ed5ac485fb0361a02f25a96667b0c72efbd708 100644 (file)
@@ -2349,14 +2349,15 @@ struct EditorPaletteInfo
 {
   int x, y;
   int cols, rows;
 {
   int x, y;
   int cols, rows;
+
+  struct XY element_left;
+  struct XY element_middle;
+  struct XY element_right;
 };
 
 struct EditorInfo
 {
   struct EditorPaletteInfo palette;
 };
 
 struct EditorInfo
 {
   struct EditorPaletteInfo palette;
-  struct XY element_left;
-  struct XY element_middle;
-  struct XY element_right;
 };
 
 struct ViewportInfo
 };
 
 struct ViewportInfo