Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

KeyC.h

00001 //-------------------------------------------------------------------------
00002 //
00003 // File:        KeyC.h
00004 // Desc:        Keyframe class.
00005 // Author:      memon <memon@inside.org>
00006 //
00007 //-------------------------------------------------------------------------
00008 //  Copyright (c) 2000-2002 Moppi Productions. All Rights Reserved.
00009 //  This file is part of Moppi Demopaja SDK. For conditions of 
00010 //  distribution and use, see the accompanying license.txt file.
00011 //  http://moppi.inside.org/demopaja/
00012 //-------------------------------------------------------------------------
00013 
00014 #ifndef __DEMOPAJA_KEYC_H__
00015 #define __DEMOPAJA_KEYC_H__
00016 
00017 
00018 #include "DataBlockI.h"
00019 #include "EditableI.h"
00020 #include "UndoC.h"
00021 #include "PajaTypes.h"
00022 #include <vector>
00023 #include "FileIO.h"
00024 #include "FileHandleC.h"
00025 
00026 namespace Composition {
00027 
00029 
00032     const PajaTypes::uint32     KEY_MAXCHANNELS = 4;
00033 
00035     enum KeyFlagsE {
00036         KEY_NOFLAGS =           0,
00037         KEY_SELECTED =          0x0001,     
00038         KEY_LINEAR =            0x0002,     
00039         KEY_SMOOTH =            0x0004,     
00040         KEY_HOLD =              0x0008,     
00041         KEY_FILE =              0x0010,     
00042     };
00043 
00044 
00046 
00054     class KeyC : public Edit::EditableI
00055     {
00056     public:
00058         static KeyC*                create_new();
00060         virtual Edit::DataBlockI*   create();
00062         virtual Edit::DataBlockI*   create( Edit::EditableI* pOriginal );
00064         virtual void                copy( Edit::EditableI* pEditable );
00066         virtual void                restore( Edit::EditableI* pEditable );
00067 
00069         virtual PajaTypes::int32    get_time();
00071         virtual void                set_time( PajaTypes::int32 i32Time );
00072 
00074 
00078         virtual void                set_flags( PajaTypes::int32 i32Flags );
00080         virtual void                add_flags( PajaTypes::int32 i32Flags );
00082         virtual void                del_flags( PajaTypes::int32 i32Flags );
00084         virtual void                toggle_flags( PajaTypes::int32 i32Flags );
00086         virtual PajaTypes::int32    get_flags();
00087 
00089         virtual PajaTypes::uint32   save( FileIO::SaveC* pSave );
00091         virtual PajaTypes::uint32   load( FileIO::LoadC* pLoad );
00092 
00093     protected:
00095         KeyC();
00097         KeyC( PajaTypes::int32 i32Time );
00099         KeyC( Edit::EditableI* pOriginal );
00101         virtual ~KeyC();
00102 
00103         PajaTypes::int32    m_i32Flags;
00104         PajaTypes::int32    m_i32Time;
00105     };
00106 
00107 
00109 
00115     class FloatKeyC : public KeyC
00116     {
00117     public:
00119         static FloatKeyC*           create_new();
00121         static FloatKeyC*           create_new( PajaTypes::int32 i32NumChannels );
00123         virtual Edit::DataBlockI*   create();
00125         virtual Edit::DataBlockI*   create( Edit::EditableI* pOriginal );
00127         virtual void                copy( Edit::EditableI* pEditable );
00129         virtual void                restore( Edit::EditableI* pEditable );
00130 
00132         virtual PajaTypes::float32  get_ease_in();
00134         virtual PajaTypes::float32  get_ease_out();
00136         virtual PajaTypes::float32  get_tens();
00138         virtual PajaTypes::float32  get_cont();
00140         virtual PajaTypes::float32  get_bias();
00142         virtual void                set_ease_in( PajaTypes::float32 );
00144         virtual void                set_ease_out( PajaTypes::float32 );
00146         virtual void                set_tens( PajaTypes::float32 );
00148         virtual void                set_cont( PajaTypes::float32 );
00150         virtual void                set_bias( PajaTypes::float32 );
00151 
00153 
00161         virtual void                get_value( PajaTypes::float32* pValues );
00163 
00173         virtual void                set_value( const PajaTypes::float32* pValues );
00174 
00177         virtual void                get_in_tan( PajaTypes::float32* pValues );
00180         virtual void                set_in_tan( const PajaTypes::float32* pValues );
00181 
00184         virtual void                get_out_tan( PajaTypes::float32* pValues );
00187         virtual void                set_out_tan( const PajaTypes::float32* pValues );
00188 
00190         virtual PajaTypes::uint32   save( FileIO::SaveC* pSave );
00192         virtual PajaTypes::uint32   load( FileIO::LoadC* pLoad );
00193 
00194     protected:
00196         FloatKeyC();
00198         FloatKeyC( PajaTypes::int32 i32Time );
00200         FloatKeyC( Edit::EditableI* pOriginal );
00202         virtual ~FloatKeyC();
00203 
00204         PajaTypes::float32* m_pValues;
00205         PajaTypes::int32    m_i32NumChannels;
00206         PajaTypes::float32  m_f32EaseIn, m_f32EaseOut;
00207         PajaTypes::float32  m_f32Tens, m_f32Cont, m_f32Bias;
00208     };
00209 
00210 
00212 
00230     class FileKeyC : public KeyC
00231     {
00232     public:
00234         static FileKeyC*            create_new();
00237         virtual Edit::DataBlockI*   create();
00239         virtual Edit::DataBlockI*   create( Edit::EditableI* pOriginal );
00241         virtual void                copy( Edit::EditableI* pEditable );
00243         virtual void                restore( Edit::EditableI* pEditable );
00244 
00246         virtual void                    set_file_handle( Import::FileHandleC* pHandle );
00248         virtual Import::FileHandleC*    get_file_handle();
00249         
00251         virtual void                set_time_scale( PajaTypes::float32 f32Scale );
00253         virtual PajaTypes::float32  get_time_scale() const;
00254 
00256         virtual void                set_time_offset( PajaTypes::int32 i32Offset );
00258         virtual PajaTypes::int32    get_time_offset() const;
00259 
00260 
00262         virtual PajaTypes::uint32   save( FileIO::SaveC* pSave );
00264         virtual PajaTypes::uint32   load( FileIO::LoadC* pLoad );
00265 
00266     protected:
00268         FileKeyC();
00270         FileKeyC( PajaTypes::int32 i32Time );
00272         FileKeyC( Edit::EditableI* pOriginal );
00274         virtual ~FileKeyC();
00275 
00276         PajaTypes::int32        m_i32TimeOffset;
00277         PajaTypes::float32      m_f32TimeScale;
00278         Import::FileHandleC*    m_pFileHandle;
00279     };
00280 
00281 
00282 };  // namespace Parameter
00283 
00284 #endif // __KEYC_H__

Moppi Demopaja SDK Documentation -- Copyright © 2000-2002 Moppi Productions