]> git.tdb.fi Git - r2c2.git/blob - source/libr2c2/profile.h
00132e9d9d8455d73923b54719af21c948fe180f
[r2c2.git] / source / libr2c2 / profile.h
1 /* $Id$
2
3 This file is part of R²C²
4 Copyright © 2010 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #ifndef LIBR2C2_PROFILE_H_
9 #define LIBR2C2_PROFILE_H_
10
11 #include <vector>
12 #include <msp/datafile/objectloader.h>
13 #include "geometry.h"
14
15 namespace R2C2 {
16
17 class Profile
18 {
19 public:
20         class Loader: public Msp::DataFile::ObjectLoader<Profile>
21         {
22         public:
23                 Loader(Profile &);
24         private:
25                 void point(float, float);
26         };
27
28 private:
29         std::vector<Point> points;
30         Point min_coords;
31         Point max_coords;
32
33 public:
34         void append_point(const Point &);
35         unsigned get_n_points() const { return points.size(); }
36         const Point &get_point(unsigned) const;
37         const Point &get_min_coords() const { return min_coords; }
38         const Point &get_max_coords() const { return max_coords; }
39         float get_width() const { return max_coords.x-min_coords.x; }
40         float get_height() const { return max_coords.y-min_coords.y; }
41         Point get_edge_normal(unsigned) const;
42 };
43
44 } // namespace R2C2
45
46 #endif