/* gala.h generated by valac 0.50.1, the Vala compiler, do not modify */

#ifndef __GALA_H__
#define __GALA_H__

#include <glib-object.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <meta/meta-plugin.h>
#include <meta/window.h>
#include <meta/common.h>
#include <clutter/clutter.h>
#include <meta/boxes.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
#include <meta/workspace.h>
#include <meta/meta-window-actor.h>
#include <meta/screen.h>
#include <clutter-gtk/clutter-gtk.h>
#include <meta/keybindings.h>

G_BEGIN_DECLS

#define GALA_TYPE_ACTIVATABLE_COMPONENT (gala_activatable_component_get_type ())
#define GALA_ACTIVATABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_ACTIVATABLE_COMPONENT, GalaActivatableComponent))
#define GALA_IS_ACTIVATABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_ACTIVATABLE_COMPONENT))
#define GALA_ACTIVATABLE_COMPONENT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GALA_TYPE_ACTIVATABLE_COMPONENT, GalaActivatableComponentIface))

typedef struct _GalaActivatableComponent GalaActivatableComponent;
typedef struct _GalaActivatableComponentIface GalaActivatableComponentIface;
typedef enum  {
	GALA_PLUGIN_FUNCTION_ADDITION,
	GALA_PLUGIN_FUNCTION_WINDOW_SWITCHER,
	GALA_PLUGIN_FUNCTION_DESKTOP,
	GALA_PLUGIN_FUNCTION_WORKSPACE_VIEW,
	GALA_PLUGIN_FUNCTION_WINDOW_OVERVIEW
} GalaPluginFunction;

#define GALA_TYPE_PLUGIN_FUNCTION (gala_plugin_function_get_type ())
typedef enum  {
	GALA_LOAD_PRIORITY_IMMEDIATE,
	GALA_LOAD_PRIORITY_DEFERRED
} GalaLoadPriority;

#define GALA_TYPE_LOAD_PRIORITY (gala_load_priority_get_type ())

#define GALA_TYPE_PLUGIN_INFO (gala_plugin_info_get_type ())
typedef struct _GalaPluginInfo GalaPluginInfo;

#define GALA_TYPE_PLUGIN (gala_plugin_get_type ())
#define GALA_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_PLUGIN, GalaPlugin))
#define GALA_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_PLUGIN, GalaPluginClass))
#define GALA_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_PLUGIN))
#define GALA_IS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_PLUGIN))
#define GALA_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_PLUGIN, GalaPluginClass))

typedef struct _GalaPlugin GalaPlugin;
typedef struct _GalaPluginClass GalaPluginClass;
typedef struct _GalaPluginPrivate GalaPluginPrivate;

#define GALA_TYPE_WINDOW_MANAGER (gala_window_manager_get_type ())
#define GALA_WINDOW_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_WINDOW_MANAGER, GalaWindowManager))
#define GALA_IS_WINDOW_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_WINDOW_MANAGER))
#define GALA_WINDOW_MANAGER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GALA_TYPE_WINDOW_MANAGER, GalaWindowManagerIface))

typedef struct _GalaWindowManager GalaWindowManager;
typedef struct _GalaWindowManagerIface GalaWindowManagerIface;

#define GALA_TYPE_MODAL_PROXY (gala_modal_proxy_get_type ())
#define GALA_MODAL_PROXY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_MODAL_PROXY, GalaModalProxy))
#define GALA_MODAL_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_MODAL_PROXY, GalaModalProxyClass))
#define GALA_IS_MODAL_PROXY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_MODAL_PROXY))
#define GALA_IS_MODAL_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_MODAL_PROXY))
#define GALA_MODAL_PROXY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_MODAL_PROXY, GalaModalProxyClass))

typedef struct _GalaModalProxy GalaModalProxy;
typedef struct _GalaModalProxyClass GalaModalProxyClass;
typedef enum  {
	GALA_ACTION_TYPE_NONE = 0,
	GALA_ACTION_TYPE_SHOW_WORKSPACE_VIEW,
	GALA_ACTION_TYPE_MAXIMIZE_CURRENT,
	GALA_ACTION_TYPE_MINIMIZE_CURRENT,
	GALA_ACTION_TYPE_OPEN_LAUNCHER,
	GALA_ACTION_TYPE_CUSTOM_COMMAND,
	GALA_ACTION_TYPE_WINDOW_OVERVIEW,
	GALA_ACTION_TYPE_WINDOW_OVERVIEW_ALL
} GalaActionType;

