summaryrefslogtreecommitdiff
path: root/navit/osd.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-01-31 13:47:57 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-01-31 13:47:57 +0000
commitcf0e75b670de03aae7d3660c9d8f8396ede3b9f8 (patch)
tree3ba514aaf5b62da2daafeb6cfa4980f1973f786f /navit/osd.c
parent29998cf55524394fce52b44997371ae0a100feda (diff)
downloadnavit-cf0e75b670de03aae7d3660c9d8f8396ede3b9f8.tar.gz
Add:Core:Converted osd to new object scheme
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5360 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/osd.c')
-rw-r--r--navit/osd.c47
1 files changed, 36 insertions, 11 deletions
diff --git a/navit/osd.c b/navit/osd.c
index 7374f9dee..10cc6ea68 100644
--- a/navit/osd.c
+++ b/navit/osd.c
@@ -21,6 +21,7 @@
#include "debug.h"
#include "plugin.h"
#include "item.h"
+#include "xmlconfig.h"
#include "color.h"
#include "point.h"
#include "navit.h"
@@ -31,9 +32,9 @@
struct osd {
+ NAVIT_OBJECT
struct osd_methods meth;
struct osd_priv *priv;
- struct attr** osd_attrs;
};
struct osd *
@@ -50,23 +51,22 @@ osd_new(struct attr *parent, struct attr **attrs)
return NULL;
o=g_new0(struct osd, 1);
o->priv=new(parent->u.navit, &o->meth, attrs);
-
- o->osd_attrs = attr_list_dup(attrs);
-
+ if (o->priv) {
+ o->func=&osd_func;
+ navit_object_ref((struct navit_object *)o);
+ o->attrs=attr_list_dup(attrs);
+ } else {
+ g_free(o);
+ o=NULL;
+ }
return o;
}
int
-osd_get_attr(struct osd *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->osd_attrs, NULL, type, attr, NULL);
-}
-
-int
osd_set_attr(struct osd *osd, struct attr* attr)
{
- osd->osd_attrs=attr_generic_set_attr(osd->osd_attrs,attr);
if(osd && osd->meth.set_attr) {
+ navit_object_set_attr((struct navit_object *)osd, attr);
osd->meth.set_attr(osd->priv, attr);
return 1;
}
@@ -74,6 +74,15 @@ osd_set_attr(struct osd *osd, struct attr* attr)
}
void
+osd_destroy(struct osd *osd)
+{
+ if (osd && osd->meth.destroy) {
+ osd->meth.destroy(osd->priv);
+ }
+ g_free(osd);
+}
+
+void
osd_wrap_point(struct point *p, struct navit *nav)
{
if (p->x < 0)
@@ -368,3 +377,19 @@ osd_std_draw(struct osd_item *item)
if (flags & 8)
graphics_draw_lines(item->gr, item->graphic_fg_text, p, 2);
}
+
+struct object_func osd_func = {
+ attr_osd,
+ (object_func_new)osd_new,
+ (object_func_get_attr)navit_object_get_attr,
+ (object_func_iter_new)navit_object_attr_iter_new,
+ (object_func_iter_destroy)navit_object_attr_iter_destroy,
+ (object_func_set_attr)osd_set_attr,
+ (object_func_add_attr)NULL,
+ (object_func_remove_attr)NULL,
+ (object_func_init)NULL,
+ (object_func_destroy)osd_destroy,
+ (object_func_dup)NULL,
+ (object_func_ref)navit_object_ref,
+ (object_func_unref)navit_object_unref,
+};