/* BudgieToplevel.h generated by valac 0.32.1, the Vala compiler, do not modify */


#ifndef __BUDGIETOPLEVEL_H__
#define __BUDGIETOPLEVEL_H__

#include <glib.h>
#include <float.h>
#include <math.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include <plugin.h>
#include <libpeas/peas.h>

G_BEGIN_DECLS


#define BUDGIE_TYPE_ANIMATION (budgie_animation_get_type ())
#define BUDGIE_ANIMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_ANIMATION, BudgieAnimation))
#define BUDGIE_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_ANIMATION, BudgieAnimationClass))
#define BUDGIE_IS_ANIMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_ANIMATION))
#define BUDGIE_IS_ANIMATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_ANIMATION))
#define BUDGIE_ANIMATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_ANIMATION, BudgieAnimationClass))

typedef struct _BudgieAnimation BudgieAnimation;
typedef struct _BudgieAnimationClass BudgieAnimationClass;

#define BUDGIE_TYPE_PROP_CHANGE (budgie_prop_change_get_type ())
typedef struct _BudgiePropChange BudgiePropChange;
typedef struct _BudgieAnimationPrivate BudgieAnimationPrivate;

#define BUDGIE_TYPE_TOPLEVEL (budgie_toplevel_get_type ())
#define BUDGIE_TOPLEVEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_TOPLEVEL, BudgieToplevel))
#define BUDGIE_TOPLEVEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_TOPLEVEL, BudgieToplevelClass))
#define BUDGIE_IS_TOPLEVEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_TOPLEVEL))
#define BUDGIE_IS_TOPLEVEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_TOPLEVEL))
#define BUDGIE_TOPLEVEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_TOPLEVEL, BudgieToplevelClass))

typedef struct _BudgieToplevel BudgieToplevel;
typedef struct _BudgieToplevelClass BudgieToplevelClass;
typedef struct _BudgieToplevelPrivate BudgieToplevelPrivate;

#define BUDGIE_TYPE_PANEL_POSITION (budgie_panel_position_get_type ())

#define BUDGIE_TYPE_APPLET_PACK_TYPE (budgie_applet_pack_type_get_type ())

#define BUDGIE_TYPE_APPLET_ALIGNMENT (budgie_applet_alignment_get_type ())

#define BUDGIE_TYPE_SHADOW_BLOCK (budgie_shadow_block_get_type ())
#define BUDGIE_SHADOW_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_SHADOW_BLOCK, BudgieShadowBlock))
#define BUDGIE_SHADOW_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_SHADOW_BLOCK, BudgieShadowBlockClass))
#define BUDGIE_IS_SHADOW_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_SHADOW_BLOCK))
#define BUDGIE_IS_SHADOW_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_SHADOW_BLOCK))
#define BUDGIE_SHADOW_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_SHADOW_BLOCK, BudgieShadowBlockClass))

typedef struct _BudgieShadowBlock BudgieShadowBlock;
typedef struct _BudgieShadowBlockClass BudgieShadowBlockClass;
typedef struct _BudgieShadowBlockPrivate BudgieShadowBlockPrivate;

#define BUDGIE_TYPE_DESKTOP_MANAGER (budgie_desktop_manager_get_type ())
#define BUDGIE_DESKTOP_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_DESKTOP_MANAGER, BudgieDesktopManager))
#define BUDGIE_DESKTOP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_DESKTOP_MANAGER, BudgieDesktopManagerClass))
#define BUDGIE_IS_DESKTOP_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_DESKTOP_MANAGER))
#define BUDGIE_IS_DESKTOP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_DESKTOP_MANAGER))
#define BUDGIE_DESKTOP_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_DESKTOP_MANAGER, BudgieDesktopManagerClass))

typedef struct _BudgieDesktopManager BudgieDesktopManager;
typedef struct _BudgieDesktopManagerClass BudgieDesktopManagerClass;
typedef struct _BudgieDesktopManagerPrivate BudgieDesktopManagerPrivate;

typedef gdouble (*BudgieTweenFunc) (gdouble factor, void* user_data);
typedef void (*BudgieAnimCompletionFunc) (BudgieAnimation* src, void* user_data);
struct _BudgiePropChange {
	gchar* property;
	GValue old;
	GValue new;
};

struct _BudgieAnimation {
	GObject parent_instance;
	BudgieAnimationPrivate * priv;
	gint64 start_time;
	gint64 length;
	BudgieTweenFunc tween;
	gpointer tween_target;
	BudgiePropChange* changes;
	gint changes_length1;
	GtkWidget* widget;
	GObject* object;
	guint id;
	gboolean can_anim;
	gint64 elapsed;
	gboolean no_reset;
};

