/* TransitionsInterfaces.c generated by valac 0.34.1, the Vala compiler
 * generated from TransitionsInterfaces.vala, do not modify */

/* Copyright 2016 Software Freedom Conservancy Inc.
 *
 * This software is licensed under the GNU Lesser General Public License
 * (version 2.1 or later).  See the COPYING file in this distribution.
 */

#include <glib.h>
#include <glib-object.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk/gdk.h>
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>
#include <cairo.h>


#define SPIT_TRANSITIONS_TYPE_DIRECTION (spit_transitions_direction_get_type ())

#define SPIT_TRANSITIONS_TYPE_VISUALS (spit_transitions_visuals_get_type ())
#define SPIT_TRANSITIONS_VISUALS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisuals))
#define SPIT_TRANSITIONS_VISUALS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisualsClass))
#define SPIT_TRANSITIONS_IS_VISUALS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TRANSITIONS_TYPE_VISUALS))
#define SPIT_TRANSITIONS_IS_VISUALS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SPIT_TRANSITIONS_TYPE_VISUALS))
#define SPIT_TRANSITIONS_VISUALS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisualsClass))

typedef struct _SpitTransitionsVisuals SpitTransitionsVisuals;
typedef struct _SpitTransitionsVisualsClass SpitTransitionsVisualsClass;
typedef struct _SpitTransitionsVisualsPrivate SpitTransitionsVisualsPrivate;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define SPIT_TRANSITIONS_TYPE_MOTION (spit_transitions_motion_get_type ())
#define SPIT_TRANSITIONS_MOTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotion))
#define SPIT_TRANSITIONS_MOTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotionClass))
#define SPIT_TRANSITIONS_IS_MOTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TRANSITIONS_TYPE_MOTION))
#define SPIT_TRANSITIONS_IS_MOTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SPIT_TRANSITIONS_TYPE_MOTION))
#define SPIT_TRANSITIONS_MOTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotionClass))

typedef struct _SpitTransitionsMotion SpitTransitionsMotion;
typedef struct _SpitTransitionsMotionClass SpitTransitionsMotionClass;
typedef struct _SpitTransitionsMotionPrivate SpitTransitionsMotionPrivate;

#define SPIT_TYPE_PLUGGABLE (spit_pluggable_get_type ())
#define SPIT_PLUGGABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TYPE_PLUGGABLE, SpitPluggable))
#define SPIT_IS_PLUGGABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TYPE_PLUGGABLE))
#define SPIT_PLUGGABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SPIT_TYPE_PLUGGABLE, SpitPluggableIface))

typedef struct _SpitPluggable SpitPluggable;
typedef struct _SpitPluggableIface SpitPluggableIface;

#define SPIT_TYPE_PLUGGABLE_INFO (spit_pluggable_info_get_type ())
typedef struct _SpitPluggableInfo SpitPluggableInfo;

#define SPIT_TRANSITIONS_TYPE_DESCRIPTOR (spit_transitions_descriptor_get_type ())
#define SPIT_TRANSITIONS_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TRANSITIONS_TYPE_DESCRIPTOR, SpitTransitionsDescriptor))
#define SPIT_TRANSITIONS_IS_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TRANSITIONS_TYPE_DESCRIPTOR))
#define SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SPIT_TRANSITIONS_TYPE_DESCRIPTOR, SpitTransitionsDescriptorIface))

typedef struct _SpitTransitionsDescriptor SpitTransitionsDescriptor;
typedef struct _SpitTransitionsDescriptorIface SpitTransitionsDescriptorIface;

#define SPIT_TYPE_HOST_INTERFACE (spit_host_interface_get_type ())
#define SPIT_HOST_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TYPE_HOST_INTERFACE, SpitHostInterface))
#define SPIT_IS_HOST_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TYPE_HOST_INTERFACE))
#define SPIT_HOST_INTERFACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SPIT_TYPE_HOST_INTERFACE, SpitHostInterfaceIface))

typedef struct _SpitHostInterface SpitHostInterface;
typedef struct _SpitHostInterfaceIface SpitHostInterfaceIface;

#define SPIT_TRANSITIONS_TYPE_EFFECT (spit_transitions_effect_get_type ())
#define SPIT_TRANSITIONS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_TRANSITIONS_TYPE_EFFECT, SpitTransitionsEffect))
#define SPIT_TRANSITIONS_IS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_TRANSITIONS_TYPE_EFFECT))
#define SPIT_TRANSITIONS_EFFECT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SPIT_TRANSITIONS_TYPE_EFFECT, SpitTransitionsEffectIface))

typedef struct _SpitTransitionsEffect SpitTransitionsEffect;
typedef struct _SpitTransitionsEffectIface SpitTransitionsEffectIface;

typedef enum  {
	SPIT_TRANSITIONS_DIRECTION_LEFT = 0,
	SPIT_TRANSITIONS_DIRECTION_RIGHT = 1,
	SPIT_TRANSITIONS_DIRECTION_FORWARD = SPIT_TRANSITIONS_DIRECTION_LEFT,
	SPIT_TRANSITIONS_DIRECTION_BACKWARD = SPIT_TRANSITIONS_DIRECTION_RIGHT
} SpitTransitionsDirection;

struct _SpitTransitionsVisuals {
	GObject parent_instance;
	SpitTransitionsVisualsPrivate * priv;
};

struct _SpitTransitionsVisualsClass {
	GObjectClass parent_class;
	void (*reserved0) (SpitTransitionsVisuals* self);
	void (*reserved1) (SpitTransitionsVisuals* self);
	void (*reserved2) (SpitTransitionsVisuals* self);
	void (*reserved3) (SpitTransitionsVisuals* self);
	void (*reserved4) (SpitTransitionsVisuals* self);
	void (*reserved5) (SpitTransitionsVisuals* self);
	void (*reserved6) (SpitTransitionsVisuals* self);
	void (*reserved7) (SpitTransitionsVisuals* self);
};

struct _SpitTransitionsVisualsPrivate {
	GdkPixbuf* _from_pixbuf;
	GdkRectangle _from_pos;
	GdkPixbuf* _to_pixbuf;
	GdkRectangle _to_pos;
	GdkRGBA _bg_color;
};

struct _SpitTransitionsMotion {
	GObject parent_instance;
	SpitTransitionsMotionPrivate * priv;
};

struct _SpitTransitionsMotionClass {
	GObjectClass parent_class;
	void (*reserved0) (SpitTransitionsMotion* self);
	void (*reserved1) (SpitTransitionsMotion* self);
	void (*reserved2) (SpitTransitionsMotion* self);
	void (*reserved3) (SpitTransitionsMotion* self);
	void (*reserved4) (SpitTransitionsMotion* self);
	void (*reserved5) (SpitTransitionsMotion* self);
	void (*reserved6) (SpitTransitionsMotion* self);
	void (*reserved7) (SpitTransitionsMotion* self);
};

