Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 27606) +++ trunk/src/draw.c (revision 27607) @@ -758,6 +758,7 @@ info->pcb = pcb; info->exporting = (pcb_render->exporter || pcb_render->printer); info->export_name = pcb_render->name; + info->partial_export = 0; if (info->exporting) { strcpy(info->noexport_name, "noexport:"); strncpy(info->noexport_name+9, info->export_name, sizeof(info->noexport_name)-10); Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 27606) +++ trunk/src/draw.h (revision 27607) @@ -53,6 +53,7 @@ typedef struct pcb_draw_info_s { pcb_board_t *pcb; int exporting; /* 1 if doing an export, 0 if working to screen */ + int partial_export; /* 1 if only objects with the EXPORTSEL flag should be drawn */ const char *export_name; /* name of the export plugin */ char noexport_name[64]; /* "noexport:" attribute name rendered for the current exporter */ const pcb_box_t *drawn_area; Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 27606) +++ trunk/src/obj_arc.c (revision 27607) @@ -1011,7 +1011,7 @@ pcb_arc_t *arc = (pcb_arc_t *)b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(arc->parent_type, &arc->parent)) @@ -1026,7 +1026,7 @@ pcb_arc_t *arc = (pcb_arc_t *)b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(arc->parent_type, &arc->parent)) Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 27606) +++ trunk/src/obj_common.h (revision 27607) @@ -269,6 +269,7 @@ } while(0) #define pcb_hidden_floater(obj) (conf_core.editor.hide_names && PCB_FLAG_TEST(PCB_FLAG_FLOATER, (obj))) +#define pcb_partial_export(obj,info) ((info)->partial_export && (!PCB_FLAG_TEST(PCB_FLAG_EXPORTSEL, (obj)))) /* Returns whether a subc part object is editable (not under the subc lock) */ #define pcb_subc_part_editable(pcb, obj) \ Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 27606) +++ trunk/src/obj_line.c (revision 27607) @@ -1163,7 +1163,7 @@ pcb_line_t *line = (pcb_line_t *)b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(line->parent_type, &line->parent)) @@ -1178,7 +1178,7 @@ pcb_line_t *line = (pcb_line_t *)b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(line->parent_type, &line->parent)) Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 27606) +++ trunk/src/obj_poly.c (revision 27607) @@ -1291,7 +1291,7 @@ pcb_draw_info_t *i = cl; pcb_poly_t *polygon = (pcb_poly_t *) b; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, i)) return PCB_R_DIR_FOUND_CONTINUE; if (!polygon->Clipped) @@ -1310,7 +1310,7 @@ pcb_draw_info_t *i = cl; pcb_poly_t *polygon = (pcb_poly_t *) b; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, i)) return PCB_R_DIR_FOUND_CONTINUE; if (!polygon->Clipped) Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 27606) +++ trunk/src/obj_pstk.c (revision 27607) @@ -534,7 +534,7 @@ pcb_obj_noexport(info, ps, return PCB_R_DIR_NOT_FOUND); - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_gobj_parent_subc(ps->parent_type, &ps->parent)) Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 27606) +++ trunk/src/obj_text.c (revision 27607) @@ -1317,7 +1317,7 @@ pcb_text_t *text = (pcb_text_t *) b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(text->parent_type, &text->parent)) @@ -1332,7 +1332,7 @@ pcb_text_t *text = (pcb_text_t *) b; pcb_draw_info_t *info = cl; - if (pcb_hidden_floater((pcb_any_obj_t*)b)) + if (pcb_hidden_floater((pcb_any_obj_t*)b) || pcb_partial_export((pcb_any_obj_t*)b, info)) return PCB_R_DIR_FOUND_CONTINUE; if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(text->parent_type, &text->parent))