struct _BudgieAnimationClass {
	GObjectClass parent_class;
};

struct _BudgieToplevel {
	GtkWindow parent_instance;
	BudgieToplevelPrivate * priv;
};

struct _BudgieToplevelClass {
	GtkWindowClass parent_class;
	void (*reset_shadow) (BudgieToplevel* self);
	GList* (*get_applets) (BudgieToplevel* self);
	gboolean (*can_move_applet_left) (BudgieToplevel* self, BudgieAppletInfo* info);
	gboolean (*can_move_applet_right) (BudgieToplevel* self, BudgieAppletInfo* info);
	void (*move_applet_left) (BudgieToplevel* self, BudgieAppletInfo* info);
	void (*move_applet_right) (BudgieToplevel* self, BudgieAppletInfo* info);
	void (*add_new_applet) (BudgieToplevel* self, const gchar* id);
	void (*remove_applet) (BudgieToplevel* self, BudgieAppletInfo* info);
};

typedef enum  {
	BUDGIE_PANEL_POSITION_NONE = 1 << 0,
	BUDGIE_PANEL_POSITION_BOTTOM = 1 << 1,
	BUDGIE_PANEL_POSITION_TOP = 1 << 2,
	BUDGIE_PANEL_POSITION_LEFT = 1 << 3,
	BUDGIE_PANEL_POSITION_RIGHT = 1 << 4
} BudgiePanelPosition;

typedef enum  {
	BUDGIE_APPLET_PACK_TYPE_START = 1 << 0,
	BUDGIE_APPLET_PACK_TYPE_END = 1 << 2
} BudgieAppletPackType;

typedef enum  {
	BUDGIE_APPLET_ALIGNMENT_START = 1 << 0,
	BUDGIE_APPLET_ALIGNMENT_CENTER = 1 << 1,
	BUDGIE_APPLET_ALIGNMENT_END = 1 << 2
} BudgieAppletAlignment;

struct _BudgieShadowBlock {
	GtkEventBox parent_instance;
	BudgieShadowBlockPrivate * priv;
};

struct _BudgieShadowBlockClass {
	GtkEventBoxClass parent_class;
};

struct _BudgieDesktopManager {
	GObject parent_instance;
	BudgieDesktopManagerPrivate * priv;
};

struct _BudgieDesktopManagerClass {
	GObjectClass parent_class;
	GList* (*get_panels) (BudgieDesktopManager* self);
	guint (*slots_available) (BudgieDesktopManager* self);
	guint (*slots_used) (BudgieDesktopManager* self);
	void (*set_placement) (BudgieDesktopManager* self, const gchar* uuid, BudgiePanelPosition position);
	void (*set_size) (BudgieDesktopManager* self, const gchar* uuid, gint size);
	void (*create_new_panel) (BudgieDesktopManager* self);
	void (*delete_panel) (BudgieDesktopManager* self, const gchar* uuid);
	GList* (*get_panel_plugins) (BudgieDesktopManager* self);
};


