+ if (create_small_bitmaps)
+ {
+ 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_4, new_bitmap, 0, 0, width_1 / 4, height_1 / 4,
+ width_1 / 2, height_1);
+ BlitBitmap(tmp_bitmap_8, new_bitmap, 0, 0, width_1 / 8, height_1 / 8,
+ 3 * width_1 / 4, height_1);
+ }
+ else
+ {
+ new_width = width_1;
+ new_height = height_1;
+
+ new_bitmap = tmp_bitmap_1; /* directly use tmp_bitmap_1 as new bitmap */
+ }
+
+ if (create_small_bitmaps)
+ {
+ /* if no small bitmaps created, tmp_bitmap_1 is used as new bitmap now */
+ if (zoom_factor != 1)
+ FreeBitmap(tmp_bitmap_1);
+
+ if (zoom_factor != 2)
+ FreeBitmap(tmp_bitmap_2);
+
+ if (zoom_factor != 4)
+ FreeBitmap(tmp_bitmap_4);