Re: [AD] Another GFX_SAFE patch, now the demo

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


In reply to Grzegorz Adam Hankiewicz <gradha@xxxxxxxxxx>:
>True, Allegro converts the datafile. You only have to be careful to load 
>the palette before the datafile. The routine I was thinking about was 
>something more complex, where a single datafile contains images with 
>different palettes, and were you mix different color depth graphics, and 
>all of them would use the actual color depth at the end.

It doesn't have to be that complicated. For instance (untested):

DATAFILE* load_demo_data(const char* filename) {
  DATAFILE* dat = 0;
  DATAFILE* default_pal_dat = 0;
  RGB* default_pal = 0;

  set_color_conversion(COLORCONV_NONE);
  dat = load_datafile(filename);

  if(!dat) return 0;
  default_pal_dat = find_datafile_object(dat, "GAME_PAL");
  if(!default_pal_dat) { 
    unload_datafile(dat);
    return 0;
  }

  default_pal = default_pal_dat->dat;
  convert_datafile(dat, default_pal);

  return dat;
}

void convert_datafile(DATAFILE* dat, RGB* default_pal)
{
  DATAFILE* iter = 0;
  DATAFILE* pal_dat = 0;
  RGB* pal = 0;
  char* pal_name = 0;

  for(iter = dat; iter->type != DAT_END; iter++) {

    pal_name = get_datafile_property(iter, DAT_ID('P','A','L',0));
    if(pal_name) {
      pal_dat = find_datafile_object(dat, pal_name);
      if(pal_dat) pal = pal_dat->dat;
      else pal = default_pal;
    } else {
      pal = default_pal;
    }

    switch(iter->type) {
      case DAT_BITMAP:
        iter->dat = convert_datafile_bitmap(iter->dat, pal);
        break;
      case DAT_RLE_SPRITE:
        iter->dat = convert_datafile_rle(iter->dat, pal);
        break;
      /* and so on */
    }
  }
}

/* convert_datafile_bitmap et al. are not included, but are easy enough
   to code. */

From this code, it can be seen that such a convert_datafile function
would not be overly difficult to write; whether or not it is useful
enough to integrate into the core library is another thing altogether,
of course.

If it is deemed useful, I will finish the implementation.

Bye for now,
-- 
Laurence Withers, lwithers@xxxxxxxxxx
                http://www.lwithers.demon.co.uk/

Attachment: signature.asc
Description: PGP signature



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/