00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ESTAR_SPRITE_HPP
00026 #define ESTAR_SPRITE_HPP
00027
00028
00029 #include <vector>
00030 #include <iosfwd>
00031
00032
00033 namespace estar {
00034
00035
00042 class Sprite
00043 {
00044 public:
00046 class sindex {
00047 public:
00048 sindex(ssize_t _x, ssize_t _y, double _r): x(_x), y(_y), r(_r) { }
00049 ssize_t x, y;
00050 double r;
00051 };
00052
00053 typedef std::vector<sindex> indexlist_t;
00054
00055 const double radius;
00056 const double scale;
00057
00058 Sprite(double radius, double scale);
00059
00060 void Dump(std::ostream & os) const;
00061
00062 const indexlist_t & GetBorder() const { return m_border; }
00063 const indexlist_t & GetArea() const { return m_area; }
00064
00065 void GetBBox(ssize_t & x0, ssize_t & y0, ssize_t & x1, ssize_t & y1) const;
00066
00067 private:
00068 indexlist_t m_border;
00069 indexlist_t m_area;
00070 ssize_t m_x0, m_y0, m_x1, m_y1;
00071 };
00072
00073 }
00074
00075 #endif // ESTAR_SPRITE_HPP