#define GALA_TYPE_ACTION_TYPE (gala_action_type_get_type ())

#define GALA_TYPE_UTILS (gala_utils_get_type ())
#define GALA_UTILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_UTILS, GalaUtils))
#define GALA_UTILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_UTILS, GalaUtilsClass))
#define GALA_IS_UTILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_UTILS))
#define GALA_IS_UTILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_UTILS))
#define GALA_UTILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_UTILS, GalaUtilsClass))

typedef struct _GalaUtils GalaUtils;
typedef struct _GalaUtilsClass GalaUtilsClass;
typedef struct _GalaUtilsPrivate GalaUtilsPrivate;

#define GALA_TYPE_WINDOW_ICON (gala_window_icon_get_type ())
#define GALA_WINDOW_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_TYPE_WINDOW_ICON, GalaWindowIcon))
#define GALA_WINDOW_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_TYPE_WINDOW_ICON, GalaWindowIconClass))
#define GALA_IS_WINDOW_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_TYPE_WINDOW_ICON))
#define GALA_IS_WINDOW_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_TYPE_WINDOW_ICON))
#define GALA_WINDOW_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_TYPE_WINDOW_ICON, GalaWindowIconClass))

typedef struct _GalaWindowIcon GalaWindowIcon;
typedef struct _GalaWindowIconClass GalaWindowIconClass;
typedef struct _GalaWindowIconPrivate GalaWindowIconPrivate;
typedef gboolean (*GalaKeybindingFilter) (MetaKeyBinding* binding, gpointer user_data);
typedef struct _GalaModalProxyPrivate GalaModalProxyPrivate;

struct _GalaActivatableComponentIface {
	GTypeInterface parent_iface;
	void (*open) (GalaActivatableComponent* self, GHashTable* hints);
	void (*close) (GalaActivatableComponent* self);
	gboolean (*is_opened) (GalaActivatableComponent* self);
};

struct _GalaPluginInfo {
	gchar* name;
	gchar* author;
	GType plugin_type;
	GalaPluginFunction provides;
	GalaLoadPriority load_priority;
	gchar* module_name;
};

struct _GalaWindowManagerIface {
	GTypeInterface parent_iface;
	GalaModalProxy* (*push_modal) (GalaWindowManager* self);
	void (*pop_modal) (GalaWindowManager* self, GalaModalProxy* proxy);
	gboolean (*is_modal) (GalaWindowManager* self);
	gboolean (*modal_proxy_valid) (GalaWindowManager* self, GalaModalProxy* proxy);
	void (*perform_action) (GalaWindowManager* self, GalaActionType type);
	void (*move_window) (GalaWindowManager* self, MetaWindow* window, MetaMotionDirection direction);
	void (*switch_to_next_workspace) (GalaWindowManager* self, MetaMotionDirection direction);
	ClutterActor* (*get_ui_group) (GalaWindowManager* self);
	void (*set_ui_group) (GalaWindowManager* self, ClutterActor* value);
	ClutterStage* (*get_stage) (GalaWindowManager* self);
	void (*set_stage) (GalaWindowManager* self, ClutterStage* value);
	ClutterActor* (*get_window_group) (GalaWindowManager* self);
	void (*set_window_group) (GalaWindowManager* self, ClutterActor* value);
	ClutterActor* (*get_top_window_group) (GalaWindowManager* self);
	void (*set_top_window_group) (GalaWindowManager* self, ClutterActor* value);
};

struct _GalaPlugin {
	GObject parent_instance;
	GalaPluginPrivate * priv;
};

struct _GalaPluginClass {
	GObjectClass parent_class;
	void (*initialize) (GalaPlugin* self, GalaWindowManager* wm);
	void (*destroy) (GalaPlugin* self);
};

struct _GalaUtils {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GalaUtilsPrivate * priv;
};

