1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #include "common.h"
- #include "devil1tex.h"
- void extracttextures(const char *filedata,
- unsigned int filesize,
- const char *filename) {
- struct TexturePack *p = NULL;
- struct Texture *t = NULL;
- struct TextureBatchDescriptor *d = NULL;
- char * fmt = NULL;
- if (!(DEVIL1TEX.getheader(&p, filedata)) || filesize == 0) {
- return;
- }
- fmt = (char*)malloc(strlen(filename) + 3 + 4);
- unsigned int i;
- unsigned int j;
- unsigned int id = 0;
- for (i = 0; i < p -> batchNumber; i++) {
- DEVIL1TEX.getbatchdesc(&d, i, filedata, filesize);
- t = (struct Texture*)
- malloc(sizeof(struct Texture) * (d -> texNumber));
- DEVIL1TEX.gettextures(t, i, filedata, filesize);
- for (j = 0; j < d -> texNumber; j++) {
- sprintf(fmt, "%s_%d.dds", filename, id);
- write(fmt, (char*)t[j].data, d -> textureSize);
- id++;
- }
- free(t);
- }
- free(fmt);
- return;
- }
- int main(int argc, char ** argv) {
- char *f = argv[1];
- unsigned int bufsize = 0;
- char *buffer = loadfile(f, &bufsize);
- extracttextures(buffer, bufsize, f);
- free(buffer);
- return 0;
- }
|