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

ImageCreateGradiate Class Reference

Create a number of images that from gradiated colours. More...

Inheritance diagram for ImageCreateGradiate:

Inheritance graph
[legend]
Collaboration diagram for ImageCreateGradiate:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ImageCreateGradiate ()
virtual ~ImageCreateGradiate ()
char * GetDescription () const
void LeftMiddle (uint8_t *pixels, int width, int height, double position)
void LeftRight (uint8_t *pixels, int width, int height, double position)
void TopBottom (uint8_t *pixels, int width, int height, double position)
void TopMiddle (uint8_t *pixels, int width, int height, double position)
void CreateFrame (uint8_t *pixels, int width, int height, double position, double frame_delta)
void AttachWidgets (GtkBin *bin)
void DetachWidgets (GtkBin *bin)
void InterpretWidgets (GtkBin *bin)
int GetNumberOfFrames ()

Private Attributes

GtkWidget * window
GdkColor start_left
GdkColor start_right
GdkColor end_left
GdkColor end_right
GdkColor start
GdkColor end
int type
int frames

Detailed Description

Create a number of images that from gradiated colours.

Definition at line 310 of file image_create.cc.


Constructor & Destructor Documentation

ImageCreateGradiate::ImageCreateGradiate  )  [inline]
 

Definition at line 319 of file image_create.cc.

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

00320     {
00321         window = glade_xml_get_widget( magick_glade, "image_create_gradiate" );
00322         start_right.red = start_right.green = start_right.blue = 0;
00323         GtkWidget* widget = lookup_widget( window, "colorpicker_start_right" );
00324         gtk_color_button_set_color( GTK_COLOR_BUTTON( widget ), &start_right );
00325         g_signal_connect( G_OBJECT( widget ), "color-set", G_CALLBACK( Repaint ), 0 );
00326 
00327         end_right.red = end_right.green = end_right.blue = 0;
00328         widget = lookup_widget( window, "colorpicker_end_right" );
00329         gtk_color_button_set_color( GTK_COLOR_BUTTON( widget ), &end_right );
00330         g_signal_connect( G_OBJECT( widget ), "color-set", G_CALLBACK( Repaint ), 0 );
00331 
00332         widget = lookup_widget( window, "optionmenu_gradiate" );
00333         g_signal_connect( G_OBJECT( widget ), "changed", G_CALLBACK( Repaint ), 0 );
00334         widget = lookup_widget( window, "colorpicker_start_left" );
00335         g_signal_connect( G_OBJECT( widget ), "color-set", G_CALLBACK( Repaint ), 0 );
00336         widget = lookup_widget( window, "colorpicker_end_left" );
00337         g_signal_connect( G_OBJECT( widget ), "color-set", G_CALLBACK( Repaint ), 0 );
00338     }

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

Definition at line 340 of file image_create.cc.

References window.

00341     {
00342         gtk_widget_destroy( window );
00343     }


Member Function Documentation

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

Reimplemented from GDKImageCreate.

Definition at line 458 of file image_create.cc.

References window.

00459     {
00460         gtk_widget_reparent( ( GTK_BIN( window ) ) ->child, GTK_WIDGET( bin ) );
00461     }

void ImageCreateGradiate::CreateFrame uint8_t *  pixels,
int  width,
int  height,
double  position,
double  frame_delta
[inline, virtual]
 

Implements ImageCreate.

Definition at line 438 of file image_create.cc.

References end, end_left, end_right, LeftMiddle(), LeftRight(), start, start_left, start_right, TopBottom(), TopMiddle(), and type.

00439     {
00440         start.red = start_left.red + guint16( ( end_left.red - start_left.red ) * position );
00441         start.green = start_left.green + guint16( ( end_left.green - start_left.green ) * position );
00442         start.blue = start_left.blue + guint16( ( end_left.blue - start_left.blue ) * position );
00443 
00444         end.red = start_right.red + guint16( ( end_right.red - start_right.red ) * position );
00445         end.green = start_right.green + guint16( ( end_right.green - start_right.green ) * position );
00446         end.blue = start_right.blue + guint16( ( end_right.blue - start_right.blue ) * position );
00447 
00448         if ( type == 0 )
00449             LeftMiddle( pixels, width, height, position );
00450         else if ( type == 1 )
00451             LeftRight( pixels, width, height, position );
00452         else if ( type == 2 )
00453             TopBottom( pixels, width, height, position );
00454         else if ( type == 3 )
00455             TopMiddle( pixels, width, height, position );
00456     }

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