struct _SpitTransitionsMotionPrivate {
	SpitTransitionsDirection _direction;
	gint _fps;
	gint _duration_msec;
};

struct _SpitPluggableInfo {
	gchar* version;
	gchar* brief_description;
	gchar* authors;
	gchar* copyright;
	gchar* license;
	gboolean is_license_wordwrapped;
	gchar* website_url;
	gchar* website_name;
	gchar* translators;
	GdkPixbuf** icons;
	gint icons_length1;
};

struct _SpitPluggableIface {
	GTypeInterface parent_iface;
	gint (*get_pluggable_interface) (SpitPluggable* self, gint min_host_interface, gint max_host_interface);
	const gchar* (*get_id) (SpitPluggable* self);
	const gchar* (*get_pluggable_name) (SpitPluggable* self);
	void (*get_info) (SpitPluggable* self, SpitPluggableInfo* info);
	void (*activation) (SpitPluggable* self, gboolean enabled);
	void (*reserved0) (SpitPluggable* self);
	void (*reserved1) (SpitPluggable* self);
	void (*reserved2) (SpitPluggable* self);
	void (*reserved3) (SpitPluggable* self);
	void (*reserved4) (SpitPluggable* self);
	void (*reserved5) (SpitPluggable* self);
	void (*reserved6) (SpitPluggable* self);
	void (*reserved7) (SpitPluggable* self);
};

struct _SpitHostInterfaceIface {
	GTypeInterface parent_iface;
	GFile* (*get_module_file) (SpitHostInterface* self);
	gboolean (*get_config_bool) (SpitHostInterface* self, const gchar* key, gboolean def);
	void (*set_config_bool) (SpitHostInterface* self, const gchar* key, gboolean val);
	gint (*get_config_int) (SpitHostInterface* self, const gchar* key, gint def);
	void (*set_config_int) (SpitHostInterface* self, const gchar* key, gint val);
	gchar* (*get_config_string) (SpitHostInterface* self, const gchar* key, const gchar* def);
	void (*set_config_string) (SpitHostInterface* self, const gchar* key, const gchar* val);
	gdouble (*get_config_double) (SpitHostInterface* self, const gchar* key, gdouble def);
	void (*set_config_double) (SpitHostInterface* self, const gchar* key, gdouble val);
	void (*unset_config_key) (SpitHostInterface* self, const gchar* key);
	void (*reserved0) (SpitHostInterface* self);
	void (*reserved1) (SpitHostInterface* self);
	void (*reserved2) (SpitHostInterface* self);
	void (*reserved3) (SpitHostInterface* self);
	void (*reserved4) (SpitHostInterface* self);
	void (*reserved5) (SpitHostInterface* self);
	void (*reserved6) (SpitHostInterface* self);
	void (*reserved7) (SpitHostInterface* self);
};

struct _SpitTransitionsEffectIface {
	GTypeInterface parent_iface;
	void (*get_fps) (SpitTransitionsEffect* self, gint* desired_fps, gint* min_fps);
	void (*start) (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion);
	gboolean (*needs_clear_background) (SpitTransitionsEffect* self);
	void (*paint) (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, cairo_t* ctx, gint width, gint height, gint frame_number);
	void (*advance) (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, gint frame_number);
	void (*cancel) (SpitTransitionsEffect* self);
	void (*reserved0) (SpitTransitionsEffect* self);
	void (*reserved1) (SpitTransitionsEffect* self);
	void (*reserved2) (SpitTransitionsEffect* self);
	void (*reserved3) (SpitTransitionsEffect* self);
	void (*reserved4) (SpitTransitionsEffect* self);
	void (*reserved5) (SpitTransitionsEffect* self);
	void (*reserved6) (SpitTransitionsEffect* self);
	void (*reserved7) (SpitTransitionsEffect* self);
};

struct _SpitTransitionsDescriptorIface {
	GTypeInterface parent_iface;
	SpitTransitionsEffect* (*create) (SpitTransitionsDescriptor* self, SpitHostInterface* host);
	void (*reserved0) (SpitTransitionsDescriptor* self);
	void (*reserved1) (SpitTransitionsDescriptor* self);
	void (*reserved2) (SpitTransitionsDescriptor* self);
	void (*reserved3) (SpitTransitionsDescriptor* self);
	void (*reserved4) (SpitTransitionsDescriptor* self);
	void (*reserved5) (SpitTransitionsDescriptor* self);
	void (*reserved6) (SpitTransitionsDescriptor* self);
	void (*reserved7) (SpitTransitionsDescriptor* self);
};


static gpointer spit_transitions_visuals_parent_class = NULL;
static gpointer spit_transitions_motion_parent_class = NULL;

