diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /src/libparsec/include/od_texdf.h | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'src/libparsec/include/od_texdf.h')
| -rw-r--r-- | src/libparsec/include/od_texdf.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/libparsec/include/od_texdf.h b/src/libparsec/include/od_texdf.h new file mode 100644 index 0000000..467d61e --- /dev/null +++ b/src/libparsec/include/od_texdf.h @@ -0,0 +1,146 @@ +/* + * PARSEC HEADER (OBJECT) + * Texture Format Specifications V1.15 + * + * Copyright (c) Markus Hadwiger 1998-2000 + * All Rights Reserved. + */ + +#ifndef _OD_TEXDF_H_ +#define _OD_TEXDF_H_ + + +// texture flags + +#define TEXFLG_NONE 0x0000 // no special flags +#define TEXFLG_EXT_GEOMETRY 0x0001 // extended geometry specification +#define TEXFLG_LODRANGE_VALID 0x0002 // lod range (small to large) valid +#define TEXFLG_GLIDE_TEXTURE 0x0004 // directly usable as glide texture +#define TEXFLG_IS_COMPRESSED 0x0010 // texture data is compressed +#define TEXFLG_DO_COMPRESSION 0x0020 // texture data should be compressed +#define TEXFLG_CACHE_MAY_FREE 0x0100 // cache may free texture data + + +// texture map formats + +#define TEXFMT_FORMATMASK 0x0000ffff // mask to extract actual format +#define TEXFMT_FLAGSMASK 0xffff0000 // mask to extract additional flags +#define TEXFMT_PALETTEDTEXTURE 0x00010000 // format needs texture palette +#define TEXFMT_GLIDEFORMAT 0x00020000 // format spec identical to glide + +#define TEXFMT_STANDARD 0x0000 // 8-bit indexes into global palette +#define TEXFMT_RGB_565 0x0001 // 16-bit direct color +#define TEXFMT_RGBA_1555 0x0002 // 16-bit direct color with alpha +#define TEXFMT_RGB_888 0x0003 // 24-bit direct color +#define TEXFMT_RGBA_8888 0x0004 // 32-bit direct color with alpha +#define TEXFMT_ALPHA_8 0x0005 // 8-bit alpha only +#define TEXFMT_INTENSITY_8 0x0006 // 8-bit intensity only +#define TEXFMT_LUMINANCE_8 0x0007 // 8-bit luminance only + +#define TEXFMT_GR_8BIT ( 0x0000 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_RGB_332 TEXFMT_GR_8BIT +#define TEXFMT_GR_YIQ_422 ( 0x0001 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ALPHA_8 ( 0x0002 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_INTENSITY_8 ( 0x0003 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ALPHA_INTENSITY_44 ( 0x0004 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_P_8 ( 0x0005 | TEXFMT_GLIDEFORMAT | TEXFMT_PALETTEDTEXTURE ) +#define TEXFMT_GR_RSVD0 ( 0x0006 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_RSVD1 ( 0x0007 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_16BIT ( 0x0008 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ARGB_8332 TEXFMT_GR_16BIT +#define TEXFMT_GR_AYIQ_8422 ( 0x0009 | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_RGB_565 ( 0x000a | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ARGB_1555 ( 0x000b | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ARGB_4444 ( 0x000c | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_ALPHA_INTENSITY_88 ( 0x000d | TEXFMT_GLIDEFORMAT ) +#define TEXFMT_GR_AP_88 ( 0x000e | TEXFMT_GLIDEFORMAT | TEXFMT_PALETTEDTEXTURE ) +#define TEXFMT_GR_RSVD2 ( 0x000f | TEXFMT_GLIDEFORMAT ) + + +// texture lod specification + +#define TEXLOD_1 0x0000 // lowest level: 1x1 +#define TEXLOD_2 0x0001 +#define TEXLOD_4 0x0002 +#define TEXLOD_8 0x0003 +#define TEXLOD_16 0x0004 +#define TEXLOD_32 0x0005 +#define TEXLOD_64 0x0006 +#define TEXLOD_128 0x0007 +#define TEXLOD_256 0x0008 +#define TEXLOD_512 0x0009 +#define TEXLOD_1024 0x000a +#define TEXLOD_2048 0x000b // highest level: 2048x2048 + + +// texture geometry codes (legacy geometry spec) + +#define TEXGEO_CODE_32x32 0x00000000 +#define TEXGEO_CODE_64x32 0x00000001 +#define TEXGEO_CODE_64x64 0x00000002 +#define TEXGEO_CODE_128x64 0x00000003 +#define TEXGEO_CODE_128x128 0x00000004 +#define TEXGEO_CODE_256x128 0x00000005 +#define TEXGEO_CODE_256x256 0x00000006 // currently not supported! + + +// texture extended geometry codes (scale, aspect ratio, flags) + +#define TEXGEO_NOTSPECIFIED 0x00000000 + +#define TEXGEO_GLIDEASPECT 0x00000100 // aspect ratio spec for glide +#define TEXGEO_EXTASPECT 0x00000200 // non-standard aspect ratio spec +#define TEXGEO_INVERSESCALE 0x00000400 // inverse scale factor stored +#define TEXGEO_ASPECTMASK 0x000000ff // mask to extract aspect ratio +#define TEXGEO_SCALEMASK 0x0fff0000 // mask to extract coordinate scale +#define TEXGEO_SCALESHIFT 16 // shift to get actual scale value +#define TEXGEO_SCALE2MASK 0xf0000000 // mask to extract log2 scale +#define TEXGEO_SCALE2SHIFT 28 // shift to get actual log2 scale +#define TEXGEO_FLAGSMASK 0x0000ff00 // mask to extract additional flags + +#define TEXGEO_SCALE_1 0x00010000 // scale factors by which texture +#define TEXGEO_SCALE_2 0x10020000 // coordinates need to be scaled +#define TEXGEO_SCALE_4 0x20040000 // up before they can be used for +#define TEXGEO_SCALE_8 0x30080000 // actual rendering (| their log2). +#define TEXGEO_SCALE_16 0x40100000 // this facility is used if texture +#define TEXGEO_SCALE_32 0x50200000 // coordinates have to be normalized +#define TEXGEO_SCALE_64 0x60400000 // to a reference texture size +#define TEXGEO_SCALE_128 0x70800000 // instead of the actual size of +#define TEXGEO_SCALE_256 0x81000000 // the texture. +#define TEXGEO_SCALE_512 0x92000000 +#define TEXGEO_SCALE_1024 0xa4000000 + +#define TEXGEO_ASPECT_1x1 0x00 // supported everywhere +#define TEXGEO_ASPECT_2x1 0x01 // supported everywhere +#define TEXGEO_ASPECT_4x1 ( 0x02 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_8x1 ( 0x03 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_16x1 ( 0x04 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_32x1 ( 0x05 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_64x1 ( 0x06 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_128x1 ( 0x07 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_256x1 ( 0x08 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_512x1 ( 0x09 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1024x1 ( 0x0a | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x2 ( 0x0b | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x4 ( 0x0c | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x8 ( 0x0d | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x16 ( 0x0e | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x32 ( 0x0f | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x64 ( 0x10 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x128 ( 0x11 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x256 ( 0x12 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x512 ( 0x13 | TEXGEO_EXTASPECT ) +#define TEXGEO_ASPECT_1x1024 ( 0x14 | TEXGEO_EXTASPECT ) + +#define TEXGEO_ASPECT_GR_8x1 ( 0x00 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_4x1 ( 0x01 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_2x1 ( 0x02 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_1x1 ( 0x03 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_1x2 ( 0x04 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_1x4 ( 0x05 | TEXGEO_GLIDEASPECT ) +#define TEXGEO_ASPECT_GR_1x8 ( 0x06 | TEXGEO_GLIDEASPECT ) + + +#endif // _OD_TEXDF_H_ + + |
