Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 714) +++ trunk/src/obj_arc.c (revision 715) @@ -32,6 +32,7 @@ #include #include "geo.h" #include +#include static void camv_arc_free_fields(camv_any_obj_t *obj) { @@ -57,11 +58,19 @@ static void camv_arc_bbox(camv_any_obj_t *obj) { - TODO("real arc bbox"); - obj->arc.bbox.x1 = obj->arc.cx - obj->arc.r - obj->arc.thick; - obj->arc.bbox.x2 = obj->arc.cx + obj->arc.r + obj->arc.thick; - obj->arc.bbox.y1 = obj->arc.cy - obj->arc.r - obj->arc.thick; - obj->arc.bbox.y2 = obj->arc.cy + obj->arc.r + obj->arc.thick; + g2d_sarc_t a; + g2d_box_t box; + + a.c.c.x = obj->arc.cx; + a.c.c.y = obj->arc.cy; + a.c.r = obj->arc.r; + a.c.start = (180-obj->arc.start) / RND_RAD_TO_DEG; + a.c.delta = -obj->arc.delta / RND_RAD_TO_DEG; + a.s.width = obj->arc.thick; + box = g2d_sarc_bbox(&a); + + obj->arc.bbox.x1 = box.p1.x; obj->arc.bbox.y1 = box.p1.y; + obj->arc.bbox.x2 = box.p2.x; obj->arc.bbox.y2 = box.p2.y; obj->arc.bbox_valid = 1; }