BPolyhedron.h

Go to the documentation of this file.
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 // $Header: //DWF/Working_Area/Willie.Zhu/w3dtk/BPolyhedron.h#1 $
00013 //
00014 #ifndef BBINFILETK_POLYHEDRON
00015 #define BBINFILETK_POLYHEDRON
00016 
00020 
00022 
00028 class BBINFILETK_API TK_Polyhedron : public BBaseOpcodeHandler {
00029     private:
00030         TK_Polyhedron(const TK_Polyhedron&);
00031         TK_Polyhedron& operator=(const TK_Polyhedron&);
00032 
00033         public:
00034 
00038                 enum Exists {                   
00039                         Vertex_None         = 0x0000,  
00040                         Vertex_Normal       = 0x0001,  
00041                         Vertex_Parameter    = 0x0002,  
00042                         Vertex_Face_Color   = 0x0004,  
00043                         Vertex_Edge_Color   = 0x0008,  
00044                         Vertex_Marker_Color = 0x0010,  
00045                         Vertex_Face_Index   = 0x0020,  
00046                         Vertex_Edge_Index   = 0x0040,  
00047                         Vertex_Marker_Index = 0x0080,  
00048                         Vertex_Any_Color    = 0x00FC,  
00049                         Vertex_Marker_Visibility = 0x0100,
00050                         Vertex_Marker_Size  = 0x0200,
00051                         Vertex_Marker_Symbol= 0x0400
00052                 };
00053 
00057                 enum Face_Exists {
00058                         Face_None         = 0x0000,  
00059                         Face_Color        = 0x0001,  
00060                         Face_Index        = 0x0002,  
00061                         Face_Any_Color    = 0x0003,  
00062                         Face_Normal       = 0x0004,  
00063                         Face_Visibility   = 0x0008,  
00064                         Face_Pattern      = 0x0010   
00065                 };
00066 
00070                 enum Edge_Exists {
00071                         Edge_None         = 0x0000,  
00072                         Edge_Color        = 0x0001,  
00073                         Edge_Index        = 0x0002,  
00074                         Edge_Any_Color    = 0x0003,  
00075                         Edge_Normal       = 0x0004,  
00076                         Edge_Visibility   = 0x0008,  
00077                         Edge_Pattern      = 0x0010,  
00078                         Edge_Weight       = 0x0020,  
00079                         Fake_Edge         = 0x8000  //for edges (if any) that do not exist on the write side, but will be introduced due to triangulation
00080                 };
00081 
00085                 enum Suboptions {
00086                         TKSH_STANDARD                 = 0x00, 
00087                         TKSH_COMPRESSED_POINTS        = 0x01, 
00088                         TKSH_COMPRESSED_FACES         = 0x02, 
00089                         TKSH_TRISTRIPS                = 0x04, 
00090                         TKSH_HAS_OPTIONALS            = 0x08, 
00091                         TKSH_FIRSTPASS                = 0x10, 
00092                         TKSH_BOUNDING_ONLY            = 0x20, 
00093                         TKSH_CONNECTIVITY_COMPRESSION = 0x40, 
00094                         TKSH_EXPANDED                 = 0x80  
00095                 };
00096 
00101                 enum Suboptions2 {
00102                         TKSH2_COLLECTION              = 0x0001,  
00103                         TKSH2_NULL                    = 0x0002,  
00104                         TKSH2_HAS_NEGATIVE_FACES      = 0x0004,  
00105                         TKSH2_GLOBAL_QUANTIZATION     = 0x0008   
00106                 };
00107 
00111                 enum Opt_Opcode {
00112                         OPT_TERMINATE                   = 0,  
00113                         OPT_ALL_NORMALS_COMPRESSED      = 1,  
00114                         OPT_NORMALS_COMPRESSED          = 2,  
00115                         OPT_ALL_PARAMETERS_COMPRESSED   = 3,  
00116                         OPT_PARAMETERS_COMPRESSED       = 4,  
00117                         OPT_ALL_VFCOLORS                = 5,  
00118                         OPT_VERTEX_FCOLORS              = 6,  
00119                         OPT_ALL_VECOLORS                = 7,  
00120                         OPT_VERTEX_ECOLORS              = 8,  
00121                         OPT_ALL_VMCOLORS                = 9,  
00122                         OPT_VERTEX_MCOLORS              = 10, 
00123                         OPT_ALL_VFINDICES               = 11, 
00124                         OPT_VERTEX_FINDICES             = 12, 
00125                         OPT_ALL_VEINDICES               = 13, 
00126                         OPT_VERTEX_EINDICES             = 14, 
00127                         OPT_ALL_VMINDICES               = 15, 
00128                         OPT_VERTEX_MINDICES             = 16, 
00129                         OPT_ALL_NORMALS                 = 17, 
00130                         OPT_NORMALS                     = 18, 
00131                         OPT_ALL_NORMALS_POLAR           = 19, 
00132                         OPT_NORMALS_POLAR               = 20, 
00133                         OPT_ALL_VMVISIBILITIES          = 21, 
00134                         OPT_VERTEX_MARKER_VISIBILITIES  = 22, 
00135                         OPT_ALL_VMSYMBOLS               = 23, 
00136                         OPT_VERTEX_MARKER_SYMBOLS       = 24, 
00137                         OPT_ALL_VMSIZES                 = 25, 
00138                         OPT_VERTEX_MARKER_SIZES         = 26, 
00139                         OPT_PARAMETERS                                  = 27, 
00140                         OPT_ALL_PARAMETERS                              = 28, 
00141                         
00142                         OPT_ALL_FACE_COLORS             = 33, 
00143                         OPT_FACE_COLORS                 = 34, 
00144                         OPT_ALL_FACE_INDICES            = 35, 
00145                         OPT_FACE_INDICES                = 36, 
00146                         OPT_ALL_FACE_NORMALS_POLAR      = 37, 
00147                         OPT_FACE_NORMALS_POLAR          = 38, 
00148                         OPT_ALL_FACE_VISIBILITIES       = 39, 
00149                         OPT_FACE_VISIBILITIES           = 40, 
00150                         OPT_ALL_FACE_PATTERNS           = 41, 
00151                         OPT_FACE_PATTERNS               = 42, 
00152                         
00153                         OPT_FACE_REGIONS                = 51,  
00154                         
00155                         OPT_ALL_EDGE_COLORS             = 71, 
00156                         OPT_EDGE_COLORS                 = 72, 
00157                         OPT_ALL_EDGE_INDICES            = 73, 
00158                         OPT_EDGE_INDICES                = 74, 
00159                         OPT_ALL_EDGE_NORMALS_POLAR      = 75, 
00160                         OPT_EDGE_NORMALS_POLAR          = 76, 
00161                         OPT_ALL_EDGE_VISIBILITIES       = 77, 
00162                         OPT_EDGE_VISIBILITIES           = 78, 
00163                         OPT_ALL_EDGE_PATTERNS           = 79, 
00164                         OPT_EDGE_PATTERNS               = 80, 
00165                         OPT_ALL_EDGE_WEIGHTS            = 81, 
00166                         OPT_EDGE_WEIGHTS                = 82, 
00167                         
00168                         OPT_RESERVED_SPATIAL                    = 90,
00169                         OPT_ENTITY_ATTRIBUTES           = 99
00170                 };
00171 
00172 
00173                 //see TK_Shell for GetFacesLength, GetFaces, GetLodLevel, SetFaces, SetLodLevel
00174 
00176                 float const *GetPoints() const { return mp_points; };
00178                 float *GetPoints() { return mp_points; };
00180                 int GetPointCount() const { return mp_pointcount; };
00182                 unsigned int const *GetExists() const { return mp_exists; };
00184                 unsigned int *GetExists() { return mp_exists; };
00186                 unsigned int const *GetFaceExists() const { return mp_face_exists; };
00188                 unsigned int *GetFaceExists() { return mp_face_exists; };
00190                 ID_Key GetKey() const { return mp_key; };
00192                 unsigned char GetSubop() const { return mp_subop; };
00194                 unsigned short GetSubop2() const { return mp_subop2; };
00196                 const float *GetBounding() const { return mp_bbox; };
00198                 float const *GetVertexNormals() const { return mp_normals; };
00200                 float *GetVertexNormals() { return mp_normals; };
00202                 float const *GetVertexParameters() const { return mp_params; };
00204                 float *GetVertexParameters() { return mp_params; };
00206                 float const *GetVertexFaceColors() const { return mp_vfcolors; };
00208                 float *GetVertexFaceColors() { return mp_vfcolors; };
00210                 float const *GetVertexEdgeColors() const { return mp_vecolors; };
00212                 float *GetVertexEdgeColors() { return mp_vecolors; };
00214                 float const *GetVertexMarkerColors() const { return mp_vmcolors; };
00216                 float *GetVertexMarkerColors() { return mp_vmcolors; };
00219                 float const *GetVertexColors() const { 
00220                         if( mp_vmcolors != 0 ) return mp_vmcolors;
00221                         else if( mp_vfcolors != 0 ) return mp_vfcolors;
00222                         else if( mp_vecolors != 0 ) return mp_vecolors;
00223                         else return 0;
00224                 };
00227                 float *GetVertexColors() { 
00228                         if( mp_vmcolors != 0 ) return mp_vmcolors;
00229                         else if( mp_vfcolors != 0 ) return mp_vfcolors;
00230                         else if( mp_vecolors != 0 ) return mp_vecolors;
00231                         else return 0;
00232                 };
00234                 float const *GetVertexFaceIndices() const { return mp_vfindices; };
00236                 float *GetVertexFaceIndices() { return mp_vfindices; };
00238                 float const *GetVertexEdgeIndices() const { return mp_veindices; };
00240                 float *GetVertexEdgeIndices() { return mp_veindices; };
00242                 float const *GetVertexMarkerIndices() const { return mp_vmindices; };
00244                 float *GetVertexMarkerIndices() { return mp_vmindices; };
00247                 float const *GetVertexIndices() const { 
00248                         if( mp_vmindices != 0 ) return mp_vmindices;
00249                         else if( mp_vfindices != 0 ) return mp_vfindices;
00250                         else if( mp_veindices != 0 ) return mp_veindices;
00251                         else return 0;
00252                 };
00255                 float *GetVertexIndices() { 
00256                         if( mp_vmindices != 0 ) return mp_vmindices;
00257                         else if( mp_vfindices != 0 ) return mp_vfindices;
00258                         else if( mp_veindices != 0 ) return mp_veindices;
00259                         else return 0;
00260                 };
00262                 float const *GetFaceColors() const { return mp_fcolors; };
00264                 float *GetFaceColors() { return mp_fcolors; };
00266                 float const *GetFaceIndices() const { return mp_findices; };
00268                 float *GetFaceIndices() { return mp_findices; };
00270                 int const * GetFaceRegions() const { return mp_fregions; };
00272                 int alter * GetFaceRegions() alter { return mp_fregions; };
00273 
00275                 TK_Status SetKey( BStreamFileToolkit &tk, ID_Key key ) alter { set_last_key( tk, key ); mp_key = key; return TK_Normal; };
00278                 TK_Status SetSubop( unsigned char subop ) alter { mp_subop = subop; return TK_Normal; };
00281                 TK_Status SetSubop2( unsigned short subop2 ) alter { mp_subop2 = subop2; return TK_Normal; };
00286                 TK_Status InitSubop( BStreamFileToolkit &tk, int lodlevel, bool is_firstpass ) alter;
00289                 TK_Status SetBounding( float const *bbox ) alter { 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; };
00294                 TK_Status SetPoints( int count, float const *points=0 ) alter;
00299                 TK_Status SetVertexNormals( float const *normals=0 ) alter;
00308                 TK_Status SetVertexParameters( float const *parameters=0, int width=0 ) alter;
00316                 TK_Status SetVertexFaceColors( float const *colors=0 ) alter;
00324                 TK_Status SetVertexEdgeColors( float const *colors=0 ) alter;
00332                 TK_Status SetVertexMarkerColors( float const *colors=0 ) alter;
00342                 TK_Status SetVertexColors( float const *colors=0 ) alter;
00351                 TK_Status SetVertexFaceIndices( float const *indices=0 ) alter;
00360                 TK_Status SetVertexEdgeIndices( float const *indices=0 ) alter;
00369                 TK_Status SetVertexMarkerIndices( float const *indices=0 ) alter;
00379                 TK_Status SetVertexIndices( float const *indices=0 ) alter;
00385                 TK_Status SetVertexMarkerVisibilities( char const *visibilities=0 ) alter;
00392                 TK_Status SetVertexMarkerSizes( float const *sizes=0 ) alter;
00399                 TK_Status SetVertexMarkerSymbols( char const *symbols=0 ) alter;
00403                 TK_Status SetVertexMarkerSymbolStrings (void) alter;
00409                 TK_Status SetFaceColors( float const *colors=0 ) alter;
00415                 TK_Status SetFaceNormals( float const *normals=0 ) alter;
00421                 TK_Status SetFaceVisibilities( char const *visibilities=0 ) alter;
00428                 TK_Status SetFacePatterns( char const *patterns=0 ) alter;
00436                 TK_Status SetFaceIndices( float const *indices=0 ) alter;
00439                 TK_Status SetFaceRegions (int const * regions=0) alter;
00448                 TK_Status SetEdgeColors( float const *colors=0 ) alter;
00455                 TK_Status SetEdgeIndices( float const *indices=0 ) alter;
00461                 TK_Status SetEdgeNormals( float const *normals=0 ) alter;
00468                 TK_Status SetEdgeVisibilities( char const *visibilities=0 ) alter;
00474                 TK_Status SetEdgePatterns( char const *patterns=0 ) alter;
00478                 TK_Status SetEdgePatternStrings (void) alter;
00484                 TK_Status SetEdgeWeights( float const *weights=0 ) alter;
00485 
00490                 TK_Status SetExists( unsigned int const *vals=0 ) alter;
00495                 TK_Status SetFaceExists( unsigned int const *vals=0 ) alter;
00502                 TK_Status SetEdgeExists( unsigned int const *vals=0 ) alter;
00503 
00509                 TK_Status AppendObject( BStreamFileToolkit & tk, BBaseOpcodeHandler *obj );
00512                 BBaseOpcodeHandler *PopObject();
00513 
00515                 bool HasOptionals() { return
00516                         HasVertexAttributes() ||
00517                         HasFaceAttributes() ||
00518                         HasEdgeAttributes() ||
00519                         !(mp_subop2 && 0x011) && mp_num_collection_parts > 0;// 0x01 matches TKSH2_COLLECTION
00520                 };
00522                 bool HasVertexNormals() const { return mp_normals != 0; };
00524                 bool HasVertexParameters() const { return mp_params != 0; };
00526                 bool HasVertexFaceColors() const { return mp_vfcolors != 0; };
00528                 bool HasVertexEdgeColors() const { return mp_vecolors != 0; };
00530                 bool HasVertexMarkerColors() const { return mp_vmcolors != 0; };
00532                 bool HasVertexColors() const { return 
00533                                 mp_vfcolors != 0 || 
00534                                 mp_vecolors != 0 ||
00535                                 mp_vmcolors != 0;
00536                 };
00538                 inline bool HasVertexFaceIndices() const { return mp_vfindices != 0; };
00540                 inline bool HasVertexEdgeIndices() const { return mp_veindices != 0; };
00542                 inline bool HasVertexMarkerIndices() const { return mp_vmindices != 0; };
00544                 inline bool HasVertexIndices() const { return 
00545                                 mp_vfindices != 0 || 
00546                                 mp_veindices != 0 ||
00547                                 mp_vmindices != 0;
00548                 };
00550                 inline bool HasVertexMarkerVisibilities() const { return mp_vmvisibilities != 0; };
00552                 inline bool HasVertexMarkerSymbols() const { return mp_vmsymbols != 0; };
00554                 inline bool HasVertexMarkerSizes() const { return mp_vmsizes != 0; };
00558                 inline bool HasVertexAttributes() const { return
00559                         HasVertexColors() ||
00560                         HasVertexIndices() ||
00561                         HasVertexNormals() ||
00562                         HasVertexParameters() ||
00563                         HasVertexMarkerVisibilities() ||
00564                         HasVertexMarkerSymbols() ||
00565                         HasVertexMarkerSizes();
00566                 };
00568                 inline bool HasFaceColors() const { return mp_fcolors != 0; };
00570                 inline bool HasFaceIndices() const { return mp_findices != 0; };
00572                 inline bool HasFaceNormals() const { return mp_fnormals != 0; };
00574                 inline bool HasFaceVisibilities() const { return mp_fvisibilities != 0; };
00576                 inline bool HasFacePatterns() const { return mp_fpatterns != 0; };
00578                 inline bool HasFaceRegions() const { return mp_fregions != 0; };
00581                 inline bool HasFaceAttributes() const { return 
00582                         HasFaceColors() || 
00583                         HasFaceIndices() || 
00584                         HasFaceNormals() ||
00585                         HasFaceVisibilities() ||
00586                         HasFacePatterns() ||
00587                         HasFaceRegions();
00588                 };
00589         
00591                 inline bool HasEdgeColors() const { return mp_ecolors != 0; }; 
00593                 inline bool HasEdgeIndices() const { return mp_eindices != 0; }; 
00595                 inline bool HasEdgeNormals() const { return mp_enormals != 0; };
00597                 inline bool HasEdgeVisibilities() const { return mp_evisibilities != 0; }; 
00599                 inline bool HasEdgePatterns() const { return mp_epatterns != 0; };
00601                 inline bool HasEdgeWeights() const { return mp_eweights != 0; };
00603                 inline bool HasEdgeAttributes() const { return 
00604                         HasEdgeColors() || 
00605                         HasEdgeIndices() || 
00606                         HasEdgeNormals() ||
00607                         HasEdgeVisibilities() ||
00608                         HasEdgePatterns() ||
00609                         HasEdgeWeights();
00610                 };
00611 
00612         protected:
00613                 //data members prefixed with "mp_", not "m_", to avoid potential naming conflicts with TK_Shell and/or TK_Mesh
00614 
00615 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00616 
00617                 float *                 mp_points;       
00618                 float *                 mp_normals;     
00619                 float *                 mp_params;      
00620                 float *                 mp_vfcolors;    
00621                 float *                 mp_vecolors;    
00622                 float *                 mp_vmcolors;    
00623                 float *                 mp_vfindices;   
00624                 float *                 mp_veindices;   
00625                 float *                 mp_vmindices;   
00626                 char *                  mp_vmvisibilities;
00627                 float *                 mp_vmsizes;     
00628                 unsigned char * mp_vmsymbols;   
00629                 char **                 mp_vmsymbolstrings;   
00630                 float *                 mp_fcolors;      
00631                 float *                 mp_findices;    
00632                 int *                   mp_fregions;    
00633                 float *                 mp_fnormals;    
00634                 char *                  mp_fvisibilities;
00635                 char *                  mp_fpatterns;   
00636                 float *                 mp_ecolors;      
00637                 float *                 mp_eindices;    
00638                 float *                 mp_enormals;    
00639                 char *                  mp_evisibilities;
00640                 unsigned char * mp_epatterns;   
00641                 char **                 mp_epatternstrings;   
00642                 float *                 mp_eweights;    
00644                 unsigned int *  mp_exists;      
00645                 unsigned int *  mp_face_exists; 
00646                 unsigned int *  mp_edge_exists; 
00648                 int                             mp_pointcount;   
00649                 int                             mp_normalcount; 
00650                 int                             mp_paramcount;  
00651                 char                    mp_paramwidth;  
00652                 int                             mp_vfcolorcount;
00653                 int                             mp_vecolorcount;
00654                 int                             mp_vmcolorcount;
00655                 int                             mp_vfindexcount;
00656                 int                             mp_veindexcount;
00657                 int                             mp_vmindexcount;
00658                 int                             mp_vmvisibilitycount;
00659                 int                             mp_vmsizecount; 
00660                 int                             mp_vmsymbolcount;
00661                 int                             mp_facecount;    
00662                 int                             mp_fcolorcount; 
00663                 int                             mp_findexcount; 
00664                 int                             mp_fnormalcount;
00665                 int                             mp_fpatterncount;
00666                 int                             mp_fvisibilitycount;
00667                 int                             mp_edgecount;    
00668                 int                             mp_ecolorcount; 
00669                 int                             mp_eindexcount; 
00670                 int                             mp_enormalcount;
00671                 int                             mp_epatterncount;
00672                 int                             mp_eweightcount;
00673                 int                             mp_evisibilitycount;
00674                 int *                   mp_edge_enumeration;
00676                 int                             mp_stage;       
00677                 int                             mp_substage;    
00678                 int                             mp_progress;    
00679                 int                             mp_subprogress; 
00680                 unsigned char   mp_optopcode;   
00683                 unsigned short  mp_present;     
00684                 unsigned short  mp_face_present;
00685                 unsigned short  mp_edge_present;
00686                 unsigned char   mp_bits_per_sample; 
00687                 float                   mp_bbox[256];   
00688                 ID_Key                  mp_key;         
00689                 TK_Instance *   mp_instance;    
00690                 float                   mp_matrix[16];  
00691                 unsigned char * mp_workspace;   
00692                 int                             mp_workspace_allocated;
00693                 int                             mp_workspace_used;
00694                 unsigned char   mp_compression_scheme;
00695                 unsigned char   mp_subop;       
00696                 unsigned short  mp_subop2;      
00697                 int                             mp_num_collection_parts;
00698                 BBaseOpcodeHandler **mp_collection_parts;
00705                 virtual TK_Status EnumerateEdges() { return TK_Error; }; 
00710                 virtual TK_Status LabelFakeEdges() { return TK_Normal; }; 
00715                 virtual         bool AllowInstancing(BStreamFileToolkit & tk) const;
00716 
00717                 TK_Polyhedron(unsigned char op);
00718                 ~TK_Polyhedron();
00719 
00720                 TK_Status       Read (BStreamFileToolkit & tk) alter;
00721                 TK_Status       Write (BStreamFileToolkit & tk) alter;
00722                 void            Reset (void) alter;
00723 
00724                 virtual         TK_Status       read_trivial_points (BStreamFileToolkit & tk) alter; 
00725                 virtual         TK_Status       write_trivial_points (BStreamFileToolkit & tk) alter; 
00727                 TK_Status       read_vertex_normals (BStreamFileToolkit & tk) alter; 
00728                 TK_Status       read_vertex_normals_compressed (BStreamFileToolkit & tk) alter; 
00729                 TK_Status       read_vertex_normals_all (BStreamFileToolkit & tk) alter; 
00730                 TK_Status       read_vertex_normals_compressed_all (BStreamFileToolkit & tk) alter; 
00731                 TK_Status       read_vertex_parameters (BStreamFileToolkit & tk) alter; 
00732                 TK_Status       read_vertex_parameters_all (BStreamFileToolkit & tk) alter; 
00733                 TK_Status       read_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op ) alter; 
00734                 TK_Status       read_vertex_colors (BStreamFileToolkit & tk, unsigned char op ) alter; 
00735                 TK_Status       read_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op ) alter; 
00736                 TK_Status       read_vertex_indices (BStreamFileToolkit & tk, unsigned char op ) alter; 
00737                 TK_Status       read_vertex_marker_visibilities (BStreamFileToolkit & tk) alter; 
00738                 TK_Status       read_vertex_marker_symbols (BStreamFileToolkit & tk) alter; 
00739                 TK_Status       read_vertex_marker_sizes (BStreamFileToolkit & tk) alter; 
00740                 TK_Status       read_face_colors (BStreamFileToolkit & tk) alter; 
00741                 TK_Status       read_face_colors_all (BStreamFileToolkit & tk) alter; 
00742                 TK_Status       read_face_indices (BStreamFileToolkit & tk) alter; 
00743                 TK_Status       read_face_indices_all (BStreamFileToolkit & tk) alter; 
00744                 TK_Status       read_face_regions (BStreamFileToolkit & tk) alter; 
00745                 TK_Status       read_face_normals (BStreamFileToolkit & tk) alter; 
00746                 TK_Status       read_face_visibilities (BStreamFileToolkit & tk) alter; 
00747                 TK_Status       read_face_patterns (BStreamFileToolkit & tk) alter; 
00748                 TK_Status       read_edge_colors (BStreamFileToolkit & tk) alter; 
00749                 TK_Status       read_edge_indices (BStreamFileToolkit & tk) alter; 
00750                 TK_Status       read_edge_normals (BStreamFileToolkit & tk) alter; 
00751                 TK_Status       read_edge_visibilities (BStreamFileToolkit & tk) alter; 
00752                 TK_Status       read_edge_patterns (BStreamFileToolkit & tk) alter; 
00753                 TK_Status       read_edge_weights (BStreamFileToolkit & tk) alter; 
00754                 virtual         TK_Status read_collection (BStreamFileToolkit & tk) alter; 
00756                 TK_Status       write_vertex_normals (BStreamFileToolkit & tk) alter; 
00757                 TK_Status       write_vertex_normals_compressed (BStreamFileToolkit & tk) alter; 
00758                 TK_Status       write_vertex_normals_all (BStreamFileToolkit & tk) alter; 
00759                 TK_Status       write_vertex_normals_compressed_all (BStreamFileToolkit & tk) alter; 
00760                 TK_Status       write_vertex_parameters (BStreamFileToolkit & tk) alter; 
00761                 TK_Status       write_vertex_parameters_all (BStreamFileToolkit & tk) alter; 
00762                 TK_Status       write_vertex_colors (BStreamFileToolkit & tk, unsigned char op ) alter; 
00763                 TK_Status       write_vertex_colors_all (BStreamFileToolkit & tk, unsigned char op ) alter; 
00764                 TK_Status       write_vertex_indices (BStreamFileToolkit & tk, unsigned char op ) alter;  
00765                 TK_Status       write_vertex_indices_all (BStreamFileToolkit & tk, unsigned char op ) alter;  
00766                 TK_Status       write_vertex_marker_visibilities (BStreamFileToolkit & tk) alter; 
00767                 TK_Status       write_vertex_marker_symbols (BStreamFileToolkit & tk) alter; 
00768                 TK_Status       write_vertex_marker_sizes (BStreamFileToolkit & tk) alter; 
00769                 TK_Status       write_face_colors (BStreamFileToolkit & tk) alter; 
00770                 TK_Status       write_face_colors_all (BStreamFileToolkit & tk) alter; 
00771                 TK_Status       write_face_indices (BStreamFileToolkit & tk) alter; 
00772                 TK_Status       write_face_indices_all (BStreamFileToolkit & tk) alter; 
00773                 TK_Status       write_face_regions (BStreamFileToolkit & tk) alter;  
00774                 TK_Status       write_face_normals (BStreamFileToolkit & tk) alter; 
00775                 TK_Status       write_face_visibilities (BStreamFileToolkit & tk) alter; 
00776                 TK_Status       write_face_patterns (BStreamFileToolkit & tk) alter; 
00777                 TK_Status       write_edge_colors (BStreamFileToolkit & tk) alter; 
00778                 TK_Status       write_edge_indices (BStreamFileToolkit & tk) alter; 
00779                 TK_Status       write_edge_normals (BStreamFileToolkit & tk) alter; 
00780                 TK_Status       write_edge_visibilities (BStreamFileToolkit & tk) alter; 
00781                 TK_Status       write_edge_patterns (BStreamFileToolkit & tk) alter; 
00782                 TK_Status       write_edge_weights (BStreamFileToolkit & tk) alter; 
00783                 virtual         TK_Status write_collection (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0) alter; 
00786                 void normals_cartesian_to_polar( unsigned int *exists, int flag, int count, const float *in, float *out );  
00788                 void normals_polar_to_cartesian( unsigned int *exists, int flag, int count, const float *in, float *out );  
00789 
00793                 TK_Status       write_vertex_normals_main (BStreamFileToolkit & tk) alter; 
00798                 TK_Status       write_vertex_parameters_main (BStreamFileToolkit & tk) alter; 
00804                 TK_Status       write_vertex_colors_main (BStreamFileToolkit & tk, unsigned char base_op ) alter;
00810                 TK_Status       write_vertex_indices_main (BStreamFileToolkit & tk, unsigned char base_op ) alter; 
00815                 TK_Status       write_face_colors_main (BStreamFileToolkit & tk) alter; 
00820                 TK_Status       write_face_indices_main (BStreamFileToolkit & tk) alter;
00821 
00822 
00823                 TK_Status       ReadAscii (BStreamFileToolkit & tk) alter;
00824                 TK_Status       WriteAscii (BStreamFileToolkit & tk) alter;
00825 
00826                 virtual         TK_Status       read_trivial_points_ascii (BStreamFileToolkit & tk) alter; 
00827                 virtual         TK_Status       write_trivial_points_ascii (BStreamFileToolkit & tk) alter; 
00829                 TK_Status       read_vertex_normals_ascii (BStreamFileToolkit & tk) alter; 
00831                 TK_Status       read_vertex_normals_compressed_ascii (BStreamFileToolkit & tk) alter; 
00832                 TK_Status       read_vertex_normals_all_ascii (BStreamFileToolkit & tk) alter; 
00833                 TK_Status       read_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk) alter; 
00834                 TK_Status       read_vertex_parameters_ascii (BStreamFileToolkit & tk) alter; 
00835                 TK_Status       read_vertex_parameters_all_ascii (BStreamFileToolkit & tk) alter; 
00836                 TK_Status       read_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00837                 TK_Status       read_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00838                 TK_Status       read_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00839                 TK_Status       read_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00840                 TK_Status       read_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00841                 TK_Status       read_vertex_marker_symbols_ascii (BStreamFileToolkit & tk) alter; 
00842                 TK_Status       read_vertex_marker_sizes_ascii (BStreamFileToolkit & tk) alter; 
00843                 TK_Status       read_face_colors_ascii (BStreamFileToolkit & tk) alter; 
00844                 TK_Status       read_face_colors_all_ascii (BStreamFileToolkit & tk) alter; 
00845                 TK_Status       read_face_indices_ascii (BStreamFileToolkit & tk) alter; 
00846                 TK_Status       read_face_indices_all_ascii (BStreamFileToolkit & tk) alter; 
00847                 TK_Status       read_face_regions_ascii (BStreamFileToolkit & tk) alter; 
00848                 TK_Status       read_face_normals_ascii (BStreamFileToolkit & tk) alter; 
00849                 TK_Status       read_face_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00850                 TK_Status       read_face_patterns_ascii (BStreamFileToolkit & tk) alter; 
00851                 TK_Status       read_edge_colors_ascii (BStreamFileToolkit & tk) alter; 
00852                 TK_Status       read_edge_indices_ascii (BStreamFileToolkit & tk) alter; 
00853                 TK_Status       read_edge_normals_ascii (BStreamFileToolkit & tk) alter; 
00854                 TK_Status       read_edge_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00855                 TK_Status       read_edge_patterns_ascii (BStreamFileToolkit & tk) alter; 
00856                 TK_Status       read_edge_weights_ascii (BStreamFileToolkit & tk) alter; 
00858                 virtual         TK_Status read_collection_ascii (BStreamFileToolkit & tk) alter; 
00860                 TK_Status       write_vertex_normals_ascii (BStreamFileToolkit & tk) alter; 
00861                 TK_Status       write_vertex_normals_compressed_ascii (BStreamFileToolkit & tk) alter; 
00862                 TK_Status       write_vertex_normals_all_ascii (BStreamFileToolkit & tk) alter; 
00863                 TK_Status       write_vertex_normals_compressed_all_ascii (BStreamFileToolkit & tk) alter; 
00864                 TK_Status       write_vertex_parameters_ascii (BStreamFileToolkit & tk) alter; 
00865                 TK_Status       write_vertex_parameters_all_ascii (BStreamFileToolkit & tk) alter; 
00866                 TK_Status       write_vertex_colors_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00867                 TK_Status       write_vertex_colors_all_ascii (BStreamFileToolkit & tk, unsigned char op ) alter; 
00868                 TK_Status       write_vertex_indices_ascii (BStreamFileToolkit & tk, unsigned char op ) alter;  
00869                 TK_Status       write_vertex_indices_all_ascii (BStreamFileToolkit & tk, unsigned char op ) alter;  
00870                 TK_Status       write_vertex_marker_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00871                 TK_Status       write_vertex_marker_symbols_ascii (BStreamFileToolkit & tk) alter; 
00872                 virtual         TK_Status       write_vertex_marker_sizes_ascii (BStreamFileToolkit & tk) alter; 
00873                 TK_Status       write_face_colors_ascii (BStreamFileToolkit & tk) alter; 
00874                 TK_Status       write_face_colors_all_ascii (BStreamFileToolkit & tk) alter; 
00875                 TK_Status       write_face_indices_ascii (BStreamFileToolkit & tk) alter; 
00876                 TK_Status       write_face_indices_all_ascii (BStreamFileToolkit & tk) alter; 
00877                 TK_Status       write_face_regions_ascii (BStreamFileToolkit & tk) alter;  
00878                 TK_Status       write_face_normals_ascii (BStreamFileToolkit & tk) alter; 
00879                 TK_Status       write_face_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00880                 TK_Status       write_face_patterns_ascii (BStreamFileToolkit & tk) alter; 
00881                 TK_Status       write_edge_colors_ascii (BStreamFileToolkit & tk) alter; 
00882                 TK_Status       write_edge_indices_ascii (BStreamFileToolkit & tk) alter; 
00883                 TK_Status       write_edge_normals_ascii (BStreamFileToolkit & tk) alter; 
00884                 TK_Status       write_edge_visibilities_ascii (BStreamFileToolkit & tk) alter; 
00885                 TK_Status       write_edge_patterns_ascii (BStreamFileToolkit & tk) alter; 
00886                 TK_Status       write_edge_weights_ascii (BStreamFileToolkit & tk) alter; 
00888                 virtual         TK_Status write_collection_ascii (BStreamFileToolkit & tk, bool write_tag = false, int variant = 0) alter; 
00894                 TK_Status       write_vertex_normals_main_ascii (BStreamFileToolkit & tk) alter; 
00899                 TK_Status       write_vertex_parameters_main_ascii (BStreamFileToolkit & tk) alter; 
00905                 TK_Status       write_vertex_colors_main_ascii (BStreamFileToolkit & tk, unsigned char base_op ) alter;
00911                 TK_Status       write_vertex_indices_main_ascii (BStreamFileToolkit & tk, unsigned char base_op ) alter; 
00916                 TK_Status       write_face_colors_main_ascii (BStreamFileToolkit & tk) alter; 
00921                 TK_Status       write_face_indices_main_ascii (BStreamFileToolkit & tk) alter;
00922 
00923 
00924                 virtual TK_Status mangle_points (BStreamFileToolkit & tk, int pointmap_count, int *pointmap ) alter; 
00925                 virtual TK_Status mangle_point_attributes (BStreamFileToolkit & tk, int pointmap_count, int *pointmap ) alter; 
00926                 virtual TK_Status mangle_face_attributes (BStreamFileToolkit & tk, int facemap_count, int *facemap ) alter; 
00927                 bool has_face_attributes() const; 
00937                 TK_Status repulse_compress_normals (BStreamFileToolkit & tk, int bits) alter;
00943                 TK_Status repulse_decompress_normals (BStreamFileToolkit & tk, int bits) alter;
00944 
00946                 void set_points (int count, float const * points = 0) alter { SetPoints( count, points ); };
00948                 void set_normals (float const * normals = 0) alter { SetVertexNormals( normals ); };
00950                 void set_parameters (float const * params = 0) alter { SetVertexParameters( params ); };
00952                 void set_vfcolors (float const * colors = 0) alter { SetVertexFaceColors( colors ); };
00954                 void set_vecolors (float const * colors = 0) alter { SetVertexEdgeColors( colors ); };
00956                 void set_vmcolors (float const * colors = 0) alter { SetVertexMarkerColors( colors ); };
00958                 void set_vfindices (float const * indices = 0) alter { SetVertexFaceIndices( indices ); };
00960                 void set_veindices (float const * indices = 0) alter { SetVertexEdgeIndices( indices ); };
00962                 void set_vmindices (float const * indices = 0) alter { SetVertexMarkerIndices( indices ); };
00964                 void set_fcolors (float const * colors = 0) alter { SetFaceColors( colors ); };
00966                 void set_findices (float const * indices = 0) alter { SetFaceIndices( indices ); };
00968                 void set_exists (unsigned int const * exists = 0) alter;
00970                 void set_face_exists (unsigned int const * exists = 0) alter;
00972                 void set_facemap (int count, int const * facemap = 0) alter;
00973 
00974 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00975 
00976 }; // end declaration of class TK_Polyhedron
00977 
00978 
00980 
00986 class BBINFILETK_API TK_Mesh : public TK_Polyhedron {
00987     private:
00988         TK_Mesh(const TK_Mesh&);
00989         TK_Mesh& operator=(const TK_Mesh&);
00990 
00991 
00992         protected:
00993                 int             m_rows;     
00994                 int             m_columns;  
00997                 TK_Status           EnumerateEdges(); 
00998 
00999         public:
01000                 TK_Mesh()
01001                         : TK_Polyhedron (TKE_Mesh), m_rows(0), m_columns(0) {}
01002 
01003 
01004 
01005                 TK_Status       ReadAscii (BStreamFileToolkit & tk) alter;
01006                 TK_Status       WriteAscii (BStreamFileToolkit & tk) alter;
01007 
01008                 TK_Status       Read (BStreamFileToolkit & tk) alter;
01009                 TK_Status       Write (BStreamFileToolkit & tk) alter;
01010                 void        Reset (void) alter;
01011 
01013                 void  SetRows (const int rows) alter { m_rows = rows; }
01014 
01016                 void  SetColumns (const int columns) alter { m_columns = columns; }
01017 
01018 }; // end declaration of class TK_Mesh
01019 
01020 #endif //BBINFILETK_POLYHEDRON
01021 
01022 

Generated on Tue Jan 6 22:41:37 2009 for Autodesk DWF 3D Toolkit by  doxygen 1.4.5