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

ImageTransitionBarnDoorWipe Class Reference

Barn Door transition. More...

Inheritance diagram for ImageTransitionBarnDoorWipe:

Inheritance graph
[legend]
Collaboration diagram for ImageTransitionBarnDoorWipe:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ImageTransitionBarnDoorWipe ()
virtual ~ImageTransitionBarnDoorWipe ()
char * GetDescription () const
void VerticalOpen (uint8_t *io, uint8_t *mesh, int width, int height, double position)
void VerticalClose (uint8_t *io, uint8_t *mesh, int width, int height, double position)
void HorizontalOpen (uint8_t *io, uint8_t *mesh, int width, int height, double position)
void HorizontalClose (uint8_t *io, uint8_t *mesh, int width, int height, double position)
void GetFrame (uint8_t *pixels, uint8_t *mesh, int width, int height, double position, double frame_delta, bool reverse)
void AttachWidgets (GtkBin *bin)
void DetachWidgets (GtkBin *bin)

Private Attributes

GtkWidget * window
int type

Detailed Description

Barn Door transition.

Definition at line 347 of file image_transitions.cc.


Constructor & Destructor Documentation

ImageTransitionBarnDoorWipe::ImageTransitionBarnDoorWipe  )  [inline]
 

Definition at line 354 of file image_transitions.cc.

References lookup_widget(), magick_glade, Repaint(), and window.

00355     {
00356         window = glade_xml_get_widget( magick_glade, "image_transition_barndoor" );
00357         GtkWidget* widget = lookup_widget( window, "optionmenu_door" );
00358         g_signal_connect( G_OBJECT( widget ), "changed", G_CALLBACK( Repaint ), 0 );
00359     }

virtual ImageTransitionBarnDoorWipe::~ImageTransitionBarnDoorWipe  )  [inline, virtual]
 

Definition at line 361 of file image_transitions.cc.

References window.

00362     {
00363         gtk_widget_destroy( window );
00364     }


Member Function Documentation

void ImageTransitionBarnDoorWipe::AttachWidgets GtkBin *  bin  )  [inline, virtual]
 

Reimplemented from GDKImageTransition.

Definition at line 434 of file image_transitions.cc.

References window.

00435     {
00436         gtk_widget_reparent( ( GTK_BIN( window ) ) ->child, GTK_WIDGET( bin ) );
00437     }

void ImageTransitionBarnDoorWipe::DetachWidgets GtkBin *  bin  )  [inline, virtual]
 

Reimplemented from GDKImageTransition.

Definition at line 439 of file image_transitions.cc.

References window.

00440     {
00441         gtk_widget_reparent( ( GTK_BIN( bin ) ) ->child, GTK_WIDGET( window ) );
00442     }

char* ImageTransitionBarnDoorWipe::GetDescription  )  const [inline, virtual]
 

Implements ImageTransition.

Definition at line 366 of file image_transitions.cc.

00367     {
00368         return _( "Barn Door Wipe" );
00369     }

void ImageTransitionBarnDoorWipe::GetFrame uint8_t *  pixels,
uint8_t *  mesh,
int  width,
int  height,
double  position,
double  frame_delta,
bool  reverse
[inline, virtual]
 

Implements ImageTransition.

Definition at line 418 of file image_transitions.cc.

References HorizontalClose(), HorizontalOpen(), lookup_widget(), type, VerticalClose(), VerticalOpen(), and window.

00419     {
00420         GtkMenu * menu = GTK_MENU( gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( window, "optionmenu_door" ) ) ) );
00421         GtkWidget *active_item = gtk_menu_get_active( menu );
00422         type = g_list_index ( GTK_MENU_SHELL ( menu ) ->children, active_item );
00423         
00424         if ( type == 0 && !reverse )
00425             VerticalOpen( pixels, mesh, width, height, position );
00426         else if ( type == 0 && reverse )
00427             VerticalClose( pixels, mesh, width, height, position );
00428         else if ( type == 1 && !reverse )
00429             HorizontalOpen( pixels, mesh, width, height, position );
00430         else if ( type == 1 && reverse )
00431             HorizontalClose( pixels, mesh, width, height, position );
00432     }

void ImageTransitionBarnDoorWipe::HorizontalClose uint8_t *  io,
uint8_t *  mesh,
int  width,
int  height,
double  position
[inline]
 

Definition at line 404 of file image_transitions.cc.

Referenced by GetFrame().

00405     {
00406         int roll_height = ( int ) ( height * position ) / 2;
00407         for ( int y = 0; y < roll_height; y ++ )
00408         {
00409             uint8_t *k = mesh + y * width * 3;
00410             uint8_t *p = io + y * width * 3;
00411             memcpy( p, k, width * 3 );
00412             k = mesh + ( height - y - 1 ) * width * 3;
00413             p = io + ( height - y - 1 ) * width * 3;
00414             memcpy( p, k, width * 3 );
00415         }
00416     }

void ImageTransitionBarnDoorWipe::HorizontalOpen uint8_t *  io,
uint8_t *  mesh,
int  width,
int  height,
double  position
[inline]
 

Definition at line 393 of file image_transitions.cc.

Referenced by GetFrame().

00394     {
00395         int roll_height = ( int ) ( height * position ) / 2;
00396         for ( int y = height / 2 - roll_height; y < height / 2 + roll_height; y ++ )
00397         {
00398             uint8_t *k = mesh + y * width * 3;
00399             uint8_t *p = io + y * width * 3;
00400             memcpy( p, k, width * 3 );
00401         }
00402     }

void ImageTransitionBarnDoorWipe::VerticalClose uint8_t *  io,
uint8_t *  mesh,
int  width,
int  height,
double  position
[inline]
 

Definition at line 382 of file image_transitions.cc.

Referenced by GetFrame().

00383     {
00384         int roll_width = ( width - ( int ) ( width * position ) ) / 2;
00385         for ( int y = 0; y < height; y ++ )
00386         {
00387             uint8_t *k = mesh + y * width * 3 + ( width * 3 / 2 ) - roll_width * 3;
00388             uint8_t *p = io + y * width * 3 + ( width * 3 / 2 ) - roll_width * 3;
00389             memcpy( p, k, roll_width * 3 * 2 );
00390         }
00391     }

void ImageTransitionBarnDoorWipe::VerticalOpen uint8_t *  io,
uint8_t *  mesh,
int  width,
int  height,
double  position
[inline]
 

Definition at line 371 of file image_transitions.cc.

Referenced by GetFrame().

00372     {
00373         int roll_width = ( int ) ( width * position ) / 2;
00374         for ( int y = 0; y < height; y ++ )
00375         {
00376             uint8_t *k = mesh + y * width * 3 + ( width * 3 / 2 ) - roll_width * 3;
00377             uint8_t *p = io + y * width * 3 + ( width * 3 / 2 ) - roll_width * 3;
00378             memcpy( p, k, roll_width * 3 * 2 );
00379         }
00380     }


Member Data Documentation

int ImageTransitionBarnDoorWipe::type [private]
 

Definition at line 351 of file image_transitions.cc.

Referenced by GetFrame().

GtkWidget* ImageTransitionBarnDoorWipe::window [private]
 

Definition at line 350 of file image_transitions.cc.

Referenced by AttachWidgets(), DetachWidgets(), GetFrame(), ImageTransitionBarnDoorWipe(), and ~ImageTransitionBarnDoorWipe().


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