Parent Directory
|
Revision Log
Revision 861 - (view) (download) (as text)
1 : | eile | 229 | /* |
2 : | |||
3 : | Header for PLY polygon files. | ||
4 : | |||
5 : | - Greg Turk, March 1994 | ||
6 : | |||
7 : | A PLY file contains a single polygonal _object_. | ||
8 : | |||
9 : | An object is composed of lists of _elements_. Typical elements are | ||
10 : | vertices, faces, edges and materials. | ||
11 : | |||
12 : | Each type of element for a given object has one or more _properties_ | ||
13 : | associated with the element type. For instance, a vertex element may | ||
14 : | have as properties three floating-point values x,y,z and three unsigned | ||
15 : | chars for red, green and blue. | ||
16 : | |||
17 : | --------------------------------------------------------------- | ||
18 : | |||
19 : | Copyright (c) 1994 The Board of Trustees of The Leland Stanford | ||
20 : | Junior University. All rights reserved. | ||
21 : | |||
22 : | Permission to use, copy, modify and distribute this software and its | ||
23 : | documentation for any purpose is hereby granted without fee, provided | ||
24 : | that the above copyright notice and this permission notice appear in | ||
25 : | all copies of this software and that you do not sell the software. | ||
26 : | |||
27 : | THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, | ||
28 : | EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||
29 : | WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||
30 : | |||
31 : | */ | ||
32 : | |||
33 : | #ifndef __PLY_H__ | ||
34 : | #define __PLY_H__ | ||
35 : | |||
36 : | eile | 750 | #include <eq/eq.h> |
37 : | |||
38 : | eile | 229 | #ifdef __cplusplus |
39 : | extern "C" { | ||
40 : | #endif | ||
41 : | |||
42 : | #include <stdio.h> | ||
43 : | #include <stddef.h> | ||
44 : | |||
45 : | #define PLY_ASCII 1 /* ascii PLY file */ | ||
46 : | #define PLY_BINARY_BE 2 /* binary PLY file, big endian */ | ||
47 : | #define PLY_BINARY_LE 3 /* binary PLY file, little endian */ | ||
48 : | |||
49 : | #define PLY_OKAY 0 /* ply routine worked okay */ | ||
50 : | #define PLY_ERROR -1 /* error in ply routine */ | ||
51 : | |||
52 : | /* scalar data types supported by PLY format */ | ||
53 : | |||
54 : | #define PLY_START_TYPE 0 | ||
55 : | #define PLY_CHAR 1 | ||
56 : | #define PLY_SHORT 2 | ||
57 : | #define PLY_INT 3 | ||
58 : | #define PLY_UCHAR 4 | ||
59 : | #define PLY_USHORT 5 | ||
60 : | #define PLY_UINT 6 | ||
61 : | #define PLY_FLOAT 7 | ||
62 : | #define PLY_DOUBLE 8 | ||
63 : | eile | 861 | #define PLY_FLOAT32 9 |
64 : | #define PLY_UINT8 10 | ||
65 : | #define PLY_INT32 11 | ||
66 : | #define PLY_END_TYPE 12 | ||
67 : | eile | 229 | |
68 : | #define PLY_SCALAR 0 | ||
69 : | #define PLY_LIST 1 | ||
70 : | |||
71 : | |||
72 : | typedef struct PlyProperty { /* description of a property */ | ||
73 : | |||
74 : | char *name; /* property name */ | ||
75 : | int external_type; /* file's data type */ | ||
76 : | int internal_type; /* program's data type */ | ||
77 : | int offset; /* offset bytes of prop in a struct */ | ||
78 : | |||
79 : | int is_list; /* 1 = list, 0 = scalar */ | ||
80 : | int count_external; /* file's count type */ | ||
81 : | int count_internal; /* program's count type */ | ||
82 : | int count_offset; /* offset byte for list count */ | ||
83 : | |||
84 : | } PlyProperty; | ||
85 : | |||
86 : | typedef struct PlyElement { /* description of an element */ | ||
87 : | char *name; /* element name */ | ||
88 : | int num; /* number of elements in this object */ | ||
89 : | int size; /* size of element (bytes) or -1 if variable */ | ||
90 : | int nprops; /* number of properties for this element */ | ||
91 : | PlyProperty **props; /* list of properties in the file */ | ||
92 : | char *store_prop; /* flags: property wanted by user? */ | ||
93 : | int other_offset; /* offset to un-asked-for props, or -1 if none*/ | ||
94 : | int other_size; /* size of other_props structure */ | ||
95 : | } PlyElement; | ||
96 : | |||
97 : | typedef struct PlyOtherProp { /* describes other properties in an element */ | ||
98 : | char *name; /* element name */ | ||
99 : | int size; /* size of other_props */ | ||
100 : | int nprops; /* number of properties in other_props */ | ||
101 : | PlyProperty **props; /* list of properties in other_props */ | ||
102 : | } PlyOtherProp; | ||
103 : | |||
104 : | typedef struct OtherData { /* for storing other_props for an other element */ | ||
105 : | void *other_props; | ||
106 : | } OtherData; | ||
107 : | |||
108 : | typedef struct OtherElem { /* data for one "other" element */ | ||
109 : | char *elem_name; /* names of other elements */ | ||
110 : | int elem_count; /* count of instances of each element */ | ||
111 : | OtherData **other_data; /* actual property data for the elements */ | ||
112 : | PlyOtherProp *other_props; /* description of the property data */ | ||
113 : | } OtherElem; | ||
114 : | |||
115 : | typedef struct PlyOtherElems { /* "other" elements, not interpreted by user */ | ||
116 : | int num_elems; /* number of other elements */ | ||
117 : | OtherElem *other_list; /* list of data for other elements */ | ||
118 : | } PlyOtherElems; | ||
119 : | |||
120 : | typedef struct PlyFile { /* description of PLY file */ | ||
121 : | FILE *fp; /* file pointer */ | ||
122 : | int file_type; /* ascii or binary */ | ||
123 : | float version; /* version number of file */ | ||
124 : | int nelems; /* number of elements of object */ | ||
125 : | PlyElement **elems; /* list of elements */ | ||
126 : | int num_comments; /* number of comments */ | ||
127 : | char **comments; /* list of comments */ | ||
128 : | int num_obj_info; /* number of items of object information */ | ||
129 : | char **obj_info; /* list of object info items */ | ||
130 : | PlyElement *which_elem; /* which element we're currently writing */ | ||
131 : | PlyOtherElems *other_elems; /* "other" elements from a PLY file */ | ||
132 : | } PlyFile; | ||
133 : | |||
134 : | /* memory allocation */ | ||
135 : | extern char *my_alloc(); | ||
136 : | #define myalloc(mem_size) my_alloc((mem_size), __LINE__, __FILE__) | ||
137 : | |||
138 : | |||
139 : | /*** delcaration of routines ***/ | ||
140 : | |||
141 : | extern PlyFile *ply_write(FILE *, int, char **, int); | ||
142 : | extern PlyFile *ply_open_for_writing(char *, int, char **, int, float *); | ||
143 : | extern void ply_describe_element(PlyFile *, char *, int, int, PlyProperty *); | ||
144 : | extern void ply_describe_property(PlyFile *, char *, PlyProperty *); | ||
145 : | extern void ply_element_count(PlyFile *, const char *, int); | ||
146 : | extern void ply_header_complete(PlyFile *); | ||
147 : | extern void ply_put_element_setup(PlyFile *, const char *); | ||
148 : | extern void ply_put_element(PlyFile *, void *); | ||
149 : | extern void ply_put_comment(PlyFile *, const char *); | ||
150 : | extern void ply_put_obj_info(PlyFile *, const char *); | ||
151 : | extern PlyFile *ply_read(FILE *, int *, char ***); | ||
152 : | extern PlyFile *ply_open_for_reading( char *, int *, char ***, int *, float *); | ||
153 : | extern PlyProperty **ply_get_element_description(PlyFile *, char *, int*, int*); | ||
154 : | extern void ply_get_element_setup( PlyFile *, char *, int, PlyProperty *); | ||
155 : | extern void ply_get_property(PlyFile *, char *, PlyProperty *); | ||
156 : | extern PlyOtherProp *ply_get_other_properties(PlyFile *, char *, int); | ||
157 : | extern void ply_get_element(PlyFile *, void *); | ||
158 : | extern char **ply_get_comments(PlyFile *, int *); | ||
159 : | extern char **ply_get_obj_info(PlyFile *, int *); | ||
160 : | extern void ply_close(PlyFile *); | ||
161 : | extern void ply_get_info(PlyFile *, float *, int *); | ||
162 : | extern PlyOtherElems *ply_get_other_element (PlyFile *, char *, int); | ||
163 : | extern void ply_describe_other_elements ( PlyFile *, PlyOtherElems *); | ||
164 : | extern void ply_put_other_elements (PlyFile *); | ||
165 : | extern void ply_free_other_elements (PlyOtherElems *); | ||
166 : | |||
167 : | extern int equal_strings(const char *, const char *); | ||
168 : | |||
169 : | |||
170 : | #ifdef __cplusplus | ||
171 : | } | ||
172 : | #endif | ||
173 : | #endif /* !__PLY_H__ */ | ||
174 : |
Back to Equalizer website | ViewVC Help |
Powered by ViewVC 1.0.3 |