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

/*
 * Copyright 2026 elementary, Inc. <https://elementary.io>
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

#include "gala.h"
#include <glib.h>
#include <clutter/clutter.h>
#include <glib-object.h>
#include <float.h>
#include <math.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

#define GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT (gala_box_blur_manager_box_blur_effect_get_type ())
#define GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT, GalaBoxBlurManagerBoxBlurEffect))
#define GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT, GalaBoxBlurManagerBoxBlurEffectClass))
#define GALA_BOX_BLUR_MANAGER_IS_BOX_BLUR_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT))
#define GALA_BOX_BLUR_MANAGER_IS_BOX_BLUR_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT))
#define GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT, GalaBoxBlurManagerBoxBlurEffectClass))

typedef struct _GalaBoxBlurManagerBoxBlurEffect GalaBoxBlurManagerBoxBlurEffect;
typedef struct _GalaBoxBlurManagerBoxBlurEffectClass GalaBoxBlurManagerBoxBlurEffectClass;
enum  {
	GALA_BOX_BLUR_MANAGER_0_PROPERTY,
	GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY,
	GALA_BOX_BLUR_MANAGER_NUM_PROPERTIES
};
static GParamSpec* gala_box_blur_manager_properties[GALA_BOX_BLUR_MANAGER_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
typedef enum  {
	GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_HORIZONTAL,
	GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_VERTICAL
} GalaBoxBlurManagerBoxBlurEffectPassDirection;

#define GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_TYPE_PASS_DIRECTION (gala_box_blur_manager_box_blur_effect_pass_direction_get_type ())
typedef struct _GalaBoxBlurManagerBoxBlurEffectPrivate GalaBoxBlurManagerBoxBlurEffectPrivate;
enum  {
	GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_0_PROPERTY,
	GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_RADIUS_PROPERTY,
	GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_NUM_PROPERTIES
};
static GParamSpec* gala_box_blur_manager_box_blur_effect_properties[GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_NUM_PROPERTIES];
#define _g_bytes_unref0(var) ((var == NULL) ? NULL : (var = (g_bytes_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

struct _GalaBoxBlurManagerPrivate {
	gint _radius;
	GalaBoxBlurManagerBoxBlurEffect* horizontal_effect;
	GalaBoxBlurManagerBoxBlurEffect* vertical_effect;
};

struct _GalaBoxBlurManagerBoxBlurEffect {
	ClutterShaderEffect parent_instance;
	GalaBoxBlurManagerBoxBlurEffectPrivate * priv;
};

struct _GalaBoxBlurManagerBoxBlurEffectClass {
	ClutterShaderEffectClass parent_class;
};

static gint GalaBoxBlurManager_private_offset;
static gpointer gala_box_blur_manager_parent_class = NULL;
static gpointer gala_box_blur_manager_box_blur_effect_parent_class = NULL;

static GType gala_box_blur_manager_box_blur_effect_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType gala_box_blur_manager_box_blur_effect_pass_direction_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GalaBoxBlurManagerBoxBlurEffect* gala_box_blur_manager_box_blur_effect_new (GalaBoxBlurManagerBoxBlurEffectPassDirection direction);
static GalaBoxBlurManagerBoxBlurEffect* gala_box_blur_manager_box_blur_effect_construct (GType object_type,
                                                                                  GalaBoxBlurManagerBoxBlurEffectPassDirection direction);
static void gala_box_blur_manager_box_blur_effect_set_radius (GalaBoxBlurManagerBoxBlurEffect* self,
                                                       gint value);
static gfloat* _vala_array_dup4 (gfloat* self,
                          gssize length);
static void gala_box_blur_manager_box_blur_effect_real_set_actor (ClutterActorMeta* base,
                                                           ClutterActor* new_actor);
static void gala_box_blur_manager_box_blur_effect_update_pixel_step (GalaBoxBlurManagerBoxBlurEffect* self);
static void _gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify (GObject* _sender,
                                                                               GParamSpec* pspec,
                                                                               gpointer self);
static GType gala_box_blur_manager_box_blur_effect_get_type_once (void);
static void _vala_gala_box_blur_manager_box_blur_effect_set_property (GObject * object,
                                                               guint property_id,
                                                               const GValue * value,
                                                               GParamSpec * pspec);
static void gala_box_blur_manager_finalize (GObject * obj);
static GType gala_box_blur_manager_get_type_once (void);
static void _vala_gala_box_blur_manager_get_property (GObject * object,
                                               guint property_id,
                                               GValue * value,
                                               GParamSpec * pspec);
static void _vala_gala_box_blur_manager_set_property (GObject * object,
                                               guint property_id,
                                               const GValue * value,
                                               GParamSpec * pspec);

static const gfloat GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_HORIZONTAL_PASS_DATA[2] = {1.0f, 0.0f};
static const gfloat GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_VERTICAL_PASS_DATA[2] = {0.0f, 1.0f};

static inline gpointer
gala_box_blur_manager_get_instance_private (GalaBoxBlurManager* self)
{
	return G_STRUCT_MEMBER_P (self, GalaBoxBlurManager_private_offset);
}

GalaBoxBlurManager*
gala_box_blur_manager_construct (GType object_type,
                                 ClutterActor* actor)
{
	GalaBoxBlurManager * self = NULL;
	GalaBoxBlurManagerBoxBlurEffect* _tmp0_;
	GalaBoxBlurManagerBoxBlurEffect* _tmp1_;
	GalaBoxBlurManagerBoxBlurEffect* _tmp2_;
	GalaBoxBlurManagerBoxBlurEffect* _tmp3_;
	g_return_val_if_fail (actor != NULL, NULL);
	self = (GalaBoxBlurManager*) g_object_new (object_type, NULL);
	_tmp0_ = gala_box_blur_manager_box_blur_effect_new (GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_HORIZONTAL);
	g_object_ref_sink (_tmp0_);
	_g_object_unref0 (self->priv->horizontal_effect);
	self->priv->horizontal_effect = _tmp0_;
	_tmp1_ = gala_box_blur_manager_box_blur_effect_new (GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_VERTICAL);
	g_object_ref_sink (_tmp1_);
	_g_object_unref0 (self->priv->vertical_effect);
	self->priv->vertical_effect = _tmp1_;
	_tmp2_ = self->priv->horizontal_effect;
	clutter_actor_add_effect (actor, (ClutterEffect*) _tmp2_);
	_tmp3_ = self->priv->vertical_effect;
	clutter_actor_add_effect (actor, (ClutterEffect*) _tmp3_);
	return self;
}

GalaBoxBlurManager*
gala_box_blur_manager_new (ClutterActor* actor)
{
	return gala_box_blur_manager_construct (GALA_TYPE_BOX_BLUR_MANAGER, actor);
}

gint
gala_box_blur_manager_get_radius (GalaBoxBlurManager* self)
{
	gint result;
	g_return_val_if_fail (self != NULL, -1);
	result = self->priv->_radius;
	return result;
}

void
gala_box_blur_manager_set_radius (GalaBoxBlurManager* self,
                                  gint value)
{
	GalaBoxBlurManagerBoxBlurEffect* _tmp0_;
	GalaBoxBlurManagerBoxBlurEffect* _tmp1_;
	g_return_if_fail (self != NULL);
	self->priv->_radius = value;
	_tmp0_ = self->priv->horizontal_effect;
	gala_box_blur_manager_box_blur_effect_set_radius (_tmp0_, value);
	_tmp1_ = self->priv->vertical_effect;
	gala_box_blur_manager_box_blur_effect_set_radius (_tmp1_, value);
	g_object_notify_by_pspec ((GObject *) self, gala_box_blur_manager_properties[GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY]);
}

 G_GNUC_NO_INLINE static GType
gala_box_blur_manager_box_blur_effect_pass_direction_get_type_once (void)
{
	static const GEnumValue values[] = {{GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_HORIZONTAL, "GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_HORIZONTAL", "horizontal"}, {GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_VERTICAL, "GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_VERTICAL", "vertical"}, {0, NULL, NULL}};
	GType gala_box_blur_manager_box_blur_effect_pass_direction_type_id;
	gala_box_blur_manager_box_blur_effect_pass_direction_type_id = g_enum_register_static ("GalaBoxBlurManagerBoxBlurEffectPassDirection", values);
	return gala_box_blur_manager_box_blur_effect_pass_direction_type_id;
}

GType
gala_box_blur_manager_box_blur_effect_pass_direction_get_type (void)
{
	static gsize gala_box_blur_manager_box_blur_effect_pass_direction_type_id__once = 0;
	if (g_once_init_enter (&gala_box_blur_manager_box_blur_effect_pass_direction_type_id__once)) {
		GType gala_box_blur_manager_box_blur_effect_pass_direction_type_id;
		gala_box_blur_manager_box_blur_effect_pass_direction_type_id = gala_box_blur_manager_box_blur_effect_pass_direction_get_type_once ();
		g_once_init_leave (&gala_box_blur_manager_box_blur_effect_pass_direction_type_id__once, gala_box_blur_manager_box_blur_effect_pass_direction_type_id);
	}
	return gala_box_blur_manager_box_blur_effect_pass_direction_type_id__once;
}

static gfloat*
_vala_array_dup4 (gfloat* self,
                  gssize length)
{
	if (length > 0) {
		return g_memdup2 (self, length * sizeof (gfloat));
	}
	return NULL;
}

static GalaBoxBlurManagerBoxBlurEffect*
gala_box_blur_manager_box_blur_effect_construct (GType object_type,
                                                 GalaBoxBlurManagerBoxBlurEffectPassDirection direction)
{
	GalaBoxBlurManagerBoxBlurEffect * self = NULL;
	GValue direction_value = {0};
	GValue _tmp5_ = {0};
	gfloat* _tmp6_ = NULL;
	gint _tmp6__length1 = 0;
	gint __tmp6__size_ = 0;
	gfloat* direction_data = NULL;
	gfloat* _tmp7_;
	gint _tmp7__length1;
	gint direction_data_length1;
	gint _direction_data_size_;
	GValue _tmp8_;
	GValue _tmp9_;
	GError* _inner_error0_ = NULL;
	self = (GalaBoxBlurManagerBoxBlurEffect*) g_object_new (object_type, "shader-type", CLUTTER_FRAGMENT_SHADER, NULL);
	{
		GBytes* bytes = NULL;
		GBytes* _tmp0_;
		gsize _tmp1_ = 0;
		guint8* _tmp2_;
		_tmp0_ = g_resources_lookup_data ("/io/elementary/desktop/gala/shaders/box-blur.frag", G_RESOURCE_LOOKUP_FLAGS_NONE, &_inner_error0_);
		bytes = _tmp0_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			goto __catch0_g_error;
		}
		_tmp2_ = g_bytes_get_data (bytes, &_tmp1_);
		clutter_shader_effect_set_shader_source ((ClutterShaderEffect*) self, (const gchar*) _tmp2_);
		_g_bytes_unref0 (bytes);
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e = NULL;
		GError* _tmp3_;
		const gchar* _tmp4_;
		e = _inner_error0_;
		_inner_error0_ = NULL;
		_tmp3_ = e;
		_tmp4_ = _tmp3_->message;
		g_critical ("BoxBlurManager.vala:54: Unable to load box-blur.frag: %s", _tmp4_);
		_g_error_free0 (e);
	}
	__finally0:
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
		g_clear_error (&_inner_error0_);
		return NULL;
	}
	gala_box_blur_manager_box_blur_effect_set_radius (self, 0);
	g_value_init (&_tmp5_, clutter_shader_float_get_type ());
	direction_value = _tmp5_;
	if (direction == GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_PASS_DIRECTION_HORIZONTAL) {
		_tmp6_ = GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_HORIZONTAL_PASS_DATA;
		_tmp6__length1 = G_N_ELEMENTS (GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_HORIZONTAL_PASS_DATA);
		__tmp6__size_ = _tmp6__length1;
	} else {
		_tmp6_ = GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_VERTICAL_PASS_DATA;
		_tmp6__length1 = G_N_ELEMENTS (GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_VERTICAL_PASS_DATA);
		__tmp6__size_ = _tmp6__length1;
	}
	_tmp7_ = (_tmp6_ != NULL) ? _vala_array_dup4 (_tmp6_, _tmp6__length1) : _tmp6_;
	_tmp7__length1 = _tmp6__length1;
	direction_data = _tmp7_;
	direction_data_length1 = _tmp7__length1;
	_direction_data_size_ = direction_data_length1;
	_tmp8_ = direction_value;
	clutter_value_set_shader_float (&_tmp8_, (gint) direction_data_length1, direction_data);
	_tmp9_ = direction_value;
	clutter_shader_effect_set_uniform_value ((ClutterShaderEffect*) self, "DIRECTION", &_tmp9_);
	direction_data = (g_free (direction_data), NULL);
	G_IS_VALUE (&direction_value) ? (g_value_unset (&direction_value), NULL) : NULL;
	return self;
}

static GalaBoxBlurManagerBoxBlurEffect*
gala_box_blur_manager_box_blur_effect_new (GalaBoxBlurManagerBoxBlurEffectPassDirection direction)
{
	return gala_box_blur_manager_box_blur_effect_construct (GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT, direction);
}

static void
_gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify (GObject* _sender,
                                                                          GParamSpec* pspec,
                                                                          gpointer self)
{
	gala_box_blur_manager_box_blur_effect_update_pixel_step ((GalaBoxBlurManagerBoxBlurEffect*) self);
}

static void
gala_box_blur_manager_box_blur_effect_real_set_actor (ClutterActorMeta* base,
                                                      ClutterActor* new_actor)
{
	GalaBoxBlurManagerBoxBlurEffect * self;
	ClutterActor* _tmp0_;
	ClutterActor* _tmp1_;
	ClutterActor* _tmp10_;
	ClutterActor* _tmp11_;
	self = (GalaBoxBlurManagerBoxBlurEffect*) base;
	_tmp0_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		ClutterActor* _tmp2_;
		ClutterActor* _tmp3_;
		guint _tmp4_;
		GQuark _tmp5_;
		ClutterActor* _tmp6_;
		ClutterActor* _tmp7_;
		guint _tmp8_;
		GQuark _tmp9_;
		_tmp2_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
		_tmp3_ = _tmp2_;
		g_signal_parse_name ("notify::width", G_TYPE_OBJECT, &_tmp4_, &_tmp5_, TRUE);
		g_signal_handlers_disconnect_matched ((GObject*) _tmp3_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp4_, _tmp5_, NULL, (GCallback) _gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify, self);
		_tmp6_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
		_tmp7_ = _tmp6_;
		g_signal_parse_name ("notify::height", G_TYPE_OBJECT, &_tmp8_, &_tmp9_, TRUE);
		g_signal_handlers_disconnect_matched ((GObject*) _tmp7_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DETAIL | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp8_, _tmp9_, NULL, (GCallback) _gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify, self);
	}
	CLUTTER_ACTOR_META_CLASS (gala_box_blur_manager_box_blur_effect_parent_class)->set_actor ((ClutterActorMeta*) G_TYPE_CHECK_INSTANCE_CAST (self, clutter_shader_effect_get_type (), ClutterShaderEffect), new_actor);
	_tmp10_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
	_tmp11_ = _tmp10_;
	if (_tmp11_ != NULL) {
		ClutterActor* _tmp12_;
		ClutterActor* _tmp13_;
		ClutterActor* _tmp14_;
		ClutterActor* _tmp15_;
		_tmp12_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
		_tmp13_ = _tmp12_;
		g_signal_connect_object ((GObject*) _tmp13_, "notify::width", (GCallback) _gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify, self, 0);
		_tmp14_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
		_tmp15_ = _tmp14_;
		g_signal_connect_object ((GObject*) _tmp15_, "notify::height", (GCallback) _gala_box_blur_manager_box_blur_effect_update_pixel_step_g_object_notify, self, 0);
		gala_box_blur_manager_box_blur_effect_update_pixel_step (self);
	}
}

static void
gala_box_blur_manager_box_blur_effect_update_pixel_step (GalaBoxBlurManagerBoxBlurEffect* self)
{
	GValue pixel_step_value = {0};
	GValue _tmp0_ = {0};
	GValue _tmp1_;
	ClutterActor* _tmp2_;
	ClutterActor* _tmp3_;
	gfloat _tmp4_;
	gfloat _tmp5_;
	ClutterActor* _tmp6_;
	ClutterActor* _tmp7_;
	gfloat _tmp8_;
	gfloat _tmp9_;
	gfloat* _tmp10_;
	gfloat* _tmp11_;
	gint _tmp11__length1;
	GValue _tmp12_;
	g_return_if_fail (self != NULL);
	g_value_init (&_tmp0_, clutter_shader_float_get_type ());
	pixel_step_value = _tmp0_;
	_tmp1_ = pixel_step_value;
	_tmp2_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
	_tmp3_ = _tmp2_;
	_tmp4_ = clutter_actor_get_width (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = clutter_actor_meta_get_actor ((ClutterActorMeta*) self);
	_tmp7_ = _tmp6_;
	_tmp8_ = clutter_actor_get_height (_tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = g_new0 (gfloat, 2);
	_tmp10_[0] = 1 / _tmp5_;
	_tmp10_[1] = 1 / _tmp9_;
	_tmp11_ = _tmp10_;
	_tmp11__length1 = 2;
	clutter_value_set_shader_float (&_tmp1_, (gint) 2, _tmp11_);
	_tmp11_ = (g_free (_tmp11_), NULL);
	_tmp12_ = pixel_step_value;
	clutter_shader_effect_set_uniform_value ((ClutterShaderEffect*) self, "PIXEL_STEP", &_tmp12_);
	G_IS_VALUE (&pixel_step_value) ? (g_value_unset (&pixel_step_value), NULL) : NULL;
}

static void
gala_box_blur_manager_box_blur_effect_set_radius (GalaBoxBlurManagerBoxBlurEffect* self,
                                                  gint value)
{
	GValue _tmp0_ = {0};
	g_return_if_fail (self != NULL);
	g_value_init (&_tmp0_, G_TYPE_INT);
	g_value_set_int (&_tmp0_, value);
	clutter_shader_effect_set_uniform_value ((ClutterShaderEffect*) self, "RADIUS", &_tmp0_);
	G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL;
	g_object_notify_by_pspec ((GObject *) self, gala_box_blur_manager_box_blur_effect_properties[GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_RADIUS_PROPERTY]);
}

static void
gala_box_blur_manager_box_blur_effect_class_init (GalaBoxBlurManagerBoxBlurEffectClass * klass,
                                                  gpointer klass_data)
{
	gala_box_blur_manager_box_blur_effect_parent_class = g_type_class_peek_parent (klass);
	((ClutterActorMetaClass *) klass)->set_actor = (void (*) (ClutterActorMeta*, ClutterActor*)) gala_box_blur_manager_box_blur_effect_real_set_actor;
	G_OBJECT_CLASS (klass)->set_property = _vala_gala_box_blur_manager_box_blur_effect_set_property;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_RADIUS_PROPERTY, gala_box_blur_manager_box_blur_effect_properties[GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_RADIUS_PROPERTY] = g_param_spec_int ("radius", "radius", "radius", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE));
}

static void
gala_box_blur_manager_box_blur_effect_instance_init (GalaBoxBlurManagerBoxBlurEffect * self,
                                                     gpointer klass)
{
}

 G_GNUC_NO_INLINE static GType
gala_box_blur_manager_box_blur_effect_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GalaBoxBlurManagerBoxBlurEffectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gala_box_blur_manager_box_blur_effect_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GalaBoxBlurManagerBoxBlurEffect), 0, (GInstanceInitFunc) gala_box_blur_manager_box_blur_effect_instance_init, NULL };
	GType gala_box_blur_manager_box_blur_effect_type_id;
	gala_box_blur_manager_box_blur_effect_type_id = g_type_register_static (clutter_shader_effect_get_type (), "GalaBoxBlurManagerBoxBlurEffect", &g_define_type_info, G_TYPE_FLAG_NONE);
	return gala_box_blur_manager_box_blur_effect_type_id;
}

static GType
gala_box_blur_manager_box_blur_effect_get_type (void)
{
	static gsize gala_box_blur_manager_box_blur_effect_type_id__once = 0;
	if (g_once_init_enter (&gala_box_blur_manager_box_blur_effect_type_id__once)) {
		GType gala_box_blur_manager_box_blur_effect_type_id;
		gala_box_blur_manager_box_blur_effect_type_id = gala_box_blur_manager_box_blur_effect_get_type_once ();
		g_once_init_leave (&gala_box_blur_manager_box_blur_effect_type_id__once, gala_box_blur_manager_box_blur_effect_type_id);
	}
	return gala_box_blur_manager_box_blur_effect_type_id__once;
}

static void
_vala_gala_box_blur_manager_box_blur_effect_set_property (GObject * object,
                                                          guint property_id,
                                                          const GValue * value,
                                                          GParamSpec * pspec)
{
	GalaBoxBlurManagerBoxBlurEffect * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_BOX_BLUR_MANAGER_TYPE_BOX_BLUR_EFFECT, GalaBoxBlurManagerBoxBlurEffect);
	switch (property_id) {
		case GALA_BOX_BLUR_MANAGER_BOX_BLUR_EFFECT_RADIUS_PROPERTY:
		gala_box_blur_manager_box_blur_effect_set_radius (self, g_value_get_int (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
gala_box_blur_manager_class_init (GalaBoxBlurManagerClass * klass,
                                  gpointer klass_data)
{
	gala_box_blur_manager_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &GalaBoxBlurManager_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_gala_box_blur_manager_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_gala_box_blur_manager_set_property;
	G_OBJECT_CLASS (klass)->finalize = gala_box_blur_manager_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY, gala_box_blur_manager_properties[GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY] = g_param_spec_int ("radius", "radius", "radius", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
gala_box_blur_manager_instance_init (GalaBoxBlurManager * self,
                                     gpointer klass)
{
	self->priv = gala_box_blur_manager_get_instance_private (self);
	self->priv->_radius = 0;
}

static void
gala_box_blur_manager_finalize (GObject * obj)
{
	GalaBoxBlurManager * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GALA_TYPE_BOX_BLUR_MANAGER, GalaBoxBlurManager);
	_g_object_unref0 (self->priv->horizontal_effect);
	_g_object_unref0 (self->priv->vertical_effect);
	G_OBJECT_CLASS (gala_box_blur_manager_parent_class)->finalize (obj);
}

 G_GNUC_NO_INLINE static GType
gala_box_blur_manager_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (GalaBoxBlurManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gala_box_blur_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GalaBoxBlurManager), 0, (GInstanceInitFunc) gala_box_blur_manager_instance_init, NULL };
	GType gala_box_blur_manager_type_id;
	gala_box_blur_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "GalaBoxBlurManager", &g_define_type_info, G_TYPE_FLAG_NONE);
	GalaBoxBlurManager_private_offset = g_type_add_instance_private (gala_box_blur_manager_type_id, sizeof (GalaBoxBlurManagerPrivate));
	return gala_box_blur_manager_type_id;
}

GType
gala_box_blur_manager_get_type (void)
{
	static gsize gala_box_blur_manager_type_id__once = 0;
	if (g_once_init_enter (&gala_box_blur_manager_type_id__once)) {
		GType gala_box_blur_manager_type_id;
		gala_box_blur_manager_type_id = gala_box_blur_manager_get_type_once ();
		g_once_init_leave (&gala_box_blur_manager_type_id__once, gala_box_blur_manager_type_id);
	}
	return gala_box_blur_manager_type_id__once;
}

static void
_vala_gala_box_blur_manager_get_property (GObject * object,
                                          guint property_id,
                                          GValue * value,
                                          GParamSpec * pspec)
{
	GalaBoxBlurManager * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_BOX_BLUR_MANAGER, GalaBoxBlurManager);
	switch (property_id) {
		case GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY:
		g_value_set_int (value, gala_box_blur_manager_get_radius (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_gala_box_blur_manager_set_property (GObject * object,
                                          guint property_id,
                                          const GValue * value,
                                          GParamSpec * pspec)
{
	GalaBoxBlurManager * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GALA_TYPE_BOX_BLUR_MANAGER, GalaBoxBlurManager);
	switch (property_id) {
		case GALA_BOX_BLUR_MANAGER_RADIUS_PROPERTY:
		gala_box_blur_manager_set_radius (self, g_value_get_int (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

