00001 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc. 00002 // 00003 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., 00004 // and considered a trade secret as defined under civil and criminal statutes. 00005 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of 00006 // unauthorized use or misappropriation of its trade secrets. Use of this information 00007 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under 00008 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use. 00009 00010 // $Id: 8121c417e3faff00dd8becdb809858adea3cc1ca $ 00011 #ifndef BBINFILETK_POLYHEDRON 00012 #define BBINFILETK_POLYHEDRON 00013 00014 00016 00022 class BBINFILETK_API TK_Polyhedron : public BBaseOpcodeHandler { 00023 public: 00024 00028 enum Exists { 00029 Vertex_None = 0x0000, 00030 Vertex_Normal = 0x0001, 00031 Vertex_Parameter = 0x0002, 00032 Vertex_Face_Color = 0x0004, 00033 Vertex_Edge_Color = 0x0008, 00034 Vertex_Marker_Color = 0x0010, 00035 Vertex_Face_Index = 0x0020, 00036 Vertex_Edge_Index = 0x0040, 00037 Vertex_Marker_Index = 0x0080, 00038 Vertex_Marker_Visibility= 0x0100, 00039 Vertex_Marker_Size = 0x0200, 00040 Vertex_Marker_Symbol = 0x0400, 00041 Vertex_Marker_RGBA = 0x0800, 00042 Vertex_Any_Color = 0x08FC 00043 }; 00044 00048 enum Face_Exists { 00049 Face_None = 0x0000, 00050 Face_Color = 0x0001, 00051 Face_Index = 0x0002, 00052 Face_Any_Color = 0x0003, 00053 Face_Normal = 0x0004, 00054 Face_Visibility = 0x0008, 00055 Face_Pattern = 0x0010 00056 }; 00057 00061 enum Edge_Exists { 00062 Edge_None = 0x0000, 00063 Edge_Color = 0x0001, 00064 Edge_Index = 0x0002, 00065 Edge_Any_Color = 0x0003, 00066 Edge_Normal = 0x0004, 00067 Edge_Visibility = 0x0008, 00068 Edge_Pattern = 0x0010, 00069 Edge_Weight = 0x0020, 00070 Fake_Edge = 0x8000 //for edges (if any) that do not exist on the write side, but will be introduced due to triangulation 00071 }; 00072 00076 enum Suboptions { 00077 TKSH_STANDARD = 0x00, 00078 TKSH_COMPRESSED_POINTS = 0x01, 00079 TKSH_COMPRESSED_FACES = 0x02, 00080 TKSH_TRISTRIPS = 0x04, 00081 TKSH_HAS_OPTIONALS = 0x08, 00082 TKSH_FIRSTPASS = 0x10, 00083 TKSH_BOUNDING_ONLY = 0x20, 00084 TKSH_CONNECTIVITY_COMPRESSION = 0x40, 00085 TKSH_EXPANDED = 0x80 00086 }; 00087 00092 enum Suboptions2 { 00093 TKSH2_COLLECTION = 0x0001, 00094 TKSH2_NULL = 0x0002, 00095 TKSH2_HAS_NEGATIVE_FACES = 0x0004, 00096 TKSH2_GLOBAL_QUANTIZATION = 0x0008 00097 }; 00098 00102 enum Opt_Opcode { 00103 OPT_TERMINATE = 0, 00104 OPT_ALL_NORMALS_COMPRESSED = 1, 00105 OPT_NORMALS_COMPRESSED = 2, 00106 OPT_ALL_PARAMETERS_COMPRESSED = 3, 00107 OPT_PARAMETERS_COMPRESSED = 4, 00108 OPT_ALL_VFCOLORS = 5, 00109 OPT_VERTEX_FCOLORS = 6, 00110 OPT_ALL_VECOLORS = 7, 00111 OPT_VERTEX_ECOLORS = 8, 00112 OPT_ALL_VMCOLORS = 9, 00113 OPT_VERTEX_MCOLORS = 10, 00114 OPT_ALL_VFINDICES = 11, 00115 OPT_VERTEX_FINDICES = 12, 00116 OPT_ALL_VEINDICES = 13, 00117 OPT_VERTEX_EINDICES = 14, 00118 OPT_ALL_VMINDICES = 15, 00119 OPT_VERTEX_MINDICES = 16, 00120 OPT_ALL_NORMALS = 17, 00121 OPT_NORMALS = 18, 00122 OPT_ALL_NORMALS_POLAR = 19, 00123 OPT_NORMALS_POLAR = 20, 00124 OPT_ALL_VMVISIBILITIES = 21, 00125 OPT_VERTEX_MARKER_VISIBILITIES = 22, 00126 OPT_ALL_VMSYMBOLS = 23, 00127 OPT_VERTEX_MARKER_SYMBOLS = 24, 00128 OPT_ALL_VMSIZES = 25, 00129 OPT_VERTEX_MARKER_SIZES = 26, 00130 OPT_PARAMETERS = 27, 00131 OPT_ALL_PARAMETERS = 28, 00132 OPT_ALL_VMRGBAS = 29, 00133 OPT_VERTEX_MRGBAS = 30, 00134 00135 OPT_ALL_FACE_COLORS = 33, 00136 OPT_FACE_COLORS = 34, 00137 OPT_ALL_FACE_INDICES = 35, 00138 OPT_FACE_INDICES = 36, 00139 OPT_ALL_FACE_NORMALS_POLAR = 37, 00140 OPT_FACE_NORMALS_POLAR = 38, 00141 OPT_ALL_FACE_VISIBILITIES = 39, 00142 OPT_FACE_VISIBILITIES = 40, 00143 OPT_ALL_FACE_PATTERNS = 41, 00144 OPT_FACE_PATTERNS = 42, 00145 00146 OPT_FACE_REGIONS = 51, 00147 00148 OPT_ALL_EDGE_COLORS = 71, 00149 OPT_EDGE_COLORS = 72, 00150 OPT_ALL_EDGE_INDICES = 73, 00151 OPT_EDGE_INDICES = 74, 00152 OPT_ALL_EDGE_NORMALS_POLAR = 75, 00153 OPT_EDGE_NORMALS_POLAR = 76, 00154 OPT_ALL_EDGE_VISIBILITIES = 77, 00155 OPT_EDGE_VISIBILITIES = 78, 00156 OPT_ALL_EDGE_PATTERNS = 79, 00157 OPT_EDGE_PATTERNS = 80, 00158 OPT_ALL_EDGE_WEIGHTS = 81, 00159 OPT_EDGE_WEIGHTS = 82, 00160 00161 OPT_RESERVED_SPATIAL = 90, 00162 OPT_ENTITY_ATTRIBUTES = 99, 00163 00164 00165 /* Note: "UNCOMPRESSED" versions added instead of "COMPRESSED" to preserve original compressed meaning of like opts. */ 00166 OPT_ALL_VFCOLORS_UNCOMPRESSED = 101, 00167 OPT_VERTEX_FCOLORS_UNCOMPRESSED = 102, 00168 OPT_ALL_VECOLORS_UNCOMPRESSED = 103, 00169 OPT_VERTEX_ECOLORS_UNCOMPRESSED = 104, 00170 OPT_ALL_VMCOLORS_UNCOMPRESSED = 105, 00171 OPT_VERTEX_MCOLORS_UNCOMPRESSED = 106, 00172 OPT_ALL_VMRGBAS_UNCOMPRESSED = 107, 00173 OPT_VERTEX_MRGBAS_UNCOMPRESSED = 108, 00174 OPT_ALL_VFINDICES_UNCOMPRESSED = 109, 00175 OPT_VERTEX_FINDICES_UNCOMPRESSED = 110, 00176 OPT_ALL_VEINDICES_UNCOMPRESSED = 111, 00177 OPT_VERTEX_EINDICES_UNCOMPRESSED = 112, 00178 OPT_ALL_VMINDICES_UNCOMPRESSED = 113, 00179 OPT_VERTEX_MINDICES_UNCOMPRESSED = 114, 00180 OPT_ALL_FACE_COLORS_UNCOMPRESSED = 115, 00181 OPT_FACE_COLORS_UNCOMPRESSED = 116, 00182 OPT_ALL_FACE_INDICES_UNCOMPRESSED = 117, 00183 OPT_FACE_INDICES_UNCOMPRESSED = 118, 00184 }; 00185 00186 00187 //see TK_Shell for GetFacesLength, GetFaces, GetLodLevel, SetFaces, SetLodLevel 00188 00190 float const *GetPoints() const { return mp_points; }; 00192 float *GetPoints() { return mp_points; }; 00193 00195 double const *GetDPoints() const { return mp_dpoints; }; 00197 double *GetDPoints() { return mp_dpoints; }; 00198 00199 00201 int GetPointCount() const { return mp_pointcount; }; 00203 unsigned int const *GetExists() const { return mp_exists; }; 00205 unsigned int *GetExists() { return mp_exists; }; 00207 unsigned int const *GetFaceExists() const { return mp_face_exists; }; 00209 unsigned int *GetFaceExists() { return mp_face_exists; }; 00211 ID_Key GetKey() const { return mp_key; }; 00213 unsigned char GetSubop() const { return mp_subop; }; 00215 unsigned short GetSubop2() const { return mp_subop2; }; 00217 const float *GetBounding() const { return mp_bbox; }; 00219 float const *GetVertexNormals() const { return mp_normals; }; 00221 float *GetVertexNormals() { return mp_normals; }; 00223 float const *GetVertexParameters() const { return mp_params; }; 00225 float *GetVertexParameters() { return mp_params; }; 00227 float const *GetVertexFaceColors() const { return mp_vfcolors; }; 00229 float *GetVertexFaceColors() { return mp_vfcolors; }; 00231 float const *GetVertexEdgeColors() const { return mp_vecolors; }; 00233 float *GetVertexEdgeColors() { return mp_vecolors; }; 00235 float const *GetVertexMarkerColors() const { return mp_vmcolors; }; 00237 float *GetVertexMarkerColors() { return mp_vmcolors; }; 00239 float const *GetVertexMarkerRGBAs() const { return mp_vmcolors; }; 00241 float *GetVertexMarkerRGBAs() { return mp_vmcolors; }; 00244 float const *GetVertexColors() const { 00245 if (mp_vmcolors != 0) return mp_vmcolors; 00246 else if (mp_vfcolors != 0) return mp_vfcolors; 00247 else if (mp_vecolors != 0) return mp_vecolors; 00248 else return 0; 00249 }; 00252 float *GetVertexColors() { 00253 if (mp_vmcolors != 0) return mp_vmcolors; 00254 else if (mp_vfcolors != 0) return mp_vfcolors; 00255 else if (mp_vecolors != 0) return mp_vecolors; 00256 else return 0; 00257 }; 00259 float const *GetVertexFaceIndices() const { return mp_vfindices; }; 00261 float *GetVertexFaceIndices() { return mp_vfindices; }; 00263 float const *GetVertexEdgeIndices() const { return mp_veindices; }; 00265 float *GetVertexEdgeIndices() { return mp_veindices; }; 00267 float const *GetVertexMarkerIndices() const { return mp_vmindices; }; 00269 float *GetVertexMarkerIndices() { return mp_vmindices; }; 00272 float const *GetVertexIndices() const { 00273 if (mp_vmindices != 0) return mp_vmindices; 00274 else if (mp_vfindices != 0) return mp_vfindices; 00275 else if (mp_veindices != 0) return mp_veindices; 00276 else return 0; 00277 }; 00280 float *GetVertexIndices() { 00281 if (mp_vmindices != 0) return mp_vmindices; 00282 else if (mp_vfindices != 0) return mp_vfindices; 00283 else if (mp_veindices != 0) return mp_veindices; 00284 else return 0; 00285 }; 00287 float const *GetFaceColors() const { return mp_fcolors; }; 00289 float *GetFaceColors() { return mp_fcolors; }; 00291 float const *GetFaceIndices() const { return mp_findices; }; 00293 float *GetFaceIndices() { return mp_findices; }; 00295 int const * GetFaceRegions() const { return mp_fregions; }; 00297 int * GetFaceRegions() { return mp_fregions; }; 00298 00300 int GetPriority () {return mp_priority;} 00302 void SetPriority (int priority) { mp_priority = priority; } 00303 00304 00305 00307 TK_Status SetKey (BStreamFileToolkit &tk, ID_Key key) { set_last_key (tk, key); mp_key = key; return TK_Normal; }; 00310 TK_Status SetSubop (unsigned char subop) { mp_subop = subop; return TK_Normal; }; 00313 TK_Status SetSubop2 (unsigned short subop2) { mp_subop2 = subop2; return TK_Normal; }; 00318 TK_Status InitSubop (BStreamFileToolkit &tk, int lodlevel, bool is_firstpass); 00321 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; }; 00322 00327 TK_Status SetPoints (int count, float const *points=0); 00332 TK_Status SetDPoints (int count, double const *points=0); 00333 00338 TK_Status SetVertexNormals (float const *normals=0); 00347 TK_Status SetVertexParameters (float const *parameters=0, int width=0); 00355 TK_Status SetVertexFaceColors (float const *colors=0); 00363 TK_Status SetVertexEdgeColors (float const *colors=0); 00371 TK_Status SetVertexMarkerColors (float const *colors=0); 00379 TK_Status SetVertexMarkerRGBAs (float const *colors=0); 00389 TK_Status SetVertexColors (float const *colors=0); 00398 TK_Status SetVertexFaceIndices (float const *indices=0); 00407 TK_Status SetVertexEdgeIndices (float const *indices=0); 00416 TK_Status SetVertexMarkerIndices (float const *indices=0); 00426 TK_Status SetVertexIndices (float const *indices=0); 00432 TK_Status SetVertexMarkerVisibilities (char const *visibilities=0); 00439 TK_Status SetVertexMarkerSizes (float const *sizes=0); 00446 TK_Status SetVertexMarkerSymbols (char const *symbols=0); 00450 TK_Status SetVertexMarkerSymbolStrings (); 00456 TK_Status SetFaceColors (float const *colors=0); 00462 TK_Status SetFaceNormals (float const *normals=0); 00468 TK_Status SetFaceVisibilities (char const *visibilities=0); 00475 TK_Status SetFacePatterns (char const *patterns=0); 00483 TK_Status SetFaceIndices (float const *indices=0); 00486 TK_Status SetFaceRegions (int const * regions=0); 00495 TK_Status SetEdgeColors (float const *colors=0); 00502 TK_Status SetEdgeIndices (float const *indices=0); 00508 TK_Status SetEdgeNormals (float const *normals=0); 00515 TK_Status SetEdgeVisibilities (char const *visibilities=0); 00521 TK_Status SetEdgePatterns (char const *patterns=0); 00525 TK_Status SetEdgePatternStrings (); 00531 TK_Status SetEdgeWeights (float const *weights=0); 00532 00537 TK_Status SetExists (unsigned int const *vals=0); 00542 TK_Status SetFaceExists (unsigned int const *vals=0); 00549 TK_Status SetEdgeExists (unsigned int const *vals=0); 00550 00556 TK_Status AppendObject (BStreamFileToolkit & tk, BBaseOpcodeHandler *obj); 00559 BBaseOpcodeHandler *PopObject(); 00560 00562 bool HasOptionals() { return 00563 HasVertexAttributes() || 00564 HasFaceAttributes() || 00565 HasEdgeAttributes() || 00566 (!(mp_subop2 & 0x01) && mp_num_collection_parts > 0);// 0x01 matches TKSH2_COLLECTION 00567 }; 00568 00569 bool HasOptionalsCommunicator() { return 00570 HasVertexAttributes() || 00571 HasFaceAttributesCommunicator() || 00572 HasEdgeAttributes() || 00573 (!(mp_subop2 & 0x01) && mp_num_collection_parts > 0);// 0x01 matches TKSH2_COLLECTION 00574 }; 00575 00577 bool HasVertexNormals() const { return mp_normals != 0; }; 00579 bool HasVertexParameters() const { return mp_params != 0; }; 00581 bool HasVertexFaceColors() const { return mp_vfcolors != 0; }; 00583 bool HasVertexEdgeColors() const { return mp_vecolors != 0; }; 00585 bool HasVertexMarkerColors() const { return mp_vmcolors != 0; }; 00587 bool HasVertexMarkerRGBAs() const { return mp_vmrgbas != 0; }; 00589 bool HasVertexColors() const { return 00590 mp_vfcolors != 0 || 00591 mp_vecolors != 0 || 00592 mp_vmcolors != 0 || 00593 mp_vmrgbas != 0; 00594 }; 00596 inline bool HasVertexFaceIndices() const { return mp_vfindices != 0; }; 00598 inline bool HasVertexEdgeIndices() const { return mp_veindices != 0; }; 00600 inline bool HasVertexMarkerIndices() const { return mp_vmindices != 0; }; 00602 inline bool HasVertexIndices() const { return 00603 mp_vfindices != 0 || 00604 mp_veindices != 0 || 00605 mp_vmindices != 0; 00606 }; 00608 inline bool HasVertexMarkerVisibilities() const { return mp_vmvisibilities != 0; }; 00610 inline bool HasVertexMarkerSymbols() const { return mp_vmsymbols != 0; }; 00612 inline bool HasVertexMarkerSizes() const { return mp_vmsizes != 0; }; 00616 inline bool HasVertexAttributes() const { return 00617 HasVertexColors() || 00618 HasVertexIndices() || 00619 HasVertexNormals() || 00620 HasVertexParameters() || 00621 HasVertexMarkerVisibilities() || 00622 HasVertexMarkerSymbols() || 00623 HasVertexMarkerSizes(); 00624 }; 00626 inline bool HasFaceColors() const { return mp_fcolors != 0; }; 00628 inline bool HasFaceIndices() const { return mp_findices != 0; }; 00630 inline bool HasFaceNormals() const { return mp_fnormals != 0; }; 00632 inline bool HasFaceVisibilities() const { return mp_fvisibilities != 0; }; 00634 inline bool HasFacePatterns() const { return mp_fpatterns != 0; }; 00636 inline bool HasFaceRegions() const { return mp_fregions != 0; }; 00639 inline bool HasFaceAttributes() const { return 00640 HasFaceColors() || 00641 HasFaceIndices() || 00642 HasFaceNormals() || 00643 HasFaceVisibilities() || 00644 HasFacePatterns() || 00645 HasFaceRegions(); 00646 }; 00647 00648 inline bool HasFaceAttributesCommunicator() const { return 00649 HasFaceRegions(); 00650 }; 00651 00652 00654 inline bool HasEdgeColors() const { return mp_ecolors != 0; }; 00656 inline bool HasEdgeIndices() const { return mp_eindices != 0; }; 00658 inline bool HasEdgeNormals() const { return mp_enormals != 0; }; 00660 inline bool HasEdgeVisibilities() const { return mp_evisibilities != 0; }; 00662 inline bool HasEdgePatterns() const { return mp_epatterns != 0; }; 00664 inline bool HasEdgeWeights() const { return mp_eweights != 0; }; 00666 inline bool HasEdgeAttributes() const { return 00667 HasEdgeColors() || 00668 HasEdgeIndices() || 00669 HasEdgeNormals() || 00670 HasEdgeVisibilities() || 00671 HasEdgePatterns() || 00672 HasEdgeWeights(); 00673 }; 00674 00675 protected: 00676 //data members prefixed with "mp_", not "m_", to avoid potential naming conflicts with TK_Shell and/or TK_Mesh 00677 00678 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00679 int mp_priority; 00680 float * mp_points; 00681 double * mp_dpoints; 00682 float * mp_normals; 00683 float * mp_params; 00684 float * mp_vfcolors; 00685 float * mp_vecolors; 00686 float * mp_vmcolors; 00687 float * mp_vmrgbas; 00688 float * mp_vfindices; 00689 float * mp_veindices; 00690 float * mp_vmindices; 00691 char * mp_vmvisibilities; 00692 float * mp_vmsizes; 00693 unsigned char * mp_vmsymbols; 00694 char ** mp_vmsymbolstrings; 00695 float * mp_fcolors; 00696 float * mp_findices; 00697 int * mp_fregions; 00698 float * mp_fnormals; 00699 char * mp_fvisibilities; 00700 char * mp_fpatterns; 00701 float * mp_ecolors; 00702 float * mp_eindices; 00703 float * mp_enormals; 00704 char * mp_evisibilities; 00705 unsigned char * mp_epatterns; 00706 char ** mp_epatternstrings; 00707 float * mp_eweights; 00709 unsigned int * mp_exists; 00710 unsigned int * mp_face_exists; 00711 unsigned int * mp_edge_exists; 00713 int mp_pointcount; 00714 int mp_normalcount; 00715 int mp_paramcount; 00716 char mp_paramwidth; 00717 int mp_vfcolorcount; 00718 int mp_vecolorcount; 00719 int mp_vmcolorcount; 00720 int mp_vmrgbacount; 00721 int mp_vfindexcount; 00722 int mp_veindexcount; 00723 int mp_vmindexcount; 00724 int mp_vmvisibilitycount; 00725 int mp_vmsizecount; 00726 int mp_vmsymbolcount; 00727 int mp_facecount; 00728 int mp_fcolorcount; 00729 int mp_findexcount; 00730 int mp_fnormalcount; 00731 int mp_fpatterncount; 00732 int mp_fvisibilitycount; 00733 int mp_edgecount; 00734 int mp_ecolorcount; 00735 int mp_eindexcount; 00736 int mp_enormalcount; 00737 int mp_epatterncount; 00738 int mp_eweightcount; 00739 int mp_evisibilitycount; 00740 int * mp_edge_enumeration; 00742 int mp_stage; 00743 int mp_substage; 00744 int mp_progress; 00745 int mp_subprogress; 00746 unsigned char mp_optopcode; 00749 unsigned short mp_present; 00750 unsigned short mp_face_present; 00751 unsigned short mp_edge_present; 00752 unsigned char mp_bits_per_sample; 00753 float mp_bbox[256]; 00754 ID_Key mp_key; 00755 TK_Instance * mp_instance; 00756 float mp_matrix[16]; 00757 unsigned char * mp_workspace; 00758 int mp_workspace_allocated; 00759 int mp_workspace_used; 00760 unsigned char mp_compression_scheme; 00761 unsigned char mp_subop; 00762 unsigned short mp_subop2; 00763 int mp_num_collection_parts; 00764 BBaseOpcodeHandler **mp_collection_parts; 00771 virtual TK_Status EnumerateEdges() { return TK_Error; }; 00776 virtual TK_Status LabelFakeEdges() { return TK_Normal; }; 00781 virtual bool AllowInstancing(BStreamFileToolkit & tk) const; 00782 00783 TK_Polyhedron(unsigned char op); 00784 ~TK_Polyhedron(); 00785 00786 TK_Status Read (BStreamFileToolkit & tk); 00787 TK_Status Write (BStreamFileToolkit & tk); 00788 virtual void Reset (); 00789 00790 virtual TK_Status read_trivial_points (BStreamFileToolkit & tk); 00791 virtual TK_Status write_trivial_points (BStreamFileToolkit & tk); 00793 TK_Status read_vertex_normals (BStreamFileToolkit & tk); 00794 TK_Status read_vertex_normals_compressed (BStreamFileToolkit & tk); 00795 TK_Status read_vertex_normals_all (BStreamFileToolkit & tk); 00796 TK_Status read_vertex_normals_compressed_all (BStreamFileToolkit & tk); 00797 TK_Status read_vertex_parameters (BStreamFileToolkit & tk); 00798 TK_Status read_vertex_parameters_all (BStreamFileToolkit & tk); 00799 TK_Status read_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op); 00800 TK_Status read_vertex_colors (BStreamFileToolkit & tk, unsigned char op); 00801 TK_Status read_vertex_colors_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00802 TK_Status read_vertex_colors_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00803 TK_Status read_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op); 00804 TK_Status read_vertex_indices (BStreamFileToolkit & tk, unsigned char op); 00805 TK_Status read_vertex_indices_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00806 TK_Status read_vertex_indices_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00807 TK_Status read_vertex_marker_visibilities (BStreamFileToolkit & tk); 00808 TK_Status read_vertex_marker_symbols (BStreamFileToolkit & tk); 00809 TK_Status read_vertex_marker_sizes (BStreamFileToolkit & tk); 00810 TK_Status read_face_colors (BStreamFileToolkit & tk); 00811 TK_Status read_face_colors_all (BStreamFileToolkit & tk); 00812 TK_Status read_face_colors_uncompressed (BStreamFileToolkit & tk); 00813 TK_Status read_face_colors_uncompressed_all (BStreamFileToolkit & tk); 00814 TK_Status read_face_indices (BStreamFileToolkit & tk); 00815 TK_Status read_face_indices_all (BStreamFileToolkit & tk); 00816 TK_Status read_face_indices_uncompressed (BStreamFileToolkit & tk); 00817 TK_Status read_face_indices_uncompressed_all (BStreamFileToolkit & tk); 00818 TK_Status read_face_regions (BStreamFileToolkit & tk); 00819 TK_Status read_face_normals (BStreamFileToolkit & tk); 00820 TK_Status read_face_visibilities (BStreamFileToolkit & tk); 00821 TK_Status read_face_patterns (BStreamFileToolkit & tk); 00822 TK_Status read_edge_colors (BStreamFileToolkit & tk); 00823 TK_Status read_edge_indices (BStreamFileToolkit & tk); 00824 TK_Status read_edge_normals (BStreamFileToolkit & tk); 00825 TK_Status read_edge_visibilities (BStreamFileToolkit & tk); 00826 TK_Status read_edge_patterns (BStreamFileToolkit & tk); 00827 TK_Status read_edge_weights (BStreamFileToolkit & tk); 00828 virtual TK_Status read_collection (BStreamFileToolkit & tk); 00830 TK_Status write_vertex_normals (BStreamFileToolkit & tk); 00831 TK_Status write_vertex_normals_compressed (BStreamFileToolkit & tk); 00832 TK_Status write_vertex_normals_all (BStreamFileToolkit & tk); 00833 TK_Status write_vertex_normals_compressed_all (BStreamFileToolkit & tk); 00834 TK_Status write_vertex_parameters (BStreamFileToolkit & tk); 00835 TK_Status write_vertex_parameters_all (BStreamFileToolkit & tk); 00836 TK_Status write_vertex_colors (BStreamFileToolkit & tk, unsigned char op); 00837 TK_Status write_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op); 00838 TK_Status write_vertex_colors_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00839 TK_Status write_vertex_colors_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00840 TK_Status write_vertex_indices (BStreamFileToolkit & tk, unsigned char op); 00841 TK_Status write_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op); 00842 TK_Status write_vertex_indices_uncompressed (BStreamFileToolkit & tk, unsigned char op); 00843 TK_Status write_vertex_indices_uncompressed_all (BStreamFileToolkit & tk, unsigned char op); 00844 TK_Status write_vertex_marker_visibilities (BStreamFileToolkit & tk); 00845 TK_Status write_vertex_marker_symbols (BStreamFileToolkit & tk); 00846 TK_Status write_vertex_marker_sizes (BStreamFileToolkit & tk); 00847 TK_Status write_face_colors (BStreamFileToolkit & tk); 00848 TK_Status write_face_colors_all (BStreamFileToolkit & tk); 00849 TK_Status write_face_colors_uncompressed (BStreamFileToolkit & tk); 00850 TK_Status write_face_colors_uncompressed_all (BStreamFileToolkit & tk); 00851 TK_Status write_face_indices (BStreamFileToolkit & tk); 00852 TK_Status write_face_indices_all (BStreamFileToolkit & tk); 00853 TK_Status write_face_indices_uncompressed (BStreamFileToolkit & tk); 00854 TK_Status write_face_indices_uncompressed_all (BStreamFileToolkit & tk); 00855 TK_Status write_face_regions (BStreamFileToolkit & tk); 00856 TK_Status write_face_normals (BStreamFileToolkit & tk); 00857 TK_Status write_face_visibilities (BStreamFileToolkit & tk); 00858 TK_Status write_face_patterns (BStreamFileToolkit & tk); 00859 TK_Status write_edge_colors (BStreamFileToolkit & tk); 00860 TK_Status write_edge_indices (BStreamFileToolkit & tk); 00861 TK_Status write_edge_normals (BStreamFileToolkit & tk); 00862 TK_Status write_edge_visibilities (BStreamFileToolkit & tk); 00863 TK_Status write_edge_patterns (BStreamFileToolkit & tk); 00864 TK_Status write_edge_weights (BStreamFileToolkit & tk); 00865 virtual TK_Status write_collection (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0); 00868 void normals_cartesian_to_polar (unsigned int *exists, int flag, int count, const float *in, float *out); 00870 void normals_polar_to_cartesian (unsigned int *exists, int flag, int count, const float *in, float *out); 00871 00875 TK_Status write_vertex_normals_main (BStreamFileToolkit & tk); 00880 TK_Status write_vertex_parameters_main (BStreamFileToolkit & tk); 00886 TK_Status write_vertex_colors_main (BStreamFileToolkit & tk, unsigned char base_op); 00892 TK_Status write_vertex_indices_main (BStreamFileToolkit & tk, unsigned char base_op); 00897 TK_Status write_face_colors_main (BStreamFileToolkit & tk); 00902 TK_Status write_face_indices_main (BStreamFileToolkit & tk); 00903 00904 00905 TK_Status ReadAscii (BStreamFileToolkit & tk); 00906 TK_Status WriteAscii (BStreamFileToolkit & tk); 00907 00908 virtual TK_Status read_trivial_points_ascii (BStreamFileToolkit & tk); 00909 virtual TK_Status write_trivial_points_ascii (BStreamFileToolkit & tk); 00911 TK_Status read_vertex_normals_ascii (BStreamFileToolkit & tk); 00913 TK_Status read_vertex_normals_compressed_ascii (BStreamFileToolkit & tk); 00914 TK_Status read_vertex_normals_all_ascii (BStreamFileToolkit & tk); 00915 TK_Status read_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk); 00916 TK_Status read_vertex_parameters_ascii (BStreamFileToolkit & tk); 00917 TK_Status read_vertex_parameters_all_ascii (BStreamFileToolkit & tk); 00918 TK_Status read_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00919 TK_Status read_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op); 00920 TK_Status read_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00921 TK_Status read_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op); 00922 TK_Status read_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk); 00923 TK_Status read_vertex_marker_symbols_ascii (BStreamFileToolkit & tk); 00924 TK_Status read_vertex_marker_sizes_ascii (BStreamFileToolkit & tk); 00925 TK_Status read_face_colors_ascii (BStreamFileToolkit & tk); 00926 TK_Status read_face_colors_all_ascii (BStreamFileToolkit & tk); 00927 TK_Status read_face_indices_ascii (BStreamFileToolkit & tk); 00928 TK_Status read_face_indices_all_ascii (BStreamFileToolkit & tk); 00929 TK_Status read_face_regions_ascii (BStreamFileToolkit & tk); 00930 TK_Status read_face_normals_ascii (BStreamFileToolkit & tk); 00931 TK_Status read_face_visibilities_ascii (BStreamFileToolkit & tk); 00932 TK_Status read_face_patterns_ascii (BStreamFileToolkit & tk); 00933 TK_Status read_edge_colors_ascii (BStreamFileToolkit & tk); 00934 TK_Status read_edge_indices_ascii (BStreamFileToolkit & tk); 00935 TK_Status read_edge_normals_ascii (BStreamFileToolkit & tk); 00936 TK_Status read_edge_visibilities_ascii (BStreamFileToolkit & tk); 00937 TK_Status read_edge_patterns_ascii (BStreamFileToolkit & tk); 00938 TK_Status read_edge_weights_ascii (BStreamFileToolkit & tk); 00940 virtual TK_Status read_collection_ascii (BStreamFileToolkit & tk); 00942 TK_Status write_vertex_normals_ascii (BStreamFileToolkit & tk); 00943 TK_Status write_vertex_normals_compressed_ascii (BStreamFileToolkit & tk); 00944 TK_Status write_vertex_normals_all_ascii (BStreamFileToolkit & tk); 00945 TK_Status write_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk); 00946 TK_Status write_vertex_parameters_ascii (BStreamFileToolkit & tk); 00947 TK_Status write_vertex_parameters_all_ascii (BStreamFileToolkit & tk); 00948 TK_Status write_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op); 00949 TK_Status write_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00950 TK_Status write_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op); 00951 TK_Status write_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op); 00952 TK_Status write_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk); 00953 TK_Status write_vertex_marker_symbols_ascii (BStreamFileToolkit & tk); 00954 virtual TK_Status write_vertex_marker_sizes_ascii (BStreamFileToolkit & tk); 00955 TK_Status write_face_colors_ascii (BStreamFileToolkit & tk); 00956 TK_Status write_face_colors_all_ascii (BStreamFileToolkit & tk); 00957 TK_Status write_face_indices_ascii (BStreamFileToolkit & tk); 00958 TK_Status write_face_indices_all_ascii (BStreamFileToolkit & tk); 00959 TK_Status write_face_regions_ascii (BStreamFileToolkit & tk); 00960 TK_Status write_face_normals_ascii (BStreamFileToolkit & tk); 00961 TK_Status write_face_visibilities_ascii (BStreamFileToolkit & tk); 00962 TK_Status write_face_patterns_ascii (BStreamFileToolkit & tk); 00963 TK_Status write_edge_colors_ascii (BStreamFileToolkit & tk); 00964 TK_Status write_edge_indices_ascii (BStreamFileToolkit & tk); 00965 TK_Status write_edge_normals_ascii (BStreamFileToolkit & tk); 00966 TK_Status write_edge_visibilities_ascii (BStreamFileToolkit & tk); 00967 TK_Status write_edge_patterns_ascii (BStreamFileToolkit & tk); 00968 TK_Status write_edge_weights_ascii (BStreamFileToolkit & tk); 00970 virtual TK_Status write_collection_ascii (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0); 00976 TK_Status write_vertex_normals_main_ascii (BStreamFileToolkit & tk); 00981 TK_Status write_vertex_parameters_main_ascii (BStreamFileToolkit & tk); 00987 TK_Status write_vertex_colors_main_ascii (BStreamFileToolkit & tk, unsigned char base_op); 00993 TK_Status write_vertex_indices_main_ascii (BStreamFileToolkit & tk, unsigned char base_op); 00998 TK_Status write_face_colors_main_ascii (BStreamFileToolkit & tk); 01003 TK_Status write_face_indices_main_ascii (BStreamFileToolkit & tk); 01004 01005 01006 virtual TK_Status mangle_points (BStreamFileToolkit & tk, int pointmap_count, int *pointmap); 01007 virtual TK_Status mangle_point_attributes (BStreamFileToolkit & tk, int pointmap_count, int *pointmap); 01008 virtual TK_Status mangle_face_attributes (BStreamFileToolkit & tk, int facemap_count, int *facemap); 01009 bool has_face_attributes() const; 01019 TK_Status repulse_compress_normals (BStreamFileToolkit & tk, int bits); 01025 TK_Status repulse_decompress_normals (BStreamFileToolkit & tk, int bits); 01026 01028 void set_points (int count, float const * points = 0) { SetPoints (count, points); }; 01030 void set_normals (float const * normals = 0) { SetVertexNormals (normals); }; 01032 void set_parameters (float const * params = 0) { SetVertexParameters (params); }; 01034 void set_vfcolors (float const * colors = 0) { SetVertexFaceColors (colors); }; 01036 void set_vecolors (float const * colors = 0) { SetVertexEdgeColors (colors); }; 01038 void set_vmcolors (float const * colors = 0) { SetVertexMarkerColors (colors); }; 01040 void set_vfindices (float const * indices = 0) { SetVertexFaceIndices (indices); }; 01042 void set_veindices (float const * indices = 0) { SetVertexEdgeIndices (indices); }; 01044 void set_vmindices (float const * indices = 0) { SetVertexMarkerIndices (indices); }; 01046 void set_fcolors (float const * colors = 0) { SetFaceColors (colors); }; 01048 void set_findices (float const * indices = 0) { SetFaceIndices (indices); }; 01050 void set_exists (unsigned int const * exists = 0); 01052 void set_face_exists (unsigned int const * exists = 0); 01054 void set_facemap (int count, int const * facemap = 0); 01055 01056 01057 01058 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 01059 01060 }; // end declaration of class TK_Polyhedron 01061 01062 01064 01070 class BBINFILETK_API TK_Mesh : public TK_Polyhedron { 01071 protected: 01072 int m_rows; 01073 int m_columns; 01076 TK_Status EnumerateEdges(); 01077 01078 public: 01079 TK_Mesh() 01080 : TK_Polyhedron (TKE_Mesh), m_rows(0), m_columns(0) {} 01081 ~TK_Mesh(); 01082 01083 01084 TK_Status ReadAscii (BStreamFileToolkit & tk); 01085 TK_Status WriteAscii (BStreamFileToolkit & tk); 01086 01087 TK_Status Read (BStreamFileToolkit & tk); 01088 TK_Status Write (BStreamFileToolkit & tk); 01089 void Reset (); 01090 01092 void SetRows (const int rows) { m_rows = rows; } 01093 01095 void SetColumns (const int columns) { m_columns = columns; } 01096 01097 }; // end declaration of class TK_Mesh 01098 01099 #endif //BBINFILETK_POLYHEDRON 01100