CXSIFilter.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Dominic Laflamme
00004 //
00005 // (c) Copyright 2001 Avid Technology, Inc. . All rights reserved.
00006 //
00007 //
00008 // @doc
00009 //
00010 // @module      CXSIFilter.h | Main header file for CXSIFilter implementation
00011 //***************************************************************************************
00012 
00013 /****************************************************************************************
00014 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00015 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 
00016 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00017 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00018 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00019 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 
00020  
00021 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00022 
00023 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00024 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00025 trademarks contained herein are the property of their respective owners. 
00026 ****************************************************************************************/
00027 #ifndef _CXSIFILTER_H_
00028 #define _CXSIFILTER_H_
00029 
00030 #include <SIBCUtil.h>
00031 #include <SIBCString.h>
00032 
00033 #define SI_MEMORY_FILE_NAME     "3DMEMORYBUFFER"
00034 
00036 
00041 class CXSIFilter
00042 {
00043 public:
00044 
00048     CXSIFilter();
00052     virtual ~CXSIFilter();
00053 
00054 
00060     void            SetName ( const CSIBCString & in_szName );
00061 
00065     CSIBCString     GetName () ;
00066 
00070     void            SetID ( const CSIBCString & in_szID );
00074     CSIBCString&    GetID () ;
00075 
00079     virtual void            SetHeader ( CSIBCString in_szHeader );
00080 
00084     CSIBCString     GetHeader () ;
00089     virtual void    WriteHeader();
00090 
00095     virtual int Open ( CSIBCString in_szFilename, _SI_FILE_MODE in_Mode );
00098     virtual int Close ();
00099 
00100 
00106     virtual int Read ( SI_Char * out_pBuffer, SI_Long in_lSize );
00112     virtual int Write( SI_Char * in_pBuffer,  SI_Long in_lSize );
00113 
00117     virtual int Eof();
00118 
00122     virtual int Tell();
00123 
00127     void        SetSubFilter ( CXSIFilter *in_pSub ) { m_pSubFilter = in_pSub;} ;
00131     CXSIFilter *GetSubFilter () { return m_pSubFilter ; };
00132 
00133     int FillBuffer ( CSIBCString in_szFilename );
00134 protected:
00135 
00136     _SI_FILE    m_pStream;
00137     CSIBCString m_szHeader;
00138     CSIBCString m_szName;
00139     CSIBCString m_szID;
00140     CXSIFilter  *m_pSubFilter;
00141     SI_Long     m_FileSize;
00142     SI_Char     *m_pBuffer;
00143     SI_Long     m_lSubFilterPos;
00144     SI_Bool     m_bEof;
00145 
00146 };
00147 
00148 #endif