include/rays/polygon.h in rays-0.1.47 vs include/rays/polygon.h in rays-0.1.48

- old
+ new

@@ -18,54 +18,23 @@ class Polygon { public: - struct Line : public Polyline - { + typedef std::vector<Polyline> PolylineList; - typedef Polyline Super; + typedef PolylineList::const_iterator const_iterator; - public: - - Line (); - - Line ( - const Point* points, size_t size, - bool loop = true, - bool hole = false); - - Line (const Polyline& polyline, bool hole = false); - - bool hole () const; - - operator bool () const; - - bool operator ! () const; - - private: - - bool hole_; - - };// Line - - typedef std::vector<Line> LineList; - - typedef LineList::const_iterator const_iterator; - Polygon (); Polygon ( - const Point* points, size_t size, bool loop = true); + const Point* points, size_t size, bool loop = true, + const Color* colors = NULL, const Coord3* texcoords = NULL); - Polygon ( - DrawMode mode, - const Point* points, size_t size, bool loop = true); - Polygon (const Polyline& polyline); - Polygon (const Line* lines, size_t size); + Polygon (const Polyline* polylines, size_t size); ~Polygon (); bool expand ( Polygon* result, @@ -82,16 +51,18 @@ const_iterator begin () const; const_iterator end () const; - const Line& operator [] (size_t index) const; + const Polyline& operator [] (size_t index) const; operator bool () const; bool operator ! () const; + friend Polygon operator + (const Polygon& lhs, const Polyline& rhs); + friend Polygon operator + (const Polygon& lhs, const Polygon& rhs); friend Polygon operator - (const Polygon& lhs, const Polygon& rhs); friend Polygon operator & (const Polygon& lhs, const Polygon& rhs); @@ -113,19 +84,49 @@ bool triangulate (TrianglePointList* triangles) const; };// Polygon + Polygon create_point (coord x, coord y); + + Polygon create_point (const Point& point); + + Polygon create_points (const Point* points, size_t size); + + Polygon create_line (coord x1, coord y1, coord x2, coord y2); Polygon create_line (const Point& p1, const Point& p2); Polygon create_line (const Point* points, size_t size, bool loop = false); Polygon create_line (const Polyline& polyline); + Polygon create_lines (const Point* points, size_t size); + + Polygon create_triangle ( + coord x1, coord y1, coord x2, coord y2, coord x3, coord y3, + bool loop = true); + + Polygon create_triangle ( + const Point& p1, const Point& p2, const Point& p3, + bool loop = true); + + Polygon create_triangles ( + const Point* points, size_t size, bool loop = true, + const Color* colors = NULL, const Coord3* texcoords = NULL); + + Polygon create_triangle_strip ( + const Point* points, size_t size, + const Color* colors = NULL, const Coord3* texcoords = NULL); + + Polygon create_triangle_fan ( + const Point* points, size_t size, + const Color* colors = NULL, const Coord3* texcoords = NULL); + + Polygon create_rect ( coord x, coord y, coord width, coord height, coord round = 0, uint nsegment = 0); @@ -143,9 +144,27 @@ Polygon create_rect ( const Bounds& bounds, coord round_left_top, coord round_right_top, coord round_left_bottom, coord round_right_bottom, uint nsegment = 0); + + + Polygon create_quad ( + coord x1, coord y1, coord x2, coord y2, + coord x3, coord y3, coord x4, coord y4, + bool loop = true); + + Polygon create_quad ( + const Point& p1, const Point& p2, const Point& p3, const Point& p4, + bool loop = true); + + Polygon create_quads ( + const Point* points, size_t size, bool loop = true, + const Color* colors = NULL, const Coord3* texcoords = NULL); + + Polygon create_quad_strip ( + const Point* points, size_t size, + const Color* colors = NULL, const Coord3* texcoords = NULL); Polygon create_ellipse ( coord x, coord y, coord width, coord height = 0, const Point& hole_size = 0,