#define SPIT_TRANSITIONS_CURRENT_INTERFACE 0
GType spit_transitions_direction_get_type (void) G_GNUC_CONST;
GType spit_transitions_visuals_get_type (void) G_GNUC_CONST;
#define SPIT_TRANSITIONS_VISUALS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisualsPrivate))
enum  {
	SPIT_TRANSITIONS_VISUALS_DUMMY_PROPERTY,
	SPIT_TRANSITIONS_VISUALS_FROM_PIXBUF,
	SPIT_TRANSITIONS_VISUALS_FROM_POS,
	SPIT_TRANSITIONS_VISUALS_TO_PIXBUF,
	SPIT_TRANSITIONS_VISUALS_TO_POS,
	SPIT_TRANSITIONS_VISUALS_BG_COLOR
};
SpitTransitionsVisuals* spit_transitions_visuals_new (GdkPixbuf* from_pixbuf, GdkRectangle* from_pos, GdkPixbuf* to_pixbuf, GdkRectangle* to_pos, GdkRGBA* bg_color);
SpitTransitionsVisuals* spit_transitions_visuals_construct (GType object_type, GdkPixbuf* from_pixbuf, GdkRectangle* from_pos, GdkPixbuf* to_pixbuf, GdkRectangle* to_pos, GdkRGBA* bg_color);
static void spit_transitions_visuals_set_from_pixbuf (SpitTransitionsVisuals* self, GdkPixbuf* value);
static void spit_transitions_visuals_set_from_pos (SpitTransitionsVisuals* self, GdkRectangle* value);
static void spit_transitions_visuals_set_to_pixbuf (SpitTransitionsVisuals* self, GdkPixbuf* value);
static void spit_transitions_visuals_set_to_pos (SpitTransitionsVisuals* self, GdkRectangle* value);
static void spit_transitions_visuals_set_bg_color (SpitTransitionsVisuals* self, GdkRGBA* value);
void spit_transitions_visuals_reserved0 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved0 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved1 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved1 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved2 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved2 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved3 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved3 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved4 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved4 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved5 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved5 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved6 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved6 (SpitTransitionsVisuals* self);
void spit_transitions_visuals_reserved7 (SpitTransitionsVisuals* self);
static void spit_transitions_visuals_real_reserved7 (SpitTransitionsVisuals* self);
GdkPixbuf* spit_transitions_visuals_get_from_pixbuf (SpitTransitionsVisuals* self);
void spit_transitions_visuals_get_from_pos (SpitTransitionsVisuals* self, GdkRectangle* result);
GdkPixbuf* spit_transitions_visuals_get_to_pixbuf (SpitTransitionsVisuals* self);
void spit_transitions_visuals_get_to_pos (SpitTransitionsVisuals* self, GdkRectangle* result);
void spit_transitions_visuals_get_bg_color (SpitTransitionsVisuals* self, GdkRGBA* result);
static void spit_transitions_visuals_finalize (GObject* obj);
static void _vala_spit_transitions_visuals_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_spit_transitions_visuals_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
GType spit_transitions_motion_get_type (void) G_GNUC_CONST;
#define SPIT_TRANSITIONS_MOTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotionPrivate))
enum  {
	SPIT_TRANSITIONS_MOTION_DUMMY_PROPERTY,
	SPIT_TRANSITIONS_MOTION_DIRECTION,
	SPIT_TRANSITIONS_MOTION_FPS,
	SPIT_TRANSITIONS_MOTION_DURATION_MSEC,
	SPIT_TRANSITIONS_MOTION_TOTAL_FRAMES,
	SPIT_TRANSITIONS_MOTION_TICK_MSEC
};
SpitTransitionsMotion* spit_transitions_motion_new (SpitTransitionsDirection direction, gint fps, gint duration_msec);
SpitTransitionsMotion* spit_transitions_motion_construct (GType object_type, SpitTransitionsDirection direction, gint fps, gint duration_msec);
static void spit_transitions_motion_set_direction (SpitTransitionsMotion* self, SpitTransitionsDirection value);
static void spit_transitions_motion_set_fps (SpitTransitionsMotion* self, gint value);
static void spit_transitions_motion_set_duration_msec (SpitTransitionsMotion* self, gint value);
gdouble spit_transitions_motion_get_alpha (SpitTransitionsMotion* self, gint frame_number);
gint spit_transitions_motion_get_total_frames (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved0 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved0 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved1 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved1 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved2 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved2 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved3 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved3 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved4 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved4 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved5 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved5 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved6 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved6 (SpitTransitionsMotion* self);
void spit_transitions_motion_reserved7 (SpitTransitionsMotion* self);
static void spit_transitions_motion_real_reserved7 (SpitTransitionsMotion* self);
SpitTransitionsDirection spit_transitions_motion_get_direction (SpitTransitionsMotion* self);
gint spit_transitions_motion_get_fps (SpitTransitionsMotion* self);
gint spit_transitions_motion_get_duration_msec (SpitTransitionsMotion* self);
gint spit_transitions_motion_get_tick_msec (SpitTransitionsMotion* self);
static void spit_transitions_motion_finalize (GObject* obj);
static void _vala_spit_transitions_motion_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_spit_transitions_motion_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
GType spit_pluggable_info_get_type (void) G_GNUC_CONST;
SpitPluggableInfo* spit_pluggable_info_dup (const SpitPluggableInfo* self);
void spit_pluggable_info_free (SpitPluggableInfo* self);
void spit_pluggable_info_copy (const SpitPluggableInfo* self, SpitPluggableInfo* dest);
void spit_pluggable_info_destroy (SpitPluggableInfo* self);
GType spit_pluggable_get_type (void) G_GNUC_CONST;
GType spit_host_interface_get_type (void) G_GNUC_CONST;
GType spit_transitions_effect_get_type (void) G_GNUC_CONST;
GType spit_transitions_descriptor_get_type (void) G_GNUC_CONST;
SpitTransitionsEffect* spit_transitions_descriptor_create (SpitTransitionsDescriptor* self, SpitHostInterface* host);
void spit_transitions_descriptor_reserved0 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved0 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved1 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved1 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved2 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved2 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved3 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved3 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved4 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved4 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved5 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved5 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved6 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved6 (SpitTransitionsDescriptor* self);
void spit_transitions_descriptor_reserved7 (SpitTransitionsDescriptor* self);
static void spit_transitions_descriptor_real_reserved7 (SpitTransitionsDescriptor* self);
void spit_transitions_effect_get_fps (SpitTransitionsEffect* self, gint* desired_fps, gint* min_fps);
void spit_transitions_effect_start (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion);
gboolean spit_transitions_effect_needs_clear_background (SpitTransitionsEffect* self);
void spit_transitions_effect_paint (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, cairo_t* ctx, gint width, gint height, gint frame_number);
void spit_transitions_effect_advance (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, gint frame_number);
void spit_transitions_effect_cancel (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved0 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved0 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved1 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved1 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved2 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved2 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved3 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved3 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved4 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved4 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved5 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved5 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved6 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved6 (SpitTransitionsEffect* self);
void spit_transitions_effect_reserved7 (SpitTransitionsEffect* self);
static void spit_transitions_effect_real_reserved7 (SpitTransitionsEffect* self);


/**
 * Direction indicates what direction (animated motion) the {@link Effect} should simulate the 
 * images are moving, if appropriate.
 * 
 * The direction indicates from what side or corner of the screen the new image should come in from.
 * Thus, a LEFT slide means the current image exits via the left-hand edge of the screen and the 
 * new image moves into place from the right-hand edge.
 *
 * UP, DOWN, and diagonals may be added at some point.
 */
GType spit_transitions_direction_get_type (void) {
	static volatile gsize spit_transitions_direction_type_id__volatile = 0;
	if (g_once_init_enter (&spit_transitions_direction_type_id__volatile)) {
		static const GEnumValue values[] = {{SPIT_TRANSITIONS_DIRECTION_LEFT, "SPIT_TRANSITIONS_DIRECTION_LEFT", "left"}, {SPIT_TRANSITIONS_DIRECTION_RIGHT, "SPIT_TRANSITIONS_DIRECTION_RIGHT", "right"}, {SPIT_TRANSITIONS_DIRECTION_FORWARD, "SPIT_TRANSITIONS_DIRECTION_FORWARD", "forward"}, {SPIT_TRANSITIONS_DIRECTION_BACKWARD, "SPIT_TRANSITIONS_DIRECTION_BACKWARD", "backward"}, {0, NULL, NULL}};
		GType spit_transitions_direction_type_id;
		spit_transitions_direction_type_id = g_enum_register_static ("SpitTransitionsDirection", values);
		g_once_init_leave (&spit_transitions_direction_type_id__volatile, spit_transitions_direction_type_id);
	}
	return spit_transitions_direction_type_id__volatile;
}


SpitTransitionsVisuals* spit_transitions_visuals_construct (GType object_type, GdkPixbuf* from_pixbuf, GdkRectangle* from_pos, GdkPixbuf* to_pixbuf, GdkRectangle* to_pos, GdkRGBA* bg_color) {
	SpitTransitionsVisuals * self = NULL;
	GdkPixbuf* _tmp0_ = NULL;
	GdkRectangle _tmp1_ = {0};
	GdkPixbuf* _tmp2_ = NULL;
	GdkRectangle _tmp3_ = {0};
	GdkRGBA _tmp4_ = {0};
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail ((from_pixbuf == NULL) || GDK_IS_PIXBUF (from_pixbuf), NULL);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (from_pos != NULL, NULL);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail ((to_pixbuf == NULL) || GDK_IS_PIXBUF (to_pixbuf), NULL);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (to_pos != NULL, NULL);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (bg_color != NULL, NULL);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self = (SpitTransitionsVisuals*) g_object_new (object_type, NULL);
#line 96 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = from_pixbuf;
#line 96 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_set_from_pixbuf (self, _tmp0_);
#line 97 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = *from_pos;
#line 97 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_set_from_pos (self, &_tmp1_);
#line 98 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp2_ = to_pixbuf;
#line 98 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_set_to_pixbuf (self, _tmp2_);
#line 99 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp3_ = *to_pos;
#line 99 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_set_to_pos (self, &_tmp3_);
#line 100 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp4_ = *bg_color;
#line 100 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_set_bg_color (self, &_tmp4_);
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return self;
#line 422 "TransitionsInterfaces.c"
}


SpitTransitionsVisuals* spit_transitions_visuals_new (GdkPixbuf* from_pixbuf, GdkRectangle* from_pos, GdkPixbuf* to_pixbuf, GdkRectangle* to_pos, GdkRGBA* bg_color) {
#line 94 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return spit_transitions_visuals_construct (SPIT_TRANSITIONS_TYPE_VISUALS, from_pixbuf, from_pos, to_pixbuf, to_pos, bg_color);
#line 429 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved0 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved0 (SpitTransitionsVisuals* self) {
#line 106 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 106 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved0 (self);
#line 442 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved1 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved1 (SpitTransitionsVisuals* self) {
#line 107 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 107 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved1 (self);
#line 455 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved2 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved2 (SpitTransitionsVisuals* self) {
#line 108 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 108 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved2 (self);
#line 468 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved3 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved3 (SpitTransitionsVisuals* self) {
#line 109 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 109 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved3 (self);
#line 481 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved4 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved4 (SpitTransitionsVisuals* self) {
#line 110 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 110 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved4 (self);
#line 494 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved5 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved5 (SpitTransitionsVisuals* self) {
#line 111 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 111 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved5 (self);
#line 507 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved6 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved6 (SpitTransitionsVisuals* self) {
#line 112 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 112 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved6 (self);
#line 520 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_real_reserved7 (SpitTransitionsVisuals* self) {
}


void spit_transitions_visuals_reserved7 (SpitTransitionsVisuals* self) {
#line 113 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 113 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_VISUALS_GET_CLASS (self)->reserved7 (self);
#line 533 "TransitionsInterfaces.c"
}


GdkPixbuf* spit_transitions_visuals_get_from_pixbuf (SpitTransitionsVisuals* self) {
	GdkPixbuf* result;
	GdkPixbuf* _tmp0_ = NULL;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self), NULL);
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_from_pixbuf;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = _tmp0_;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 548 "TransitionsInterfaces.c"
}


