text: #ifndef SAY_POLYGON_H_
  #define SAY_POLYGON_H_
  
  #include "say_drawable.h"
  
  typedef struct {
    say_vector2 pos;
    say_color col;
    say_color outline_color;
  } say_polygon_point;
  
  typedef struct {
    say_drawable *drawable;
  
    say_polygon_point *points;
    size_t point_count;
  
    float outline_width;
    uint8_t outlined;
    uint8_t filled;
  } say_polygon;
  
  say_polygon *say_polygon_create(size_t size);
  void say_polygon_free(say_polygon *polygon);
  
  void say_polygon_copy(say_polygon *polygon, say_polygon *other);
  
  say_polygon *say_polygon_triangle(say_vector2 a, say_vector2 b, say_vector2 c,
                                    say_color color);
  say_polygon *say_polygon_rectangle(say_vector2 pos, say_vector2 size,
                                       say_color color);
  say_polygon *say_polygon_circle(say_vector2 center, float radius, say_color color);
  say_polygon *say_polygon_ellipse(say_vector2 center, float rx, float ry,
                                   say_color color);
  say_polygon *say_polygon_line(say_vector2 first, say_vector2 last, float width,
                                say_color color);
  
  void say_polygon_resize(say_polygon *polygon, size_t resize);
  
  void say_polygon_set_color(say_polygon *polygon, say_color color);
  void say_polygon_set_outline_color(say_polygon *polygon, say_color color);
  
  size_t say_polygon_get_size(say_polygon *polygon);
  
  void say_polygon_set_pos_for(say_polygon *polygon, size_t id, say_vector2 pos);
  void say_polygon_set_color_for(say_polygon *polygon, size_t id, say_color col);
  void say_polygon_set_outline_for(say_polygon *polygon, size_t id, say_color col);
  
  say_vector2 say_polygon_get_pos_for(say_polygon *polygon, size_t id);
  say_color say_polygon_get_color_for(say_polygon *polygon, size_t id);
  say_color say_polygon_get_outline_for(say_polygon *polygon, size_t id);
  
  void say_polygon_set_outline(say_polygon *polygon, float size);
  float say_polygon_get_outline(say_polygon *polygon);
  
  uint8_t say_polygon_outlined(say_polygon *polygon);
  uint8_t say_polygon_filled(say_polygon *polygon);
  
  void say_polygon_set_outlined(say_polygon *polygon, uint8_t val);
  void say_polygon_set_filled(say_polygon *polygon, uint8_t val);
  
  #endif
  