GType budgie_animation_get_type (void) G_GNUC_CONST;
GType budgie_prop_change_get_type (void) G_GNUC_CONST;
BudgiePropChange* budgie_prop_change_dup (const BudgiePropChange* self);
void budgie_prop_change_free (BudgiePropChange* self);
void budgie_prop_change_copy (const BudgiePropChange* self, BudgiePropChange* dest);
void budgie_prop_change_destroy (BudgiePropChange* self);
void budgie_animation_start (BudgieAnimation* self, BudgieAnimCompletionFunc compl, void* compl_target);
void budgie_animation_stop (BudgieAnimation* self);
BudgieAnimation* budgie_animation_new (void);
BudgieAnimation* budgie_animation_construct (GType object_type);
gdouble budgie_sine_ease_in_out (gdouble p);
gdouble budgie_sine_ease_in (gdouble p);
gdouble budgie_sine_ease_out (gdouble p);
gdouble budgie_elastic_ease_in (gdouble p);
gdouble budgie_elastic_ease_out (gdouble p);
gdouble budgie_back_ease_in (gdouble p);
gdouble budgie_back_ease_out (gdouble p);
gdouble budgie_expo_ease_in (gdouble p);
gdouble budgie_expo_ease_out (gdouble p);
gdouble budgie_quad_ease_in (gdouble p);
gdouble budgie_quad_ease_out (gdouble p);
gdouble budgie_quad_ease_in_out (gdouble p);
gdouble budgie_circ_ease_in (gdouble p);
gdouble budgie_circ_ease_out (gdouble p);
#define BUDGIE_MSECOND ((gint64) 1000)
GType budgie_toplevel_get_type (void) G_GNUC_CONST;
void budgie_toplevel_reset_shadow (BudgieToplevel* self);
GList* budgie_toplevel_get_applets (BudgieToplevel* self);
gboolean budgie_toplevel_can_move_applet_left (BudgieToplevel* self, BudgieAppletInfo* info);
gboolean budgie_toplevel_can_move_applet_right (BudgieToplevel* self, BudgieAppletInfo* info);
void budgie_toplevel_move_applet_left (BudgieToplevel* self, BudgieAppletInfo* info);
void budgie_toplevel_move_applet_right (BudgieToplevel* self, BudgieAppletInfo* info);
void budgie_toplevel_add_new_applet (BudgieToplevel* self, const gchar* id);
void budgie_toplevel_remove_applet (BudgieToplevel* self, BudgieAppletInfo* info);
BudgieToplevel* budgie_toplevel_construct (GType object_type);
gint budgie_toplevel_get_shadow_width (BudgieToplevel* self);
void budgie_toplevel_set_shadow_width (BudgieToplevel* self, gint value);
gint budgie_toplevel_get_shadow_depth (BudgieToplevel* self);
void budgie_toplevel_set_shadow_depth (BudgieToplevel* self, gint value);
gint budgie_toplevel_get_intended_size (BudgieToplevel* self);
void budgie_toplevel_set_intended_size (BudgieToplevel* self, gint value);
gboolean budgie_toplevel_get_shadow_visible (BudgieToplevel* self);
void budgie_toplevel_set_shadow_visible (BudgieToplevel* self, gboolean value);
gboolean budgie_toplevel_get_theme_regions (BudgieToplevel* self);
void budgie_toplevel_set_theme_regions (BudgieToplevel* self, gboolean value);
const gchar* budgie_toplevel_get_uuid (BudgieToplevel* self);
void budgie_toplevel_set_uuid (BudgieToplevel* self, const gchar* value);
GType budgie_panel_position_get_type (void) G_GNUC_CONST;
BudgiePanelPosition budgie_toplevel_get_position (BudgieToplevel* self);
void budgie_toplevel_set_position (BudgieToplevel* self, BudgiePanelPosition value);
void budgie_set_struts (GtkWindow* window, BudgiePanelPosition position, glong panel_size);
GType budgie_applet_pack_type_get_type (void) G_GNUC_CONST;
GType budgie_applet_alignment_get_type (void) G_GNUC_CONST;
gchar* budgie_position_class_name (BudgiePanelPosition position);
GType budgie_shadow_block_get_type (void) G_GNUC_CONST;
BudgieShadowBlock* budgie_shadow_block_new (BudgiePanelPosition position);
BudgieShadowBlock* budgie_shadow_block_construct (GType object_type, BudgiePanelPosition position);
BudgiePanelPosition budgie_shadow_block_get_position (BudgieShadowBlock* self);
void budgie_shadow_block_set_position (BudgieShadowBlock* self, BudgiePanelPosition value);
gint budgie_shadow_block_get_required_size (BudgieShadowBlock* self);
void budgie_shadow_block_set_required_size (BudgieShadowBlock* self, gint value);
gint budgie_shadow_block_get_removal (BudgieShadowBlock* self);
void budgie_shadow_block_set_removal (BudgieShadowBlock* self, gint value);
GType budgie_desktop_manager_get_type (void) G_GNUC_CONST;
GList* budgie_desktop_manager_get_panels (BudgieDesktopManager* self);
guint budgie_desktop_manager_slots_available (BudgieDesktopManager* self);
guint budgie_desktop_manager_slots_used (BudgieDesktopManager* self);
void budgie_desktop_manager_set_placement (BudgieDesktopManager* self, const gchar* uuid, BudgiePanelPosition position);
void budgie_desktop_manager_set_size (BudgieDesktopManager* self, const gchar* uuid, gint size);
void budgie_desktop_manager_create_new_panel (BudgieDesktopManager* self);
void budgie_desktop_manager_delete_panel (BudgieDesktopManager* self, const gchar* uuid);
GList* budgie_desktop_manager_get_panel_plugins (BudgieDesktopManager* self);
BudgieDesktopManager* budgie_desktop_manager_construct (GType object_type);


G_END_DECLS

#endif