static gpointer _g_object_ref0 (gpointer self) {
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return self ? g_object_ref (self) : NULL;
#line 555 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_set_from_pixbuf (SpitTransitionsVisuals* self, GdkPixbuf* value) {
	GdkPixbuf* _tmp0_ = NULL;
	GdkPixbuf* _tmp1_ = NULL;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = value;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = _g_object_ref0 (_tmp0_);
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_g_object_unref0 (self->priv->_from_pixbuf);
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_from_pixbuf = _tmp1_;
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "from-pixbuf");
#line 574 "TransitionsInterfaces.c"
}


void spit_transitions_visuals_get_from_pos (SpitTransitionsVisuals* self, GdkRectangle* result) {
	GdkRectangle _tmp0_ = {0};
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_from_pos;
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	*result = _tmp0_;
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return;
#line 588 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_set_from_pos (SpitTransitionsVisuals* self, GdkRectangle* value) {
	GdkRectangle _tmp0_ = {0};
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = *value;
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_from_pos = _tmp0_;
#line 73 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "from-pos");
#line 602 "TransitionsInterfaces.c"
}


GdkPixbuf* spit_transitions_visuals_get_to_pixbuf (SpitTransitionsVisuals* self) {
	GdkPixbuf* result;
	GdkPixbuf* _tmp0_ = NULL;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self), NULL);
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_to_pixbuf;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = _tmp0_;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 617 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_set_to_pixbuf (SpitTransitionsVisuals* self, GdkPixbuf* value) {
	GdkPixbuf* _tmp0_ = NULL;
	GdkPixbuf* _tmp1_ = NULL;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = value;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = _g_object_ref0 (_tmp0_);
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_g_object_unref0 (self->priv->_to_pixbuf);
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_to_pixbuf = _tmp1_;
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "to-pixbuf");
#line 636 "TransitionsInterfaces.c"
}


void spit_transitions_visuals_get_to_pos (SpitTransitionsVisuals* self, GdkRectangle* result) {
	GdkRectangle _tmp0_ = {0};
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_to_pos;
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	*result = _tmp0_;
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return;
#line 650 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_set_to_pos (SpitTransitionsVisuals* self, GdkRectangle* value) {
	GdkRectangle _tmp0_ = {0};
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = *value;
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_to_pos = _tmp0_;
#line 87 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "to-pos");
#line 664 "TransitionsInterfaces.c"
}