Reimplemented from GDKImageCreate.

Definition at line 463 of file image_create.cc.

References window.

00464     {
00465         gtk_widget_reparent( ( GTK_BIN( bin ) ) ->child, GTK_WIDGET( window ) );
00466     }

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

Implements ImageCreate.

Definition at line 345 of file image_create.cc.

00346     {
00347         return _( "Gradient" );
00348     }

int ImageCreateGradiate::GetNumberOfFrames  )  [inline, virtual]
 

Implements ImageCreate.

Definition at line 490 of file image_create.cc.

References frames.

00491     {
00492         return frames;
00493     }

void ImageCreateGradiate::InterpretWidgets GtkBin *  bin  )  [inline, virtual]
 

Reimplemented from GDKImageCreate.

Definition at line 468 of file image_create.cc.

References end_left, end_right, frames, lookup_widget(), start_left, start_right, type, and window.

00469     {
00470         if ( bin->child != NULL )
00471         {
00472             GtkMenu * menu = GTK_MENU( gtk_option_menu_get_menu( GTK_OPTION_MENU( lookup_widget( window, "optionmenu_gradiate" ) ) ) );
00473             GtkWidget *active_item = gtk_menu_get_active( menu );
00474             type = g_list_index ( GTK_MENU_SHELL ( menu ) ->children, active_item );
00475     
00476             GtkEntry *entry = GTK_ENTRY( lookup_widget( window, "spinbutton_frames" ) );
00477             frames = atoi( gtk_entry_get_text( entry ) );
00478     
00479             gtk_color_button_get_color( GTK_COLOR_BUTTON( lookup_widget( window, "colorpicker_start_left" ) ),
00480                                     &start_left );
00481             gtk_color_button_get_color( GTK_COLOR_BUTTON( lookup_widget( window, "colorpicker_start_right" ) ),
00482                                     &start_right );
00483             gtk_color_button_get_color( GTK_COLOR_BUTTON( lookup_widget( window, "colorpicker_end_left" ) ),
00484                                     &end_left );
00485             gtk_color_button_get_color( GTK_COLOR_BUTTON( lookup_widget( window, "colorpicker_end_right" ) ),
00486                                     &end_right );
00487         }
00488     }

void ImageCreateGradiate::LeftMiddle uint8_t *  pixels,
int  width,
int  height,
double  position
[inline]
 

Definition at line 350 of file image_create.cc.

References end, and start.

Referenced by CreateFrame().

00351     {
00352         double rr = ( double ) ( end.red - start.red ) / ( double ) ( width ) * 2;
00353         double rg = ( double ) ( end.green - start.green ) / ( double ) ( width ) * 2;
00354         double rb = ( double ) ( end.blue - start.blue ) / ( double ) ( width ) * 2;
00355         uint8_t *p = pixels;
00356         for ( int y = 0; y < height; y ++ )
00357         {
00358             for ( int x = 0; x < width; x ++ )
00359             {
00360                 if ( x < width / 2 )
00361                 {
00362                     *p ++ = guint16( start.red + rr * x ) >> 8;
00363                     *p ++ = guint16( start.green + rg * x ) >> 8;
00364                     *p ++ = guint16( start.blue + rb * x ) >> 8;
00365                 }
00366                 else
00367                 {
00368                     int o = width / 2 - ( x - width / 2 );
00369                     *p ++ = guint16( start.red + rr * o ) >> 8;
00370                     *p ++ = guint16( start.green + rg * o ) >> 8;
00371                     *p ++ = guint16( start.blue + rb * o ) >> 8;
00372                 }
00373             }
00374         }
00375     }

void ImageCreateGradiate::LeftRight uint8_t *  pixels,
int  width,
int  height,
double  position
[inline]
 

Definition at line 377 of file image_create.cc.

References end, and start.

Referenced by CreateFrame().

