Ejemplo n.º 1
0
int d_sprite_addanim(d_sprite_t *p_)
{
    sprite_t *p;

    p = p_;
    MAGICCHECK(p, -1);

    p->nanims++;
    p->nframes = d_memory_resize(p->nframes, p->nanims*sizeof(word));
    p->nframes[p->nanims-1] = 0;
    p->frames = d_memory_resize(p->frames, p->nanims*sizeof(d_image_t **));
    p->frames[p->nanims-1] = NULL;
    return p->nanims-1;
}
Ejemplo n.º 2
0
d_rasterdescription_t *d_raster_getmodes(int *nmodes)
{
    d_rasterdescription_t *modes;
    vga_modeinfo *minf;
    int i;

    modes = NULL;
    *nmodes = 0;

    for(i = 1; i < vga_lastmodenumber(); i++) {
        if(vga_hasmode(i) == 0) continue;

        (*nmodes)++;
        modes = d_memory_resize(modes, *nmodes*sizeof(d_rasterdescription_t));
        if(modes == NULL) {
            d_error_push("d_raster_getmodes: d_memory_resize failed.");
            return NULL;
        }
        
        minf = vga_getmodeinfo(i);
        modes[*nmodes-1].w = minf->width;
        modes[*nmodes-1].h = minf->height;
        modes[*nmodes-1].bpp = log2(minf->colors);
        modes[*nmodes-1].alpha = 0;
        if(modes[*nmodes-1].bpp == 8)
            modes[*nmodes-1].paletted = true;
        else
            modes[*nmodes-1].paletted = false;
        modes[*nmodes-1].cspace = RGB;
    }
    return modes;
}
Ejemplo n.º 3
0
void d_sprite_addframe(d_sprite_t *p_, int anim, d_image_t *frame)
{
    sprite_t *p;

    p = p_;
    MAGICCHECK(p, /* void */);
    if(anim >= p->nanims) {
        d_error_push("invalid animation.");
        return;
    }

    p->nframes[anim]++;
    p->frames[anim] = d_memory_resize(p->frames[anim],
                                      p->nframes[anim]*sizeof(d_image_t *));
    p->frames[anim][p->nframes[anim]-1] = frame;
    return;
}
Ejemplo n.º 4
0
bool d_tilemap_addtileimage(d_tilemap_t *p, byte tile, d_image_t *image)
{
    int i;

    if(image != NULL)
        if(image->desc.w != p->tiledesc.w ||
           image->desc.h != p->tiledesc.h)
            return failure;

    if(tile >= p->ntiles) {
        p->tiles = d_memory_resize(p->tiles, (tile+1)*sizeof(d_image_t *));
	for(i = p->ntiles; i < tile; i++)
	    p->tiles[i] = NULL;
        p->ntiles = tile+1;
    }
    p->tiles[tile] = image;
    return success;
}