void spit_transitions_visuals_get_bg_color (SpitTransitionsVisuals* self, GdkRGBA* result) {
	GdkRGBA _tmp0_ = {0};
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_bg_color;
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	*result = _tmp0_;
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return;
#line 678 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_set_bg_color (SpitTransitionsVisuals* self, GdkRGBA* value) {
	GdkRGBA _tmp0_ = {0};
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_VISUALS (self));
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = *value;
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_bg_color = _tmp0_;
#line 92 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "bg-color");
#line 692 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_class_init (SpitTransitionsVisualsClass * klass) {
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_visuals_parent_class = g_type_class_peek_parent (klass);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_type_class_add_private (klass, sizeof (SpitTransitionsVisualsPrivate));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved0 = spit_transitions_visuals_real_reserved0;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved1 = spit_transitions_visuals_real_reserved1;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved2 = spit_transitions_visuals_real_reserved2;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved3 = spit_transitions_visuals_real_reserved3;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved4 = spit_transitions_visuals_real_reserved4;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved5 = spit_transitions_visuals_real_reserved5;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved6 = spit_transitions_visuals_real_reserved6;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsVisualsClass *) klass)->reserved7 = spit_transitions_visuals_real_reserved7;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_spit_transitions_visuals_get_property;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_spit_transitions_visuals_set_property;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->finalize = spit_transitions_visuals_finalize;
#line 723 "TransitionsInterfaces.c"
	/**
	     * Returns the starting pixbuf (the pixbuf currently on the display).
	     *
	     * If transitioning from a blank screen, this will return null.
	     */
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_VISUALS_FROM_PIXBUF, g_param_spec_object ("from-pixbuf", "from-pixbuf", "from-pixbuf", GDK_TYPE_PIXBUF, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 731 "TransitionsInterfaces.c"
	/**
	     * Returns the position of the starting pixbuf on the display.
	     *
	     * If transitioning from a blank screen, this will be zeroed.
	     */
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_VISUALS_FROM_POS, g_param_spec_boxed ("from-pos", "from-pos", "from-pos", GDK_TYPE_RECTANGLE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 739 "TransitionsInterfaces.c"
	/**
	     * Returns the ending pixbuf (the pixbuf that the transition should result in).
	     *
	     * If transitioning to a blank screen, this will return null.
	     */
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_VISUALS_TO_PIXBUF, g_param_spec_object ("to-pixbuf", "to-pixbuf", "to-pixbuf", GDK_TYPE_PIXBUF, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 747 "TransitionsInterfaces.c"
	/**
	     * Returns the position of the ending pixbuf on the display.
	     *
	     * If transitioning to a blank screen, this will be zeroed.
	     */
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_VISUALS_TO_POS, g_param_spec_boxed ("to-pos", "to-pos", "to-pos", GDK_TYPE_RECTANGLE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 755 "TransitionsInterfaces.c"
	/**
	     * Returns the background color of the viewport.
	     */
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_VISUALS_BG_COLOR, g_param_spec_boxed ("bg-color", "bg-color", "bg-color", gdk_rgba_get_type (), G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 761 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_instance_init (SpitTransitionsVisuals * self) {
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv = SPIT_TRANSITIONS_VISUALS_GET_PRIVATE (self);
#line 768 "TransitionsInterfaces.c"
}


static void spit_transitions_visuals_finalize (GObject* obj) {
	SpitTransitionsVisuals * self;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisuals);
#line 66 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_g_object_unref0 (self->priv->_from_pixbuf);
#line 80 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_g_object_unref0 (self->priv->_to_pixbuf);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (spit_transitions_visuals_parent_class)->finalize (obj);
#line 782 "TransitionsInterfaces.c"
}


/**
 * Visuals contains the pertinent drawing information for the transition that must occur.
 * 
 * A Visuals object is supplied to {@link Effect} at the start of the transition and during each 
 * call to paint to the screen.
 *
 * Note that if starting with a blank screen, from_pixbuf will be null and from_pos will be
 * zeroed. The transition should be considered to start from a blank screen of the supplied
 * background color.
 *
 * Also note that if transitioning to a blank screen, to_pixbuf will be null and to_pos will be
 * zeroed. Like the prior case, the transition should move toward a blank screen of the background
 * color.
 */
GType spit_transitions_visuals_get_type (void) {
	static volatile gsize spit_transitions_visuals_type_id__volatile = 0;
	if (g_once_init_enter (&spit_transitions_visuals_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SpitTransitionsVisualsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) spit_transitions_visuals_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SpitTransitionsVisuals), 0, (GInstanceInitFunc) spit_transitions_visuals_instance_init, NULL };
		GType spit_transitions_visuals_type_id;
		spit_transitions_visuals_type_id = g_type_register_static (G_TYPE_OBJECT, "SpitTransitionsVisuals", &g_define_type_info, 0);
		g_once_init_leave (&spit_transitions_visuals_type_id__volatile, spit_transitions_visuals_type_id);
	}
	return spit_transitions_visuals_type_id__volatile;
}


static void _vala_spit_transitions_visuals_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	SpitTransitionsVisuals * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisuals);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	switch (property_id) {
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_FROM_PIXBUF:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_object (value, spit_transitions_visuals_get_from_pixbuf (self));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_FROM_POS:
#line 825 "TransitionsInterfaces.c"
		{
			GdkRectangle boxed;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			spit_transitions_visuals_get_from_pos (self, &boxed);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			g_value_set_boxed (value, &boxed);
#line 832 "TransitionsInterfaces.c"
		}
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_TO_PIXBUF:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_object (value, spit_transitions_visuals_get_to_pixbuf (self));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_TO_POS:
#line 844 "TransitionsInterfaces.c"
		{
			GdkRectangle boxed;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			spit_transitions_visuals_get_to_pos (self, &boxed);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			g_value_set_boxed (value, &boxed);
#line 851 "TransitionsInterfaces.c"
		}
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_BG_COLOR:
#line 857 "TransitionsInterfaces.c"
		{
			GdkRGBA boxed;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			spit_transitions_visuals_get_bg_color (self, &boxed);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
			g_value_set_boxed (value, &boxed);
#line 864 "TransitionsInterfaces.c"
		}
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 868 "TransitionsInterfaces.c"
		default:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 874 "TransitionsInterfaces.c"
	}
}


static void _vala_spit_transitions_visuals_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	SpitTransitionsVisuals * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SPIT_TRANSITIONS_TYPE_VISUALS, SpitTransitionsVisuals);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	switch (property_id) {
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_FROM_PIXBUF:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_visuals_set_from_pixbuf (self, g_value_get_object (value));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_FROM_POS:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_visuals_set_from_pos (self, g_value_get_boxed (value));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_TO_PIXBUF:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_visuals_set_to_pixbuf (self, g_value_get_object (value));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_TO_POS:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_visuals_set_to_pos (self, g_value_get_boxed (value));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_VISUALS_BG_COLOR:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_visuals_set_bg_color (self, g_value_get_boxed (value));
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 914 "TransitionsInterfaces.c"
		default:
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 60 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 920 "TransitionsInterfaces.c"
	}
}


