aboutsummaryrefslogtreecommitdiff
path: root/src/ld-symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ld-symbol.c')
-rw-r--r--src/ld-symbol.c47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/ld-symbol.c b/src/ld-symbol.c
index 4bfe6a2..9dc4394 100644
--- a/src/ld-symbol.c
+++ b/src/ld-symbol.c
@@ -28,18 +28,17 @@
/*
* LdSymbolPrivate:
- * @library: The parent LdLibrary.
- * The library contains the real function for rendering.
+ * @parent: The parent LdSymbolCategory. It is used to identify
+ * the object within it's library.
*/
struct _LdSymbolPrivate
{
- LdLibrary *library;
+ LdSymbolCategory *parent;
};
-G_DEFINE_TYPE (LdSymbol, ld_symbol, G_TYPE_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (LdSymbol, ld_symbol, G_TYPE_OBJECT);
-static void
-ld_symbol_finalize (GObject *gobject);
+static void ld_symbol_finalize (GObject *gobject);
static void
@@ -57,7 +56,7 @@ static void
ld_symbol_init (LdSymbol *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self, LD_TYPE_SYMBOL_LIBRARY, LdSymbolPrivate);
+ (self, LD_TYPE_SYMBOL, LdSymbolPrivate);
}
static void
@@ -66,39 +65,23 @@ ld_symbol_finalize (GObject *gobject)
LdSymbol *self;
self = LD_SYMBOL (gobject);
- g_object_unref (self->priv->library);
+ g_object_unref (self->priv->parent);
/* Chain up to the parent class. */
G_OBJECT_CLASS (ld_symbol_parent_class)->finalize (gobject);
}
/**
- * ld_symbol_new:
- * @library: A library object.
- * @filename: The file from which the symbol will be loaded.
- *
- * Load a symbol from a file into the library.
- */
-LdSymbol *ld_symbol_new (LdLibrary *library)
-{
- LdSymbol *symbol;
-
- symbol = g_object_new (LD_TYPE_SYMBOL, NULL);
-
- symbol->priv->library = library;
- g_object_ref (library);
-}
-
-/**
* ld_symbol_build_identifier:
* @self: A symbol object.
*
* Build an identifier for the symbol.
* The identifier is in the format "Category/Category/Symbol".
*/
-char *
+gchar *
ld_symbol_build_identifier (LdSymbol *self)
{
+ /* TODO: Implement. */
return NULL;
}
@@ -106,12 +89,18 @@ ld_symbol_build_identifier (LdSymbol *self)
* ld_symbol_draw:
* @self: A symbol object.
* @cr: A cairo surface to be drawn on.
- * @param: Parameters for the symbol in a table.
*
* Draw the symbol onto a Cairo surface.
*/
void
-ld_symbol_draw (LdSymbol *self, cairo_t *cr, GHashTable *param)
+ld_symbol_draw (LdSymbol *self, cairo_t *cr)
{
- return;
+ LdSymbolClass *klass;
+
+ g_return_if_fail (LD_IS_SYMBOL (self));
+ g_return_if_fail (cr != NULL);
+
+ klass = LD_SYMBOL_GET_CLASS (self);
+ if (klass->draw)
+ klass->draw (self, cr);
}