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

PageMagickTransition Class Reference

Filter implementation. More...

Inheritance diagram for PageMagickTransition:

Inheritance graph
[legend]
Collaboration diagram for PageMagickTransition:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void Initialise (PageMagickInfo *info)
void PreGetFrame (int keyPosition)
void GetFrame (uint8_t *pixels, int i)
void Close ()

Private Attributes

PageMagickInfoinfo
GDKImageTransitiontransition
uint8_t keyFrame [720 *576 *3]
bool animateKey
int direction
double start_position
double end_position

Detailed Description

Filter implementation.

Definition at line 969 of file page_magick.cc.


Member Function Documentation

void PageMagickTransition::Close  )  [virtual]
 

Reimplemented from PageMagickImage.

Definition at line 1060 of file page_magick.cc.

References PageMagickInfo::begin, PageMagickInfo::end, PageMagickInfo::GetCommon(), PageMagickInfo::increment, and info.

01061 {
01062     if ( this->animateKey )
01063     {
01064         cerr << ">>> Deleting " << info->begin << " << " << info->begin + ( info->end - info->begin ) / info->increment << endl;
01065         info->GetCommon() ->getPlayList() ->Delete( info->begin, ( int ) ( info->begin + ( info->end - info->begin ) / info->increment ) );
01066     }
01067 }

void PageMagickTransition::GetFrame uint8_t *  pixels,
int  i
[virtual]
 

Reimplemented from PageMagickImage.

Definition at line 1051 of file page_magick.cc.

References direction, end_position, ImageTransition::GetFrame(), PageMagickInfo::height, info, keyFrame, transition, and PageMagickInfo::width.

01052 {
01053     // Sanity checks ...
01054     if ( !transition )
01055         throw _( "Invalid image transition selected" );
01056 
01057     transition->GetFrame( pixels, keyFrame, info->width, info->height, time_info( *info, i, start_position, end_position ).position(), time_info( *info, i, start_position, end_position ).frame_delta(), direction == 1 );
01058 }

void PageMagickTransition::Initialise PageMagickInfo info  )  [virtual]
 

Reimplemented from PageMagickImage.

Definition at line 986 of file page_magick.cc.

References animateKey, common, direction, end_position, PageMagickInfo::GetAnteFrame(), PageMagickInfo::GetCommon(), KinoCommon::getPageMagick(), PageMagickInfo::GetPostFrame(), PageMagickInfo::height, GDKImageTransition::InterpretWidgets(), keyFrame, lookup_widget(), and transition.

00987 {
00988     this->info = info;
00989     this->animateKey = false;
00990 
00991     transition = info->GetCommon() ->getPageMagick() ->GetImageTransition();
00992     if ( transition != NULL )
00993         transition->InterpretWidgets( GTK_BIN( lookup_widget( common->getPageMagick() ->window, "frame_magick_image_transition" ) ) );
00994     else
00995         throw _( "Invalid image transition selected" );
00996 
00997     GtkToggleButton *toggle = GTK_TOGGLE_BUTTON( lookup_widget( common->getPageMagick() ->window, "radiobutton_magick_transition_colour" ) );
00998 
00999     if ( gtk_toggle_button_get_active( toggle ) )
01000     {
01001         GdkColor color;
01002         GtkColorButton * colorButton = GTK_COLOR_BUTTON( lookup_widget( info->GetCommon() ->getPageMagick() ->window, "colorpicker_magick_transition" ) );
01003         gtk_color_button_get_color( colorButton, &color );
01004         
01005         for ( uint8_t * p = keyFrame; p < ( keyFrame + info->width * info->height * 3 ); )
01006         {
01007             *p ++ = color.red >> 8;
01008             *p ++ = color.green >> 8;
01009             *p ++ = color.blue >> 8;
01010         }
01011     }
01012     else
01013     {
01014         GtkMenu *menu = GTK_MENU( gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( info->GetCommon() ->getPageMagick() ->window, "optionmenu_magick_transition_frame" ) ) ) );
01015         GtkWidget *active_item = gtk_menu_get_active( menu );
01016         switch ( g_list_index ( GTK_MENU_SHELL ( menu ) ->children, active_item ) )
01017         {
01018         case 1:
01019             info->GetPostFrame( keyFrame );
01020             break;
01021         case 2:
01022             info->GetAnteFrame( keyFrame );
01023             break;
01024         case 0:
01025             animateKey = true;
01026             break;
01027         }
01028     }
01029 
01030     GtkMenu *menu = GTK_MENU( gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( info->GetCommon() ->getPageMagick() ->window, "optionmenu_direction" ) ) ) );
01031     GtkWidget *active_item = gtk_menu_get_active( menu );
01032     direction = g_list_index ( GTK_MENU_SHELL ( menu ) ->children, active_item );
01033 
01034     GtkRange *range = GTK_RANGE( lookup_widget( info->GetCommon() ->getPageMagick() ->window, "hscale_transition_start" ) );
01035     start_position = range->adjustment->value;
01036     range = GTK_RANGE( lookup_widget( info->GetCommon() ->getPageMagick() ->window, "hscale_transition_end" ) );
01037     end_position = range->adjustment->value;
01038 }

void PageMagickTransition::PreGetFrame int  keyPosition  )  [virtual]
 

Reimplemented from PageMagickImage.

Definition at line 1040 of file page_magick.cc.

References animateKey, PageMagickInfo::end, PageMagickInfo::GetPostFrame(), info, keyFrame, and PageMagickInfo::postFrame.

01041 {
01042     if ( animateKey )
01043     {
01044         if ( keyPosition > -1 )
01045             info->postFrame = info->end + keyPosition;
01046         info->GetPostFrame( keyFrame );
01047     }
01048     info->postFrame ++;
01049 }


Member Data Documentation

bool PageMagickTransition::animateKey [private]
 

Definition at line 975 of file page_magick.cc.

Referenced by Initialise(), and PreGetFrame().

int PageMagickTransition::direction [private]
 

Definition at line 976 of file page_magick.cc.

Referenced by GetFrame(), and Initialise().

double PageMagickTransition::end_position [private]
 

Definition at line 978 of file page_magick.cc.

Referenced by GetFrame(), and Initialise().

PageMagickInfo* PageMagickTransition::info [private]
 

Definition at line 972 of file page_magick.cc.

Referenced by Close(), GetFrame(), and PreGetFrame().

uint8_t PageMagickTransition::keyFrame[720 *576 *3] [private]
 

Definition at line 974 of file page_magick.cc.

Referenced by GetFrame(), Initialise(), and PreGetFrame().

double PageMagickTransition::start_position [private]
 

Definition at line 977 of file page_magick.cc.

GDKImageTransition* PageMagickTransition::transition [private]
 

Definition at line 973 of file page_magick.cc.

Referenced by GetFrame(), and Initialise().


The documentation for this class was generated from the following file:
Generated on Sun Mar 11 22:13:20 2007 for Kino by  doxygen 1.4.2