SpitTransitionsMotion* spit_transitions_motion_construct (GType object_type, SpitTransitionsDirection direction, gint fps, gint duration_msec) {
	SpitTransitionsMotion * self = NULL;
	SpitTransitionsDirection _tmp0_ = 0;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
#line 157 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self = (SpitTransitionsMotion*) g_object_new (object_type, NULL);
#line 158 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = direction;
#line 158 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_motion_set_direction (self, _tmp0_);
#line 159 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = fps;
#line 159 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_motion_set_fps (self, _tmp1_);
#line 160 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp2_ = duration_msec;
#line 160 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_motion_set_duration_msec (self, _tmp2_);
#line 157 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return self;
#line 946 "TransitionsInterfaces.c"
}


SpitTransitionsMotion* spit_transitions_motion_new (SpitTransitionsDirection direction, gint fps, gint duration_msec) {
#line 157 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return spit_transitions_motion_construct (SPIT_TRANSITIONS_TYPE_MOTION, direction, fps, duration_msec);
#line 953 "TransitionsInterfaces.c"
}


/**
     * Returns a value from 0.0 to 1.0 that represents the percentage of the transition's completion
     * for the specified frame.
     */
gdouble spit_transitions_motion_get_alpha (SpitTransitionsMotion* self, gint frame_number) {
	gdouble result = 0.0;
	gint _tmp0_ = 0;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
#line 167 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0.0);
#line 168 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = frame_number;
#line 168 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = spit_transitions_motion_get_total_frames (self);
#line 168 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp2_ = _tmp1_;
#line 168 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = ((gdouble) _tmp0_) / ((gdouble) _tmp2_);
#line 168 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 978 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved0 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved0 (SpitTransitionsMotion* self) {
#line 174 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 174 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved0 (self);
#line 991 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved1 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved1 (SpitTransitionsMotion* self) {
#line 175 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 175 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved1 (self);
#line 1004 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved2 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved2 (SpitTransitionsMotion* self) {
#line 176 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 176 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved2 (self);
#line 1017 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved3 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved3 (SpitTransitionsMotion* self) {
#line 177 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 177 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved3 (self);
#line 1030 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved4 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved4 (SpitTransitionsMotion* self) {
#line 178 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 178 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved4 (self);
#line 1043 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved5 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved5 (SpitTransitionsMotion* self) {
#line 179 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 179 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved5 (self);
#line 1056 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved6 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved6 (SpitTransitionsMotion* self) {
#line 180 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 180 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved6 (self);
#line 1069 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_real_reserved7 (SpitTransitionsMotion* self) {
}


void spit_transitions_motion_reserved7 (SpitTransitionsMotion* self) {
#line 181 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 181 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_MOTION_GET_CLASS (self)->reserved7 (self);
#line 1082 "TransitionsInterfaces.c"
}


SpitTransitionsDirection spit_transitions_motion_get_direction (SpitTransitionsMotion* self) {
	SpitTransitionsDirection result;
	SpitTransitionsDirection _tmp0_ = 0;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0);
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_direction;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = _tmp0_;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 1097 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_set_direction (SpitTransitionsMotion* self, SpitTransitionsDirection value) {
	SpitTransitionsDirection _tmp0_ = 0;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = value;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_direction = _tmp0_;
#line 126 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "direction");
#line 1111 "TransitionsInterfaces.c"
}


gint spit_transitions_motion_get_fps (SpitTransitionsMotion* self) {
	gint result;
	gint _tmp0_ = 0;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0);
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_fps;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = _tmp0_;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 1126 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_set_fps (SpitTransitionsMotion* self, gint value) {
	gint _tmp0_ = 0;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = value;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_fps = _tmp0_;
#line 131 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "fps");
#line 1140 "TransitionsInterfaces.c"
}


gint spit_transitions_motion_get_duration_msec (SpitTransitionsMotion* self) {
	gint result;
	gint _tmp0_ = 0;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0);
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_duration_msec;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = _tmp0_;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 1155 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_set_duration_msec (SpitTransitionsMotion* self, gint value) {
	gint _tmp0_ = 0;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_MOTION (self));
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = value;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv->_duration_msec = _tmp0_;
#line 136 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_notify ((GObject *) self, "duration-msec");
#line 1169 "TransitionsInterfaces.c"
}


gint spit_transitions_motion_get_total_frames (SpitTransitionsMotion* self) {
	gint result;
	gint _tmp0_ = 0;
	gint _tmp1_ = 0;
#line 143 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0);
#line 144 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_fps;
#line 144 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp1_ = self->priv->_duration_msec;
#line 144 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = (gint) (((gdouble) _tmp0_) * (((gdouble) _tmp1_) / 1000.0));
#line 144 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 1187 "TransitionsInterfaces.c"
}


