Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 20488) +++ trunk/src/draw.h (revision 20489) @@ -167,6 +167,8 @@ #define pcb_draw_term_need_gfx(obj) \ (((obj)->term != NULL) && !PCB_FLAG_TEST(PCB_FLAG_FOUND, (obj)) && !PCB_FLAG_TEST(PCB_FLAG_WARN, (obj)) && !PCB_FLAG_TEST(PCB_FLAG_SELECTED, (obj))) +#define pcb_draw_term_hid_permission() (pcb_gui->heavy_term_layer_ind) + #define PCB_DRAW_TERM_GFX_WIDTH (-3) #endif Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 20488) +++ trunk/src/hid.h (revision 20489) @@ -187,6 +187,9 @@ /* Always draw layers in compositing mode - no base layer */ unsigned force_compositing:1; + /* When enabled, indicate layer of heavy terminals graphically */ + unsigned heavy_term_layer_ind:1; + /* Returns a set of resources describing options the export or print HID supports. In GUI mode, the print/export dialogs use this to set up the selectable options. In command line mode, these are Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 20488) +++ trunk/src/obj_arc.c (revision 20489) @@ -934,7 +934,7 @@ if (!conf_core.editor.thin_draw && !conf_core.editor.wireframe_draw) { - if ((allow_term_gfx) && pcb_draw_term_need_gfx(arc)) { + if ((allow_term_gfx) && pcb_draw_term_need_gfx(arc) && pcb_draw_term_hid_permission()) { pcb_hid_set_line_cap(pcb_draw_out.active_padGC, pcb_cap_round); pcb_hid_set_line_width(pcb_draw_out.active_padGC, thickness); pcb_gui->draw_arc(pcb_draw_out.active_padGC, arc->X, arc->Y, arc->Width, arc->Height, arc->StartAngle, arc->Delta); @@ -941,7 +941,7 @@ pcb_hid_set_line_width(pcb_draw_out.fgGC, PCB_DRAW_TERM_GFX_WIDTH); } else - pcb_hid_set_line_width(pcb_draw_out.fgGC, thickness); + pcb_hid_set_line_width(pcb_draw_out.fgGC, thickness); pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_round); pcb_gui->draw_arc(pcb_draw_out.fgGC, arc->X, arc->Y, arc->Width, arc->Height, arc->StartAngle, arc->Delta); } Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 20488) +++ trunk/src/obj_line.c (revision 20489) @@ -1075,7 +1075,7 @@ PCB_DRAW_BBOX(line); pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_round); if (!conf_core.editor.thin_draw && !conf_core.editor.wireframe_draw) { - if ((allow_term_gfx) && pcb_draw_term_need_gfx(line)) { + if ((allow_term_gfx) && pcb_draw_term_need_gfx(line) && pcb_draw_term_hid_permission()) { pcb_hid_set_line_cap(pcb_draw_out.active_padGC, pcb_cap_round); pcb_hid_set_line_width(pcb_draw_out.active_padGC, thickness); pcb_gui->draw_line(pcb_draw_out.active_padGC, line->Point1.X, line->Point1.Y, line->Point2.X, line->Point2.Y); Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 20488) +++ trunk/src/obj_poly.c (revision 20489) @@ -1156,23 +1156,23 @@ } else { if ((allow_term_gfx) && pcb_draw_term_need_gfx(polygon)) { - pcb_vnode_t *n, *head; - int i; - pcb_gui->fill_pcb_polygon(pcb_draw_out.active_padGC, polygon, info->drawn_area); - head = &polygon->Clipped->contours->head; + if (pcb_draw_term_hid_permission()) { + pcb_vnode_t *n, *head; + int i; + head = &polygon->Clipped->contours->head; + pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_square); + for(n = head, i = 0; (n != head) || (i == 0); n = n->next, i++) { + pcb_coord_t x, y, r; + x = (n->prev->point[0] + n->point[0] + n->next->point[0]) / 3; + y = (n->prev->point[1] + n->point[1] + n->next->point[1]) / 3; - pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_square); - for(n = head, i = 0; (n != head) || (i == 0); n = n->next, i++) { - pcb_coord_t x, y, r; - x = (n->prev->point[0] + n->point[0] + n->next->point[0]) / 3; - y = (n->prev->point[1] + n->point[1] + n->next->point[1]) / 3; - #warning subc TODO: check if x;y is within the poly, but use a cheaper method than the official - r = PCB_DRAW_TERM_GFX_WIDTH; - pcb_hid_set_line_width(pcb_draw_out.fgGC, r); - pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_square); - pcb_gui->draw_line(pcb_draw_out.fgGC, x, y, x, y); + r = PCB_DRAW_TERM_GFX_WIDTH; + pcb_hid_set_line_width(pcb_draw_out.fgGC, r); + pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_square); + pcb_gui->draw_line(pcb_draw_out.fgGC, x, y, x, y); + } } } else Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 20488) +++ trunk/src_plugins/hid_lesstif/main.c (revision 20489) @@ -3954,6 +3954,7 @@ lesstif_hid.description = "LessTif - a Motif clone for X/Unix"; lesstif_hid.gui = 1; lesstif_hid.can_mask_clear_rats = 1; + lesstif_hid.heavy_term_layer_ind = 1; lesstif_hid.get_export_options = lesstif_get_export_options; lesstif_hid.do_export = lesstif_do_export; Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 20488) +++ trunk/src_plugins/hid_remote/remote.c (revision 20489) @@ -439,6 +439,7 @@ remote_hid.name = "remote"; remote_hid.description = "remote-mode GUI for non-interactive use."; remote_hid.gui = 1; + remote_hid.heavy_term_layer_ind = 1; remote_hid.get_export_options = remote_get_export_options; remote_hid.do_export = remote_do_export; Index: trunk/src_plugins/lib_gtk_hid/glue_hid.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 20488) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 20489) @@ -515,6 +515,7 @@ dst->struct_size = sizeof(pcb_hid_t); dst->gui = 1; + dst->heavy_term_layer_ind = 1; dst->do_export = gtkhid_do_export; dst->do_exit = ghid_do_exit;