Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 13027) +++ trunk/src/obj_subc.c (revision 13028) @@ -1393,6 +1393,25 @@ return PCB_R_DIR_FOUND_CONTINUE; } +void pcb_subc_draw_preview(const pcb_subc_t *sc, pcb_box_t *drawn_area) +{ + int n; + pcb_pstk_draw_t ctx; + + for(n = 0; n < sc->data->LayerN; n++) { + pcb_layer_t *layer = &sc->data->Layer[n]; + if (layer->meta.bound.type & (PCB_LYT_COPPER | PCB_LYT_SILK | PCB_LYT_OUTLINE)) + pcb_draw_layer(layer, drawn_area); + } + + ctx.pcb = NULL; + ctx.gid = -1; + ctx.is_current = 1; + ctx.comb = 0; + pcb_r_search(sc->data->padstack_tree, drawn_area, NULL, pcb_pstk_draw_callback, &ctx, NULL); +} + + pcb_subc_t *pcb_subc_by_refdes(pcb_data_t *base, const char *name) { #warning subc TODO: hierarchy Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 13027) +++ trunk/src/obj_subc.h (revision 13028) @@ -67,6 +67,9 @@ void pcb_subc_rotate(pcb_subc_t *subc, pcb_coord_t cx, pcb_coord_t cy, double cosa, double sina, double angle); +/* Draw a subcircuit for a preview (silk, copper and outline only) */ +void pcb_subc_draw_preview(const pcb_subc_t *sc, pcb_box_t *drawn_area); + void XORDrawSubc(pcb_subc_t *sc, pcb_coord_t DX, pcb_coord_t DY); /* Redo the binding after the layer binding recipe changed in sc */