gint spit_transitions_motion_get_tick_msec (SpitTransitionsMotion* self) {
	gint result;
	gint _tmp0_ = 0;
#line 152 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_MOTION (self), 0);
#line 153 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	_tmp0_ = self->priv->_fps;
#line 153 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	result = (gint) (1000.0 / ((gdouble) _tmp0_));
#line 153 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return result;
#line 1202 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_class_init (SpitTransitionsMotionClass * klass) {
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	spit_transitions_motion_parent_class = g_type_class_peek_parent (klass);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_type_class_add_private (klass, sizeof (SpitTransitionsMotionPrivate));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved0 = spit_transitions_motion_real_reserved0;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved1 = spit_transitions_motion_real_reserved1;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved2 = spit_transitions_motion_real_reserved2;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved3 = spit_transitions_motion_real_reserved3;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved4 = spit_transitions_motion_real_reserved4;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved5 = spit_transitions_motion_real_reserved5;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved6 = spit_transitions_motion_real_reserved6;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	((SpitTransitionsMotionClass *) klass)->reserved7 = spit_transitions_motion_real_reserved7;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_spit_transitions_motion_get_property;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_spit_transitions_motion_set_property;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (klass)->finalize = spit_transitions_motion_finalize;
#line 1233 "TransitionsInterfaces.c"
	/**
	     * Returns the direction the transition should occur in (if pertinent to the {@link Effect}.
	     */
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_MOTION_DIRECTION, g_param_spec_enum ("direction", "direction", "direction", SPIT_TRANSITIONS_TYPE_DIRECTION, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 1239 "TransitionsInterfaces.c"
	/**
	     * Returns the frames per second of the {@link Effect}.
	     */
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_MOTION_FPS, g_param_spec_int ("fps", "fps", "fps", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 1245 "TransitionsInterfaces.c"
	/**
	     * Returns the amount of time the transition should take (in milliseconds).
	     */
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_MOTION_DURATION_MSEC, g_param_spec_int ("duration-msec", "duration-msec", "duration-msec", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 1251 "TransitionsInterfaces.c"
	/**
	     * Returns the number of frames that should be required to perform the transition in the
	     * expected {@link duration_msec}.
	     */
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_MOTION_TOTAL_FRAMES, g_param_spec_int ("total-frames", "total-frames", "total-frames", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 1258 "TransitionsInterfaces.c"
	/**
	     * Returns the approximate time between each frame draw (in milliseconds).
	     */
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SPIT_TRANSITIONS_MOTION_TICK_MSEC, g_param_spec_int ("tick-msec", "tick-msec", "tick-msec", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
#line 1264 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_instance_init (SpitTransitionsMotion * self) {
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self->priv = SPIT_TRANSITIONS_MOTION_GET_PRIVATE (self);
#line 1271 "TransitionsInterfaces.c"
}


static void spit_transitions_motion_finalize (GObject* obj) {
	SpitTransitionsMotion * self;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotion);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	G_OBJECT_CLASS (spit_transitions_motion_parent_class)->finalize (obj);
#line 1281 "TransitionsInterfaces.c"
}


/**
 * Motion contains all the pertinent information regarding the animation of the transition.
 *
 * Some of Motion's information may not apply to a transition effect (such as Direction for a 
 * fade effect).
 */
GType spit_transitions_motion_get_type (void) {
	static volatile gsize spit_transitions_motion_type_id__volatile = 0;
	if (g_once_init_enter (&spit_transitions_motion_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SpitTransitionsMotionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) spit_transitions_motion_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SpitTransitionsMotion), 0, (GInstanceInitFunc) spit_transitions_motion_instance_init, NULL };
		GType spit_transitions_motion_type_id;
		spit_transitions_motion_type_id = g_type_register_static (G_TYPE_OBJECT, "SpitTransitionsMotion", &g_define_type_info, 0);
		g_once_init_leave (&spit_transitions_motion_type_id__volatile, spit_transitions_motion_type_id);
	}
	return spit_transitions_motion_type_id__volatile;
}


static void _vala_spit_transitions_motion_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	SpitTransitionsMotion * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotion);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	switch (property_id) {
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_DIRECTION:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_enum (value, spit_transitions_motion_get_direction (self));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_FPS:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_int (value, spit_transitions_motion_get_fps (self));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_DURATION_MSEC:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_int (value, spit_transitions_motion_get_duration_msec (self));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_TOTAL_FRAMES:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_int (value, spit_transitions_motion_get_total_frames (self));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_TICK_MSEC:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		g_value_set_int (value, spit_transitions_motion_get_tick_msec (self));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 1338 "TransitionsInterfaces.c"
		default:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 1344 "TransitionsInterfaces.c"
	}
}


static void _vala_spit_transitions_motion_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	SpitTransitionsMotion * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, SPIT_TRANSITIONS_TYPE_MOTION, SpitTransitionsMotion);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	switch (property_id) {
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_DIRECTION:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_motion_set_direction (self, g_value_get_enum (value));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_FPS:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_motion_set_fps (self, g_value_get_int (value));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		case SPIT_TRANSITIONS_MOTION_DURATION_MSEC:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		spit_transitions_motion_set_duration_msec (self, g_value_get_int (value));
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 1372 "TransitionsInterfaces.c"
		default:
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 122 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		break;
#line 1378 "TransitionsInterfaces.c"
	}
}


/**
     * Returns an instance of the {@link Effect} this descriptor represents.
     */
SpitTransitionsEffect* spit_transitions_descriptor_create (SpitTransitionsDescriptor* self, SpitHostInterface* host) {
#line 191 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self), NULL);
#line 191 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->create (self, host);
#line 1391 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved0 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved0 (SpitTransitionsDescriptor* self) {
#line 196 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 196 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved0 (self);
#line 1404 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved1 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved1 (SpitTransitionsDescriptor* self) {
#line 197 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 197 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved1 (self);
#line 1417 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved2 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved2 (SpitTransitionsDescriptor* self) {
#line 198 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 198 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved2 (self);
#line 1430 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved3 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved3 (SpitTransitionsDescriptor* self) {
#line 199 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 199 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved3 (self);
#line 1443 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved4 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved4 (SpitTransitionsDescriptor* self) {
#line 200 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 200 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved4 (self);
#line 1456 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved5 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved5 (SpitTransitionsDescriptor* self) {
#line 201 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 201 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved5 (self);
#line 1469 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved6 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved6 (SpitTransitionsDescriptor* self) {
#line 202 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 202 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved6 (self);
#line 1482 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_real_reserved7 (SpitTransitionsDescriptor* self) {
}


void spit_transitions_descriptor_reserved7 (SpitTransitionsDescriptor* self) {
#line 203 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_DESCRIPTOR (self));
#line 203 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_DESCRIPTOR_GET_INTERFACE (self)->reserved7 (self);
#line 1495 "TransitionsInterfaces.c"
}


static void spit_transitions_descriptor_base_init (SpitTransitionsDescriptorIface * iface) {
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	static gboolean initialized = FALSE;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	if (!initialized) {
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		initialized = TRUE;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved0 = spit_transitions_descriptor_real_reserved0;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved1 = spit_transitions_descriptor_real_reserved1;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved2 = spit_transitions_descriptor_real_reserved2;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved3 = spit_transitions_descriptor_real_reserved3;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved4 = spit_transitions_descriptor_real_reserved4;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved5 = spit_transitions_descriptor_real_reserved5;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved6 = spit_transitions_descriptor_real_reserved6;
#line 187 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved7 = spit_transitions_descriptor_real_reserved7;
#line 1522 "TransitionsInterfaces.c"
	}
}


/**
 * A Descriptor offers a factory method for creating {@link Effect} instances.
 */
