Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

BPolyhedron.h
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