+static void
+set_property(GObject *o, guint id, const GValue *val, GParamSpec *spec)
+{
+ EngineTexture *t = ENGINE_TEXTURE(o);
+
+ switch (id) {
+ case PROP_USIZE:
+ t->usize = g_value_get_uint(val);
+ break;
+ case PROP_VSIZE:
+ t->vsize = g_value_get_uint(val);
+ break;
+ case PROP_UCLAMP:
+ t->uclamp = g_value_get_uint(val);
+ break;
+ case PROP_VCLAMP:
+ t->vclamp = g_value_get_uint(val);
+ break;
+ case PROP_UBITS:
+ t->ubits = g_value_get_uint(val);
+ break;
+ case PROP_VBITS:
+ t->vbits = g_value_get_uint(val);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(o, id, spec);
+ }
+}
+
+static void
+get_property(GObject *o, guint id, GValue *val, GParamSpec *spec)
+{
+ EngineTexture *t = ENGINE_TEXTURE(o);
+
+ switch (id) {
+ case PROP_USIZE:
+ g_value_set_uint(val, t->usize);
+ break;
+ case PROP_VSIZE:
+ g_value_set_uint(val, t->vsize);
+ break;
+ case PROP_UCLAMP:
+ g_value_set_uint(val, t->uclamp);
+ break;
+ case PROP_VCLAMP:
+ g_value_set_uint(val, t->vclamp);
+ break;
+ case PROP_UBITS:
+ g_value_set_uint(val, t->ubits);
+ break;
+ case PROP_VBITS:
+ g_value_set_uint(val, t->vbits);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(o, id, spec);
+ }
+}
+
+static void engine_texture_init(EngineTexture *t)