#ifndef _fencer_shape_h #define _fencer_shape_h #include "vmath.h" #include "transform.h" #include "list.h" typedef struct Shape Shape; extern Shape* shape_new(const Vector* points, size_t points_len); extern Shape* shape_new_square(Vector size); extern Shape* shape_clone(const Shape* source); extern void shape_destroy(Shape* self); extern Vector* shape_get_start(Shape* self); extern Vector* shape_get_end(Shape* self); extern size_t shape_get_points_count(const Shape* self); extern Vector shape_get_point(Shape* self, size_t at); extern Vector shape_get_point_transformed(Shape* self, size_t at, Transform transform); extern void shape_set_point(Shape* self, size_t at, Vector point); extern void shape_add_point(Shape* self, Vector point); extern void shape_insert_point(Shape* self, size_t at, Vector point); extern List* shape_get_points(Shape* self); extern Vector shape_remove_point(Shape* self, size_t at); extern Vector shape_get_median_point(Shape* self); extern int shape_is_convex(Shape* self); extern void shape_draw(Shape* self, Transform transform); #endif // !_fencer_shape_h