+++ /dev/null
-/*
- * upkg: tool for manipulating Unreal Tournament packages.
- * Copyright © 2009-2011 Nick Bowler
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <glib-object.h>
-
-#include <uobject/uobject.h>
-#include <uobject/exportable.h>
-#include <engine/texture.h>
-#include <engine/palette.h>
-#include "upkg.h"
-
-#define TEXTURE_GET_PRIV(o) \
- G_TYPE_INSTANCE_GET_PRIVATE(o, ENGINE_TEXTURE_TYPE, struct texture_priv)
-
-enum {
- PROP_0,
- PROP_USIZE,
- PROP_VSIZE,
- PROP_UCLAMP,
- PROP_VCLAMP,
- PROP_UBITS,
- PROP_VBITS,
- PROP_PALETTE,
-};
-
-struct texture_priv {
- unsigned type;
-
- struct upkg_file *f;
- size_t base, len;
-
- unsigned char buf[2048];
- unsigned long nbuf;
-};
-
-void exportable_init(UObjectExportable *e)
-{
-}
-
-G_DEFINE_DYNAMIC_TYPE(EngineTexture, engine_texture, U_TYPE_OBJECT);
-
-static int deserialize(UObject *uo)
-{
- struct texture_priv *priv = TEXTURE_GET_PRIV(uo);
- EngineTexture *t = ENGINE_TEXTURE(uo);
-
- U_OBJECT_CLASS(engine_texture_parent_class)->deserialize(uo);
-
- return 0;
-}
-
-void texture_register(GTypeModule *m)
-{
- engine_texture_register_type(m);
-}
-
-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;
- case PROP_PALETTE:
- t->palette = g_value_get_object(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;
- case PROP_PALETTE:
- g_value_set_object(val, t->palette);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(o, id, spec);
- }
-}
-
-static void engine_texture_init(EngineTexture *t)
-{
- t->usize = t->vsize = 0;
-}
-
-static void engine_texture_class_init(EngineTextureClass *class)
-{
- UObjectClass *uo = U_OBJECT_CLASS(class);
- GObjectClass *go = G_OBJECT_CLASS(class);
-
- g_type_class_add_private(class, sizeof (struct texture_priv));
-
- uo->deserialize = deserialize;
- go->set_property = set_property;
- go->get_property = get_property;
-
- g_object_class_install_property(go, PROP_USIZE,
- g_param_spec_uint("USize",
- "USize",
- "Width of the texture.",
- 0, 2048, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_VSIZE,
- g_param_spec_uint("VSize",
- "VSize",
- "Height of the texture.",
- 0, 2048, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_UCLAMP,
- g_param_spec_uint("UClamp",
- "UClamp",
- "???",
- 0, 2048, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_VCLAMP,
- g_param_spec_uint("VClamp",
- "VClamp",
- "???",
- 0, 2048, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_UBITS,
- g_param_spec_uint("UBits",
- "UBits",
- "???",
- 0, 64, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_VBITS,
- g_param_spec_uint("VBits",
- "VBits",
- "???",
- 0, 64, 0,
- G_PARAM_READWRITE));
- g_object_class_install_property(go, PROP_PALETTE,
- g_param_spec_object("Palette",
- "Palette",
- "Palette reference for the texture.",
- ENGINE_TYPE_PALETTE,
- G_PARAM_READWRITE));
-}
-
-static void engine_texture_class_finalize(EngineTextureClass *class)
-{
-}
--- /dev/null
+%alltop{
+/*
+ * upkg: tool for manipulating Unreal Tournament packages.
+ * Copyright © 2009-2011 Nick Bowler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+%}
+
+%{
+#include <stdio.h>
+#include <string.h>
+#include <engine/palette.h>
+%}
+
+%h{
+#include <uobject/uobject.h>
+%}
+
+class Engine:Texture from U:Object (dynamic)
+{
+ private unsigned USize;
+ private unsigned UClamp;
+ private unsigned UBits;
+ private unsigned VSize;
+ private unsigned VClamp;
+ private unsigned VBits;
+
+ private Engine:Palette *Palette;
+
+ property UINT USize
+ ( nick = "USize"
+ , blurb = "Width of the texture."
+ , minimum = 0
+ , maximum = 2048
+ , default_value = 0
+ , link
+ );
+ property UINT UClamp
+ ( nick = "UClamp"
+ , blurb = "???"
+ , minimum = 0
+ , maximum = 2048
+ , default_value = 0
+ , link
+ );
+ property UINT UBits
+ ( nick = "UBits"
+ , blurb = "???"
+ , minimum = 0
+ , maximum = 64
+ , default_value = 0
+ , link
+ );
+ property UINT VSize
+ ( nick = "VSize"
+ , blurb = "Height of the texture."
+ , minimum = 0
+ , maximum = 2048
+ , default_value = 0
+ , link
+ );
+ property UINT VClamp
+ ( nick = "VClamp"
+ , blurb = "???"
+ , minimum = 0
+ , maximum = 2048
+ , default_value = 0
+ , link
+ );
+ property UINT VBits
+ ( nick = "VBits"
+ , blurb = "???"
+ , minimum = 0
+ , maximum = 64
+ , default_value = 0
+ , link
+ );
+
+ property OBJECT Palette
+ ( nick = "Palette"
+ , blurb = "Reference to the texture's palette."
+ , object_type = Engine:Palette
+ , link
+ );
+}
+++ /dev/null
-/*
- * upkg: tool for manipulating Unreal Tournament packages.
- * Copyright © 2009-2011 Nick Bowler
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef TEXTURE_H_
-#define TEXTURE_H_
-
-#include <glib-object.h>
-#include <uobject/uobject.h>
-
-#define ENGINE_TEXTURE_TYPE (engine_texture_get_type())
-#define ENGINE_TEXTURE(obj) \
- G_TYPE_CHECK_INSTANCE_CAST(obj, ENGINE_TEXTURE_TYPE, EngineTexture)
-#define ENGINE_TEXTURE_CLASS(class) \
- G_TYPE_CHECK_CLASS_CAST(class, ENGINE_TEXTURE_TYPE, EngineTextureClass)
-#define ENGINE_IS_TEXTURE(obj) \
- G_TYPE_CHECK_INSTANCE_TYPE(obj, ENGINE_TEXTURE_TYPE)
-#define ENGINE_IS_TEXTURE_CLASS(class) \
- G_TYPE_CHECK_CLASS_TYPE(class, ENGINE_TEXTURE_TYPE, EngineTextureClass)
-
-typedef struct EngineTexture EngineTexture;
-typedef struct EngineTextureClass EngineTextureClass;
-
-struct EngineTexture {
- UObject parent;
-
- UObject *palette;
-
- unsigned int usize, vsize;
- unsigned int uclamp, vclamp;
- unsigned int ubits, vbits;
-};
-
-struct EngineTextureClass {
- UObjectClass parent;
-};
-
-GType engine_texture_get_type(void);
-void texture_register(GTypeModule *m);
-
-#endif