/* astal-wl.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __ASTAL_WL_H__
#define __ASTAL_WL_H__

#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <glib-object.h>
#include <wayland-client.h>
#include <float.h>
#include <math.h>

G_BEGIN_DECLS

#define ASTAL_WL_MAJOR_VERSION 0
#define ASTAL_WL_MINOR_VERSION 1
#define ASTAL_WL_MICRO_VERSION 0
#define ASTAL_WL_VERSION "0.1.0"
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define ASTAL_WL_TYPE_GLOBAL (astal_wl_global_get_type ())
typedef struct _AstalWlGlobal AstalWlGlobal;

#define ASTAL_WL_TYPE_REGISTRY (astal_wl_registry_get_type ())
#define ASTAL_WL_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_WL_TYPE_REGISTRY, AstalWlRegistry))
#define ASTAL_WL_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_WL_TYPE_REGISTRY, AstalWlRegistryClass))
#define ASTAL_WL_IS_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_WL_TYPE_REGISTRY))
#define ASTAL_WL_IS_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_WL_TYPE_REGISTRY))
#define ASTAL_WL_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_WL_TYPE_REGISTRY, AstalWlRegistryClass))

typedef struct _AstalWlRegistry AstalWlRegistry;
typedef struct _AstalWlRegistryClass AstalWlRegistryClass;
typedef struct _AstalWlRegistryPrivate AstalWlRegistryPrivate;

#define ASTAL_WL_TYPE_OUTPUT (astal_wl_output_get_type ())
#define ASTAL_WL_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_WL_TYPE_OUTPUT, AstalWlOutput))
#define ASTAL_WL_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_WL_TYPE_OUTPUT, AstalWlOutputClass))
#define ASTAL_WL_IS_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_WL_TYPE_OUTPUT))
#define ASTAL_WL_IS_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_WL_TYPE_OUTPUT))
#define ASTAL_WL_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_WL_TYPE_OUTPUT, AstalWlOutputClass))

typedef struct _AstalWlOutput AstalWlOutput;
typedef struct _AstalWlOutputClass AstalWlOutputClass;

#define ASTAL_WL_TYPE_SEAT (astal_wl_seat_get_type ())
#define ASTAL_WL_SEAT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ASTAL_WL_TYPE_SEAT, AstalWlSeat))
#define ASTAL_WL_SEAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ASTAL_WL_TYPE_SEAT, AstalWlSeatClass))
#define ASTAL_WL_IS_SEAT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ASTAL_WL_TYPE_SEAT))
#define ASTAL_WL_IS_SEAT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ASTAL_WL_TYPE_SEAT))
#define ASTAL_WL_SEAT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ASTAL_WL_TYPE_SEAT, AstalWlSeatClass))

typedef struct _AstalWlSeat AstalWlSeat;
typedef struct _AstalWlSeatClass AstalWlSeatClass;
typedef struct _AstalWlOutputPrivate AstalWlOutputPrivate;
typedef enum  {
	ASTAL_WL_OUTPUT_SUBPIXEL_UNKNOWN = 0,
	ASTAL_WL_OUTPUT_SUBPIXEL_NONE = 1,
	ASTAL_WL_OUTPUT_SUBPIXEL_HORIZONTAL_RGB = 2,
	ASTAL_WL_OUTPUT_SUBPIXEL_HORIZONTAL_BGR = 3,
	ASTAL_WL_OUTPUT_SUBPIXEL_VERTICAL_RGB = 4,
	ASTAL_WL_OUTPUT_SUBPIXEL_VERTICAL_BGR = 5
} AstalWlOutputSubpixel;

#define ASTAL_WL_OUTPUT_TYPE_SUBPIXEL (astal_wl_output_subpixel_get_type ())
typedef enum  {
	ASTAL_WL_OUTPUT_TRANSFORM_NORMAL = 0,
	ASTAL_WL_OUTPUT_TRANSFORM_ROTATE_90 = 1,
	ASTAL_WL_OUTPUT_TRANSFORM_ROTATE_180 = 2,
	ASTAL_WL_OUTPUT_TRANSFORM_ROTATE_270 = 3,
	ASTAL_WL_OUTPUT_TRANSFORM_FLIPPED = 4,
	ASTAL_WL_OUTPUT_TRANSFORM_FLIPPED_90 = 5,
	ASTAL_WL_OUTPUT_TRANSFORM_FLIPPED_180 = 6,
	ASTAL_WL_OUTPUT_TRANSFORM_FLIPPED_270 = 7
} AstalWlOutputTransform;

#define ASTAL_WL_OUTPUT_TYPE_TRANSFORM (astal_wl_output_transform_get_type ())

#define ASTAL_WL_TYPE_RECTANGLE (astal_wl_rectangle_get_type ())
typedef struct _AstalWlRectangle AstalWlRectangle;
typedef struct _AstalWlSeatPrivate AstalWlSeatPrivate;
typedef enum  {
	ASTAL_WL_SEAT_CAPABILITIES_POINTER = 1,
	ASTAL_WL_SEAT_CAPABILITIES_KEYBOARD = 2,
	ASTAL_WL_SEAT_CAPABILITIES_TOUCH = 4
} AstalWlSeatCapabilities;

#define ASTAL_WL_SEAT_TYPE_CAPABILITIES (astal_wl_seat_capabilities_get_type ())

struct _AstalWlGlobal {
	guint32 name;
	gchar* interface;
	guint32 version;
};

struct _AstalWlRegistry {
	GObject parent_instance;
	AstalWlRegistryPrivate * priv;
	GHashTable* globals;
	GHashTable* outputs;
	GHashTable* seats;
};

struct _AstalWlRegistryClass {
	GObjectClass parent_class;
};

struct _AstalWlOutput {
	GObject parent_instance;
	AstalWlOutputPrivate * priv;
};

struct _AstalWlOutputClass {
	GObjectClass parent_class;
};

struct _AstalWlRectangle {
	gint x;
	gint y;
	gint width;
	gint height;
};

struct _AstalWlSeat {
	GObject parent_instance;
	AstalWlSeatPrivate * priv;
};

struct _AstalWlSeatClass {
	GObjectClass parent_class;
};

VALA_EXTERN GType astal_wl_global_get_type (void) G_GNUC_CONST ;
VALA_EXTERN AstalWlGlobal* astal_wl_global_dup (const AstalWlGlobal* self);
VALA_EXTERN void astal_wl_global_free (AstalWlGlobal* self);
VALA_EXTERN void astal_wl_global_copy (const AstalWlGlobal* self,
                           AstalWlGlobal* dest);
VALA_EXTERN void astal_wl_global_destroy (AstalWlGlobal* self);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (AstalWlGlobal, astal_wl_global_destroy)
VALA_EXTERN GType astal_wl_registry_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalWlRegistry, g_object_unref)
VALA_EXTERN AstalWlRegistry* astal_wl_get_default (void);
VALA_EXTERN GType astal_wl_output_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalWlOutput, g_object_unref)
VALA_EXTERN GType astal_wl_seat_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (AstalWlSeat, g_object_unref)
VALA_EXTERN AstalWlRegistry* astal_wl_registry_get_default (void);
VALA_EXTERN GList* astal_wl_registry_get_globals (AstalWlRegistry* self);
VALA_EXTERN GList* astal_wl_registry_get_outputs (AstalWlRegistry* self);
VALA_EXTERN GList* astal_wl_registry_get_seats (AstalWlRegistry* self);
VALA_EXTERN struct wl_registry* astal_wl_registry_get_registry (AstalWlRegistry* self);
VALA_EXTERN struct wl_display* astal_wl_registry_get_display (AstalWlRegistry* self);
VALA_EXTERN GList* astal_wl_registry_find_globals (AstalWlRegistry* self,
                                       const gchar* interface);
VALA_EXTERN AstalWlGlobal* astal_wl_registry_get_global_by_id (AstalWlRegistry* self,
                                                   guint32 id);
VALA_EXTERN AstalWlOutput* astal_wl_registry_get_output_by_id (AstalWlRegistry* self,
                                                   guint32 id);
VALA_EXTERN AstalWlOutput* astal_wl_registry_get_output_by_name (AstalWlRegistry* self,
                                                     const gchar* name);
VALA_EXTERN AstalWlOutput* astal_wl_registry_get_output_by_wl_output (AstalWlRegistry* self,
                                                          struct wl_output* wl_output);
VALA_EXTERN AstalWlSeat* astal_wl_registry_get_seat_by_id (AstalWlRegistry* self,
                                               guint32 id);
VALA_EXTERN AstalWlSeat* astal_wl_registry_get_seat_by_name (AstalWlRegistry* self,
                                                 const gchar* name);
VALA_EXTERN AstalWlSeat* astal_wl_registry_get_seat_by_wl_seat (AstalWlRegistry* self,
                                                    struct wl_seat* wl_seat);
VALA_EXTERN AstalWlRegistry* astal_wl_registry_new (void);
VALA_EXTERN AstalWlRegistry* astal_wl_registry_construct (GType object_type);
VALA_EXTERN GType astal_wl_output_subpixel_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType astal_wl_output_transform_get_type (void) G_GNUC_CONST ;
VALA_EXTERN struct wl_output* astal_wl_output_get_wl_output (AstalWlOutput* self);
VALA_EXTERN guint32 astal_wl_output_get_id (AstalWlOutput* self);
VALA_EXTERN GType astal_wl_rectangle_get_type (void) G_GNUC_CONST ;
VALA_EXTERN AstalWlRectangle* astal_wl_rectangle_dup (const AstalWlRectangle* self);
VALA_EXTERN void astal_wl_rectangle_free (AstalWlRectangle* self);
VALA_EXTERN AstalWlRectangle* astal_wl_output_get_geometry (AstalWlOutput* self);
VALA_EXTERN gint astal_wl_output_get_physical_width (AstalWlOutput* self);
VALA_EXTERN gint astal_wl_output_get_physical_height (AstalWlOutput* self);
VALA_EXTERN gdouble astal_wl_output_get_refresh_rate (AstalWlOutput* self);
VALA_EXTERN AstalWlOutputTransform astal_wl_output_get_transform (AstalWlOutput* self);
VALA_EXTERN AstalWlOutputSubpixel astal_wl_output_get_subpixel (AstalWlOutput* self);
VALA_EXTERN const gchar* astal_wl_output_get_make (AstalWlOutput* self);
VALA_EXTERN const gchar* astal_wl_output_get_model (AstalWlOutput* self);
VALA_EXTERN gdouble astal_wl_output_get_scale (AstalWlOutput* self);
VALA_EXTERN const gchar* astal_wl_output_get_name (AstalWlOutput* self);
VALA_EXTERN const gchar* astal_wl_output_get_description (AstalWlOutput* self);
VALA_EXTERN GType astal_wl_seat_capabilities_get_type (void) G_GNUC_CONST ;
VALA_EXTERN struct wl_seat* astal_wl_seat_get_wl_seat (AstalWlSeat* self);
VALA_EXTERN guint32 astal_wl_seat_get_id (AstalWlSeat* self);
VALA_EXTERN const gchar* astal_wl_seat_get_name (AstalWlSeat* self);
VALA_EXTERN AstalWlSeatCapabilities astal_wl_seat_get_capabilities (AstalWlSeat* self);
VALA_EXTERN void astal_wl_rectangle_init_zero (AstalWlRectangle *self);
VALA_EXTERN void astal_wl_rectangle_copy (AstalWlRectangle *self,
                              AstalWlRectangle* result);
VALA_EXTERN void astal_wl_rectangle_normalize (AstalWlRectangle *self);
VALA_EXTERN gboolean astal_wl_rectangle_intersect (AstalWlRectangle* a,
                                       AstalWlRectangle* b,
                                       AstalWlRectangle* _result_);

G_END_DECLS

#endif
