set_tile_type frees tileset memory not in use for the current tile type (paletted or full color). stretch_tile and free_tile support resizing tiles at run time.
50 lines
1.6 KiB
C
50 lines
1.6 KiB
C
/* NetHack 3.6 tileset.h $NHDT-Date: 1457207052 2016/03/05 19:44:12 $ $NHDT-Branch: chasonr $:$NHDT-Revision: 1.0 $ */
|
|
/* Copyright (c) Ray Chason, 2016. */
|
|
/* NetHack may be freely redistributed. See license for details. */
|
|
|
|
#ifndef TILESET_H
|
|
#define TILESET_H
|
|
|
|
struct Pixel {
|
|
unsigned char r, g, b, a;
|
|
};
|
|
|
|
struct TileImage {
|
|
/* Image data */
|
|
unsigned width, height;
|
|
struct Pixel *pixels; /* for direct color */
|
|
unsigned char *indexes; /* for paletted images */
|
|
};
|
|
|
|
boolean FDECL(read_tiles, (const char *filename, BOOLEAN_P true_color));
|
|
const struct Pixel *NDECL(get_palette);
|
|
boolean FDECL(set_tile_type, (BOOLEAN_P true_color));
|
|
void NDECL(free_tiles);
|
|
const struct TileImage *FDECL(get_tile, (unsigned tile_index));
|
|
|
|
/* For resizing tiles */
|
|
struct TileImage *FDECL(stretch_tile, (const struct TileImage *,
|
|
unsigned, unsigned));
|
|
void FDECL(free_tile, (struct TileImage *));
|
|
|
|
/* Used internally by the tile set code */
|
|
struct TileSetImage {
|
|
/* Image data */
|
|
unsigned width, height;
|
|
struct Pixel *pixels; /* for direct color */
|
|
unsigned char *indexes; /* for paletted images */
|
|
struct Pixel palette[256];
|
|
|
|
/* Image description from the file */
|
|
char *image_desc;
|
|
|
|
/* Tile dimensions */
|
|
unsigned tile_width, tile_height;
|
|
};
|
|
|
|
boolean FDECL(read_bmp_tiles, (const char *filename, struct TileSetImage *image));
|
|
boolean FDECL(read_gif_tiles, (const char *filename, struct TileSetImage *image));
|
|
boolean FDECL(read_png_tiles, (const char *filename, struct TileSetImage *image));
|
|
|
|
#endif
|