printf("::: '%s' -> '%s'\n", fi->token, fi->filename);
#endif
- CreateImageWithSmallImages(graphic, graphic_info[graphic].scale_up_factor);
+ CreateImageWithSmallImages(graphic, graphic_info[graphic].scale_up_factor,
+ graphic_info[graphic].tile_size);
}
void InitElementSmallImages()
{
+ print_timestamp_init("InitElementSmallImages");
+
static int special_graphics[] =
{
IMG_EDITOR_ELEMENT_BORDER,
int num_property_mappings = getImageListPropertyMappingSize();
int i;
+ print_timestamp_time("getImageListPropertyMapping/Size");
+
+ print_timestamp_init("InitElementSmallImagesScaledUp (1)");
/* initialize normal images from static configuration */
for (i = 0; element_to_graphic[i].element > -1; i++)
InitElementSmallImagesScaledUp(element_to_graphic[i].graphic);
+ print_timestamp_done("InitElementSmallImagesScaledUp (1)");
/* initialize special images from static configuration */
for (i = 0; element_to_special_graphic[i].element > -1; i++)
InitElementSmallImagesScaledUp(element_to_special_graphic[i].graphic);
+ print_timestamp_time("InitElementSmallImagesScaledUp (2)");
/* initialize images from dynamic configuration (may be elements or other) */
for (i = 0; i < num_property_mappings; i++)
InitElementSmallImagesScaledUp(property_mapping[i].artwork_index);
+ print_timestamp_time("InitElementSmallImagesScaledUp (3)");
/* initialize special images from above list (non-element images) */
for (i = 0; special_graphics[i] > -1; i++)
InitElementSmallImagesScaledUp(special_graphics[i]);
+ print_timestamp_time("InitElementSmallImagesScaledUp (4)");
+
+ print_timestamp_done("InitElementSmallImages");
}
void InitScaledImages()
g->diggable_like = -1; /* do not use clone element */
g->border_size = TILEX / 8; /* "CRUMBLED" border size */
g->scale_up_factor = 1; /* default: no scaling up */
+ g->tile_size = TILESIZE; /* default: standard tile size */
g->clone_from = -1; /* do not use clone graphic */
g->anim_delay_fixed = 0;
g->anim_delay_random = 0;
g->scale_up_factor = 1; /* no scaling */
#endif
+#if 1
+ /* optional tile size for using non-standard image size */
+ if (parameter[GFX_ARG_TILE_SIZE] != ARG_UNDEFINED_VALUE)
+ g->tile_size = parameter[GFX_ARG_TILE_SIZE];
+ if (g->tile_size < TILESIZE)
+ g->tile_size = TILESIZE; /* standard tile size */
+#endif
+
#if 1
if (g->use_image_size)
{
int num_images = getImageListSize();
int i;
-#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
- static boolean clipmasks_initialized = FALSE;
- Pixmap src_pixmap;
- XGCValues clip_gc_values;
- unsigned int clip_gc_valuemask;
- GC copy_clipmask_gc = None;
-#endif
-
/* use image size as default values for width and height for these images */
static int full_size_graphics[] =
{
IMG_BACKGROUND_ENVELOPE_2,
IMG_BACKGROUND_ENVELOPE_3,
IMG_BACKGROUND_ENVELOPE_4,
+ IMG_BACKGROUND_REQUEST,
IMG_BACKGROUND,
IMG_BACKGROUND_TITLE_INITIAL,
IMG_BACKGROUND_INFO_MUSIC,
IMG_BACKGROUND_INFO_CREDITS,
IMG_BACKGROUND_INFO_PROGRAM,
+ IMG_BACKGROUND_INFO_VERSION,
IMG_BACKGROUND_INFO_LEVELSET,
IMG_BACKGROUND_SETUP,
+ IMG_BACKGROUND_PLAYING,
IMG_BACKGROUND_DOOR,
IMG_BACKGROUND_TAPE,
IMG_BACKGROUND_PANEL,
+ IMG_BACKGROUND_PALETTE,
+ IMG_BACKGROUND_TOOLBOX,
IMG_TITLESCREEN_INITIAL_1,
IMG_TITLESCREEN_INITIAL_2,
IMG_TITLESCREEN_4,
IMG_TITLESCREEN_5,
+ IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1,
+ IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2,
+ IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3,
+ IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4,
+ IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5,
+ IMG_BACKGROUND_TITLEMESSAGE_1,
+ IMG_BACKGROUND_TITLEMESSAGE_2,
+ IMG_BACKGROUND_TITLEMESSAGE_3,
+ IMG_BACKGROUND_TITLEMESSAGE_4,
+ IMG_BACKGROUND_TITLEMESSAGE_5,
+
-1
};
graphic_info[full_size_graphics[i]].use_image_size = TRUE;
#endif
-#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
- if (clipmasks_initialized)
- {
- for (i = 0; i < num_images; i++)
- {
- if (graphic_info[i].clip_mask)
- XFreePixmap(display, graphic_info[i].clip_mask);
- if (graphic_info[i].clip_gc)
- XFreeGC(display, graphic_info[i].clip_gc);
-
- graphic_info[i].clip_mask = None;
- graphic_info[i].clip_gc = None;
- }
- }
-#endif
-
/* first set all graphic paramaters ... */
for (i = 0; i < num_images; i++)
set_graphic_parameters(i);
graphic_info[i] = graphic_info[fallback_graphic];
}
-
-#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
- /* currently we only need a tile clip mask from the first frame */
- getFixedGraphicSource(i, first_frame, &src_bitmap, &src_x, &src_y);
-
- if (copy_clipmask_gc == None)
- {
- clip_gc_values.graphics_exposures = False;
- clip_gc_valuemask = GCGraphicsExposures;
- copy_clipmask_gc = XCreateGC(display, src_bitmap->clip_mask,
- clip_gc_valuemask, &clip_gc_values);
- }
-
- graphic_info[i].clip_mask =
- XCreatePixmap(display, window->drawable, TILEX, TILEY, 1);
-
- src_pixmap = src_bitmap->clip_mask;
- XCopyArea(display, src_pixmap, graphic_info[i].clip_mask,
- copy_clipmask_gc, src_x, src_y, TILEX, TILEY, 0, 0);
-
- clip_gc_values.graphics_exposures = False;
- clip_gc_values.clip_mask = graphic_info[i].clip_mask;
- clip_gc_valuemask = GCGraphicsExposures | GCClipMask;
-
- graphic_info[i].clip_gc =
- XCreateGC(display, window->drawable, clip_gc_valuemask, &clip_gc_values);
-#endif
}
-
-#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
- if (copy_clipmask_gc)
- XFreeGC(display, copy_clipmask_gc);
-
- clipmasks_initialized = TRUE;
-#endif
}
static void InitGraphicCompatibilityInfo()
{
print_timestamp_init("ReinitializeGraphics");
+#if NEW_GAME_TILESIZE
+ InitGfxTileSizeInfo(game.tile_size, TILESIZE);
+#endif
+
InitGraphicInfo(); /* graphic properties mapping */
print_timestamp_time("InitGraphicInfo");
InitElementGraphicInfo(); /* element game graphic mapping */
}
else if (strPrefix(command, "create images "))
{
-#if defined(TARGET_SDL)
global.create_images_dir = getStringCopy(&command[14]);
if (access(global.create_images_dir, W_OK) != 0)
Error(ERR_EXIT, "image target directory '%s' not found or not writable",
global.create_images_dir);
-#else
- Error(ERR_EXIT, "command only available for SDL target");
-#endif
}
#if DEBUG
ReCreateBitmap(&bitmap_db_cross, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH);
ReCreateBitmap(&bitmap_db_field, FXSIZE, FYSIZE, DEFAULT_DEPTH);
ReCreateBitmap(&bitmap_db_panel, DXSIZE, DYSIZE, DEFAULT_DEPTH);
+#if 0
ReCreateBitmap(&bitmap_db_door, 3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH);
+#endif
+ ReCreateBitmap(&bitmap_db_door_1, 3 * DXSIZE, DYSIZE, DEFAULT_DEPTH);
+ ReCreateBitmap(&bitmap_db_door_2, 3 * VXSIZE, VYSIZE, DEFAULT_DEPTH);
ReCreateBitmap(&bitmap_db_toons, FULL_SXSIZE, FULL_SYSIZE, DEFAULT_DEPTH);
/* initialize screen properties */
font_height = getFontHeight(FC_RED);
-#if 1
+#if 0
DrawInitTextAlways(getWindowTitleString(), 20, FC_YELLOW);
#else
DrawInitTextAlways(getProgramInitString(), 20, FC_YELLOW);