aboutsummaryrefslogtreecommitdiff
path: root/src/libparsec/include/od_texdf.h
blob: 467d61e48bf8598d8132e80d8d52624630cf4cd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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_