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

PageMagickCreate Class Reference

Implementation of the Create frame source. More...

Inheritance diagram for PageMagickCreate:

Inheritance graph
[legend]
Collaboration diagram for PageMagickCreate:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 PageMagickCreate ()
virtual ~PageMagickCreate ()
void Initialise (PageMagickInfo *)
void GetFrame (uint8_t *pixels, int16_t **audio, int i)
void GetFrame (uint8_t *pixels, int width, int height, int16_t **audio, int i)
virtual bool IsSynth ()

Private Attributes

PageMagickInfoinfo
uint8_t * image
GDKImageCreatecreator

Detailed Description

Implementation of the Create frame source.

Definition at line 861 of file page_magick.cc.


Constructor & Destructor Documentation

PageMagickCreate::PageMagickCreate  ) 
 

Definition at line 880 of file page_magick.cc.

References image.

00880                                    : image( NULL )
00881 {
00882     image = new uint8_t[ 720 * 576 * 3 ];
00883 }

PageMagickCreate::~PageMagickCreate  )  [virtual]
 

Definition at line 885 of file page_magick.cc.

References image.

00886 {
00887     delete[] image;
00888 }


Member Function Documentation

void PageMagickCreate::GetFrame uint8_t *  pixels,
int  width,
int  height,
int16_t **  audio,
int  i
[virtual]
 

Reimplemented from PageMagickFrames.

Definition at line 944 of file page_magick.cc.

References PageMagickInfo::channels, ImageCreate::CreateFrame(), creator, DV_AUDIO_MAX_SAMPLES, PageMagickInfo::frequency, image, info, and PageMagickInfo::samples_this_frame.

00945 {
00946     // Sanity checks ...
00947     if ( !creator )
00948         throw _( "Invalid image creator selected" );
00949 
00950     if ( pixels )
00951     {
00952         creator->CreateFrame( image, width, height, time_info( *info, i ).position(), time_info( *info, i ).frame_delta() );
00953         memcpy( pixels, image, width * height * 3 );
00954     }
00955 
00956     if ( audio )
00957     {
00958         for ( int i = 0; i < 4; i ++ )
00959             memset( audio[ i ], 0, 2 * DV_AUDIO_MAX_SAMPLES * sizeof( int16_t ) );
00960         GDKAudioImport *import = dynamic_cast <GDKAudioImport *>( creator );
00961         if ( import != NULL )
00962             import->CreateAudio( audio, &info->channels, &info->frequency, &info->samples_this_frame );
00963     }
00964 }

void PageMagickCreate::GetFrame uint8_t *  pixels,
int16_t **  audio,
int  i
[virtual]
 

Reimplemented from PageMagickFrames.

Definition at line 922 of file page_magick.cc.

References PageMagickInfo::channels, ImageCreate::CreateFrame(), creator, DV_AUDIO_MAX_SAMPLES, PageMagickInfo::frequency, PageMagickInfo::height, image, info, PageMagickInfo::samples_this_frame, and PageMagickInfo::width.

00923 {
00924     // Sanity checks ...
00925     if ( !creator )
00926         throw _( "Invalid image creator selected" );
00927 
00928     if ( pixels )
00929     {
00930         creator->CreateFrame( image, info->width, info->height, time_info( *info, i ).position(), time_info( *info, i ).frame_delta() );
00931         memcpy( pixels, image, info->width * info->height * 3 );
00932     }
00933 
00934     if ( audio )
00935     {
00936         for ( int i = 0; i < 4; i ++ )
00937             memset( audio[ i ], 0, 2 * DV_AUDIO_MAX_SAMPLES * sizeof( int16_t ) );
00938         GDKAudioImport *import = dynamic_cast <GDKAudioImport *>( creator );
00939         if ( import != NULL )
00940             import->CreateAudio( audio, &info->channels, &info->frequency, &info->samples_this_frame );
00941     }
00942 }

void PageMagickCreate::Initialise PageMagickInfo  )  [virtual]
 

Reimplemented from PageMagickFrames.

Definition at line 890 of file page_magick.cc.

References PageMagickInfo::begin, common, ImageCreate::CreatePAL(), creator, KinoCommon::g_currentFrame, PageMagickInfo::GetCommon(), ImageCreate::GetNumberOfFrames(), KinoCommon::getPageMagick(), KinoCommon::getPlayList(), PageMagickInfo::increment, GDKImageCreate::InterpretWidgets(), PageMagickInfo::isPAL, lookup_widget(), PageMagickInfo::reverse, PageMagickInfo::SetAnteFrame(), PageMagickInfo::SetBegin(), PageMagickInfo::SetEnd(), and PageMagickInfo::SetPostFrame().

00891 {
00892     this->info = info;
00893     // Get the start of the scene
00894     info->SetBegin( common->getPlayList()->FindStartOfScene( common->g_currentFrame ) );
00895     info->increment = 1;
00896     info->reverse = false;
00897     info->SetAnteFrame( info->begin - 1 );
00898     info->SetPostFrame( info->begin );
00899 
00900 /* Commented to simplify UI to always create before current scene
00901     GtkToggleButton *frameToggle = GTK_TOGGLE_BUTTON( lookup_widget( common->getPageMagick() ->window, "radiobutton_magick_create_before" ) );
00902     if ( gtk_toggle_button_get_active( frameToggle ) )
00903     {
00904         GtkEntry * spin = GTK_ENTRY( lookup_widget( common->getPageMagick() ->window, "spinbutton_magick_create_before" ) );
00905         info->begin = atoi( gtk_entry_get_text( spin ) );
00906     }
00907 */
00908 
00909     creator = info->GetCommon() ->getPageMagick() ->GetImageCreate();
00910     if ( creator != NULL )
00911     {
00912         creator->CreatePAL( info->isPAL );
00913         creator->InterpretWidgets( GTK_BIN( lookup_widget( common->getPageMagick() ->window, "frame_magick_frames_create" ) ) );
00914     }
00915     else
00916         throw _( "Invalid image creator selected" );
00917 
00918     // Indicate proper duration
00919     info->SetEnd( info->begin + creator->GetNumberOfFrames() - 1 );
00920 }

virtual bool PageMagickCreate::IsSynth  )  [inline, virtual]
 

Reimplemented from PageMagickFrames.

Definition at line 874 of file page_magick.cc.

00875     {
00876         return true;
00877     }


Member Data Documentation

GDKImageCreate* PageMagickCreate::creator [private]
 

Definition at line 866 of file page_magick.cc.

Referenced by GetFrame(), and Initialise().

uint8_t* PageMagickCreate::image [private]
 

Definition at line 865 of file page_magick.cc.

Referenced by GetFrame(), PageMagickCreate(), and ~PageMagickCreate().

PageMagickInfo* PageMagickCreate::info [private]
 

Definition at line 864 of file page_magick.cc.

Referenced by GetFrame().


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