]> git.draconx.ca Git - upkg.git/commitdiff
texture: Migrate to GOB2.
authorNick Bowler <nbowler@draconx.ca>
Mon, 28 Mar 2011 22:51:23 +0000 (18:51 -0400)
committerNick Bowler <nbowler@draconx.ca>
Mon, 28 Mar 2011 22:51:23 +0000 (18:51 -0400)
src/engine/.gitignore
src/engine/Makefile.inc
src/engine/engine.c
src/engine/texture.c [deleted file]
src/engine/texture.gob [new file with mode: 0644]
src/engine/texture.h [deleted file]

index eb6ec495eadb353f3970324ec442ad43ee375500..b6119818b835e9b8626808a0f7ceda7feb794030 100644 (file)
@@ -1 +1,2 @@
 palette.[ch]
+texture.[ch]
index 35c913878277829f643a96922b5bfb2f95601891..3ffcb331d4bf5aa6c57985b3e783342e20ba6598 100644 (file)
@@ -4,9 +4,9 @@
 # notice and this notice are preserved.  This file is offered as-is,
 # without any warranty.
 
-noinst_HEADERS += engine/texture.h engine/music.h engine/music-module.h
+noinst_HEADERS += engine/music.h engine/music-module.h
 
-engine_GOBS = engine/palette.gob
+engine_GOBS = engine/palette.gob engine/texture.gob
 
 EXTRA_DIST += $(engine_GOBS) $(engine_GOBS:.gob=.gobstamp)
 noinst_HEADERS += $(engine_GOBS:.gob=.h)
@@ -14,7 +14,7 @@ MAINTAINERCLEANFILES += $(engine_GOBS:.gob=.gobstamp) \
        $(engine_GOBS:.gob=.c) $(engine_GOBS:.gob=.h)
 
 pkglib_LTLIBRARIES += engine.la
-engine_la_SOURCES   = engine/engine.c engine/music.c engine/texture.c \
+engine_la_SOURCES   = engine/engine.c engine/music.c \
        $(engine_GOBS:.gob=.c)
 engine_la_CFLAGS    = $(GLIB_CFLAGS)
 engine_la_LIBADD    = $(GLIB_LIBS)
index 7077f6e59b1255ba7d7028f6c866edcfde4d8e9c..09f248df091e0ba27bd4603c553d6a4fc2a7dfb9 100644 (file)
@@ -29,7 +29,7 @@
 int init(GTypeModule *m)
 {
        music_register(m);
-       texture_register(m);
+       engine_texture_register_type(m);
        engine_palette_register_type(m);
        return 0;
 }
diff --git a/src/engine/texture.c b/src/engine/texture.c
deleted file mode 100644 (file)
index 7cf05fa..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- *  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)
-{
-}
diff --git a/src/engine/texture.gob b/src/engine/texture.gob
new file mode 100644 (file)
index 0000000..35dd739
--- /dev/null
@@ -0,0 +1,97 @@
+%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
+               );
+}
diff --git a/src/engine/texture.h b/src/engine/texture.h
deleted file mode 100644 (file)
index ac1ad05..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  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