struct _GalaUtilsClass {
	GTypeClass parent_class;
	void (*finalize) (GalaUtils *self);
};

struct _GalaWindowIcon {
	GtkClutterTexture parent_instance;
	GalaWindowIconPrivate * priv;
};

struct _GalaWindowIconClass {
	GtkClutterTextureClass parent_class;
};

struct _GalaModalProxy {
	GObject parent_instance;
	GalaModalProxyPrivate * priv;
};

struct _GalaModalProxyClass {
	GObjectClass parent_class;
};

GType gala_activatable_component_get_type (void) G_GNUC_CONST;
void gala_activatable_component_open (GalaActivatableComponent* self,
                                      GHashTable* hints);
void gala_activatable_component_close (GalaActivatableComponent* self);
gboolean gala_activatable_component_is_opened (GalaActivatableComponent* self);
GType gala_plugin_function_get_type (void) G_GNUC_CONST;
GType gala_load_priority_get_type (void) G_GNUC_CONST;
GType gala_plugin_info_get_type (void) G_GNUC_CONST;
GalaPluginInfo* gala_plugin_info_dup (const GalaPluginInfo* self);
void gala_plugin_info_free (GalaPluginInfo* self);
void gala_plugin_info_copy (const GalaPluginInfo* self,
                            GalaPluginInfo* dest);
void gala_plugin_info_destroy (GalaPluginInfo* self);
GType gala_plugin_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaPlugin, g_object_unref)
GType gala_modal_proxy_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaModalProxy, g_object_unref)
GType gala_action_type_get_type (void) G_GNUC_CONST;
GType gala_window_manager_get_type (void) G_GNUC_CONST;
void gala_plugin_initialize (GalaPlugin* self,
                             GalaWindowManager* wm);
void gala_plugin_destroy (GalaPlugin* self);
void gala_plugin_track_actor (GalaPlugin* self,
                              ClutterActor* actor);
void gala_plugin_untrack_actor (GalaPlugin* self,
                                ClutterActor* actor);
void gala_plugin_update_region (GalaPlugin* self);
GalaPlugin* gala_plugin_construct (GType object_type);
MetaRectangle* gala_plugin_get_region (GalaPlugin* self,
                                       gint* result_length1);
MetaRectangle* gala_plugin_get_custom_region (GalaPlugin* self,
                                              gint* result_length1);
void gala_plugin_set_custom_region (GalaPlugin* self,
                                    MetaRectangle* value,
                                    gint value_length1);
gboolean gala_plugin_get_freeze_track (GalaPlugin* self);
void gala_plugin_set_freeze_track (GalaPlugin* self,
                                   gboolean value);
gpointer gala_utils_ref (gpointer instance);
void gala_utils_unref (gpointer instance);
GParamSpec* gala_param_spec_utils (const gchar* name,
                                   const gchar* nick,
                                   const gchar* blurb,
                                   GType object_type,
                                   GParamFlags flags);
void gala_value_set_utils (GValue* value,
                           gpointer v_object);
void gala_value_take_utils (GValue* value,
                            gpointer v_object);
gpointer gala_value_get_utils (const GValue* value);
GType gala_utils_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaUtils, gala_utils_unref)
void gala_utils_request_clean_icon_cache (guint32* xids,
                                          gint xids_length1);
GdkPixbuf* gala_utils_get_icon_for_window (MetaWindow* window,
                                           gint size,
                                           gboolean ignore_cache);
GdkPixbuf* gala_utils_get_icon_for_xid (guint32 xid,
                                        gint size,
                                        gboolean ignore_cache);
GdkPixbuf* gala_utils_get_icon_from_desktop_file (const gchar* desktop_file,
                                                  gint size,
                                                  gboolean ignore_cache);
gchar* gala_utils_get_icon_from_gicon (GIcon* icon);
GFile* gala_utils_try_get_icon_file (const gchar* name);
GtkIconTheme* gala_utils_get_icon_theme (void);
GdkPixbuf* gala_utils_load_icon (const gchar* names,
                                 gint width,
                                 gint height);
GdkPixbuf* gala_utils_ar_scale (GdkPixbuf* source,
                                gint width,
                                gint height);
