00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _IMAGE_TRANSITIONS_H_
00022 #define _IMAGE_TRANSITIONS_H_
00023
00024
00025
00026 #include <vector>
00027 using std::vector;
00028
00029
00030
00031 #include <stdint.h>
00032 #include <gtk/gtk.h>
00033
00043 class ImageTransition
00044 {
00045 public:
00046 virtual ~ImageTransition() {}
00047 virtual char *GetDescription( ) const = 0;
00048 virtual void GetFrame( uint8_t *io, uint8_t *mesh, int width, int height, double position, double frame_delta, bool reverse ) = 0;
00049 virtual bool IsUsable( ) { return true; }
00050 };
00051
00067 class GDKImageTransition : public ImageTransition
00068 {
00069 public:
00070 virtual ~GDKImageTransition() {}
00071 virtual void AttachWidgets( GtkBin *bin ) { }
00072 virtual void DetachWidgets( GtkBin *bin ) { }
00073 virtual void InterpretWidgets( GtkBin *bin ) { }
00074 };
00075
00082 class GDKImageTransitionAdapter : public GDKImageTransition
00083 {
00084 private:
00085 ImageTransition *transition;
00086
00087 public:
00088 GDKImageTransitionAdapter( ImageTransition *transition ) { this->transition = transition; }
00089 virtual ~GDKImageTransitionAdapter( ) { delete transition; }
00090 char *GetDescription( ) const { return this->transition->GetDescription( ); }
00091 void GetFrame( uint8_t *io, uint8_t *mesh, int width, int height, double position, double frame_delta, bool reverse )
00092 {
00093 return this->transition->GetFrame( io, mesh, width, height, position, frame_delta, reverse );
00094 }
00095 };
00096
00107 class GDKImageTransitionRepository
00108 {
00109 private:
00110 vector <GDKImageTransition *> transitions;
00111 GDKImageTransition *selected_transition;
00112 GtkOptionMenu *menu;
00113 GtkBin *container;
00114
00115 public:
00116 GDKImageTransitionRepository();
00117 ~GDKImageTransitionRepository();
00118 void Register( GDKImageTransition *transition );
00119 void Initialise( GtkOptionMenu *menu, GtkBin *container );
00120 GDKImageTransition *Get( ) const;
00121 void SelectionChange( );
00122 };
00123
00124 #endif