GType spit_transitions_descriptor_get_type (void) {
	static volatile gsize spit_transitions_descriptor_type_id__volatile = 0;
	if (g_once_init_enter (&spit_transitions_descriptor_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SpitTransitionsDescriptorIface), (GBaseInitFunc) spit_transitions_descriptor_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType spit_transitions_descriptor_type_id;
		spit_transitions_descriptor_type_id = g_type_register_static (G_TYPE_INTERFACE, "SpitTransitionsDescriptor", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (spit_transitions_descriptor_type_id, G_TYPE_OBJECT);
		g_type_interface_add_prerequisite (spit_transitions_descriptor_type_id, SPIT_TYPE_PLUGGABLE);
		g_once_init_leave (&spit_transitions_descriptor_type_id__volatile, spit_transitions_descriptor_type_id);
	}
	return spit_transitions_descriptor_type_id__volatile;
}


/**
     * Returns frames per second (FPS) information for this effect.
     *
     * If the min_fps is not met, the Effect may be cancelled or the host will skip ahead.
     *
     * @param desired_fps The desired FPS of the transition.  Return zero if no
     *        transition is to occur (instantaneous or null transition).
     * @param min_fps The minimum FPS before the effect is consider "ruined".
     *        Return zero if any FPS is acceptable.
     */
void spit_transitions_effect_get_fps (SpitTransitionsEffect* self, gint* desired_fps, gint* min_fps) {
#line 240 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 240 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->get_fps (self, desired_fps, min_fps);
#line 1559 "TransitionsInterfaces.c"
}


/**
     * Called when the effect is starting.
     * 
     * All state should be reset. The frame number, which is not supplied, is one.
     */
void spit_transitions_effect_start (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion) {
#line 247 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 247 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->start (self, visuals, motion);
#line 1573 "TransitionsInterfaces.c"
}


/**
     * Return true if the Effect needs the background cleared prior to calling {@link paint}.
     */
gboolean spit_transitions_effect_needs_clear_background (SpitTransitionsEffect* self) {
#line 252 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_val_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self), FALSE);
#line 252 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	return SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->needs_clear_background (self);
#line 1585 "TransitionsInterfaces.c"
}


/**
     * Called when the effect needs to paint (i.e. an expose or draw event has occurred).
     * 
     * This call should ''not'' advance the state of the effect (i.e. it may be called more than 
     * once for the same frame).
     *
     * @param ctx The Cairo context the Effect should use to paint the transition.
     * @param width The width (in pixels) of the Cairo surface.
     * @param height The height (in pixels) of the Cairo surface.
     * @param frame_number The ''one-based'' frame being drawn.
     */
void spit_transitions_effect_paint (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, cairo_t* ctx, gint width, gint height, gint frame_number) {
#line 265 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 265 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->paint (self, visuals, motion, ctx, width, height, frame_number);
#line 1605 "TransitionsInterfaces.c"
}


/**
     * Called to notify the effect that the state of the transition should advance to the specified
     * frame number.
     * 
     * Note: There is no guarantee frame numbers will be consecutive between calls
     * to next, especially if the transition clock is attempting to catch up.
     *
     * @param frame_number The ''one-based'' frame being advanced to.
     */
void spit_transitions_effect_advance (SpitTransitionsEffect* self, SpitTransitionsVisuals* visuals, SpitTransitionsMotion* motion, gint frame_number) {
#line 277 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 277 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->advance (self, visuals, motion, frame_number);
#line 1623 "TransitionsInterfaces.c"
}


/**
     * Called if the Effect should halt the transition.
     * 
     * It only needs to reset state if {@link start} is called again.
     */
void spit_transitions_effect_cancel (SpitTransitionsEffect* self) {
#line 284 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 284 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->cancel (self);
#line 1637 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved0 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved0 (SpitTransitionsEffect* self) {
#line 289 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 289 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved0 (self);
#line 1650 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved1 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved1 (SpitTransitionsEffect* self) {
#line 290 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 290 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved1 (self);
#line 1663 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved2 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved2 (SpitTransitionsEffect* self) {
#line 291 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 291 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved2 (self);
#line 1676 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved3 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved3 (SpitTransitionsEffect* self) {
#line 292 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 292 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved3 (self);
#line 1689 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved4 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved4 (SpitTransitionsEffect* self) {
#line 293 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 293 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved4 (self);
#line 1702 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved5 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved5 (SpitTransitionsEffect* self) {
#line 294 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 294 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved5 (self);
#line 1715 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved6 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved6 (SpitTransitionsEffect* self) {
#line 295 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 295 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved6 (self);
#line 1728 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_real_reserved7 (SpitTransitionsEffect* self) {
}


void spit_transitions_effect_reserved7 (SpitTransitionsEffect* self) {
#line 296 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	g_return_if_fail (SPIT_TRANSITIONS_IS_EFFECT (self));
#line 296 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	SPIT_TRANSITIONS_EFFECT_GET_INTERFACE (self)->reserved7 (self);
#line 1741 "TransitionsInterfaces.c"
}


static void spit_transitions_effect_base_init (SpitTransitionsEffectIface * iface) {
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	static gboolean initialized = FALSE;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
	if (!initialized) {
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		initialized = TRUE;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved0 = spit_transitions_effect_real_reserved0;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved1 = spit_transitions_effect_real_reserved1;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved2 = spit_transitions_effect_real_reserved2;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved3 = spit_transitions_effect_real_reserved3;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved4 = spit_transitions_effect_real_reserved4;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved5 = spit_transitions_effect_real_reserved5;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved6 = spit_transitions_effect_real_reserved6;
#line 229 "/home/jens/Source/shotwell/src/plugins/TransitionsInterfaces.vala"
		iface->reserved7 = spit_transitions_effect_real_reserved7;
#line 1768 "TransitionsInterfaces.c"
	}
}


/**
 * An Effect represents an interstitial effect that is used to transition the display from one 
 * image to another.
 * 
 * An Effect must hold state so that it knows what it should be drawn at any call to {@link paint}
 * (which is called regularly during a transition). That is, it should be able to draw any frame of
 * the transition at any time. The same frame may need to be drawn multiple times, or the host
 * may skip ahead and ask for a frame well ahead of the last requested one.
 *
 * ''Frame numbers are one-based throughout this interface''. This is because the initial state (the
 * blank viewport or the starting pixbuf) is frame zero. The Effect is never called to paint this
 * frame.  The Effect is also not called to paint the final frame (a blank viewport or the ending
 * pixbuf).
 *
 * If the Effect uses background threads for its work, it should use the appropriate primitives
 * for critical sections. All calls to this interface will be from the context of the main UI
 * thread. ''None of these calls should block.''
 *
 * If the Details object needs to be held by the Effect, its reference to it should be dropped at
 * the end of the cycle (or shortly thereafter).
 *
 * An instance may be reused and should be prepared for restarts.
 */
GType spit_transitions_effect_get_type (void) {
	static volatile gsize spit_transitions_effect_type_id__volatile = 0;
	if (g_once_init_enter (&spit_transitions_effect_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SpitTransitionsEffectIface), (GBaseInitFunc) spit_transitions_effect_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType spit_transitions_effect_type_id;
		spit_transitions_effect_type_id = g_type_register_static (G_TYPE_INTERFACE, "SpitTransitionsEffect", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (spit_transitions_effect_type_id, G_TYPE_OBJECT);
		g_once_init_leave (&spit_transitions_effect_type_id__volatile, spit_transitions_effect_type_id);
	}
	return spit_transitions_effect_type_id__volatile;
}