root/OpenSceneGraph/trunk/src/osgPlugins/lwo/lwo2chunks.h @ 13041

Revision 13041, 8.7 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2/****************************************************************************
3
4        Chunk definitions for the LWO2 file format
5
6        Copyright (C) 2002 by Marco Jez
7
8****************************************************************************/
9
10#ifndef LWO2CHUNKS_
11#define LWO2CHUNKS_
12
13#ifdef _MSC_VER
14#       pragma warning ( disable : 4786 )
15#endif
16
17#include <vector>
18
19#include "iffparser.h"
20#include "lwo2types.h"
21
22#define CHUNK(name)                             struct name: public iff::Chunk
23#define SUBCHUNK                                CHUNK
24#define FREE_ON_DESTROY(list)   iff::Chunk_list *free_on_destroy() { return &list; }
25
26namespace lwo2
27{
28
29        typedef iff::Chunk SubChunk;
30
31        CHUNK (FORM) {
32
33                ID4 type;
34                iff::Chunk_list data;
35
36                FREE_ON_DESTROY(data);
37
38                CHUNK (LAYR) {
39                        U2 number;
40                        U2 flags;
41                        VEC12 pivot;
42                        S0 name;
43                        I2 parent;
44                };
45
46                CHUNK (PNTS) {
47                        typedef std::vector<VEC12> Point_list;
48                        Point_list point_location;
49                };
50
51                CHUNK (VMAP) {
52                        ID4 type;
53                        U2 dimension;
54                        S0 name;
55
56                        struct mapping_type {
57                                VX vert;
58                                std::vector<F4> value;
59                        };
60
61                        typedef std::vector<mapping_type> Mapping_list;
62                        Mapping_list mapping;
63                };
64
65                CHUNK (POLS) {
66                        ID4 type;
67
68                        struct polygon_type {
69                                U2 numvert;
70                                U2 flags;
71                                std::vector<VX> vert;
72                        };
73
74                        typedef std::vector<polygon_type> Polygon_list;
75                        Polygon_list polygons;
76                };
77
78                CHUNK (TAGS) {
79                        typedef std::vector<S0> String_list;
80                        String_list tag_string;
81                };
82
83                CHUNK (PTAG) {
84                        ID4 type;
85
86                        struct mapping_type {
87                                VX poly;
88                                U2 tag;
89                        };
90
91                        typedef std::vector<mapping_type> Mapping_list;
92                        Mapping_list mapping;
93                };
94
95                CHUNK (VMAD) {
96                        ID4 type;
97                        U2 dimension;
98                        S0 name;
99
100                        struct mapping_type {
101                                VX vert;
102                                VX poly;
103                                std::vector<F4> value;
104                        };
105
106                        typedef std::vector<mapping_type> Mapping_list;
107                        Mapping_list mapping;
108                };
109
110                CHUNK (ENVL) {
111                        VX index;
112                        iff::Chunk_list attributes;
113
114                        FREE_ON_DESTROY(attributes);
115
116                        SUBCHUNK (TYPE) {
117                                U1 user_format;
118                                U1 type;
119                        };
120
121                        SUBCHUNK (PRE) {
122                                U2 type;
123                        };
124
125                        SUBCHUNK (POST) {
126                                U2 type;
127                        };
128
129                        SUBCHUNK (KEY) {
130                                F4 time;
131                                F4 value;
132                        };
133
134                        SUBCHUNK (SPAN) {
135                                ID4 type;
136                                std::vector<F4> parameters;
137                        };
138
139                        SUBCHUNK (CHAN) {
140                                S0 server_name;
141                                U2 flags;
142                                std::vector<U1> data;
143                        };
144
145                        SUBCHUNK (NAME) {
146                                S0 channel_name;
147                        };
148
149                };
150
151                CHUNK (CLIP) {
152                        U4 index;
153                        iff::Chunk_list attributes;
154
155                        FREE_ON_DESTROY(attributes);
156
157                        SUBCHUNK (STIL) {
158                                FNAM0 name;
159                        };
160
161                        SUBCHUNK (ISEQ) {
162                                U1 num_digits;
163                                U1 flags;
164                                I2 offset;
165                                U2 reserved;
166                                I2 start;
167                                I2 end;
168                                FNAM0 prefix;
169                                S0 suffix;
170                        };
171
172                        SUBCHUNK (ANIM) {
173                                FNAM0 filename;
174                                S0 server_name;
175                                U2 flags;
176                                std::vector<U1> data;
177                        };
178
179                        SUBCHUNK (XREF) {
180                                U4 index;
181                                S0 string;
182                        };
183
184                        SUBCHUNK (STCC) {
185                                I2 lo;
186                                I2 hi;
187                                FNAM0 name;
188                        };
189
190                        SUBCHUNK (TIME) {
191                                FP4 start_time;
192                                FP4 duration;
193                                FP4 frame_rate;
194                        };
195
196                        SUBCHUNK (CONT) {
197                                FP4 contrast_delta;
198                                VX envelope;
199                        };
200
201                        SUBCHUNK (BRIT) {
202                                FP4 brightness_delta;
203                                VX envelope;
204                        };
205
206                        SUBCHUNK (SATR) {
207                                FP4 saturation_delta;
208                                VX envelope;
209                        };
210
211                        SUBCHUNK (HUE) {
212                                FP4 hue_rotation;
213                                VX envelope;
214                        };
215
216                        SUBCHUNK (GAMM) {
217                                F4 gamma;
218                                VX envelope;
219                        };
220
221                        SUBCHUNK (NEGA) {
222                                U2 enable;
223                        };
224
225                        SUBCHUNK (IFLT) {
226                                S0 server_name;
227                                U2 flags;
228                                std::vector<U1> data;
229                        };
230
231                        SUBCHUNK (PFLT) {
232                                S0 server_name;
233                                U2 flags;
234                                std::vector<U1> data;
235                        };
236
237                };
238
239                CHUNK (SURF) {
240                        S0 name;
241                        S0 source;
242                        iff::Chunk_list attributes;
243
244                        FREE_ON_DESTROY(attributes);
245
246                        SUBCHUNK (COLR) {
247                                COL12 base_color;
248                                VX envelope;
249                        };
250
251                        SUBCHUNK (DIFF) {
252                                FP4 intensity;
253                                VX envelope;
254                        };
255
256                        SUBCHUNK (LUMI) {
257                                FP4 intensity;
258                                VX envelope;
259                        };
260
261                        SUBCHUNK (SPEC) {
262                                FP4 intensity;
263                                VX envelope;
264                        };
265
266                        SUBCHUNK (REFL) {
267                                FP4 intensity;
268                                VX envelope;
269                        };
270
271                        SUBCHUNK (TRAN) {
272                                FP4 intensity;
273                                VX envelope;
274                        };
275
276                        SUBCHUNK (TRNL) {
277                                FP4 intensity;
278                                VX envelope;
279                        };
280
281                        SUBCHUNK (GLOS) {
282                                FP4 glossiness;
283                                VX envelope;
284                        };
285
286                        SUBCHUNK (SHRP) {
287                                FP4 sharpness;
288                                VX envelope;
289                        };
290
291                        SUBCHUNK (BUMP) {
292                                FP4 strength;
293                                VX envelope;
294                        };
295
296                        SUBCHUNK (SIDE) {
297                                U2 sidedness;
298                        };
299
300                        SUBCHUNK (SMAN) {
301                                ANG4 max_smoothing_angle;
302                        };
303
304                        SUBCHUNK (RFOP) {
305                                U2 reflection_options;
306                        };
307
308                        SUBCHUNK (RIMG) {
309                                VX image;
310                        };
311
312                        SUBCHUNK (RSAN) {
313                                ANG4 seam_angle;
314                                VX envelope;
315                        };
316
317                        SUBCHUNK (RBLR) {
318                                FP4 blur_percentage;
319                                VX envelope;
320                        };
321
322                        SUBCHUNK (RIND) {
323                                F4 refractive_index;
324                                VX envelope;
325                        };
326
327                        SUBCHUNK (TROP) {
328                                U2 transparency_options;
329                        };
330
331                        SUBCHUNK (TIMG) {
332                                VX image;
333                        };
334
335                        SUBCHUNK (TBLR) {
336                                FP4 blur_percentage;
337                                VX envelope;
338                        };
339
340                        SUBCHUNK (CLRH) {
341                                FP4 color_highlights;
342                                VX envelope;
343                        };
344
345                        SUBCHUNK (CLRF) {
346                                FP4 color_filter;
347                                VX envelope;
348                        };
349
350                        SUBCHUNK (ADTR) {
351                                FP4 additive;
352                                VX envelope;
353                        };
354
355                        SUBCHUNK (GLOW) {
356                                U2 type;
357                                F4 intensity;
358                                VX intensity_envelope;
359                                F4 size;
360                                VX size_envelope;
361                        };
362
363                        SUBCHUNK (LINE) {
364                                U2 flags;
365                                F4 size;
366                                VX size_envelope;
367                                COL12 color;
368                                VX color_envelope;
369                        };
370
371                        SUBCHUNK (ALPH) {
372                                U2 mode;
373                                FP4 value;
374                        };
375
376                        SUBCHUNK (VCOL) {
377                                FP4 intensity;
378                                VX envelope;
379                                ID4 vmap_type;
380                                S0 name;
381                        };
382
383                        // surface blocks
384
385                        SUBCHUNK (BLOK) {
386                                SubChunk *header;
387                                iff::Chunk_list attributes;
388
389                                FREE_ON_DESTROY(attributes);
390
391                                // block headers
392
393                                SUBCHUNK (IMAP) {
394                                        S0 ordinal;
395                                        iff::Chunk_list block_attributes;       // common attributes (see above)
396
397                                        FREE_ON_DESTROY(block_attributes);
398
399                                        // attributes specific to IMAP and PROC
400
401                                        SUBCHUNK (TMAP) {
402                                                iff::Chunk_list attributes;
403
404                                                FREE_ON_DESTROY(attributes);
405
406                                                SUBCHUNK (CNTR) {
407                                                        VEC12 vector;
408                                                        VX envelope;
409                                                };
410
411                                                SUBCHUNK (SIZE) {
412                                                        VEC12 vector;
413                                                        VX envelope;
414                                                };
415
416                                                SUBCHUNK (ROTA) {
417                                                        VEC12 vector;
418                                                        VX envelope;
419                                                };
420
421                                                SUBCHUNK (OREF) {
422                                                        S0 object_name;
423                                                };
424
425                                                SUBCHUNK (FALL) {
426                                                        U2 type;
427                                                        VEC12 vector;
428                                                        VX envelope;
429                                                };
430
431                                                SUBCHUNK (CSYS) {
432                                                        U2 type;
433                                                };
434
435                                        };
436
437                                        // attributes specific to image maps
438
439                                        SUBCHUNK (PROJ) {
440                                                U2 projection_mode;
441                                        };
442
443                                        SUBCHUNK (AXIS) {
444                                                U2 texture_axis;
445                                        };
446
447                                        SUBCHUNK (IMAG) {
448                                                VX texture_image;
449                                        };
450
451                                        SUBCHUNK (WRAP) {
452                                                U2 width_wrap;
453                                                U2 height_wrap;
454                                        };
455
456                                        SUBCHUNK (WRPW) {
457                                                FP4 cycles;
458                                                VX envelope;
459                                        };
460
461                                        SUBCHUNK (WRPH) {
462                                                FP4 cycles;
463                                                VX envelope;
464                                        };
465
466                                        SUBCHUNK (VMAP) {
467                                                S0 txuv_map_name;
468                                        };
469
470                                        SUBCHUNK (AAST) {
471                                                U2 flags;
472                                                FP4 antialiasing_strength;
473                                        };
474
475                                        SUBCHUNK (PIXB) {
476                                                U2 flags;
477                                        };
478
479                                        SUBCHUNK (STCK) {
480                                                U2 on_off;
481                                                FP4 time;
482                                        };
483
484                                        SUBCHUNK (TAMP) {
485                                                FP4 amplitude;
486                                                VX envelope;
487                                        };
488
489                                };
490
491                                SUBCHUNK (PROC) {
492                                        S0 ordinal;
493                                        iff::Chunk_list block_attributes;
494
495                                        FREE_ON_DESTROY(block_attributes);
496
497                                        typedef IMAP::TMAP      TMAP;
498
499                                        // attributes specific to procedural textures
500
501                                        SUBCHUNK (AXIS) {
502                                                U2 axis;
503                                        };
504
505                                        SUBCHUNK (VALU) {
506                                                std::vector<FP4> value;
507                                        };
508
509                                        SUBCHUNK (FUNC) {
510                                                S0 algorithm_name;
511                                                std::vector<U1> data;
512                                        };
513
514                                };
515
516                                SUBCHUNK (GRAD) {
517                                        S0 ordinal;
518                                        iff::Chunk_list block_attributes;
519
520                                        FREE_ON_DESTROY(block_attributes);
521
522                                        // attributes specific to gradient textures
523
524                                        SUBCHUNK (PNAM) {
525                                                S0 parameter;
526                                        };
527
528                                        SUBCHUNK (INAM) {
529                                                S0 item_name;
530                                        };
531
532                                        SUBCHUNK (GRST) {
533                                                FP4 input_range;
534                                        };
535
536                                        SUBCHUNK (GREN) {
537                                                FP4 input_range;
538                                        };
539
540                                        SUBCHUNK (GRPT) {
541                                                U2 repeat_mode;
542                                        };
543
544                                        SUBCHUNK (FKEY) {
545                                                struct value_type {
546                                                        FP4 input;
547                                                        FP4 output[4];
548                                                };
549
550                                                typedef std::vector<value_type> Value_list;
551                                                Value_list values;
552                                        };
553
554                                        SUBCHUNK (IKEY) {
555                                                std::vector<U2> interpolation;
556                                        };
557
558                                };
559
560                                SUBCHUNK (SHDR) {
561                                        S0 ordinal;
562                                        iff::Chunk_list block_attributes;
563
564                                        FREE_ON_DESTROY(block_attributes);
565
566                                        // attributes specific to shaders
567
568                                        SUBCHUNK (FUNC) {
569                                                S0 algorithm_name;
570                                                std::vector<U1> data;
571                                        };
572
573                                };
574
575                                // attributes common to all header types
576
577                                SUBCHUNK (CHAN) {
578                                        ID4 texture_channel;
579                                };
580
581                                SUBCHUNK (ENAB) {
582                                        U2 enable;
583                                };
584
585                                SUBCHUNK (OPAC) {
586                                        U2 type;
587                                        FP4 opacity;
588                                        VX envelope;
589                                };
590
591                                SUBCHUNK (AXIS) {
592                                        U2 displacement_axis;
593                                };
594
595                        };
596
597                };
598
599                CHUNK (BBOX) {
600                        VEC12 min;
601                        VEC12 max;
602                };
603
604                CHUNK (DESC) {
605                        S0 description_line;
606                };
607
608                CHUNK (TEXT) {
609                        S0 comment;
610                };
611
612                CHUNK (ICON) {
613                        U2 encoding;
614                        U2 width;
615                        std::vector<U1> data;
616                };
617
618        };
619
620
621}
622
623#endif
Note: See TracBrowser for help on using the browser.