From 85758520bb17ee1cdc110e5286d87d695059a36f Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Mon, 28 Mar 2011 18:51:23 -0400 Subject: [PATCH] texture: Migrate to GOB2. --- src/engine/.gitignore | 1 + src/engine/Makefile.inc | 6 +- src/engine/engine.c | 2 +- src/engine/texture.c | 200 ---------------------------------------- src/engine/texture.gob | 97 +++++++++++++++++++ src/engine/texture.h | 55 ----------- 6 files changed, 102 insertions(+), 259 deletions(-) delete mode 100644 src/engine/texture.c create mode 100644 src/engine/texture.gob delete mode 100644 src/engine/texture.h diff --git a/src/engine/.gitignore b/src/engine/.gitignore index eb6ec49..b611981 100644 --- a/src/engine/.gitignore +++ b/src/engine/.gitignore @@ -1 +1,2 @@ palette.[ch] +texture.[ch] diff --git a/src/engine/Makefile.inc b/src/engine/Makefile.inc index 35c9138..3ffcb33 100644 --- a/src/engine/Makefile.inc +++ b/src/engine/Makefile.inc @@ -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) diff --git a/src/engine/engine.c b/src/engine/engine.c index 7077f6e..09f248d 100644 --- a/src/engine/engine.c +++ b/src/engine/engine.c @@ -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 index 7cf05fa..0000000 --- a/src/engine/texture.c +++ /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 . - */ - -#include -#include -#include - -#include -#include -#include -#include -#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 index 0000000..35dd739 --- /dev/null +++ b/src/engine/texture.gob @@ -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 . + */ +%} + +%{ +#include +#include +#include +%} + +%h{ +#include +%} + +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 index ac1ad05..0000000 --- a/src/engine/texture.h +++ /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 . - */ - -#ifndef TEXTURE_H_ -#define TEXTURE_H_ - -#include -#include - -#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 -- 2.43.2