Index: src/work/peter/Makefile
===================================================================
--- src/work/peter/Makefile	(revision 1225)
+++ src/work/peter/Makefile	(revision 1277)
@@ -1,7 +1,10 @@
-triangle: canvas-test.cc
-	g++ canvas-test.cc -W -Wall -ansi -pedantic -o triangle `pkg-config libgnomecanvasmm-2.6 --cflags --libs`
+gd: graph-displayer.cc
+	g++ graph-displayer.cc -W -Wall -ansi -pedantic -o gd `pkg-config libgnomecanvasmm-2.6 --cflags --libs` -I../..
 
-run: triangle
-	./triangle 100 100 -100 100 0 -100
+xyr: xy-reader.cc
+	g++ xy-reader.cc -W -Wall -ansi -pedantic -o xyr -I../..
+
+run: gd
+	./gd
 
 .PHONY: run
Index: src/work/peter/canvas-test.cc
===================================================================
--- src/work/peter/canvas-test.cc	(revision 1226)
+++ src/work/peter/canvas-test.cc	(revision 1277)
@@ -7,4 +7,5 @@
 #include <libgnomecanvasmm/polygon.h>
 #include <iostream>
+#include <lemon/list_graph.h>
 
 class CanvasExample : public Gnome::Canvas::CanvasAA
Index: src/work/peter/xy-reader.cc
===================================================================
--- src/work/peter/xy-reader.cc	(revision 1277)
+++ src/work/peter/xy-reader.cc	(revision 1277)
@@ -0,0 +1,69 @@
+#include <fstream>
+#include <iostream>
+
+#include <lemon/xy.h>
+#include <lemon/concept/maps.h>
+#include <lemon/error.h>
+#include <lemon/list_graph.h>
+#include <lemon/graph_reader.h>
+#include <lemon/graph_utils.h>
+
+using namespace lemon;
+
+typedef ListGraph Graph;
+typedef xy<double> Coordinates;
+typedef Graph::NodeMap<Coordinates> CoordinatesMap;
+typedef Graph::Node Node;
+
+class CoordReaderMap: public concept::WriteMap<Node, double>
+{
+    CoordinatesMap * cm;
+    char xoy;
+
+public:
+    CoordReaderMap(char xory, CoordinatesMap * coordmap): concept::WriteMap<Node, double>() ,cm(coordmap)
+    {
+	switch(xory)
+	{
+	    case 'x':
+	    case 'y':
+		xoy=xory;
+		break;
+	    default:
+		throw UninitializedParameter() ;
+	}
+    }
+
+    void set(Node node, double coord)
+    {
+	switch(xoy)
+	{
+	    case 'x':
+		(*cm)[node].x=coord;
+		break;
+	    case 'y':
+		(*cm)[node].y=coord;
+		break;
+	    default:
+		throw UninitializedParameter() ;
+	}
+    }
+};
+
+int main(void)
+{
+    Graph g;
+    CoordinatesMap cm(g);
+
+    CoordReaderMap xreader('x',&cm);
+    CoordReaderMap yreader('y',&cm);
+
+    std::ifstream is("dijkstra_test.lemon");
+    
+    GraphReader<Graph> reader(is, g);
+    reader.addNodeMap("coordinates_x", xreader);
+    reader.addNodeMap("coordinates_y", yreader);
+    reader.run();
+    
+    return 0;
+}
