Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 19400) +++ trunk/src/draw.c (revision 19401) @@ -70,7 +70,7 @@ static void draw_everything(pcb_draw_info_t *info); static void pcb_draw_layer_grp(pcb_draw_info_t *info, int, int); -static void pcb_draw_obj_label(pcb_layergrp_id_t gid, pcb_any_obj_t *obj); +static void pcb_draw_obj_label(pcb_draw_info_t *info, pcb_layergrp_id_t gid, pcb_any_obj_t *obj); static void pcb_draw_pstk_marks(pcb_draw_info_t *info); static void pcb_draw_pstk_labels(pcb_draw_info_t *info); static void pcb_draw_pstk_holes(pcb_draw_info_t *info, pcb_layergrp_id_t group, pcb_pstk_draw_hole_t holetype); @@ -314,7 +314,7 @@ pcb_hid_set_line_width(pcb_draw_out.fgGC, -conf_core.appearance.padstack.cross_thick); pcb_draw_pstk_labels(info); } - pcb_draw_pstk_names(conf_core.editor.show_solder_side ? solder : component, info->drawn_area); + pcb_draw_pstk_names(info, conf_core.editor.show_solder_side ? solder : component, info->drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); } @@ -526,12 +526,12 @@ * Draws padstacks' names - Always draws for non-gui HIDs, * otherwise drawing depends on PCB->pstk_on */ -void pcb_draw_pstk_names(pcb_layergrp_id_t group, const pcb_box_t *drawn_area) +void pcb_draw_pstk_names(pcb_draw_info_t *info, pcb_layergrp_id_t group, const pcb_box_t *drawn_area) { if (PCB->pstk_on || !pcb_gui->gui) { size_t n; for(n = 0; n < delayed_labels.used; n++) - pcb_draw_obj_label(group, delayed_labels.array[n]); + pcb_draw_obj_label(info, group, delayed_labels.array[n]); } delayed_labels.used = 0; } @@ -836,7 +836,7 @@ } } -static void pcb_draw_obj_label(pcb_layergrp_id_t gid, pcb_any_obj_t *obj) +static void pcb_draw_obj_label(pcb_draw_info_t *info, pcb_layergrp_id_t gid, pcb_any_obj_t *obj) { if (pcb_hidden_floater(obj)) return; @@ -849,11 +849,11 @@ } switch(obj->type) { - case PCB_OBJ_LINE: pcb_line_draw_label((pcb_line_t *)obj); return; - case PCB_OBJ_ARC: pcb_arc_draw_label((pcb_arc_t *)obj); return; - case PCB_OBJ_POLY: pcb_poly_draw_label((pcb_poly_t *)obj); return; - case PCB_OBJ_TEXT: pcb_text_draw_label((pcb_text_t *)obj); return; - case PCB_OBJ_PSTK: pcb_pstk_draw_label((pcb_pstk_t *)obj); return; + case PCB_OBJ_LINE: pcb_line_draw_label(info, (pcb_line_t *)obj); return; + case PCB_OBJ_ARC: pcb_arc_draw_label(info, (pcb_arc_t *)obj); return; + case PCB_OBJ_POLY: pcb_poly_draw_label(info, (pcb_poly_t *)obj); return; + case PCB_OBJ_TEXT: pcb_text_draw_label(info, (pcb_text_t *)obj); return; + case PCB_OBJ_PSTK: pcb_pstk_draw_label(info, (pcb_pstk_t *)obj); return; default: break; } } @@ -1053,7 +1053,7 @@ } -void pcb_term_label_draw(pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, pcb_bool centered, const char *lab, int intconn) +void pcb_term_label_draw(pcb_draw_info_t *info, pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, pcb_bool centered, const char *lab, int intconn) { int mirror, direction; PCB_TERM_LABEL_SETUP; @@ -1065,7 +1065,7 @@ if (pcb_gui->gui) pcb_draw_doing_pinout++; - pcb_text_draw_string(NULL, font, label, x, y, scale, direction, mirror, 1, 0, 0, 0, PCB_TXT_TINY_HIDE); + pcb_text_draw_string(info, font, label, x, y, scale, direction, mirror, 1, 0, 0, 0, PCB_TXT_TINY_HIDE); if (pcb_gui->gui) pcb_draw_doing_pinout--; } Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 19400) +++ trunk/src/draw.h (revision 19401) @@ -133,7 +133,7 @@ void pcb_erase_obj(int, void *, void *); -void pcb_draw_pstk_names(pcb_layergrp_id_t group, const pcb_box_t *drawn_area); +void pcb_draw_pstk_names(pcb_draw_info_t *info, pcb_layergrp_id_t group, const pcb_box_t *drawn_area); /*#define PCB_BBOX_DEBUG*/ @@ -155,7 +155,7 @@ int pcb_draw_layergrp_is_comp(const pcb_layergrp_t *g); /* Draw (render) or invalidate a terminal label */ -void pcb_term_label_draw(pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, pcb_bool centered, const char *lab, int intconn); +void pcb_term_label_draw(pcb_draw_info_t *info, pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, pcb_bool centered, const char *lab, int intconn); void pcb_term_label_invalidate(pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, pcb_bool centered, const char *lab, int intconn); Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 19400) +++ trunk/src/obj_arc.c (revision 19401) @@ -862,7 +862,7 @@ } } -void pcb_arc_draw_label(pcb_arc_t *arc) +void pcb_arc_draw_label(pcb_draw_info_t *info, pcb_arc_t *arc) { if (arc->term != NULL) { pcb_coord_t x0, y0; @@ -869,7 +869,7 @@ pcb_bool_t vert; arc_label_pos(arc, &x0, &y0, &vert); - pcb_term_label_draw(x0, y0, conf_core.appearance.term_label_size, vert, pcb_true, arc->term, arc->intconn); + pcb_term_label_draw(info, x0, y0, conf_core.appearance.term_label_size, vert, pcb_true, arc->term, arc->intconn); } } Index: trunk/src/obj_arc_draw.h =================================================================== --- trunk/src/obj_arc_draw.h (revision 19400) +++ trunk/src/obj_arc_draw.h (revision 19401) @@ -40,5 +40,5 @@ void pcb_arc_invalidate_erase(pcb_arc_t *Arc); void pcb_arc_invalidate_draw(pcb_layer_t *Layer, pcb_arc_t *Arc); void pcb_arc_name_invalidate_draw(pcb_arc_t *arc); -void pcb_arc_draw_label(pcb_arc_t *arc); +void pcb_arc_draw_label(pcb_draw_info_t *info, pcb_arc_t *arc); Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 19400) +++ trunk/src/obj_line.c (revision 19401) @@ -1010,10 +1010,10 @@ } } -void pcb_line_draw_label(pcb_line_t *line) +void pcb_line_draw_label(pcb_draw_info_t *info, pcb_line_t *line) { if (line->term != NULL) - pcb_term_label_draw((line->Point1.X + line->Point2.X)/2, (line->Point1.Y + line->Point2.Y)/2, + pcb_term_label_draw(info, (line->Point1.X + line->Point2.X)/2, (line->Point1.Y + line->Point2.Y)/2, conf_core.appearance.term_label_size, is_line_term_vert(line), pcb_true, line->term, line->intconn); } Index: trunk/src/obj_line_draw.h =================================================================== --- trunk/src/obj_line_draw.h (revision 19400) +++ trunk/src/obj_line_draw.h (revision 19401) @@ -39,6 +39,6 @@ void pcb_line_draw_(pcb_draw_info_t *info, pcb_line_t *line, int allow_term_gfx); void pcb_line_invalidate_erase(pcb_line_t *Line); void pcb_line_invalidate_draw(pcb_layer_t *Layer, pcb_line_t *Line); -void pcb_line_draw_label(pcb_line_t *line); +void pcb_line_draw_label(pcb_draw_info_t *info, pcb_line_t *line); void pcb_line_name_invalidate_draw(pcb_line_t *line); Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 19400) +++ trunk/src/obj_poly.c (revision 19401) @@ -1002,10 +1002,10 @@ } } -void pcb_poly_draw_label(pcb_poly_t *poly) +void pcb_poly_draw_label(pcb_draw_info_t *info, pcb_poly_t *poly) { if (poly->term != NULL) - pcb_term_label_draw((poly->BoundingBox.X1 + poly->BoundingBox.X2)/2, (poly->BoundingBox.Y1 + poly->BoundingBox.Y2)/2, + pcb_term_label_draw(info, (poly->BoundingBox.X1 + poly->BoundingBox.X2)/2, (poly->BoundingBox.Y1 + poly->BoundingBox.Y2)/2, conf_core.appearance.term_label_size, is_poly_term_vert(poly), pcb_true, poly->term, poly->intconn); } Index: trunk/src/obj_poly_draw.h =================================================================== --- trunk/src/obj_poly_draw.h (revision 19400) +++ trunk/src/obj_poly_draw.h (revision 19401) @@ -28,6 +28,8 @@ /*** Standard draw of polygons ***/ +#include "draw.h" + /* Include rtree.h for these */ #ifdef PCB_RTREE_H pcb_r_dir_t pcb_poly_draw_callback(const pcb_box_t * b, void *cl); @@ -37,5 +39,5 @@ void pcb_poly_invalidate_erase(pcb_poly_t *Polygon); void pcb_poly_invalidate_draw(pcb_layer_t *Layer, pcb_poly_t *Polygon); void pcb_poly_name_invalidate_draw(pcb_poly_t *poly); -void pcb_poly_draw_label(pcb_poly_t *poly); +void pcb_poly_draw_label(pcb_draw_info_t *info, pcb_poly_t *poly); Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 19400) +++ trunk/src/obj_pstk.c (revision 19401) @@ -469,12 +469,13 @@ pcb_r_dir_t pcb_pstk_draw_label_callback(const pcb_box_t *b, void *cl) { + pcb_draw_info_t *info = cl; pcb_pstk_t *ps = (pcb_pstk_t *)b; /* draw the label if enabled, after everything else is drawn */ if (ps->term != NULL) { if ((pcb_draw_doing_pinout) || PCB_FLAG_TEST(PCB_FLAG_TERMNAME, ps)) - pcb_pstk_draw_label(ps); + pcb_pstk_draw_label(info, ps); } return PCB_R_DIR_FOUND_CONTINUE; } @@ -602,7 +603,7 @@ pcb_pstk_draw_shape_thin(gc, ps, shape); } -void pcb_pstk_draw_label(pcb_pstk_t *ps) +void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps) { pcb_bool vert; pcb_coord_t dx, dy; @@ -625,9 +626,9 @@ proto = pcb_pstk_get_proto(ps); if ((proto != NULL) && (proto->hdia > 0)) offs = proto->hdia/2; - pcb_term_label_draw(ps->x + offs, ps->y, conf_core.appearance.term_label_size, vert, pcb_false, ps->term, ps->intconn); + pcb_term_label_draw(info, ps->x + offs, ps->y, conf_core.appearance.term_label_size, vert, pcb_false, ps->term, ps->intconn); #endif - pcb_term_label_draw(ps->x, ps->y, conf_core.appearance.term_label_size, vert, pcb_true, ps->term, ps->intconn); + pcb_term_label_draw(info, ps->x, ps->y, conf_core.appearance.term_label_size, vert, pcb_true, ps->term, ps->intconn); } Index: trunk/src/obj_pstk_draw.h =================================================================== --- trunk/src/obj_pstk_draw.h (revision 19400) +++ trunk/src/obj_pstk_draw.h (revision 19401) @@ -34,6 +34,7 @@ #include "board.h" #include "layer_grp.h" +#include "draw.h" pcb_r_dir_t pcb_pstk_draw_callback(const pcb_box_t *b, void *cl); pcb_r_dir_t pcb_pstk_draw_hole_callback(const pcb_box_t *b, void *cl); @@ -44,7 +45,7 @@ void pcb_pstk_draw(pcb_pstk_t *ps, pcb_bool draw_hole); pcb_r_dir_t pcb_pstk_draw_mark_callback(const pcb_box_t *b, void *cl); pcb_r_dir_t pcb_pstk_draw_label_callback(const pcb_box_t *b, void *cl); -void pcb_pstk_draw_label(pcb_pstk_t *ps); +void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps); void pcb_pstk_invalidate_erase(pcb_pstk_t *ps); void pcb_pstk_invalidate_draw(pcb_pstk_t *ps); Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 19400) +++ trunk/src/obj_subc.c (revision 19401) @@ -1647,7 +1647,7 @@ next++; ctrl = 1; } - pcb_term_label_draw(x, y, conf_core.appearance.term_label_size/2, 0, 0, curr, subc->intconn); + pcb_term_label_draw(info, x, y, conf_core.appearance.term_label_size/2, 0, 0, curr, subc->intconn); if (ctrl) { switch(*next) { case 'n': y += dy; x = x0; break; @@ -1657,10 +1657,10 @@ } } else - pcb_term_label_draw(x0, y0, conf_core.appearance.term_label_size/2.0, 0, 0, "", subc->intconn); + pcb_term_label_draw(info, x0, y0, conf_core.appearance.term_label_size/2.0, 0, 0, "", subc->intconn); } else - pcb_term_label_draw(x0, y0, conf_core.appearance.term_label_size/2.0, 0, 0, subc->refdes, subc->intconn); + pcb_term_label_draw(info, x0, y0, conf_core.appearance.term_label_size/2.0, 0, 0, subc->refdes, subc->intconn); } return PCB_R_DIR_FOUND_CONTINUE; } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 19400) +++ trunk/src/obj_text.c (revision 19401) @@ -1068,10 +1068,10 @@ 100.0, is_text_term_vert(text), pcb_true, text->term, text->intconn); } -void pcb_text_draw_label(pcb_text_t *text) +void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text) { if (text->term != NULL) - pcb_term_label_draw((text->BoundingBox.X1 + text->BoundingBox.X2)/2, (text->BoundingBox.Y1 + text->BoundingBox.Y2)/2, + pcb_term_label_draw(info, (text->BoundingBox.X1 + text->BoundingBox.X2)/2, (text->BoundingBox.Y1 + text->BoundingBox.Y2)/2, conf_core.appearance.term_label_size, is_text_term_vert(text), pcb_true, text->term, text->intconn); } Index: trunk/src/obj_text_draw.h =================================================================== --- trunk/src/obj_text_draw.h (revision 19400) +++ trunk/src/obj_text_draw.h (revision 19401) @@ -47,7 +47,7 @@ void pcb_text_invalidate_draw(pcb_layer_t *Layer, pcb_text_t *Text); void pcb_text_draw_xor(pcb_text_t *text, pcb_coord_t x, pcb_coord_t y); void pcb_text_name_invalidate_draw(pcb_text_t *txt); -void pcb_text_draw_label(pcb_text_t *text); +void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text); /* lowlevel drawing routine for text strings */ void pcb_text_draw_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, pcb_coord_t x0, pcb_coord_t y0, int scale, int direction, int mirror, pcb_coord_t min_line_width, int xordraw, pcb_coord_t xordx, pcb_coord_t xordy, pcb_text_tiny_t tiny);