GdkPixbuf* gala_utils_get_icon_for_flatpak_app (const gchar* appid,
                                                gint size);
MetaWindow* gala_utils_get_next_window (MetaWorkspace* workspace,
                                        gboolean backward);
guint gala_utils_get_n_windows (MetaWorkspace* workspace);
ClutterActor* gala_utils_get_window_actor_snapshot (MetaWindowActor* actor,
                                                    MetaRectangle* inner_rect,
                                                    MetaRectangle* outer_rect);
void gala_utils_bell (MetaScreen* screen);
GdkPixbuf* gala_utils_get_close_button_pixbuf (void);
GtkClutterTexture* gala_utils_create_close_button (void);
GType gala_window_icon_get_type (void) G_GNUC_CONST;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GalaWindowIcon, g_object_unref)
#define GALA_WINDOW_ICON_SHADOW_SIZE 6
#define GALA_WINDOW_ICON_SHADOW_DISTANCE 3
#define GALA_WINDOW_ICON_SHADOW_OPACITY ((guint8) 76)
#define GALA_WINDOW_ICON_SHADOW_BLUR ((guint8) 14)
GalaWindowIcon* gala_window_icon_new (MetaWindow* window,
                                      gint icon_size,
                                      gboolean destroy_on_unmanaged);
GalaWindowIcon* gala_window_icon_construct (GType object_type,
                                            MetaWindow* window,
                                            gint icon_size,
                                            gboolean destroy_on_unmanaged);
MetaWindow* gala_window_icon_get_window (GalaWindowIcon* self);
gint gala_window_icon_get_icon_size (GalaWindowIcon* self);
gboolean gala_window_icon_get_destroy_on_unmanaged (GalaWindowIcon* self);
void gala_window_icon_set_destroy_on_unmanaged (GalaWindowIcon* self,
                                                gboolean value);
GalaModalProxy* gala_modal_proxy_new (void);
GalaModalProxy* gala_modal_proxy_construct (GType object_type);
void gala_modal_proxy_allow_all_keybindings (GalaModalProxy* self);
GalaKeybindingFilter gala_modal_proxy_get_keybinding_filter (GalaModalProxy* self,
                                                             gpointer* result_target);
void gala_modal_proxy_set_keybinding_filter (GalaModalProxy* self,
                                             GalaKeybindingFilter value,
                                             gpointer value_target,
                                             GDestroyNotify value_target_destroy_notify);
gboolean gala_modal_proxy_get_grabbed (GalaModalProxy* self);
void gala_modal_proxy_set_grabbed (GalaModalProxy* self,
                                   gboolean value);
GalaModalProxy* gala_window_manager_push_modal (GalaWindowManager* self);
void gala_window_manager_pop_modal (GalaWindowManager* self,
                                    GalaModalProxy* proxy);
gboolean gala_window_manager_is_modal (GalaWindowManager* self);
gboolean gala_window_manager_modal_proxy_valid (GalaWindowManager* self,
                                                GalaModalProxy* proxy);
void gala_window_manager_perform_action (GalaWindowManager* self,
                                         GalaActionType type);
void gala_window_manager_move_window (GalaWindowManager* self,
                                      MetaWindow* window,
                                      MetaMotionDirection direction);
void gala_window_manager_switch_to_next_workspace (GalaWindowManager* self,
                                                   MetaMotionDirection direction);
ClutterActor* gala_window_manager_get_ui_group (GalaWindowManager* self);
void gala_window_manager_set_ui_group (GalaWindowManager* self,
                                       ClutterActor* value);
ClutterStage* gala_window_manager_get_stage (GalaWindowManager* self);
void gala_window_manager_set_stage (GalaWindowManager* self,
                                    ClutterStage* value);
ClutterActor* gala_window_manager_get_window_group (GalaWindowManager* self);
void gala_window_manager_set_window_group (GalaWindowManager* self,
                                           ClutterActor* value);
ClutterActor* gala_window_manager_get_top_window_group (GalaWindowManager* self);
void gala_window_manager_set_top_window_group (GalaWindowManager* self,
                                               ClutterActor* value);

G_END_DECLS

#endif
