Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

BOpcodeShell.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 #ifndef BBINFILETK_SHELL
00011 #define BBINFILETK_SHELL
00012 
00013 #include "BOpcodeHandler.h"
00014 #include "BPolyhedron.h"
00015 
00016 
00017 
00019 
00025 class BBINFILETK_API TK_Shell : public TK_Polyhedron {
00026     private:
00027         virtual TK_Status read_advanced (BStreamFileToolkit & tk);
00028         virtual TK_Status read_uncompressed_points (BStreamFileToolkit & tk);
00029         virtual TK_Status read_uncompressed_faces (BStreamFileToolkit & tk);
00030         virtual TK_Status read_bounding (BStreamFileToolkit & tk);
00031 
00032 
00033 
00034 
00035         virtual TK_Status read_advanced_ascii (BStreamFileToolkit & tk);
00036         virtual TK_Status read_uncompressed_points_ascii (BStreamFileToolkit & tk);
00037         virtual TK_Status read_uncompressed_faces_ascii (BStreamFileToolkit & tk);
00038         virtual TK_Status read_bounding_ascii (BStreamFileToolkit & tk);
00039 
00040 
00041         virtual TK_Status compute_advanced (BStreamFileToolkit & tk);
00042         virtual TK_Status write_advanced (BStreamFileToolkit & tk);
00043         virtual TK_Status write_uncompressed_points (BStreamFileToolkit & tk);
00044         virtual TK_Status write_uncompressed_faces (BStreamFileToolkit & tk);
00045         virtual TK_Status write_bounding (BStreamFileToolkit & tk);
00046         TK_Status write_null (BStreamFileToolkit & tk);
00047 
00048 
00049 
00050 
00051 
00052         virtual TK_Status write_advanced_ascii (BStreamFileToolkit & tk);
00053         virtual TK_Status write_uncompressed_points_ascii (BStreamFileToolkit & tk);
00054         virtual TK_Status write_uncompressed_faces_ascii (BStreamFileToolkit & tk);
00055         virtual TK_Status write_bounding_ascii (BStreamFileToolkit & tk);
00056         TK_Status write_null_ascii (BStreamFileToolkit & tk);
00057         TK_Status compute_advanced_ascii(BStreamFileToolkit & tk);
00058 
00059 
00060     protected:
00061         int             m_substage;     
00062         unsigned char   m_compression_scheme; 
00063         int             m_flistlen;      
00064         int             *m_flist;        
00065         char            m_lodlevel;      
00104         TK_Status SetFaces( int length, int const *face_list = 0 );
00106         TK_Status SetLodLevel( int level )       { m_lodlevel = (char)level; return TK_Normal; };
00108         int const *GetFaces() const { return m_flist; };
00110         int GetFacesLength() const { return m_flistlen; };
00112         int GetLodLevel() const { return m_lodlevel; };
00115         TK_Status EnumerateEdges(); 
00116 
00117     public:
00118         TK_Shell ();
00119         ~TK_Shell ();
00120 
00122         void    set_flist (int count, int const * list = 0)       { SetFaces( count, list ); };
00123 
00124         TK_Status   Read (BStreamFileToolkit & tk);
00125         TK_Status   Write (BStreamFileToolkit & tk);
00126 
00127 
00128         TK_Status   ReadAscii (BStreamFileToolkit & tk); 
00129         TK_Status   WriteAscii(BStreamFileToolkit & tk); 
00130 
00131         void        Reset ();
00132 }; //end declaration of class TK_Shell
00133 
00134 
00135 
00136 /*
00137  * SOME UTILITY MACROS
00138  */
00139 #define SEMI_PROTECT(x) do {x} while (0)
00140 
00141 //warning: implicitly references the BStreamFileToolkit &, tk
00142 #define ENSURE_ALLOCATED(var,type,count) SEMI_PROTECT( \
00143     if (count > 0) { \
00144         BSTREAM_ALLOC_ARRAY(var, count, type); \
00145         if( (var) == 0 ) \
00146             return tk.Error(); \
00147     } \
00148 )
00149 
00150 //warning: implicitly references the BStreamFileToolkit &, tk
00151 #define ENSURE_ALLOCATED_CLEAR(var,type,count) SEMI_PROTECT( \
00152     BSTREAM_ALLOC_ARRAY(var, count, type); \
00153     if( (var) == 0 ) \
00154         return tk.Error(); \
00155     memset (var, 0, (count) * sizeof(type)); \
00156 )
00157 
00158 #endif