Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 32964) +++ trunk/src/draw.c (revision 32965) @@ -1068,6 +1068,8 @@ static void pcb_draw_obj_label(pcb_draw_info_t *info, rnd_layergrp_id_t gid, pcb_any_obj_t *obj) { + rnd_bool vis_side = 1; + if (pcb_hidden_floater(obj, info)) return; @@ -1075,16 +1077,16 @@ if ((!pcb_draw_force_termlab) && (obj->parent_type == PCB_PARENT_LAYER)) { pcb_layer_t *ly = pcb_layer_get_real(obj->parent.layer); if ((ly != NULL) && (ly->meta.real.grp != gid)) - return; + vis_side = 0; } switch(obj->type) { - 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_GFX: pcb_gfx_draw_label(info, (pcb_gfx_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; + case PCB_OBJ_LINE: pcb_line_draw_label(info, (pcb_line_t *)obj, vis_side); return; + case PCB_OBJ_ARC: pcb_arc_draw_label(info, (pcb_arc_t *)obj, vis_side); return; + case PCB_OBJ_GFX: pcb_gfx_draw_label(info, (pcb_gfx_t *)obj, vis_side); return; + case PCB_OBJ_POLY: pcb_poly_draw_label(info, (pcb_poly_t *)obj, vis_side); return; + case PCB_OBJ_TEXT: pcb_text_draw_label(info, (pcb_text_t *)obj, vis_side); return; + case PCB_OBJ_PSTK: pcb_pstk_draw_label(info, (pcb_pstk_t *)obj, vis_side); return; default: break; } } Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 32964) +++ trunk/src/obj_arc.c (revision 32965) @@ -1050,9 +1050,9 @@ } } -void pcb_arc_draw_label(pcb_draw_info_t *info, pcb_arc_t *arc) +void pcb_arc_draw_label(pcb_draw_info_t *info, pcb_arc_t *arc, rnd_bool vis_side) { - if (arc->term != NULL) { + if ((arc->term != NULL) && vis_side) { rnd_coord_t x0, y0; rnd_bool_t vert; @@ -1059,7 +1059,7 @@ arc_label_pos(arc, &x0, &y0, &vert); pcb_term_label_draw(info, x0, y0, conf_core.appearance.term_label_size, vert, rnd_true, (pcb_any_obj_t *)arc); } - if (arc->noexport) { + if (arc->noexport && vis_side) { rnd_coord_t cx, cy; pcb_arc_middle(arc, &cx, &cy); pcb_obj_noexport_mark(arc, cx, cy); Index: trunk/src/obj_arc_draw.h =================================================================== --- trunk/src/obj_arc_draw.h (revision 32964) +++ trunk/src/obj_arc_draw.h (revision 32965) @@ -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_draw_info_t *info, pcb_arc_t *arc); +void pcb_arc_draw_label(pcb_draw_info_t *info, pcb_arc_t *arc, rnd_bool vis_side); Index: trunk/src/obj_gfx.c =================================================================== --- trunk/src/obj_gfx.c (revision 32964) +++ trunk/src/obj_gfx.c (revision 32965) @@ -870,10 +870,10 @@ /* ->term: can't be a terminal, no label to draw */ } -void pcb_gfx_draw_label(pcb_draw_info_t *info, pcb_gfx_t *gfx) +void pcb_gfx_draw_label(pcb_draw_info_t *info, pcb_gfx_t *gfx, rnd_bool vis_side) { /* ->term: can't be a terminal, no label to draw */ - if (gfx->noexport) + if (gfx->noexport && vis_side) pcb_obj_noexport_mark(gfx, gfx->cx, gfx->cy); } Index: trunk/src/obj_gfx_draw.h =================================================================== --- trunk/src/obj_gfx_draw.h (revision 32964) +++ trunk/src/obj_gfx_draw.h (revision 32965) @@ -40,6 +40,6 @@ void pcb_gfx_invalidate_erase(pcb_gfx_t *gfx); void pcb_gfx_invalidate_draw(pcb_layer_t *Layer, pcb_gfx_t *gfx); void pcb_gfx_name_invalidate_draw(pcb_gfx_t *gfx); -void pcb_gfx_draw_label(pcb_draw_info_t *info, pcb_gfx_t *gfx); +void pcb_gfx_draw_label(pcb_draw_info_t *info, pcb_gfx_t *gfx, rnd_bool vis_side); void pcb_gfx_draw_xor(pcb_gfx_t *gfx, rnd_coord_t x, rnd_coord_t y); Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 32964) +++ trunk/src/obj_line.c (revision 32965) @@ -1361,12 +1361,12 @@ } } -void pcb_line_draw_label(pcb_draw_info_t *info, pcb_line_t *line) +void pcb_line_draw_label(pcb_draw_info_t *info, pcb_line_t *line, rnd_bool vis_side) { - if (line->term != NULL) + if ((line->term != NULL) && vis_side) 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), rnd_true, (pcb_any_obj_t *)line); - if (line->noexport) + if (line->noexport && vis_side) pcb_obj_noexport_mark(line, (line->Point1.X+line->Point2.X)/2, (line->Point1.Y+line->Point2.Y)/2); if (line->ind_editpoint) { Index: trunk/src/obj_line_draw.h =================================================================== --- trunk/src/obj_line_draw.h (revision 32964) +++ trunk/src/obj_line_draw.h (revision 32965) @@ -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_draw_info_t *info, pcb_line_t *line); +void pcb_line_draw_label(pcb_draw_info_t *info, pcb_line_t *line, rnd_bool vis_side); void pcb_line_name_invalidate_draw(pcb_line_t *line); Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 32964) +++ trunk/src/obj_poly.c (revision 32965) @@ -1296,13 +1296,13 @@ } } -void pcb_poly_draw_label(pcb_draw_info_t *info, pcb_poly_t *poly) +void pcb_poly_draw_label(pcb_draw_info_t *info, pcb_poly_t *poly, rnd_bool vis_side) { - if (poly->term != NULL) + if ((poly->term != NULL) && (vis_side)) 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), rnd_true, (pcb_any_obj_t *)poly); - if (poly->noexport) + if (poly->noexport && vis_side) pcb_obj_noexport_mark(poly, (poly->BoundingBox.X1 + poly->BoundingBox.X2)/2, (poly->BoundingBox.Y1 + poly->BoundingBox.Y2)/2); if (poly->ind_editpoint) { Index: trunk/src/obj_poly_draw.h =================================================================== --- trunk/src/obj_poly_draw.h (revision 32964) +++ trunk/src/obj_poly_draw.h (revision 32965) @@ -39,7 +39,7 @@ 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_draw_info_t *info, pcb_poly_t *poly); +void pcb_poly_draw_label(pcb_draw_info_t *info, pcb_poly_t *poly, rnd_bool vis_side); void pcb_poly_draw_annotation(pcb_draw_info_t *info, pcb_poly_t *poly); Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 32964) +++ trunk/src/obj_pstk.c (revision 32965) @@ -617,7 +617,7 @@ /* draw the label if enabled, after everything else is drawn */ if (ps->term != NULL) { if ((pcb_draw_force_termlab) || PCB_FLAG_TEST(PCB_FLAG_TERMNAME, ps)) - pcb_pstk_draw_label(info, ps); + pcb_pstk_draw_label(info, ps, 1); } if (ps->noexport) @@ -759,7 +759,7 @@ pcb_pstk_draw_shape_thin(info, gc, ps, shape); } -void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps) +void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps, rnd_bool vis_side) { rnd_bool vert; rnd_coord_t dx, dy; Index: trunk/src/obj_pstk_draw.h =================================================================== --- trunk/src/obj_pstk_draw.h (revision 32964) +++ trunk/src/obj_pstk_draw.h (revision 32965) @@ -43,7 +43,7 @@ rnd_r_dir_t pcb_pstk_draw_mark_callback(const rnd_box_t *b, void *cl); rnd_r_dir_t pcb_pstk_draw_label_callback(const rnd_box_t *b, void *cl); -void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps); +void pcb_pstk_draw_label(pcb_draw_info_t *info, pcb_pstk_t *ps, rnd_bool vis_side); void pcb_pstk_invalidate_erase(pcb_pstk_t *ps); void pcb_pstk_invalidate_draw(pcb_pstk_t *ps); Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 32964) +++ trunk/src/obj_text.c (revision 32965) @@ -1525,12 +1525,12 @@ 100.0, is_text_term_vert(text), rnd_true, (pcb_any_obj_t *)text); } -void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text) +void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text, rnd_bool vis_side) { - if (text->term != NULL) + if ((text->term != NULL) && vis_side) 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), rnd_true, (pcb_any_obj_t *)text); - if (text->noexport) + if (text->noexport && vis_side) pcb_obj_noexport_mark(text, (text->BoundingBox.X1 + text->BoundingBox.X2)/2, (text->BoundingBox.Y1 + text->BoundingBox.Y2)/2); } Index: trunk/src/obj_text_draw.h =================================================================== --- trunk/src/obj_text_draw.h (revision 32964) +++ trunk/src/obj_text_draw.h (revision 32965) @@ -48,7 +48,7 @@ void pcb_text_invalidate_draw(pcb_layer_t *Layer, pcb_text_t *Text); void pcb_text_draw_xor(pcb_text_t *text, rnd_coord_t x, rnd_coord_t y, rnd_bool want_box); void pcb_text_name_invalidate_draw(pcb_text_t *txt); -void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text); +void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text, rnd_bool vis_side); /* lowlevel drawing routine for text strings */ void pcb_text_draw_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny);