--- /dev/null
+/* $Id$
+
+This file is part of the MSP Märklin suite
+Copyright © 2010 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
+#ifndef LIBMARKLIN_PROFILE_H_
+#define LIBMARKLIN_PROFILE_H_
+
+#include <vector>
+#include <msp/datafile/objectloader.h>
+#include "geometry.h"
+
+namespace Marklin {
+
+class Profile
+{
+public:
+ class Loader: public Msp::DataFile::ObjectLoader<Profile>
+ {
+ public:
+ Loader(Profile &);
+ private:
+ virtual void finish();
+ void point(float, float);
+ };
+
+private:
+ std::vector<Point> points;
+ Point min_coords;
+ Point max_coords;
+
+public:
+ unsigned get_n_points() const { return points.size(); }
+ const Point &get_point(unsigned) const;
+ const Point &get_min_coords() const { return min_coords; }
+ const Point &get_max_coords() const { return max_coords; }
+ Point get_edge_normal(unsigned) const;
+};
+
+} // namespace Marklin
+
+#endif