From 0c9b297e50ffaf9a34f50a99f7bc4e02ea295d1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 29 Sep 2010 09:13:26 +0200 Subject: Implement part of LdLuaSymbol. The "new" method requires to be passed a parameter that makes it possible to call the appropriate render function. Stub-plemented the "draw" method. --- src/ld-lua-symbol.c | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'src/ld-lua-symbol.c') diff --git a/src/ld-lua-symbol.c b/src/ld-lua-symbol.c index 1278756..b3e13af 100644 --- a/src/ld-lua-symbol.c +++ b/src/ld-lua-symbol.c @@ -29,17 +29,21 @@ /* * LdLuaSymbolPrivate: - * @lua: Parent Lua object. + * @lua: Parent #LdLua object. + * @ident: Identifier for the symbol. */ struct _LdLuaSymbolPrivate { LdLua *lua; + gchar *ident; }; G_DEFINE_TYPE (LdLuaSymbol, ld_lua_symbol, LD_TYPE_SYMBOL); static void ld_lua_symbol_finalize (GObject *gobject); +static void ld_lua_symbol_draw (LdSymbol *self, cairo_t *cr); + static void ld_lua_symbol_class_init (LdLuaSymbolClass *klass) @@ -49,7 +53,7 @@ ld_lua_symbol_class_init (LdLuaSymbolClass *klass) object_class = G_OBJECT_CLASS (klass); object_class->finalize = ld_lua_symbol_finalize; - /* TODO: Override the "draw" method of LdSymbol. */ + klass->parent_class.draw = ld_lua_symbol_draw; g_type_class_add_private (klass, sizeof (LdLuaSymbolPrivate)); } @@ -69,6 +73,8 @@ ld_lua_symbol_finalize (GObject *gobject) self = LD_LUA_SYMBOL (gobject); g_object_unref (self->priv->lua); + g_free (self->priv->ident); + /* Chain up to the parent class. */ G_OBJECT_CLASS (ld_lua_symbol_parent_class)->finalize (gobject); } @@ -76,23 +82,37 @@ ld_lua_symbol_finalize (GObject *gobject) /** * ld_symbol_new: - * @library: A library object. - * @filename: The file from which the symbol will be loaded. + * @lua: An #LdLua object. + * @ident: Identifier for the symbol. * * Load a symbol from a file into the library. */ LdSymbol * -ld_lua_symbol_new (LdSymbolCategory *parent, LdLua *lua) +ld_lua_symbol_new (LdLua *lua, const gchar *ident) { - LdLuaSymbol *symbol; + LdLuaSymbol *self; - symbol = g_object_new (LD_TYPE_LUA_SYMBOL, NULL); + g_return_val_if_fail (LD_IS_LUA (lua), NULL); + g_return_val_if_fail (ident != NULL, NULL); - /* TODO: Create a separate ld-symbol-private.h, include it in this file - * and then assign and ref the parent category here. - */ + self = g_object_new (LD_TYPE_LUA_SYMBOL, NULL); - symbol->priv->lua = lua; + self->priv->lua = lua; g_object_ref (lua); + + self->priv->ident = g_strdup (ident); + return LD_SYMBOL (self); +} + +static void +ld_lua_symbol_draw (LdSymbol *self, cairo_t *cr) +{ + g_return_if_fail (LD_IS_SYMBOL (self)); + g_return_if_fail (cr != NULL); + + /* TODO: Implement. */ + /* Retrieve the function for rendering from the registry or wherever + * it's going to end up, and call it. + */ } -- cgit v1.2.3