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.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/ld-symbol.c b/src/ld-symbol.c
index 24a7ab9..cdc59f5 100644
--- a/src/ld-symbol.c
+++ b/src/ld-symbol.c
@@ -35,7 +35,8 @@ enum
PROP_0,
PROP_NAME,
PROP_HUMAN_NAME,
- PROP_AREA
+ PROP_AREA,
+ PROP_TERMINALS
};
static void ld_symbol_get_property (GObject *object, guint property_id,
@@ -85,6 +86,16 @@ ld_symbol_class_init (LdSymbolClass *klass)
"The area of this symbol.",
LD_TYPE_RECTANGLE, G_PARAM_READABLE);
g_object_class_install_property (object_class, PROP_AREA, pspec);
+
+/**
+ * LdSymbol:terminals:
+ *
+ * A point array that specifies terminals of this symbol.
+ */
+ pspec = g_param_spec_boxed ("terminals", "Terminals",
+ "A point array that specifies terminals of this symbol.",
+ LD_TYPE_POINT_ARRAY, G_PARAM_READABLE);
+ g_object_class_install_property (object_class, PROP_TERMINALS, pspec);
}
static void
@@ -115,6 +126,9 @@ ld_symbol_get_property (GObject *object, guint property_id,
g_value_set_boxed (value, &area);
}
break;
+ case PROP_TERMINALS:
+ g_value_set_boxed (value, ld_symbol_get_terminals (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -185,6 +199,26 @@ ld_symbol_get_area (LdSymbol *self, LdRectangle *area)
}
/**
+ * ld_symbol_get_terminals:
+ * @self: A symbol object.
+ *
+ * Get a list of symbol terminals.
+ *
+ * Return value: An #LdPointArray structure.
+ */
+const LdPointArray *
+ld_symbol_get_terminals (LdSymbol *self)
+{
+ LdSymbolClass *klass;
+
+ g_return_val_if_fail (LD_IS_SYMBOL (self), NULL);
+
+ klass = LD_SYMBOL_GET_CLASS (self);
+ g_return_val_if_fail (klass->get_terminals != NULL, NULL);
+ return klass->get_terminals (self);
+}
+
+/**
* ld_symbol_draw:
* @self: A symbol object.
* @cr: A cairo surface to be drawn on.