// -*- c++ -*-
//  Generated by gtkmmproc from ./../animator.gen_h -- DO NOT MODIFY!
#ifndef _GNOMEMM_ANIMATOR_H
#define _GNOMEMM_ANIMATOR_H

/* $Id: animator.gen_h,v 1.1 2000/08/29 18:36:29 kenelson Exp $ */


/* animator.gen_h
 *
 * Copyright (C) 1998-1999
 *
 * Copyright (C) 1999 The Gtk-- Development Team
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <gtk--/widget.h>
#include <gnome--/imlib.h>
#include <libgnomeui/gnome-animator.h>

namespace Gnome {
class Animator;
class Animator_Class;
}
namespace Gtk { Gnome::Animator *wrap (GnomeAnimator *o); }
namespace Gnome
{
class Pixmap;

class Animator : public Gtk::Widget
{

public:
  typedef Animator          CppObjectType;
  typedef Animator_Class    CppClassType;
  typedef GnomeAnimator           BaseObjectType;
  typedef GnomeAnimatorClass      BaseClassType;

private:
  friend class Animator_Class;
  static CppClassType animator_class;

  Animator(const Animator&);
  Animator& operator=(const Animator&); // not implemented

protected:
  void   initialize_class();
  explicit Animator(GnomeAnimator *castitem);

public:
  static GtkType get_type();
  GnomeAnimator* gtkobj()             { return (GnomeAnimator*)(gtkobject); }
  const GnomeAnimator* gtkobj() const { return (GnomeAnimator*)(gtkobject); }
  static bool isA(Gtk::Object *checkcast);

  // Hook for proxies
  static const char* const signal_names[];

  virtual ~Animator();

private:

public:
  Animator(guint width, guint height);



  //: Set loop type (See GnomeAnimatorLoopType).


  void set_loop_type(GnomeAnimatorLoopType loop_type);

  //: Get loop type (See GnomeAnimatorLoopType).


  GnomeAnimatorLoopType get_loop_type();


  //: Set playback direction.
  //- A positive value means "forwards";
  //- A negative one means "backwards".



  void set_playback_direction(gint playback_direction=1);

  //: Get playback direction.
  //- A positive value means "forwards";
  //- A negative one means "backwards".


  gint get_playback_direction();


  //: Append a frame from image with crop.

  bool append_frame(const Gdk_Imlib::Image& image,gint x_offset,gint y_offset,guint32 interval,guint width,guint height);

  //: Append a frame from image.

  bool append_frame(const Gdk_Imlib::Image& image,gint x_offset,gint y_offset,guint32 interval);

  //: Append a frame from file with crop.

  bool append_frame(const Gtk::string& name,gint x_offset,gint y_offset,guint32 interval,guint width,guint height);

  //: Append a frame from file.

  bool append_frame(const Gtk::string& name,gint x_offset,gint y_offset,guint32 interval);

  //: Append pixmap to animator's list of frames.

  bool append_frame(Gnome::Pixmap& pixmap,gint x_offset,gint y_offset,guint32 interval);


  //: Append frames from image with crop.
  //- Crop image into frames x_unit pixels wide, and append them as
  //- frames to the animator with the specified interval and offsets.
  //- Each frame is rendered at the specified size.

  bool append_frames(const Gdk_Imlib::Image& image,gint x_offset,gint y_offset,guint32 interval,gint x_unit,guint width,guint height);

  //: Append frames from image.
  //- Crop image into frames x_unit pixels wide, and append them as
  //- frames to the animator with the specified interval and offsets.
  //- Each frame is rendered at its natural size.

  bool append_frames(const Gdk_Imlib::Image& image,gint x_offset,gint y_offset,guint32 interval,gint x_unit);

  //: Load an image from name, crop it into frames x_unit pixels
  //: wide, and append them as frames to the animator.  Each frame is
  //: rendered at the specified size.

  bool append_frames(const Gtk::string& name,gint x_offset,gint y_offset,guint32 interval,gint x_unit,guint width,guint height);

  //: Append frames from file.
  //- Load an image from name, crop it into frames x_unit pixels
  //- wide, and append them as frames to the animator.  Each frame is
  //- rendered at its natural size.

  bool append_frames(const Gtk::string& name,gint x_offset,gint y_offset,guint32 interval,gint x_unit);



  //: Start playing the animation in the GTK loop.

  void start();

  //: Stop playing the animation in the GTK loop.

  void stop();

  //: Advance the animation by num frames.
  //- A positive value uses the
  //- specified playback direction; a negative one goes in the opposite
  //- direction.  If the loop type is GNOME_ANIMATOR_LOOP_NONE and the
  //- value causes the frame counter to overflow, false is returned and
  //- the animator is stopped; otherwise, true is returned.

  bool advance(gint num);


  //: Set the number of current frame.  The result is immediately visible.

  void goto_frame(guint frame_number);

  //: Get the number of current frame.

  guint get_current_frame_number();

  //: Get the animator status.

  GnomeAnimatorStatus get_status();


  //: Set speed factor
  //- (the higher, the faster: the interval value is divided
  //- by this factor before being used).  Default is 1.0.

  void set_playback_speed(gdouble speed=1.0);

  //: Get speed factor
  //- (the higher, the faster: the interval value is divided by
  //- this factor before being used).  Default is 1.0.

  gdouble get_playback_speed();

public:

protected:
  // impl functions

};



}


#endif
