From 7f12414c3041c667d8b60612fcc9cd6e2972e9c4 Mon Sep 17 00:00:00 2001 From: Peter Clifton Date: Sat, 24 Nov 2012 13:38:22 +0000 Subject: [PATCH] Move _draw_arc() routine from draw.c into HID_DRAW API The API is now called draw_pcb_arc, and the default implementation resides in hid/common/draw_helpers.c --- src/draw.c | 20 ++------------------ src/hid/common/draw_helpers.c | 16 ++++++++++++++++ src/hid_draw.h | 1 + 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/draw.c b/src/draw.c index 8b555427d5..1e48602975 100644 --- a/src/draw.c +++ b/src/draw.c @@ -467,26 +467,10 @@ rat_callback (const BoxType * b, void *cl) } static void -_draw_arc (ArcType *arc) -{ - if (!arc->Thickness) - return; - - if (TEST_FLAG (THINDRAWFLAG, PCB)) - gui->graphics->set_line_width (Output.fgGC, 0); - else - gui->graphics->set_line_width (Output.fgGC, arc->Thickness); - gui->graphics->set_line_cap (Output.fgGC, Trace_Cap); - - gui->graphics->draw_arc (Output.fgGC, arc->X, arc->Y, arc->Width, - arc->Height, arc->StartAngle, arc->Delta); -} - -static void draw_arc (LayerType *layer, ArcType *arc) { set_layer_object_color (layer, (AnyObjectType *) arc); - _draw_arc (arc); + gui->graphics->draw_pcb_arc (Output.fgGC, arc); } static int @@ -517,7 +501,7 @@ draw_element_package (ElementType *element) END_LOOP; ARC_LOOP (element); { - _draw_arc (arc); + gui->graphics->draw_pcb_arc (Output.fgGC, arc); } END_LOOP; } diff --git a/src/hid/common/draw_helpers.c b/src/hid/common/draw_helpers.c index 7d97b2fc4a..774c10a99e 100644 --- a/src/hid/common/draw_helpers.c +++ b/src/hid/common/draw_helpers.c @@ -20,6 +20,21 @@ common_draw_pcb_line (hidGC gc, LineType *line) } static void +common_draw_pcb_arc (hidGC gc, ArcType *arc) +{ + if (!arc->Thickness) + return; + + if (TEST_FLAG (THINDRAWFLAG, PCB)) + gui->graphics->set_line_width (gc, 0); + else + gui->graphics->set_line_width (gc, arc->Thickness); + gui->graphics->set_line_cap (gc, Trace_Cap); + + gui->graphics->draw_arc (gc, arc->X, arc->Y, arc->Width, arc->Height, arc->StartAngle, arc->Delta); +} + +static void fill_contour (hidGC gc, PLINE *pl) { Coord *x, *y, n, i = 0; @@ -487,6 +502,7 @@ void common_draw_helpers_init (HID_DRAW *graphics) { graphics->draw_pcb_line = common_draw_pcb_line; + graphics->draw_pcb_arc = common_draw_pcb_arc; graphics->fill_pcb_polygon = common_fill_pcb_polygon; graphics->thindraw_pcb_polygon = common_thindraw_pcb_polygon; diff --git a/src/hid_draw.h b/src/hid_draw.h index 0d950eebaf..b5081b2ad4 100644 --- a/src/hid_draw.h +++ b/src/hid_draw.h @@ -52,6 +52,7 @@ struct hid_draw_st /* The following APIs render using PCB data-structures, not immediate parameters */ void (*draw_pcb_line) (hidGC gc, LineType *line); + void (*draw_pcb_arc) (hidGC gc, ArcType *arc); void (*fill_pcb_polygon) (hidGC gc, PolygonType *poly, const BoxType *clip_box); void (*thindraw_pcb_polygon) (hidGC gc, PolygonType *poly, const BoxType *clip_box); -- 2.11.4.GIT