00001 // 00002 // Copyright (c) 2000 by Tech Soft 3D, LLC. 00003 // The information contained herein is confidential and proprietary to 00004 // Tech Soft 3D, LLC., and considered a trade secret as defined under 00005 // civil and criminal statutes. Tech Soft 3D shall pursue its civil 00006 // and criminal remedies in the event of unauthorized use or misappropriation 00007 // of its trade secrets. Use of this information by anyone other than 00008 // authorized employees of Tech Soft 3D, LLC. is granted only under a 00009 // written non-disclosure agreement, expressly prescribing the scope and 00010 // manner of such use. 00011 // 00012 // $Id: 3b3f8504851dbcd5b387352689ef784c21153631 $ 00013 // 00014 #ifndef BBINFILETK_POLYHEDRON 00015 #define BBINFILETK_POLYHEDRON 00016 00017 00019 00025 class BBINFILETK_API TK_Polyhedron : public BBaseOpcodeHandler { 00026 public: 00027 00031 enum Exists { 00032 Vertex_None = 0x0000, 00033 Vertex_Normal = 0x0001, 00034 Vertex_Parameter = 0x0002, 00035 Vertex_Face_Color = 0x0004, 00036 Vertex_Edge_Color = 0x0008, 00037 Vertex_Marker_Color = 0x0010, 00038 Vertex_Face_Index = 0x0020, 00039 Vertex_Edge_Index = 0x0040, 00040 Vertex_Marker_Index = 0x0080, 00041 Vertex_Marker_Visibility= 0x0100, 00042 Vertex_Marker_Size = 0x0200, 00043 Vertex_Marker_Symbol = 0x0400, 00044 Vertex_Marker_RGBA = 0x0800, 00045 Vertex_Any_Color = 0x08FC 00046 }; 00047 00051 enum Face_Exists { 00052 Face_None = 0x0000, 00053 Face_Color = 0x0001, 00054 Face_Index = 0x0002, 00055 Face_Any_Color = 0x0003, 00056 Face_Normal = 0x0004, 00057 Face_Visibility = 0x0008, 00058 Face_Pattern = 0x0010 00059 }; 00060 00064 enum Edge_Exists { 00065 Edge_None = 0x0000, 00066 Edge_Color = 0x0001, 00067 Edge_Index = 0x0002, 00068 Edge_Any_Color = 0x0003, 00069 Edge_Normal = 0x0004, 00070 Edge_Visibility = 0x0008, 00071 Edge_Pattern = 0x0010, 00072 Edge_Weight = 0x0020, 00073 Fake_Edge = 0x8000 //for edges (if any) that do not exist on the write side, but will be introduced due to triangulation 00074 }; 00075 00079 enum Suboptions { 00080 TKSH_STANDARD = 0x00, 00081 TKSH_COMPRESSED_POINTS = 0x01, 00082 TKSH_COMPRESSED_FACES = 0x02, 00083 TKSH_TRISTRIPS = 0x04, 00084 TKSH_HAS_OPTIONALS = 0x08, 00085 TKSH_FIRSTPASS = 0x10, 00086 TKSH_BOUNDING_ONLY = 0x20, 00087 TKSH_CONNECTIVITY_COMPRESSION = 0x40, 00088 TKSH_EXPANDED = 0x80 00089 }; 00090 00095 enum Suboptions2 { 00096 TKSH2_COLLECTION = 0x0001, 00097 TKSH2_NULL = 0x0002, 00098 TKSH2_HAS_NEGATIVE_FACES = 0x0004, 00099 TKSH2_GLOBAL_QUANTIZATION = 0x0008 00100 }; 00101 00105 enum Opt_Opcode { 00106 OPT_TERMINATE = 0, 00107 OPT_ALL_NORMALS_COMPRESSED = 1, 00108 OPT_NORMALS_COMPRESSED = 2, 00109 OPT_ALL_PARAMETERS_COMPRESSED = 3, 00110 OPT_PARAMETERS_COMPRESSED = 4, 00111 OPT_ALL_VFCOLORS = 5, 00112 OPT_VERTEX_FCOLORS = 6, 00113 OPT_ALL_VECOLORS = 7, 00114 OPT_VERTEX_ECOLORS = 8, 00115 OPT_ALL_VMCOLORS = 9, 00116 OPT_VERTEX_MCOLORS = 10, 00117 OPT_ALL_VFINDICES = 11, 00118 OPT_VERTEX_FINDICES = 12, 00119 OPT_ALL_VEINDICES = 13, 00120 OPT_VERTEX_EINDICES = 14, 00121 OPT_ALL_VMINDICES = 15, 00122 OPT_VERTEX_MINDICES = 16, 00123 OPT_ALL_NORMALS = 17, 00124 OPT_NORMALS = 18, 00125 OPT_ALL_NORMALS_POLAR = 19, 00126 OPT_NORMALS_POLAR = 20, 00127 OPT_ALL_VMVISIBILITIES = 21, 00128 OPT_VERTEX_MARKER_VISIBILITIES = 22, 00129 OPT_ALL_VMSYMBOLS = 23, 00130 OPT_VERTEX_MARKER_SYMBOLS = 24, 00131 OPT_ALL_VMSIZES = 25, 00132 OPT_VERTEX_MARKER_SIZES = 26, 00133 OPT_PARAMETERS = 27, 00134 OPT_ALL_PARAMETERS = 28, 00135 OPT_ALL_VMRGBAS = 29, 00136 OPT_VERTEX_MRGBAS = 30, 00137 00138 OPT_ALL_FACE_COLORS = 33, 00139 OPT_FACE_COLORS = 34, 00140 OPT_ALL_FACE_INDICES = 35, 00141 OPT_FACE_INDICES = 36, 00142 OPT_ALL_FACE_NORMALS_POLAR = 37, 00143 OPT_FACE_NORMALS_POLAR = 38, 00144 OPT_ALL_FACE_VISIBILITIES = 39, 00145 OPT_FACE_VISIBILITIES = 40, 00146 OPT_ALL_FACE_PATTERNS = 41, 00147 OPT_FACE_PATTERNS = 42, 00148 00149 OPT_FACE_REGIONS = 51, 00150 00151 OPT_ALL_EDGE_COLORS = 71, 00152 OPT_EDGE_COLORS = 72, 00153 OPT_ALL_EDGE_INDICES = 73, 00154 OPT_EDGE_INDICES = 74, 00155 OPT_ALL_EDGE_NORMALS_POLAR = 75, 00156 OPT_EDGE_NORMALS_POLAR = 76, 00157 OPT_ALL_EDGE_VISIBILITIES = 77, 00158 OPT_EDGE_VISIBILITIES = 78, 00159 OPT_ALL_EDGE_PATTERNS = 79, 00160 OPT_EDGE_PATTERNS = 80, 00161 OPT_ALL_EDGE_WEIGHTS = 81, 00162 OPT_EDGE_WEIGHTS = 82, 00163 00164 OPT_RESERVED_SPATIAL = 90, 00165 OPT_ENTITY_ATTRIBUTES = 99, 00166 00167 00168 /* Note: "UNCOMPRESSED" versions added instead of "COMPRESSED" to preserve original compressed meaning of like opts. */ 00169 OPT_ALL_VFCOLORS_UNCOMPRESSED = 101, 00170 OPT_VERTEX_FCOLORS_UNCOMPRESSED = 102, 00171 OPT_ALL_VECOLORS_UNCOMPRESSED = 103, 00172 OPT_VERTEX_ECOLORS_UNCOMPRESSED = 104, 00173 OPT_ALL_VMCOLORS_UNCOMPRESSED = 105, 00174 OPT_VERTEX_MCOLORS_UNCOMPRESSED = 106, 00175 OPT_ALL_VMRGBAS_UNCOMPRESSED = 107, 00176 OPT_VERTEX_MRGBAS_UNCOMPRESSED = 108, 00177 OPT_ALL_VFINDICES_UNCOMPRESSED = 109, 00178 OPT_VERTEX_FINDICES_UNCOMPRESSED = 110, 00179 OPT_ALL_VEINDICES_UNCOMPRESSED = 111, 00180 OPT_VERTEX_EINDICES_UNCOMPRESSED = 112, 00181 OPT_ALL_VMINDICES_UNCOMPRESSED = 113, 00182 OPT_VERTEX_MINDICES_UNCOMPRESSED = 114, 00183 OPT_ALL_FACE_COLORS_UNCOMPRESSED = 115, 00184 OPT_FACE_COLORS_UNCOMPRESSED = 116, 00185 OPT_ALL_FACE_INDICES_UNCOMPRESSED = 117, 00186 OPT_FACE_INDICES_UNCOMPRESSED = 118, 00187 }; 00188 00189 00190 //see TK_Shell for GetFacesLength, GetFaces, GetLodLevel, SetFaces, SetLodLevel 00191 00193 float const *GetPoints() const { return mp_points; }; 00195 float *GetPoints() { return mp_points; }; 00196 00198 double const *GetDPoints() const { return mp_dpoints; }; 00200 double *GetDPoints() { return mp_dpoints; }; 00201 00202 00204 int GetPointCount() const { return mp_pointcount; }; 00206 unsigned int const *GetExists() const { return mp_exists; }; 00208 unsigned int *GetExists() { return mp_exists; }; 00210 unsigned int const *GetFaceExists() const { return mp_face_exists; }; 00212 unsigned int *GetFaceExists() { return mp_face_exists; }; 00214 ID_Key GetKey() const { return mp_key; }; 00216 unsigned char GetSubop() const { return mp_subop; }; 00218 unsigned short GetSubop2() const { return mp_subop2; }; 00220 const float *GetBounding() const { return mp_bbox; }; 00222 float const *GetVertexNormals() const { return mp_normals; }; 00224 float *GetVertexNormals() { return mp_normals; }; 00226 float const *GetVertexParameters() const { return mp_params; }; 00228 float *GetVertexParameters() { return mp_params; }; 00230 float const *GetVertexFaceColors() const { return mp_vfcolors; }; 00232 float *GetVertexFaceColors() { return mp_vfcolors; }; 00234 float const *GetVertexEdgeColors() const { return mp_vecolors; }; 00236 float *GetVertexEdgeColors() { return mp_vecolors; }; 00238 float const *GetVertexMarkerColors() const { return mp_vmcolors; }; 00240 float *GetVertexMarkerColors() { return mp_vmcolors; }; 00242 float const *GetVertexMarkerRGBAs() const { return mp_vmcolors; }; 00244 float *GetVertexMarkerRGBAs() { return mp_vmcolors; }; 00247 float const *GetVertexColors() const { 00248 if (mp_vmcolors != 0) return mp_vmcolors; 00249 else if (mp_vfcolors != 0) return mp_vfcolors; 00250 else if (mp_vecolors != 0) return mp_vecolors; 00251 else return 0; 00252 }; 00255 float *GetVertexColors() { 00256 if (mp_vmcolors != 0) return mp_vmcolors; 00257 else if (mp_vfcolors != 0) return mp_vfcolors; 00258 else if (mp_vecolors != 0) return mp_vecolors; 00259 else return 0; 00260 }; 00262 float const *GetVertexFaceIndices() const { return mp_vfindices; }; 00264 float *GetVertexFaceIndices() { return mp_vfindices; }; 00266 float const *GetVertexEdgeIndices() const { return mp_veindices; }; 00268 float *GetVertexEdgeIndices() { return mp_veindices; }; 00270 float const *GetVertexMarkerIndices() const { return mp_vmindices; }; 00272 float *GetVertexMarkerIndices() { return mp_vmindices; }; 00275 float const *GetVertexIndices() const { 00276 if (mp_vmindices != 0) return mp_vmindices; 00277 else if (mp_vfindices != 0) return mp_vfindices; 00278 else if (mp_veindices != 0) return mp_veindices; 00279 else return 0; 00280 }; 00283 float *GetVertexIndices() { 00284 if (mp_vmindices != 0) return mp_vmindices; 00285 else if (mp_vfindices != 0) return mp_vfindices; 00286 else if (mp_veindices != 0) return mp_veindices; 00287 else return 0; 00288 }; 00290 float const *GetFaceColors() const { return mp_fcolors; }; 00292 float *GetFaceColors() { return mp_fcolors; }; 00294 float const *GetFaceIndices() const { return mp_findices; }; 00296 float *GetFaceIndices() { return mp_findices; }; 00298 int const * GetFaceRegions() const { return mp_fregions; }; 00300 int * GetFaceRegions() { return mp_fregions; }; 00301 00303 int GetPriority () {return mp_priority;} 00305 void SetPriority (int priority) { mp_priority = priority; } 00306 00307 00308 00310 TK_Status SetKey (BStreamFileToolkit &tk, ID_Key key) { set_last_key (tk, key); mp_key = key; return TK_Normal; }; 00313 TK_Status SetSubop (unsigned char subop) { mp_subop = subop; return TK_Normal; }; 00316 TK_Status SetSubop2 (unsigned short subop2) { mp_subop2 = subop2; return TK_Normal; }; 00321 TK_Status InitSubop (BStreamFileToolkit &tk, int lodlevel, bool is_firstpass); 00324 TK_Status SetBounding (float const *bbox) { mp_bbox[0] = bbox[0]; mp_bbox[1] = bbox[1]; mp_bbox[2] = bbox[2]; mp_bbox[3] = bbox[3]; mp_bbox[4] = bbox[4]; mp_bbox[5] = bbox[5]; return TK_Normal; }; 00325 00330 TK_Status SetPoints (int count, float const *points=0); 00335 TK_Status SetDPoints (int count, double const *points=0); 00336 00341 TK_Status SetVertexNormals (float const *normals=0); 00350 TK_Status SetVertexParameters (float const *parameters=0, int width=0); 00358 TK_Status SetVertexFaceColors (float const *colors=0); 00366 TK_Status SetVertexEdgeColors (float const *colors=0); 00374 TK_Status SetVertexMarkerColors (float const *colors=0); 00382 TK_Status SetVertexMarkerRGBAs (float const *colors=0); 00392 TK_Status SetVertexColors (float const *colors=0); 00401 TK_Status SetVertexFaceIndices (float const *indices=0); 00410 TK_Status SetVertexEdgeIndices (float const *indices=0); 00419 TK_Status SetVertexMarkerIndices (float const *indices=0); 00429 TK_Status SetVertexIndices (float const *indices=0); 00435 TK_Status SetVertexMarkerVisibilities (char const *visibilities=0); 00442 TK_Status SetVertexMarkerSizes (float const *sizes=0); 00449 TK_Status SetVertexMarkerSymbols (char const *symbols=0); 00453 TK_Status SetVertexMarkerSymbolStrings (); 00459 TK_Status SetFaceColors (float const *colors=0); 00465 TK_Status SetFaceNormals (float const *normals=0); 00471 TK_Status SetFaceVisibilities (char const *visibilities=0); 00478 TK_Status SetFacePatterns (char const *patterns=0); 00486 TK_Status SetFaceIndices (float const *indices=0); 00489 TK_Status SetFaceRegions (int const * regions=0); 00498 TK_Status SetEdgeColors (float const *colors=0); 00505 TK_Status SetEdgeIndices (float const *indices=0); 00511 TK_Status SetEdgeNormals (float const *normals=0); 00518 TK_Status SetEdgeVisibilities (char const *visibilities=0); 00524 TK_Status SetEdgePatterns (char const *patterns=0); 00528 TK_Status SetEdgePatternStrings (); 00534 TK_Status SetEdgeWeights (float const *weights=0); 00535 00540 TK_Status SetExists (unsigned int const *vals=0); 00545 TK_Status SetFaceExists (unsigned int const *vals=0); 00552 TK_Status SetEdgeExists (unsigned int const *vals=0); 00553 00559 TK_Status AppendObject (BStreamFileToolkit & tk, BBaseOpcodeHandler *obj); 00562 BBaseOpcodeHandler *PopObject(); 00563 00565 bool HasOptionals() { return 00566 HasVertexAttributes() || 00567 HasFaceAttributes() || 00568 HasEdgeAttributes() || 00569 (!(mp_subop2 & 0x01) && mp_num_collection_parts > 0);// 0x01 matches TKSH2_COLLECTION 00570 }; 00571 00572 bool HasOptionalsCommunicator() { return 00573 HasVertexAttributes() || 00574 HasFaceAttributesCommunicator() || 00575 HasEdgeAttributes() || 00576 (!(mp_subop2 & 0x01) && mp_num_collection_parts > 0);// 0x01 matches TKSH2_COLLECTION 00577 }; 00578 00580 bool HasVertexNormals() const { return mp_normals != 0; }; 00582 bool HasVertexParameters() const { return mp_params != 0; }; 00584 bool HasVertexFaceColors() const { return mp_vfcolors != 0; }; 00586 bool HasVertexEdgeColors() const { return mp_vecolors != 0; }; 00588 bool HasVertexMarkerColors() const { return mp_vmcolors != 0; }; 00590 bool HasVertexMarkerRGBAs() const { return mp_vmrgbas != 0; }; 00592 bool HasVertexColors() const { return 00593 mp_vfcolors != 0 || 00594 mp_vecolors != 0 || 00595 mp_vmcolors != 0 || 00596 mp_vmrgbas != 0; 00597 }; 00599 inline bool HasVertexFaceIndices() const { return mp_vfindices != 0; }; 00601 inline bool HasVertexEdgeIndices() const { return mp_veindices != 0; }; 00603 inline bool HasVertexMarkerIndices() const { return mp_vmindices != 0; }; 00605 inline bool HasVertexIndices() const { return 00606 mp_vfindices != 0 || 00607 mp_veindices != 0 || 00608 mp_vmindices != 0; 00609 }; 00611 inline bool HasVertexMarkerVisibilities() const { return mp_vmvisibilities != 0; }; 00613 inline bool HasVertexMarkerSymbols() const { return mp_vmsymbols != 0; }; 00615 inline bool HasVertexMarkerSizes() const { return mp_vmsizes != 0; }; 00619 inline bool HasVertexAttributes() const { return 00620 HasVertexColors() || 00621 HasVertexIndices() || 00622 HasVertexNormals() || 00623 HasVertexParameters() || 00624 HasVertexMarkerVisibilities() || 00625 HasVertexMarkerSymbols() || 00626 HasVertexMarkerSizes(); 00627 }; 00629 inline bool HasFaceColors() const { return mp_fcolors != 0; }; 00631 inline bool HasFaceIndices() const { return mp_findices != 0; }; 00633 inline bool HasFaceNormals() const { return mp_fnormals != 0; }; 00635 inline bool HasFaceVisibilities() const { return mp_fvisibilities != 0; }; 00637 inline bool HasFacePatterns() const { return mp_fpatterns != 0; }; 00639 inline bool HasFaceRegions() const { return mp_fregions != 0; }; 00642 inline bool HasFaceAttributes() const { return 00643 HasFaceColors() || 00644 HasFaceIndices() || 00645 HasFaceNormals() || 00646 HasFaceVisibilities() || 00647 HasFacePatterns() || 00648 HasFaceRegions(); 00649 }; 00650 00651 inline bool HasFaceAttributesCommunicator() const { return 00652 HasFaceRegions(); 00653 }; 00654 00655 00657 inline bool HasEdgeColors() const { return mp_ecolors != 0; }; 00659 inline bool HasEdgeIndices() const { return mp_eindices != 0; }; 00661 inline bool HasEdgeNormals() const { return mp_enormals != 0; }; 00663 inline bool HasEdgeVisibilities() const { return mp_evisibilities != 0; }; 00665 inline bool HasEdgePatterns() const { return mp_epatterns != 0; }; 00667 inline bool HasEdgeWeights() const { return mp_eweights != 0; }; 00669 inline bool HasEdgeAttributes() const { return 00670 HasEdgeColors() || 00671 HasEdgeIndices() || 00672 HasEdgeNormals() || 00673 HasEdgeVisibilities() || 00674 HasEdgePatterns() || 00675 HasEdgeWeights(); 00676 }; 00677 00678 protected: 00679 //data members prefixed with "mp_", not "m_", to avoid potential naming conflicts with TK_Shell and/or TK_Mesh 00680 00681 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00682 int mp_priority; 00683 float * mp_points; 00684 double * mp_dpoints; 00685 float * mp_normals; 00686 float * mp_params; 00687 float * mp_vfcolors; 00688 float * mp_vecolors; 00689 float * mp_vmcolors; 00690 float * mp_vmrgbas; 00691 float * mp_vfindices; 00692 float * mp_veindices; 00693 float * mp_vmindices; 00694 char * mp_vmvisibilities; 00695 float * mp_vmsizes; 00696 unsigned char * mp_vmsymbols; 00697 char ** mp_vmsymbolstrings; 00698 float * mp_fcolors; 00699 float * mp_findices; 00700 int * mp_fregions; 00701 float * mp_fnormals; 00702 char * mp_fvisibilities; 00703 char * mp_fpatterns; 00704 float * mp_ecolors; 00705 float * mp_eindices; 00706 float * mp_enormals; 00707 char * mp_evisibilities; 00708 unsigned char * mp_epatterns; 00709 char ** mp_epatternstrings; 00710 float * mp_eweights; 00712 unsigned int * mp_exists; 00713 unsigned int * mp_face_exists; 00714 unsigned int * mp_edge_exists; 00716 int mp_pointcount; 00717 int mp_normalcount; 00718 int mp_paramcount; 00719 char mp_paramwidth; 00720 int mp_vfcolorcount; 00721 int mp_vecolorcount; 00722 int mp_vmcolorcount; 00723 int mp_vmrgbacount; 00724 int mp_vfindexcount; 00725 int mp_veindexcount; 00726 int mp_vmindexcount; 00727 int mp_vmvisibilitycount; 00728 int mp_vmsizecount; 00729 int mp_vmsymbolcount; 00730 int mp_facecount; 00731 int mp_fcolorcount; 00732 int mp_findexcount; 00733 int mp_fnormalcount; 00734 int mp_fpatterncount; 00735 int mp_fvisibilitycount; 00736 int mp_edgecount; 00737 int mp_ecolorcount; 00738 int mp_eindexcount; 00739 int mp_enormalcount; 00740 int mp_epatterncount; 00741 int mp_eweightcount; 00742 int mp_evisibilitycount; 00743 int * mp_edge_enumeration; 00745 int mp_stage; 00746 int mp_substage; 00747 int mp_progress; 00748 int mp_subprogress; 00749 unsigned char mp_optopcode; 00752 unsigned short mp_present; 00753 unsigned short mp_face_present; 00754 unsigned short mp_edge_present; 00755 unsigned char mp_bits_per_sample; 00756 float mp_bbox[256]; 00757 ID_Key mp_key; 00758 TK_Instance * mp_instance; 00759 float mp_matrix[16]; 00760 unsigned char * mp_workspace; 00761 int mp_workspace_allocated; 00762 int mp_workspace_used; 00763 unsigned char mp_compression_scheme; 00764 unsigned char mp_subop; 00765 unsigned short mp_subop2; 00766 int mp_num_collection_parts; 00767 BBaseOpcodeHandler **mp_collection_parts; 00774 virtual TK_Status EnumerateEdges() { return TK_Error; }; 00779 virtual TK_Status LabelFakeEdges() { return TK_Normal; }; 00784 virtual bool AllowInstancing(BStreamFileToolkit & tk) const; 00785 00786 TK_Polyhedron(unsigned char op); 00787 ~TK_Polyhedron(); 00788 00789 TK_Status Read (BStreamFileToolkit & tk); 00790 TK_Status Write (BStreamFileToolkit & tk); 00791 void Reset (); 00792 00793 virtual TK_Status read_trivial_points (BStreamFileToolkit & tk); 00794 virtual TK_Status write_trivial_points (BStreamFileToolkit & tk); 00796 TK_Status read_vertex_normals (BStreamFileToolkit & tk); 00797 TK_Status read_vertex_normals_compressed (BStreamFileToolkit & tk); 00798 TK_Status read_vertex_normals_all (BStreamFileToolkit & tk); 00799 TK_Status read_vertex_normals_compressed_all (BStreamFileToolkit & tk); 00800 TK_Status read_vertex_parameters (BStreamFileToolkit & tk); 00801 TK_Status read_vertex_parameters_all (BStreamFileToolkit & tk); 00802 TK_Status read_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op); 00803 TK_Status read_vertex_colors (BStreamFileToolkit & tk, unsigned char op); 00804 TK_Status read_vertex_colors_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00805 TK_Status read_vertex_colors_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00806 TK_Status read_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op); 00807 TK_Status read_vertex_indices (BStreamFileToolkit & tk, unsigned char op); 00808 TK_Status read_vertex_indices_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00809 TK_Status read_vertex_indices_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00810 TK_Status read_vertex_marker_visibilities (BStreamFileToolkit & tk); 00811 TK_Status read_vertex_marker_symbols (BStreamFileToolkit & tk); 00812 TK_Status read_vertex_marker_sizes (BStreamFileToolkit & tk); 00813 TK_Status read_face_colors (BStreamFileToolkit & tk); 00814 TK_Status read_face_colors_all (BStreamFileToolkit & tk); 00815 TK_Status read_face_colors_uncompressed (BStreamFileToolkit & tk); 00816 TK_Status read_face_colors_uncompressed_all (BStreamFileToolkit & tk); 00817 TK_Status read_face_indices (BStreamFileToolkit & tk); 00818 TK_Status read_face_indices_all (BStreamFileToolkit & tk); 00819 TK_Status read_face_indices_uncompressed (BStreamFileToolkit & tk); 00820 TK_Status read_face_indices_uncompressed_all (BStreamFileToolkit & tk); 00821 TK_Status read_face_regions (BStreamFileToolkit & tk); 00822 TK_Status read_face_normals (BStreamFileToolkit & tk); 00823 TK_Status read_face_visibilities (BStreamFileToolkit & tk); 00824 TK_Status read_face_patterns (BStreamFileToolkit & tk); 00825 TK_Status read_edge_colors (BStreamFileToolkit & tk); 00826 TK_Status read_edge_indices (BStreamFileToolkit & tk); 00827 TK_Status read_edge_normals (BStreamFileToolkit & tk); 00828 TK_Status read_edge_visibilities (BStreamFileToolkit & tk); 00829 TK_Status read_edge_patterns (BStreamFileToolkit & tk); 00830 TK_Status read_edge_weights (BStreamFileToolkit & tk); 00831 virtual TK_Status read_collection (BStreamFileToolkit & tk); 00833 TK_Status write_vertex_normals (BStreamFileToolkit & tk); 00834 TK_Status write_vertex_normals_compressed (BStreamFileToolkit & tk); 00835 TK_Status write_vertex_normals_all (BStreamFileToolkit & tk); 00836 TK_Status write_vertex_normals_compressed_all (BStreamFileToolkit & tk); 00837 TK_Status write_vertex_parameters (BStreamFileToolkit & tk); 00838 TK_Status write_vertex_parameters_all (BStreamFileToolkit & tk); 00839 TK_Status write_vertex_colors (BStreamFileToolkit & tk, unsigned char op); 00840 TK_Status write_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op); 00841 TK_Status write_vertex_colors_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00842 TK_Status write_vertex_colors_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00843 TK_Status write_vertex_indices (BStreamFileToolkit & tk, unsigned char op); 00844 TK_Status write_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op); 00845 TK_Status write_vertex_indices_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00846 TK_Status write_vertex_indices_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00847 TK_Status write_vertex_marker_visibilities (BStreamFileToolkit & tk); 00848 TK_Status write_vertex_marker_symbols (BStreamFileToolkit & tk); 00849 TK_Status write_vertex_marker_sizes (BStreamFileToolkit & tk); 00850 TK_Status write_face_colors (BStreamFileToolkit & tk); 00851 TK_Status write_face_colors_all (BStreamFileToolkit & tk); 00852 TK_Status write_face_colors_uncompressed (BStreamFileToolkit & tk); 00853 TK_Status write_face_colors_uncompressed_all (BStreamFileToolkit & tk); 00854 TK_Status write_face_indices (BStreamFileToolkit & tk); 00855 TK_Status write_face_indices_all (BStreamFileToolkit & tk); 00856 TK_Status write_face_indices_uncompressed (BStreamFileToolkit & tk); 00857 TK_Status write_face_indices_uncompressed_all (BStreamFileToolkit & tk); 00858 TK_Status write_face_regions (BStreamFileToolkit & tk); 00859 TK_Status write_face_normals (BStreamFileToolkit & tk); 00860 TK_Status write_face_visibilities (BStreamFileToolkit & tk); 00861 TK_Status write_face_patterns (BStreamFileToolkit & tk); 00862 TK_Status write_edge_colors (BStreamFileToolkit & tk); 00863 TK_Status write_edge_indices (BStreamFileToolkit & tk); 00864 TK_Status write_edge_normals (BStreamFileToolkit & tk); 00865 TK_Status write_edge_visibilities (BStreamFileToolkit & tk); 00866 TK_Status write_edge_patterns (BStreamFileToolkit & tk); 00867 TK_Status write_edge_weights (BStreamFileToolkit & tk); 00868 virtual TK_Status write_collection (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0); 00871 void normals_cartesian_to_polar (unsigned int *exists, int flag, int count, const float *in, float *out); 00873 void normals_polar_to_cartesian (unsigned int *exists, int flag, int count, const float *in, float *out); 00874 00878 TK_Status write_vertex_normals_main (BStreamFileToolkit & tk); 00883 TK_Status write_vertex_parameters_main (BStreamFileToolkit & tk); 00889 TK_Status write_vertex_colors_main (BStreamFileToolkit & tk, unsigned char base_op); 00895 TK_Status write_vertex_indices_main (BStreamFileToolkit & tk, unsigned char base_op); 00900 TK_Status write_face_colors_main (BStreamFileToolkit & tk); 00905 TK_Status write_face_indices_main (BStreamFileToolkit & tk); 00906 00907 00908 TK_Status ReadAscii (BStreamFileToolkit & tk); 00909 TK_Status WriteAscii (BStreamFileToolkit & tk); 00910 00911 virtual TK_Status read_trivial_points_ascii (BStreamFileToolkit & tk); 00912 virtual TK_Status write_trivial_points_ascii (BStreamFileToolkit & tk); 00914 TK_Status read_vertex_normals_ascii (BStreamFileToolkit & tk); 00916 TK_Status read_vertex_normals_compressed_ascii (BStreamFileToolkit & tk); 00917 TK_Status read_vertex_normals_all_ascii (BStreamFileToolkit & tk); 00918 TK_Status read_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk); 00919 TK_Status read_vertex_parameters_ascii (BStreamFileToolkit & tk); 00920 TK_Status read_vertex_parameters_all_ascii (BStreamFileToolkit & tk); 00921 TK_Status read_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00922 TK_Status read_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op); 00923 TK_Status read_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00924 TK_Status read_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op); 00925 TK_Status read_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk); 00926 TK_Status read_vertex_marker_symbols_ascii (BStreamFileToolkit & tk); 00927 TK_Status read_vertex_marker_sizes_ascii (BStreamFileToolkit & tk); 00928 TK_Status read_face_colors_ascii (BStreamFileToolkit & tk); 00929 TK_Status read_face_colors_all_ascii (BStreamFileToolkit & tk); 00930 TK_Status read_face_indices_ascii (BStreamFileToolkit & tk); 00931 TK_Status read_face_indices_all_ascii (BStreamFileToolkit & tk); 00932 TK_Status read_face_regions_ascii (BStreamFileToolkit & tk); 00933 TK_Status read_face_normals_ascii (BStreamFileToolkit & tk); 00934 TK_Status read_face_visibilities_ascii (BStreamFileToolkit & tk); 00935 TK_Status read_face_patterns_ascii (BStreamFileToolkit & tk); 00936 TK_Status read_edge_colors_ascii (BStreamFileToolkit & tk); 00937 TK_Status read_edge_indices_ascii (BStreamFileToolkit & tk); 00938 TK_Status read_edge_normals_ascii (BStreamFileToolkit & tk); 00939 TK_Status read_edge_visibilities_ascii (BStreamFileToolkit & tk); 00940 TK_Status read_edge_patterns_ascii (BStreamFileToolkit & tk); 00941 TK_Status read_edge_weights_ascii (BStreamFileToolkit & tk); 00943 virtual TK_Status read_collection_ascii (BStreamFileToolkit & tk); 00945 TK_Status write_vertex_normals_ascii (BStreamFileToolkit & tk); 00946 TK_Status write_vertex_normals_compressed_ascii (BStreamFileToolkit & tk); 00947 TK_Status write_vertex_normals_all_ascii (BStreamFileToolkit & tk); 00948 TK_Status write_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk); 00949 TK_Status write_vertex_parameters_ascii (BStreamFileToolkit & tk); 00950 TK_Status write_vertex_parameters_all_ascii (BStreamFileToolkit & tk); 00951 TK_Status write_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op); 00952 TK_Status write_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00953 TK_Status write_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op); 00954 TK_Status write_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00955 TK_Status write_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk); 00956 TK_Status write_vertex_marker_symbols_ascii (BStreamFileToolkit & tk); 00957 virtual TK_Status write_vertex_marker_sizes_ascii (BStreamFileToolkit & tk); 00958 TK_Status write_face_colors_ascii (BStreamFileToolkit & tk); 00959 TK_Status write_face_colors_all_ascii (BStreamFileToolkit & tk); 00960 TK_Status write_face_indices_ascii (BStreamFileToolkit & tk); 00961 TK_Status write_face_indices_all_ascii (BStreamFileToolkit & tk); 00962 TK_Status write_face_regions_ascii (BStreamFileToolkit & tk); 00963 TK_Status write_face_normals_ascii (BStreamFileToolkit & tk); 00964 TK_Status write_face_visibilities_ascii (BStreamFileToolkit & tk); 00965 TK_Status write_face_patterns_ascii (BStreamFileToolkit & tk); 00966 TK_Status write_edge_colors_ascii (BStreamFileToolkit & tk); 00967 TK_Status write_edge_indices_ascii (BStreamFileToolkit & tk); 00968 TK_Status write_edge_normals_ascii (BStreamFileToolkit & tk); 00969 TK_Status write_edge_visibilities_ascii (BStreamFileToolkit & tk); 00970 TK_Status write_edge_patterns_ascii (BStreamFileToolkit & tk); 00971 TK_Status write_edge_weights_ascii (BStreamFileToolkit & tk); 00973 virtual TK_Status write_collection_ascii (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0); 00979 TK_Status write_vertex_normals_main_ascii (BStreamFileToolkit & tk); 00984 TK_Status write_vertex_parameters_main_ascii (BStreamFileToolkit & tk); 00990 TK_Status write_vertex_colors_main_ascii (BStreamFileToolkit & tk, unsigned char base_op); 00996 TK_Status write_vertex_indices_main_ascii (BStreamFileToolkit & tk, unsigned char base_op); 01001 TK_Status write_face_colors_main_ascii (BStreamFileToolkit & tk); 01006 TK_Status write_face_indices_main_ascii (BStreamFileToolkit & tk); 01007 01008 01009 virtual TK_Status mangle_points (BStreamFileToolkit & tk, int pointmap_count, int *pointmap); 01010 virtual TK_Status mangle_point_attributes (BStreamFileToolkit & tk, int pointmap_count, int *pointmap); 01011 virtual TK_Status mangle_face_attributes (BStreamFileToolkit & tk, int facemap_count, int *facemap); 01012 bool has_face_attributes() const; 01022 TK_Status repulse_compress_normals (BStreamFileToolkit & tk, int bits); 01028 TK_Status repulse_decompress_normals (BStreamFileToolkit & tk, int bits); 01029 01031 void set_points (int count, float const * points = 0) { SetPoints (count, points); }; 01033 void set_normals (float const * normals = 0) { SetVertexNormals (normals); }; 01035 void set_parameters (float const * params = 0) { SetVertexParameters (params); }; 01037 void set_vfcolors (float const * colors = 0) { SetVertexFaceColors (colors); }; 01039 void set_vecolors (float const * colors = 0) { SetVertexEdgeColors (colors); }; 01041 void set_vmcolors (float const * colors = 0) { SetVertexMarkerColors (colors); }; 01043 void set_vfindices (float const * indices = 0) { SetVertexFaceIndices (indices); }; 01045 void set_veindices (float const * indices = 0) { SetVertexEdgeIndices (indices); }; 01047 void set_vmindices (float const * indices = 0) { SetVertexMarkerIndices (indices); }; 01049 void set_fcolors (float const * colors = 0) { SetFaceColors (colors); }; 01051 void set_findices (float const * indices = 0) { SetFaceIndices (indices); }; 01053 void set_exists (unsigned int const * exists = 0); 01055 void set_face_exists (unsigned int const * exists = 0); 01057 void set_facemap (int count, int const * facemap = 0); 01058 01059 01060 01061 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 01062 01063 }; // end declaration of class TK_Polyhedron 01064 01065 01067 01073 class BBINFILETK_API TK_Mesh : public TK_Polyhedron { 01074 protected: 01075 int m_rows; 01076 int m_columns; 01079 TK_Status EnumerateEdges(); 01080 01081 public: 01082 TK_Mesh() 01083 : TK_Polyhedron (TKE_Mesh), m_rows(0), m_columns(0) {} 01084 ~TK_Mesh(); 01085 01086 01087 TK_Status ReadAscii (BStreamFileToolkit & tk); 01088 TK_Status WriteAscii (BStreamFileToolkit & tk); 01089 01090 TK_Status Read (BStreamFileToolkit & tk); 01091 TK_Status Write (BStreamFileToolkit & tk); 01092 void Reset (); 01093 01095 void SetRows (const int rows) { m_rows = rows; } 01096 01098 void SetColumns (const int columns) { m_columns = columns; } 01099 01100 }; // end declaration of class TK_Mesh 01101 01102 #endif //BBINFILETK_POLYHEDRON 01103