00378     {
00379         double rr = ( double ) ( end.red - start.red ) / ( double ) ( width );
00380         double rg = ( double ) ( end.green - start.green ) / ( double ) ( width );
00381         double rb = ( double ) ( end.blue - start.blue ) / ( double ) ( width );
00382         uint8_t *p = pixels;
00383         for ( int y = 0; y < height; y ++ )
00384         {
00385             for ( int x = 0; x < width; x ++ )
00386             {
00387                 *p ++ = guint16( start.red + rr * x ) >> 8;
00388                 *p ++ = guint16( start.green + rg * x ) >> 8;
00389                 *p ++ = guint16( start.blue + rb * x ) >> 8;
00390             }
00391         }
00392     }

void ImageCreateGradiate::TopBottom uint8_t *  pixels,
int  width,
int  height,
double  position
[inline]
 

Definition at line 394 of file image_create.cc.

References end, and start.

Referenced by CreateFrame().

00395     {
00396         double rr = ( double ) ( end.red - start.red ) / ( double ) ( height );
00397         double rg = ( double ) ( end.green - start.green ) / ( double ) ( height );
00398         double rb = ( double ) ( end.blue - start.blue ) / ( double ) ( height );
00399         uint8_t *p = pixels;
00400         for ( int y = 0; y < height; y ++ )
00401         {
00402             for ( int x = 0; x < width; x ++ )
00403             {
00404                 *p ++ = guint16( start.red + rr * y ) >> 8;
00405                 *p ++ = guint16( start.green + rg * y ) >> 8;
00406                 *p ++ = guint16( start.blue + rb * y ) >> 8;
00407             }
00408         }
00409     }

void ImageCreateGradiate::TopMiddle uint8_t *  pixels,
int  width,
int  height,
double  position
[inline]
 

Definition at line 411 of file image_create.cc.

References end, and start.

Referenced by CreateFrame().

00412     {
00413         double rr = ( double ) ( end.red - start.red ) / ( double ) ( height ) * 2;
00414         double rg = ( double ) ( end.green - start.green ) / ( double ) ( height ) * 2;
00415         double rb = ( double ) ( end.blue - start.blue ) / ( double ) ( height ) * 2;
00416         uint8_t *p = pixels;
00417         for ( int y = 0; y < height; y ++ )
00418         {
00419             for ( int x = 0; x < width; x ++ )
00420             {
00421                 if ( y < height / 2 )
00422                 {
00423                     *p ++ = guint16( start.red + rr * y ) >> 8;
00424                     *p ++ = guint16( start.green + rg * y ) >> 8;
00425                     *p ++ = guint16( start.blue + rb * y ) >> 8;
00426                 }
00427                 else
00428                 {
00429                     int o = height / 2 - ( y - height / 2 );
00430                     *p ++ = guint16( start.red + rr * o ) >> 8;
00431                     *p ++ = guint16( start.green + rg * o ) >> 8;
00432                     *p ++ = guint16( start.blue + rb * o ) >> 8;
00433                 }
00434             }
00435         }
00436     }


Member Data Documentation

GdkColor ImageCreateGradiate::end [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), LeftMiddle(), LeftRight(), TopBottom(), and TopMiddle().

GdkColor ImageCreateGradiate::end_left [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), and InterpretWidgets().

GdkColor ImageCreateGradiate::end_right [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), ImageCreateGradiate(), and InterpretWidgets().

int ImageCreateGradiate::frames [private]
 

Definition at line 316 of file image_create.cc.

Referenced by GetNumberOfFrames(), and InterpretWidgets().

GdkColor ImageCreateGradiate::start [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), LeftMiddle(), LeftRight(), TopBottom(), and TopMiddle().

GdkColor ImageCreateGradiate::start_left [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), and InterpretWidgets().

GdkColor ImageCreateGradiate::start_right [private]
 

Definition at line 314 of file image_create.cc.

Referenced by CreateFrame(), ImageCreateGradiate(), and InterpretWidgets().

int ImageCreateGradiate::type [private]
 

Definition at line 315 of file image_create.cc.

Referenced by CreateFrame(), and InterpretWidgets().

GtkWidget* ImageCreateGradiate::window [private]
 

Definition at line 313 of file image_create.cc.

Referenced by AttachWidgets(), DetachWidgets(), ImageCreateGradiate(), InterpretWidgets(), and ~ImageCreateGradiate().


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