int subtype;
subtype = gar_object_subtype(o);
- mr->item.id_hi = otype << 8 | subtype;
if (mr->mpriv->conv)
- mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POINT, mr->item.id_hi);
+ mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POINT,
+ (otype << 8) | subtype);
mr->item.meth = &methods_garmin_point;
return &mr->item;
}
static struct item *
garmin_pl2item(struct map_rect_priv *mr, struct gobject *o, unsigned char otype)
{
- mr->item.id_hi = otype;
if (mr->mpriv->conv)
mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POLYLINE, otype);
mr->item.meth = &methods_garmin_poly;
static struct item *
garmin_pg2item(struct map_rect_priv *mr, struct gobject *o, unsigned char otype)
{
- mr->item.id_hi = otype;
if (mr->mpriv->conv)
mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POLYGONE, otype);
mr->item.meth = &methods_garmin_poly;
gmap_rect_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
{
struct gobject *o;
- o = mr->objs = gar_get_object(mr->mpriv->g, (void *)id_lo);
+ o = mr->objs = gar_get_object_by_id(mr->mpriv->g, id_hi, id_lo);
if (!o) {
dlog(1, "Can not find object\n");
return NULL;
}
- mr->item.id_hi = (int)mr;
- mr->item.id_lo = (int)o->gptr;
+ mr->item.id_hi = id_hi;
+ mr->item.id_lo = id_lo;
mr->item.priv_data = o;
mr->item.type = type_none;
o->priv_data = mr;
// dlog(1, "gi:o=%p\n", o);
mr->cobj = mr->cobj->next;
if (o) {
- mr->item.id_hi = (int)mr;
- mr->item.id_lo = (int)o->gptr;
+ mr->item.id_hi = gar_object_mapid(o);
+ mr->item.id_lo = gar_object_index(o);
mr->item.priv_data = o;
mr->item.type = type_none;
o->priv_data = mr;