- BlitBitmap(src_bitmap, tmp_bitmap, 0, 0, src_width, src_height, 0, 0);
- BlitBitmap(tmp_bitmap_2, tmp_bitmap, 0, 0, src_width / 2, src_height / 2,
- 0, src_height);
- BlitBitmap(tmp_bitmap_8, tmp_bitmap, 0, 0, src_width / 8, src_height / 8,
- 3 * src_width / 4, src_height);
+ if (old_bitmap->surface_masked)
+ SDL_FreeSurface(old_bitmap->surface_masked);
+
+ SDL_SetColorKey(tmp_surface_1, SDL_SRCCOLORKEY,
+ SDL_MapRGB(tmp_surface_1->format, 0x00, 0x00, 0x00));
+ if ((old_bitmap->surface_masked = SDL_DisplayFormat(tmp_surface_1)) ==NULL)
+ Error(ERR_EXIT, "SDL_DisplayFormat() failed");
+ SDL_SetColorKey(tmp_surface_1, 0, 0); /* reset transparent pixel */
+#endif
+ }
+
+ new_width = width_1;
+ new_height = height_1 + (height_1 + 1) / 2; /* prevent odd height */
+
+ new_bitmap = CreateBitmap(new_width, new_height, DEFAULT_DEPTH);
+
+ BlitBitmap(tmp_bitmap_1, new_bitmap, 0, 0, width_1, height_1, 0, 0);
+ BlitBitmap(tmp_bitmap_2, new_bitmap, 0, 0, width_1 / 2, height_1 / 2,
+ 0, height_1);
+ BlitBitmap(tmp_bitmap_8, new_bitmap, 0, 0, width_1 / 8, height_1 / 8,
+ 3 * width_1 / 4, height_1);
+
+ if (zoom_factor != 1)
+ FreeBitmap(tmp_bitmap_1);
+
+ if (zoom_factor != 2)
+ FreeBitmap(tmp_bitmap_2);
+
+ if (zoom_factor != 8)
+ FreeBitmap(tmp_bitmap_8);
+
+#if 0
+
+#if defined(TARGET_SDL)
+ /* !!! what about the old old_bitmap->surface ??? FIX ME !!! */
+ old_bitmap->surface = new_bitmap->surface;
+ new_bitmap->surface = NULL;
+#else
+ /* !!! see above !!! */
+ old_bitmap->drawable = new_bitmap->drawable;
+ new_bitmap->drawable = None;
+#endif
+
+#else
+
+ /* replace image with extended image (containing normal, 1/2 and 1/8 size) */
+#if defined(TARGET_SDL)
+ swap_bitmap.surface = old_bitmap->surface;
+ old_bitmap->surface = new_bitmap->surface;
+ new_bitmap->surface = swap_bitmap.surface;
+#else
+ swap_bitmap.drawable = old_bitmap->drawable;
+ old_bitmap->drawable = new_bitmap->drawable;
+ new_bitmap->drawable = swap_bitmap.drawable;
+#endif