Ignore:
Timestamp:
Apr 23, 2011, 12:48:59 AM (8 years ago)
Author:
Sam Hocevar
Message:

imlib: implement a small spec file dumper. "abuse -export foo.spe" will
extract the contents of the file and create PCX files from the images.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/imlib/specs.h

    r534 r539  
    2222extern char const *spec_types[];
    2323
    24 #define SPEC_INVALID_TYPE    0
    25 #define SPEC_COLOR_TABLE     1
    26 #define SPEC_PALETTE         2
    27 #define SPEC_IMAGE           4
    28 #define SPEC_FORETILE        5
    29 #define SPEC_BACKTILE        6
    30 #define SPEC_CHARACTER       7
    31 #define SPEC_MORPH_POINTS_8  8
    32 #define SPEC_MORPH_POINTS_16 9
    33 #define SPEC_GRUE_OBJS       10
    34 #define SPEC_EXTERN_SFX      11
    35 #define SPEC_DMX_MUS         12
    36 #define SPEC_PATCHED_MORPH   13
    37 #define SPEC_NORMAL_FILE     14
    38 #define SPEC_COMPRESS1_FILE  15
    39 #define SPEC_VECTOR_IMAGE    16
    40 #define SPEC_LIGHT_LIST      17
    41 #define SPEC_GRUE_FGMAP      18
    42 #define SPEC_GRUE_BGMAP      19
    43 #define SPEC_DATA_ARRAY      20
    44 #define SPEC_CHARACTER2      21
    45 #define SPEC_PARTICLE        22
    46 #define SPEC_EXTERNAL_LCACHE 23
    47 
     24enum
     25{
     26    SPEC_INVALID_TYPE = 0,
     27    SPEC_COLOR_TABLE,
     28    SPEC_PALETTE,
     29    SPEC_, /* Unused */
     30    SPEC_IMAGE,
     31    SPEC_FORETILE,
     32    SPEC_BACKTILE,
     33    SPEC_CHARACTER,
     34    SPEC_MORPH_POINTS_8,
     35    SPEC_MORPH_POINTS_16,
     36    SPEC_GRUE_OBJS,
     37    SPEC_EXTERN_SFX,
     38    SPEC_DMX_MUS,
     39    SPEC_PATCHED_MORPH,
     40    SPEC_NORMAL_FILE,
     41    SPEC_COMPRESS1_FILE,
     42    SPEC_VECTOR_IMAGE,
     43    SPEC_LIGHT_LIST,
     44    SPEC_GRUE_FGMAP,
     45    SPEC_GRUE_BGMAP,
     46    SPEC_DATA_ARRAY,
     47    SPEC_CHARACTER2,
     48    SPEC_PARTICLE,
     49    SPEC_EXTERNAL_LCACHE,
     50};
    4851
    4952#define SPEC_SIGNATURE    "SPEC1.0"
     
    5659#define SPEC_SEARCH_INSIDE_ONLY    3
    5760
    58 /* file specs
    59               8   signature
    60               2   number entries
    61                   [entries]
    62               1      entry type
    63               1      entry name length
    64               X      entry name (with null terminator)
    65               1      flags
    66                      if (flags&LINK)
    67               1        link filename length
    68               X        link filename
    69                      else
    70               4        data size
    71               4        offset
    72 */
     61/*  struct spec_header
     62 *  {
     63 *      char signature[8];
     64 *      uint16_t entries_count;
     65 *      struct entry
     66 *      {
     67 *          uint8_t type;
     68 *          uint8_t name_length;
     69 *          char name[name_length];
     70 *          uint8_t flags;
     71 *          if (flags & LINK)
     72 *          {
     73 *              uint8_t filename_length;
     74 *              char filename[filename_length];
     75 *          }
     76 *          else
     77 *          {
     78 *              uint32_t data_size;
     79 *              uint32_t offset;
     80 *          }
     81 *      } entries[entries_count];
     82 *  }
     83 */
    7384
    7485void set_spec_main_file(char const *filename, int search_order=SPEC_SEARCH_OUTSIDE_INSIDE);
     
    196207  void delete_entries();   // if the directory was created by hand instead of by file
    197208  ~spec_directory();
     209
     210  static void extract(char const *name);
    198211} ;
    199212
Note: See TracChangeset for help on using the changeset viewer.