Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

BPolyhedron.h

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