4 typedef struct _Object_bb
13 #define POLY_MAX_PTS 12
14 typedef struct _Object_poly
16 uint16_t pixels_perim;
18 point_t pts[POLY_MAX_PTS];
32 typedef struct _drop_column_zone
39 typedef struct _drop_lintel_zone
52 #define MAX_SISTER_PER_ZONE 1
56 unsigned char *parcour_img(unsigned char* data, int16_t x_in, int16_t y_in, Object_bb *sac_obj, Object_poly *sac_obj_poly, int16_t max_obj);
58 float vect_get_angle(vect_t*v, vect_t* w);
60 void object_poly_get_min_ar(Object_poly *o, unsigned int *pts_index_out, vect_t *v_out, vect_t *r1, vect_t*r2);
62 void draw_pt_vect(unsigned char *buf, int16_t x_in, int16_t y_in, vect_t *v, point_t p);
64 void vect_rot_trigo(vect_t* v);
66 int object_poly_caliper_to_rectangle(Object_poly *o,
67 unsigned int *pts_index_out, vect_t* caliper,
68 vect_t *r1, vect_t*r2, point_t *p);
70 int split_rectangle(point_t *p, vect_t *r1, vect_t* r2, uint8_t max_zone, zone* zones, uint8_t color);
74 int zone_filtre_min_surface(unsigned char* data, int16_t x_in, int16_t y_in,
75 uint8_t color, unsigned int num_zone, zone* p);
77 void reset_drop_zone(void);
78 void display_drop_zones(uint8_t n_columns, uint8_t n_lintels, zone* zones);
80 unsigned int solve_objects_dropping(unsigned int points, unsigned int points_max,
81 uint8_t n_columns, uint8_t n_lintels,
82 uint8_t zones_num, zone* zones, int8_t sisters[MAX_ZONES][MAX_SISTER_PER_ZONE], uint8_t working_zone);
84 uint8_t process_img(unsigned char *buffer, int16_t x_in, int16_t y_in,
85 zone * all_zones, uint8_t max_zones);
88 uint8_t color2h(uint8_t color);
89 uint8_t h2color(uint8_t color);
91 int8_t get_column_dropzone(unsigned char *buffer, int16_t x_in, int16_t y_in,
92 uint8_t working_zone, int16_t center_x, int16_t center_y,
93 int16_t * dropzone_x, int16_t * dropzone_y);
96 uint8_t is_temple_there(unsigned char * buffer, int16_t x_in, int16_t y_in,
97 uint8_t h, int16_t center_x, int16_t center_y);
101 int8_t find_temple_dropzone(unsigned char *buffer, int16_t x_in, int16_t y_in,
102 uint8_t working_zone, int16_t center_x, int16_t center_y,
103 int16_t * dropzone_x, int16_t * dropzone_y);
105 void process_img_to_zone(unsigned char *buffer, int16_t x_in, int16_t y_in);
107 #define PIXEL2CM (300./27.)
110 extern uint8_t g_zone_num;
111 extern zone g_all_zones[MAX_ZONES];