summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-06-25 18:42:13 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-06-25 18:42:13 +0000
commit4f3b02e1fc419d5c4d8d8161743536a281e90f16 (patch)
tree817d6575c51cba39ccb32a2d87cd7c0a2ae62d93
parentdda296202055420d3c36dd9e8ca8f70e06fe60a0 (diff)
downloadnavit-svn-4f3b02e1fc419d5c4d8d8161743536a281e90f16.tar.gz
Add:gui_internal:Added possibility to log a message to the debug log
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit/navit@2374 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r--gui/internal/gui_internal.c89
-rw-r--r--item_def.h1
-rw-r--r--navit.c2
-rw-r--r--navit.h28
-rw-r--r--navit.xml1
-rw-r--r--xpm/Makefile.am1
-rw-r--r--xpm/gui_log.svg352
7 files changed, 445 insertions, 29 deletions
diff --git a/gui/internal/gui_internal.c b/gui/internal/gui_internal.c
index d1dabc04..a184c150 100644
--- a/gui/internal/gui_internal.c
+++ b/gui/internal/gui_internal.c
@@ -360,6 +360,7 @@ static void gui_internal_search_street_in_town(struct gui_priv *this, struct wid
static void gui_internal_search_town(struct gui_priv *this, struct widget *wm, void *data);
static void gui_internal_search_town_in_country(struct gui_priv *this, struct widget *wm);
static void gui_internal_search_country(struct gui_priv *this, struct widget *widget, void *data);
+static void gui_internal_check_exit(struct gui_priv *this);
static struct widget *gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode);
static struct menu_data * gui_internal_menu_data(struct gui_priv *this);
@@ -3292,18 +3293,33 @@ static void gui_internal_menu_root(struct gui_priv *this)
}
static void
-gui_internal_cmd_menu(struct gui_priv *this, struct point *p, int ignore)
+gui_internal_enter(struct gui_priv *this, int ignore)
{
struct graphics *gra=this->gra;
- struct transformation *trans;
- struct coord c;
- struct attr attr,attrp;
-
this->ignore_button=ignore;
this->clickp_valid=this->vehicle_valid=0;
navit_block(this->nav, 1);
graphics_overlay_disable(gra, 1);
+ this->root.p.x=0;
+ this->root.p.y=0;
+ this->root.background=this->background;
+}
+
+static void
+gui_internal_leave(struct gui_priv *this)
+{
+ graphics_draw_mode(this->gra, draw_mode_end);
+}
+
+static void
+gui_internal_cmd_menu(struct gui_priv *this, struct point *p, int ignore)
+{
+ struct transformation *trans;
+ struct coord c;
+ struct attr attr,attrp;
+
+ gui_internal_enter(this, ignore);
trans=navit_get_trans(this->nav);
if (p) {
transform_reverse(trans, p, &c);
@@ -3322,9 +3338,6 @@ gui_internal_cmd_menu(struct gui_priv *this, struct point *p, int ignore)
this->vehicle_valid=1;
}
// draw menu
- this->root.p.x=0;
- this->root.p.y=0;
- this->root.background=this->background;
gui_internal_menu_root(this);
}
@@ -3334,6 +3347,65 @@ gui_internal_cmd_menu2(struct gui_priv *this)
gui_internal_cmd_menu(this, NULL, 1);
}
+
+static void
+gui_internal_cmd_log_do(struct gui_priv *this, struct widget *widget)
+{
+ if (widget->text && strlen(widget->text))
+ navit_textfile_debug_log(this->nav, "type=log_entry label=\"%s\"",widget->text);
+ g_free(widget->text);
+ widget->text=NULL;
+ gui_internal_prune_menu(this, NULL);
+ gui_internal_check_exit(this);
+}
+
+static void
+gui_internal_cmd_log_clicked(struct gui_priv *this, struct widget *widget, void *data)
+{
+ gui_internal_cmd_log_do(this, widget->data);
+}
+
+static void
+gui_internal_cmd_log_changed(struct gui_priv *this, struct widget *wm, void *data)
+{
+ int len;
+ if (wm->text) {
+ len=strlen(wm->text);
+ if (len && (wm->text[len-1] == '\n' || wm->text[len-1] == '\r')) {
+ wm->text[len-1]='\0';
+ gui_internal_cmd_log_do(this, wm);
+ }
+ }
+}
+
+
+static void
+gui_internal_cmd_log(struct gui_priv *this)
+{
+ struct widget *w,*wb,*wk,*wl,*we,*wnext;
+ gui_internal_enter(this, 1);
+ wb=gui_internal_menu(this, "Log Message");
+ w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
+ gui_internal_widget_append(wb, w);
+ we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
+ gui_internal_widget_append(w, we);
+ gui_internal_widget_append(we, wk=gui_internal_label_new(this, _("Message")));
+ wk->state |= STATE_EDIT|STATE_CLEAR;
+ wk->background=this->background;
+ wk->flags |= flags_expand|flags_fill;
+ wk->func = gui_internal_cmd_log_changed;
+ gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
+ wnext->state |= STATE_SENSITIVE;
+ wnext->func = gui_internal_cmd_log_clicked;
+ wnext->data=wk;
+ wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
+ gui_internal_widget_append(w, wl);
+ if (this->keyboard)
+ gui_internal_widget_append(w, gui_internal_keyboard(this,2));
+ gui_internal_menu_render(this);
+ gui_internal_leave(this);
+}
+
static void
gui_internal_check_exit(struct gui_priv *this)
{
@@ -3744,6 +3816,7 @@ static struct command_table commands[] = {
{"menu",command_cast(gui_internal_cmd_menu2)},
{"fullscreen",command_cast(gui_internal_cmd_fullscreen)},
{"get_data",command_cast(gui_internal_get_data)},
+ {"log",command_cast(gui_internal_cmd_log)},
};
diff --git a/item_def.h b/item_def.h
index a6970274..b8327314 100644
--- a/item_def.h
+++ b/item_def.h
@@ -305,6 +305,7 @@ ITEM(route_end)
ITEM(selected_point)
ITEM(power_tower)
ITEM(route_start_reverse)
+ITEM(log_entry)
/* Line */
ITEM2(0x80000000,line)
ITEM2(0x80000001,line_unspecified)
diff --git a/navit.c b/navit.c
index 307e48ec..0e975e55 100644
--- a/navit.c
+++ b/navit.c
@@ -1055,7 +1055,7 @@ navit_add_former_destinations_from_file(struct navit *this_)
}
-static void
+void
navit_textfile_debug_log(struct navit *this_, const char *fmt, ...)
{
va_list ap;
diff --git a/navit.h b/navit.h
index 3208b69c..2068055e 100644
--- a/navit.h
+++ b/navit.h
@@ -26,7 +26,6 @@ extern "C" {
extern struct gui *main_loop_gui;
/* prototypes */
enum attr_type;
-enum item_type;
struct attr;
struct attr_iter;
struct callback;
@@ -37,15 +36,12 @@ struct mapset;
struct message;
struct navigation;
struct navit;
-struct navit_vehicle;
-struct navit_window_items;
struct pcoord;
struct point;
struct route;
-struct speech;
struct tracking;
struct transformation;
-struct vehicle;
+struct vehicleprofile;
void navit_add_mapset(struct navit *this_, struct mapset *ms);
struct mapset *navit_get_mapset(struct navit *this_);
struct tracking *navit_get_tracking(struct navit *this_);
@@ -53,7 +49,6 @@ void navit_draw(struct navit *this_);
void navit_draw_displaylist(struct navit *this_);
void navit_handle_resize(struct navit *this_, int w, int h);
int navit_get_width(struct navit *this_);
-int navit_check_route(struct navit *this_);
int navit_get_height(struct navit *this_);
int navit_ignore_button(struct navit *this_);
void navit_ignore_graphics_events(struct navit *this_, int ignore);
@@ -62,18 +57,20 @@ void navit_handle_motion(struct navit *this_, struct point *p);
void navit_zoom_in(struct navit *this_, int factor, struct point *p);
void navit_zoom_out(struct navit *this_, int factor, struct point *p);
struct navit *navit_new(struct attr *parent, struct attr **attrs);
+void navit_add_message(struct navit *this_, char *message);
+struct message *navit_get_messages(struct navit *this_);
struct graphics *navit_get_graphics(struct navit *this_);
+struct vehicleprofile *navit_get_vehicleprofile(struct navit *this_);
void navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async);
+int navit_check_route(struct navit *this_);
void navit_add_bookmark(struct navit *this_, struct pcoord *c, const char *description);
-void navit_say(struct navit *this_, char *text);
+void navit_textfile_debug_log(struct navit *this_, const char *fmt, ...);
int navit_speech_estimate(struct navit *this_, char *str);
-void navit_speak(struct navit *this_);
+void navit_say(struct navit *this_, char *text);
void navit_announcer_toggle(struct navit *this_);
+void navit_speak(struct navit *this_);
void navit_window_roadbook_destroy(struct navit *this_);
void navit_window_roadbook_new(struct navit *this_);
-struct navit_window_items *navit_window_items_new(const char *name, int distance);
-void navit_window_items_add_item(struct navit_window_items *nwi, enum item_type type);
-void navit_add_window_items(struct navit *this_, struct navit_window_items *nwi);
void navit_init(struct navit *this_);
void navit_zoom_to_route(struct navit *this_, int orientation);
void navit_set_center(struct navit *this_, struct pcoord *center);
@@ -87,22 +84,13 @@ void navit_attr_iter_destroy(struct attr_iter *iter);
void navit_add_callback(struct navit *this_, struct callback *cb);
void navit_remove_callback(struct navit *this_, struct callback *cb);
void navit_set_position(struct navit *this_, struct pcoord *c);
-void navit_tracking_add(struct navit *this_, struct tracking *tracking);
-void navit_set_speech(struct navit *this_, struct speech *speech);
struct gui *navit_get_gui(struct navit *this_);
struct transformation *navit_get_trans(struct navit *this_);
struct route *navit_get_route(struct navit *this_);
struct navigation *navit_get_navigation(struct navit *this_);
struct displaylist *navit_get_displaylist(struct navit *this_);
int navit_block(struct navit *this_, int block);
-int navit_command_register(struct navit *this_, char *command, struct callback *cb);
-struct callback *navit_command_unregister(struct navit *this_, char *command);
-int navit_command_call_attrs(struct navit *this_, char *command, struct attr **in, struct attr ***out);
-int navit_command_call(struct navit *this_, char *command);
-void navit_add_message(struct navit *this_, char *message);
-struct message *navit_get_messages(struct navit *this_);
void navit_destroy(struct navit *this_);
-struct vehicleprofile * navit_get_vehicleprofile(struct navit *this_);
/* end of prototypes */
#ifdef __cplusplus
}
diff --git a/navit.xml b/navit.xml
index b923ab3f..8a955cc1 100644
--- a/navit.xml
+++ b/navit.xml
@@ -37,6 +37,7 @@
<!-- Normally it is sufficient to use -->
<!-- <gui type="internal" /> -->
+ <log type="textfile_debug" data="debug_%Y%m%d-%i.txt" flush_size="1000" flush_time="30"/>
<gui type="gtk" menubar="1" toolbar="1" statusbar="1"/>
<!-- osd items allow to position display and control items directly on top of the map: -->
diff --git a/xpm/Makefile.am b/xpm/Makefile.am
index 36f4a284..3fd749f2 100644
--- a/xpm/Makefile.am
+++ b/xpm/Makefile.am
@@ -107,6 +107,7 @@ svgs += gui_strength_4.svg
svgs += gui_strength_5.svg
svgs += gui_minus.svg
svgs += gui_plus.svg
+svgs += gui_log.svg
svgs += airport.svg
svgs += attraction.svg
diff --git a/xpm/gui_log.svg b/xpm/gui_log.svg
new file mode 100644
index 00000000..33a1ac9e
--- /dev/null
+++ b/xpm/gui_log.svg
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg5490"
+ sodipodi:version="0.32"
+ inkscape:version="0.44"
+ sodipodi:docbase="/home/andreas/project/gnome-icon-theme/scalable/actions"
+ sodipodi:docname="format-justify-left.svg"
+ inkscape:export-filename="/home/andreas/project/gnome-icon-theme/scalable/actions/format-justify-fill.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs5492">
+ <linearGradient
+ y2="10.982666"
+ x2="5.4959755"
+ y1="37.668934"
+ x1="37.926636"
+ gradientTransform="matrix(0.982804,0,0,1.3,-40.71647,-6.281051)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2457"
+ xlink:href="#linearGradient6732"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient2378">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2380" />
+ <stop
+ id="stop4146"
+ offset="0.25"
+ style="stop-color:#fefede;stop-opacity:0.91836733;" />
+ <stop
+ id="stop2386"
+ offset="0.5"
+ style="stop-color:#f5f328;stop-opacity:1;" />
+ <stop
+ style="stop-color:#f5f32d;stop-opacity:0.12234043;"
+ offset="1"
+ id="stop2382" />
+ </linearGradient>
+ <linearGradient
+ y2="39.999443"
+ x2="25.058096"
+ y1="47.027729"
+ x1="25.058096"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2098"
+ xlink:href="#linearGradient3702"
+ inkscape:collect="always" />
+ <radialGradient
+ r="2.5"
+ fy="43.5"
+ fx="4.9929786"
+ cy="43.5"
+ cx="4.9929786"
+ gradientTransform="matrix(2.003784,0,0,1.4,-20.01187,-104.4)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2096"
+ xlink:href="#linearGradient3688"
+ inkscape:collect="always" />
+ <radialGradient
+ r="2.5"
+ fy="43.5"
+ fx="4.9929786"
+ cy="43.5"
+ cx="4.9929786"
+ gradientTransform="matrix(2.003784,0,0,1.4,27.98813,-17.4)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2094"
+ xlink:href="#linearGradient3688"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3688"
+ inkscape:collect="always">
+ <stop
+ id="stop3690"
+ offset="0"
+ style="stop-color:black;stop-opacity:1;" />
+ <stop
+ id="stop3692"
+ offset="1"
+ style="stop-color:black;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3702">
+ <stop
+ id="stop3704"
+ offset="0"
+ style="stop-color:black;stop-opacity:0;" />
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0.5"
+ id="stop3710" />
+ <stop
+ id="stop3706"
+ offset="1"
+ style="stop-color:black;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6732">
+ <stop
+ id="stop6734"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop6736"
+ offset="1"
+ style="stop-color:#dddddd;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4585">
+ <stop
+ id="stop4587"
+ offset="0"
+ style="stop-color:#9e9e9e;stop-opacity:1;" />
+ <stop
+ id="stop4589"
+ offset="1"
+ style="stop-color:#dddddd;stop-opacity:0;" />
+ </linearGradient>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="14"
+ inkscape:cx="27.606432"
+ inkscape:cy="27.154804"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1674"
+ inkscape:window-height="970"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata5495">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Justify fill</dc:title>
+ <dc:date>October 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Andreas Nilsson</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:source>http://www.gnome.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>justify</rdf:li>
+ <rdf:li>format</rdf:li>
+ <rdf:li>align</rdf:li>
+ <rdf:li>left</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ id="g5646"
+ transform="translate(41.34165,-0.918943)">
+ <g
+ inkscape:label="Shadow"
+ id="layer6"
+ transform="matrix(1.1,0,0,1,-43.74165,5.918957)">
+ <g
+ transform="matrix(1,0,0,0.555556,-4.549998e-7,13.88887)"
+ inkscape:label="Shadow"
+ id="g2043">
+ <g
+ inkscape:label="Shadow"
+ id="g2036"
+ style="display:inline">
+ <g
+ transform="matrix(1.052632,0,0,1.285713,-1.263158,-13.42854)"
+ style="opacity:0.4"
+ id="g3712">
+ <rect
+ style="opacity:1;fill:url(#radialGradient2094);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2801"
+ width="5"
+ height="7"
+ x="38"
+ y="40" />
+ <rect
+ style="opacity:1;fill:url(#radialGradient2096);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3696"
+ width="5"
+ height="7"
+ x="-10"
+ y="-47"
+ transform="scale(-1,-1)" />
+ <rect
+ style="opacity:1;fill:url(#linearGradient2098);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3700"
+ width="28"
+ height="7.0000005"
+ x="10"
+ y="40" />
+ </g>
+ </g>
+ </g>
+ <g
+ transform="translate(50.6887,6.21499)"
+ style="display:inline"
+ inkscape:label="pixmap"
+ id="g2285" />
+ <g
+ id="g891"
+ transform="matrix(0.186703,0,0,0.186703,29.5814,63.83798)" />
+ </g>
+ <g
+ id="g5657"
+ inkscape:label="Base"
+ style="display:inline" />
+ <g
+ style="display:inline"
+ inkscape:label="Text"
+ id="layer5">
+ <rect
+ inkscape:r_cy="true"
+ inkscape:r_cx="true"
+ ry="1.4314268"
+ rx="1.4314268"
+ y="5.4189425"
+ x="-36.785221"
+ height="39"
+ width="38.943569"
+ id="rect2373"
+ style="color:black;fill:url(#linearGradient2457);fill-opacity:1;fill-rule:evenodd;stroke:#939393;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect2423"
+ width="36.999981"
+ height="37.000008"
+ x="-35.841633"
+ y="6.4189281"
+ rx="0.5728178"
+ ry="0.5728178"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ </g>
+ </g>
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6916"
+ width="16"
+ height="0.99999905"
+ x="10"
+ y="11.000001"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6919"
+ width="28"
+ height="0.99999809"
+ x="10"
+ y="16.000002"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6921"
+ width="24"
+ height="0.99999809"
+ x="10"
+ y="21.000002"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6925"
+ width="13"
+ height="0.99999809"
+ x="10"
+ y="26.000002"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6927"
+ width="21"
+ height="0.99999809"
+ x="10"
+ y="31.000002"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ <rect
+ style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6933"
+ width="12"
+ height="1.0187454"
+ x="10"
+ y="35.981255"
+ rx="0"
+ ry="0"
+ inkscape:r_cx="true"
+ inkscape:r_cy="true" />
+ </g>
+</svg>