rnd-20140306-1-src
[rocksndiamonds.git] / src / tools.c
index 2dd6d5bbac7a3019ad15a5b0d325b9add979da66..0387f05d4cba20ff90ad5e5cf08fe423dc6895ca 100644 (file)
@@ -3417,14 +3417,28 @@ static void DrawPreviewLevelPlayfieldExt(int from_x, int from_y)
   int preview_height = preview.ysize * tile_size;
   int real_preview_xsize = MIN(level_xsize, preview.xsize);
   int real_preview_ysize = MIN(level_ysize, preview.ysize);
+  int real_preview_width  = real_preview_xsize * tile_size;
+  int real_preview_height = real_preview_ysize * tile_size;
   int dst_x = SX + ALIGNED_XPOS(preview.x, preview_width, preview.align);
   int dst_y = SY + ALIGNED_YPOS(preview.y, preview_height, preview.valign);
   int x, y;
 
+#if 1
+  if (!IN_GFX_FIELD_FULL(dst_x, dst_y + preview_height - 1))
+    return;
+#endif
+
+#if 0
+  dst_x += (preview_width  - real_preview_width)  / 2;
+  dst_y += (preview_height - real_preview_height) / 2;
+
+  DrawBackground(dst_x, dst_y, real_preview_width, real_preview_height);
+#else
   DrawBackground(dst_x, dst_y, preview_width, preview_height);
 
-  dst_x += (preview_width  - real_preview_xsize * tile_size) / 2;
-  dst_y += (preview_height - real_preview_ysize * tile_size) / 2;
+  dst_x += (preview_width  - real_preview_width)  / 2;
+  dst_y += (preview_height - real_preview_height) / 2;
+#endif
 
   for (x = 0; x < real_preview_xsize; x++)
   {
@@ -3476,6 +3490,9 @@ static void DrawPreviewLevelLabelExt(int mode)
   int font_nr = pos->font;
   int i;
 
+  if (!IN_GFX_FIELD_FULL(pos->x, pos->y + getFontHeight(pos->font)))
+    return;
+
   if (mode == MICROLABEL_LEVEL_AUTHOR_HEAD ||
       mode == MICROLABEL_IMPORTED_FROM_HEAD ||
       mode == MICROLABEL_IMPORTED_BY_HEAD)
@@ -3615,7 +3632,8 @@ static void DrawPreviewLevelExt(boolean restart)
       label_text[max_len_label_text] = '\0';
 
 #if 1
-      DrawTextSAligned(pos->x, pos->y, label_text, font_nr, pos->align);
+      if (IN_GFX_FIELD_FULL(pos->x, pos->y + getFontHeight(pos->font)))
+       DrawTextSAligned(pos->x, pos->y, label_text, font_nr, pos->align);
 #else
       lxpos = SX + (SXSIZE - getTextWidth(label_text, font_nr)) / 2;
       lypos = SY + MICROLABEL1_YPOS;
@@ -6748,8 +6766,8 @@ void CreateToolButtons()
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_INFO_TEXT, toolbutton_info[i].infotext,
-                     GDI_X, dx + pos->x,
-                     GDI_Y, dy + pos->y,
+                     GDI_X, dx + GDI_ACTIVE_POS(pos->x),
+                     GDI_Y, dy + GDI_ACTIVE_POS(pos->y),
                      GDI_WIDTH, gfx->width,
                      GDI_HEIGHT, gfx->height,
                      GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
@@ -6908,8 +6926,8 @@ void CreateToolButtons()
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_INFO_TEXT, toolbutton_info[i].infotext,
-                     GDI_X, DX + toolbutton_info[i].x,
-                     GDI_Y, DY + toolbutton_info[i].y,
+                     GDI_X, DX + GDI_ACTIVE_POS(toolbutton_info[i].x),
+                     GDI_Y, DY + GDI_ACTIVE_POS(toolbutton_info[i].y),
                      GDI_WIDTH, toolbutton_info[i].width,
                      GDI_HEIGHT, toolbutton_info[i].height,
                      GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
@@ -11382,7 +11400,9 @@ void ChangeViewportPropertiesIfNeeded()
     InitGfxBuffers();
 #endif
 
+#if 0
     if (gfx_game_mode == GAME_MODE_MAIN)
+#endif
     {
 #if 1
       init_gadgets_and_toons = TRUE;