Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 19380) +++ trunk/src/draw.c (revision 19381) @@ -247,7 +247,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); have_canvas = 1; } - pcb_draw_layer(info->pcb, ly, info->drawn_area, NULL); + pcb_draw_layer(info->pcb, ly, info->drawn_area); } } if (have_canvas) @@ -563,7 +563,7 @@ #include "draw_composite.c" #include "draw_ly_spec.c" -void pcb_draw_layer(const pcb_board_t *pcb, const pcb_layer_t *Layer, const pcb_box_t *screen, int *num_found) +void pcb_draw_layer(const pcb_board_t *pcb, const pcb_layer_t *Layer, const pcb_box_t *screen) { pcb_draw_info_t info; pcb_box_t scr2; @@ -594,12 +594,12 @@ delayed_terms_enabled = pcb_true; pcb_hid_set_line_width(pcb_draw_out.fgGC, 1); pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_square); - pcb_r_search(Layer->polygon_tree, screen, NULL, pcb_poly_draw_term_callback, &info, num_found); + pcb_r_search(Layer->polygon_tree, screen, NULL, pcb_poly_draw_term_callback, &info, NULL); delayed_terms_enabled = pcb_false; may_have_delayed = 1; } else { - pcb_r_search(Layer->polygon_tree, screen, NULL, pcb_poly_draw_callback, &info, num_found); + pcb_r_search(Layer->polygon_tree, screen, NULL, pcb_poly_draw_callback, &info, NULL); } if (conf_core.editor.check_planes) @@ -608,16 +608,16 @@ /* draw all visible layer objects (with terminal gfx on copper) */ if (lflg & PCB_LYT_COPPER) { delayed_terms_enabled = pcb_true; - pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_term_callback, &info, num_found); - pcb_r_search(Layer->arc_tree, screen, NULL, pcb_arc_draw_term_callback, &info, num_found); - pcb_r_search(Layer->text_tree, screen, NULL, pcb_text_draw_term_callback, &info, num_found); + pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_term_callback, &info, NULL); + pcb_r_search(Layer->arc_tree, screen, NULL, pcb_arc_draw_term_callback, &info, NULL); + pcb_r_search(Layer->text_tree, screen, NULL, pcb_text_draw_term_callback, &info, NULL); delayed_terms_enabled = pcb_false; may_have_delayed = 1; } else { - pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_callback, &info, num_found); - pcb_r_search(Layer->arc_tree, screen, NULL, pcb_arc_draw_callback, &info, num_found); - pcb_r_search(Layer->text_tree, screen, NULL, pcb_text_draw_callback, &info, num_found); + pcb_r_search(Layer->line_tree, screen, NULL, pcb_line_draw_callback, &info, NULL); + pcb_r_search(Layer->arc_tree, screen, NULL, pcb_arc_draw_callback, &info, NULL); + pcb_r_search(Layer->text_tree, screen, NULL, pcb_text_draw_callback, &info, NULL); } if (may_have_delayed) @@ -728,7 +728,7 @@ layernum = layers[i]; Layer = info->pcb->Data->Layer + layernum; if (!(gflg & PCB_LYT_SILK) && Layer->meta.real.vis) - pcb_draw_layer(info->pcb, Layer, info->drawn_area, NULL); + pcb_draw_layer(info->pcb, Layer, info->drawn_area); } if ((gflg & PCB_LYT_COPPER) && (PCB->pstk_on)) @@ -975,7 +975,7 @@ else if ((e->content.layer_id >= 0) && (e->content.layer_id < pcb_max_layer)) { pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, 1, &e->view); pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, 1, &e->view); - pcb_draw_layer(PCB, &(PCB->Data->Layer[e->content.layer_id]), &e->view, NULL); + pcb_draw_layer(PCB, &(PCB->Data->Layer[e->content.layer_id]), &e->view); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, 1, &e->view); } else Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 19380) +++ trunk/src/draw.h (revision 19381) @@ -89,7 +89,7 @@ void pcb_draw(void); void pcb_redraw(void); void pcb_draw_obj(pcb_any_obj_t *obj); -void pcb_draw_layer(const pcb_board_t *pcb, const pcb_layer_t *ly, const pcb_box_t *screen, int *num_found); +void pcb_draw_layer(const pcb_board_t *pcb, const pcb_layer_t *ly, const pcb_box_t *screen); /* Same as pcb_draw_layer(), but never draws an implicit outline and ignores objects that are not in the subtree of data - useful for drawing a subtree, @@ -119,6 +119,9 @@ typedef struct pcb_draw_info_s { const pcb_board_t *pcb; const pcb_box_t *drawn_area; + const pcb_xform_t *xform_caller; /* the extra transformation the caller requested */ + pcb_xform_t xform; /* the final transformation applied on objects */ + const pcb_layer_t *layer; } pcb_draw_info_t; Index: trunk/src/draw_composite.c =================================================================== --- trunk/src/draw_composite.c (revision 19380) +++ trunk/src/draw_composite.c (revision 19381) @@ -138,7 +138,7 @@ pcb_draw_out.fgGC = pcb_draw_out.pmGC; if (l->comb & PCB_LYC_AUTO) draw_auto(ctx, auto_data); - pcb_draw_layer(ctx->info->pcb, l, ctx->info->drawn_area, NULL); + pcb_draw_layer(ctx->info->pcb, l, ctx->info->drawn_area); pcb_draw_out.fgGC = old_fg; } } Index: trunk/src/draw_ly_spec.c =================================================================== --- trunk/src/draw_ly_spec.c (revision 19380) +++ trunk/src/draw_ly_spec.c (revision 19381) @@ -154,7 +154,7 @@ /* fallback: implicit layer -> original code: draw auto+manual */ pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, pcb_draw_out.direct, info->drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); - pcb_draw_layer(info->pcb, LAYER_PTR(lid), info->drawn_area, NULL); + pcb_draw_layer(info->pcb, LAYER_PTR(lid), info->drawn_area); pcb_draw_silk_auto(&cctx, &lyt_side); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); } @@ -238,7 +238,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); for(n = 0; n < g->len; n++) { pcb_layer_t *ly = LAYER_PTR(g->lid[n]); - pcb_draw_layer(info->pcb, ly, info->drawn_area, NULL); + pcb_draw_layer(info->pcb, ly, info->drawn_area); } pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); }