Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

BOpcodeShell.h

00001 
00002 //
00003 // Copyright (c) 2000 by Tech Soft 3D, LLC.
00004 // The information contained herein is confidential and proprietary to
00005 // Tech Soft 3D, LLC., and considered a trade secret as defined under
00006 // civil and criminal statutes.  Tech Soft 3D shall pursue its civil
00007 // and criminal remedies in the event of unauthorized use or misappropriation
00008 // of its trade secrets.  Use of this information by anyone other than
00009 // authorized employees of Tech Soft 3D, LLC. is granted only under a
00010 // written non-disclosure agreement, expressly prescribing the scope and
00011 // manner of such use.
00012 //
00013 // $Id: 322eac7b0a7a1c274b3253926bca39dfb0f8788a $
00014 //
00015 
00016 #ifndef BBINFILETK_SHELL
00017 #define BBINFILETK_SHELL
00018 
00019 #include "BOpcodeHandler.h"
00020 #include "BPolyhedron.h"
00021 
00022 
00023 
00025 
00031 class BBINFILETK_API TK_Shell : public TK_Polyhedron {
00032     private:
00033         virtual TK_Status read_advanced (BStreamFileToolkit & tk) alter;
00034         virtual TK_Status read_uncompressed_points (BStreamFileToolkit & tk) alter;
00035         virtual TK_Status read_uncompressed_faces (BStreamFileToolkit & tk) alter;
00036         virtual TK_Status read_bounding (BStreamFileToolkit & tk) alter;
00037 
00038 
00039 
00040 
00041         virtual TK_Status read_advanced_ascii (BStreamFileToolkit & tk) alter;
00042         virtual TK_Status read_uncompressed_points_ascii (BStreamFileToolkit & tk) alter;
00043         virtual TK_Status read_uncompressed_faces_ascii (BStreamFileToolkit & tk) alter;
00044         virtual TK_Status read_bounding_ascii (BStreamFileToolkit & tk) alter;
00045 
00046 
00047         virtual TK_Status compute_advanced (BStreamFileToolkit & tk) alter;
00048         virtual TK_Status write_advanced (BStreamFileToolkit & tk) alter;
00049         virtual TK_Status write_uncompressed_points (BStreamFileToolkit & tk) alter;
00050         virtual TK_Status write_uncompressed_faces (BStreamFileToolkit & tk) alter;
00051         virtual TK_Status write_bounding (BStreamFileToolkit & tk) alter;
00052         TK_Status write_null (BStreamFileToolkit & tk) alter;
00053 
00054 
00055 
00056 
00057 
00058         virtual TK_Status write_advanced_ascii (BStreamFileToolkit & tk) alter;
00059         virtual TK_Status write_uncompressed_points_ascii (BStreamFileToolkit & tk) alter;
00060         virtual TK_Status write_uncompressed_faces_ascii (BStreamFileToolkit & tk) alter;
00061         virtual TK_Status write_bounding_ascii (BStreamFileToolkit & tk) alter;
00062         TK_Status write_null_ascii (BStreamFileToolkit & tk) alter;
00063         TK_Status compute_advanced_ascii(BStreamFileToolkit & tk) alter ;
00064 
00065 
00066     protected:
00067         int             m_substage;     
00068         unsigned char   m_compression_scheme; 
00069         int             m_flistlen;      
00070         int             *m_flist;        
00071         char            m_lodlevel;      
00110         TK_Status SetFaces( int length, int const *face_list = 0 ) alter;
00112         TK_Status SetLodLevel( int level ) alter { m_lodlevel = (char)level; return TK_Normal; };
00114         int const *GetFaces() const { return m_flist; };
00116         int GetFacesLength() const { return m_flistlen; };
00118         int GetLodLevel() const { return m_lodlevel; };
00121         TK_Status EnumerateEdges(); 
00122 
00123     public:
00124         TK_Shell ();
00125         ~TK_Shell ();
00126 
00128         void    set_flist (int count, int const * list = 0) alter { SetFaces( count, list ); };
00129 
00130         TK_Status   Read (BStreamFileToolkit & tk) alter;
00131         TK_Status   Write (BStreamFileToolkit & tk) alter;
00132 
00133 
00134         TK_Status   ReadAscii (BStreamFileToolkit & tk) alter; 
00135         TK_Status   WriteAscii(BStreamFileToolkit & tk) alter; 
00136 
00137         void        Reset () alter;
00138 }; //end declaration of class TK_Shell
00139 
00140 
00141 
00142 /*
00143  * SOME UTILITY MACROS
00144  */
00145 #define SEMI_PROTECT(x) do {x} while (0)
00146 
00147 //warning: implicitly references the BStreamFileToolkit &, tk
00148 #define ENSURE_ALLOCATED(var,type,count) SEMI_PROTECT( \
00149     delete [] (var); \
00150     (var) = new type[(count)]; \
00151     if( (var) == 0 ) \
00152         return tk.Error(); \
00153 )
00154 
00155 //warning: implicitly references the BStreamFileToolkit &, tk
00156 #define ENSURE_ALLOCATED_CLEAR(var,type,count) SEMI_PROTECT( \
00157     delete [] (var); \
00158     (var) = new type[(count)]; \
00159     if( (var) == 0 ) \
00160         return tk.Error(); \
00161     memset (var, 0, (count) * sizeof(type)); \
00162 )
00163 
00164 #endif