2 * Navit, a modular navigation system.
3 * Copyright (C) 2005-2008 Navit Team
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * version 2 as published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
26 struct layout * layout_new(struct attr *parent, struct attr **attrs)
29 struct color def_color = {0xffff, 0xefef, 0xb7b7, 0xffff};
30 struct attr *name_attr,*color_attr,*order_delta_attr,*font_attr;
32 if (! (name_attr=attr_search(attrs, NULL, attr_name)))
34 l = g_new0(struct layout, 1);
35 l->name = g_strdup(name_attr->u.str);
36 if ((font_attr=attr_search(attrs, NULL, attr_font))) {
37 l->font = g_strdup(font_attr->u.str);
39 if ((color_attr=attr_search(attrs, NULL, attr_color)))
40 l->color = *color_attr->u.color;
43 if ((order_delta_attr=attr_search(attrs, NULL, attr_order_delta)))
44 l->order_delta=order_delta_attr->u.num;
49 struct layer * layer_new(const char *name, int details)
53 l = g_new0(struct layer, 1);
54 l->name = g_strdup(name);
59 void layout_add_layer(struct layout *layout, struct layer *layer)
61 layout->layers = g_list_append(layout->layers, layer);
64 struct itemtype * itemtype_new(int order_min, int order_max)
68 itm = g_new0(struct itemtype, 1);
69 itm->order_min=order_min;
70 itm->order_max=order_max;
74 void itemtype_add_type(struct itemtype *this, enum item_type type)
76 this->type = g_list_append(this->type, GINT_TO_POINTER(type));
80 void layer_add_itemtype(struct layer *layer, struct itemtype * itemtype)
82 layer->itemtypes = g_list_append(layer->itemtypes, itemtype);
86 void itemtype_add_element(struct itemtype *itemtype, struct element *element)
88 itemtype->elements = g_list_append(itemtype->elements, element);
92 polygon_new(struct color *color)
95 e = g_new0(struct element, 1);
96 e->type=element_polygon;
103 polyline_new(struct color *color, int width, int directed,
104 int dash_offset, int *dash_table, int dash_num)
109 e = g_new0(struct element, 1);
110 e->type=element_polyline;
112 e->u.polyline.width=width;
113 e->u.polyline.directed=directed;
114 e->u.polyline.dash_offset = dash_offset;
115 e->u.polyline.dash_num=dash_num;
116 for (i=0; i<dash_num; i++)
117 e->u.polyline.dash_table[i] = dash_table[i];
123 circle_new(struct color *color, int radius, int width, int label_size)
127 e = g_new0(struct element, 1);
128 e->type=element_circle;
130 e->label_size=label_size;
131 e->u.circle.width=width;
132 e->u.circle.radius=radius;
138 label_new(int label_size)
142 e = g_new0(struct element, 1);
143 e->type=element_label;
144 e->label_size=label_size;
150 icon_new(const char *src)
154 e = g_malloc0(sizeof(*e)+strlen(src)+1);
155 e->type=element_icon;
156 e->u.icon.src=(char *)(e+1);
157 strcpy(e->u.icon.src,src);
167 e = g_malloc0(sizeof(*e));
168 e->type=element_image;
174 arrows_new(struct attr **attrs)
177 struct attr *color=attr_search(attrs, NULL, attr_color);
179 e = g_malloc0(sizeof(*e));
180 e->type=element_arrows;
182 e->color=*color->u.color;