Index: trunk/src/draw_everything.c =================================================================== --- trunk/src/draw_everything.c (revision 34334) +++ trunk/src/draw_everything.c (revision 34335) @@ -53,6 +53,8 @@ /* when scripted: per call args */ int argc; long argv[DRW_MAX_ARG]; + + unsigned enable_silk_invis_clr:1; } draw_everything_t; @@ -113,7 +115,7 @@ /* temporarily change the color of the other-side silk */ static int drw_silk_tune_color(pcb_draw_info_t *info, draw_everything_t *de) { - if (de->backsilk_grp != NULL) { + if (de->enable_silk_invis_clr && (de->backsilk_grp != NULL)) { rnd_cardinal_t n; for(n = 0; n < de->backsilk_grp->len; n++) { pcb_layer_t *ly = pcb_get_layer(PCB->Data, de->backsilk_grp->lid[n]); @@ -129,7 +131,7 @@ /* set back the color of the other-side silk */ static int drw_silk_restore_color(pcb_draw_info_t *info, draw_everything_t *de) { - if (de->backsilk_grp != NULL) { + if (de->enable_silk_invis_clr && (de->backsilk_grp != NULL)) { rnd_cardinal_t n; for(n = 0; n < de->backsilk_grp->len; n++) { pcb_layer_t *ly = pcb_get_layer(PCB->Data, de->backsilk_grp->lid[n]); @@ -490,6 +492,12 @@ de.backsilk_gid = ((!info->xform->show_solder_side) ? pcb_layergrp_get_bottom_silk() : pcb_layergrp_get_top_silk()); de.backsilk_grp = pcb_get_layergrp(PCB, de.backsilk_gid); + de.enable_silk_invis_clr = info->xform->enable_silk_invis_clr; + + /* ugly special case for compatibility: far-side silk is rendered grey on GUI... */ + if ((rnd_render == rnd_gui) && rnd_render->gui) + de.enable_silk_invis_clr = 1; + if (draw_everything_scripted(info, &de) < 0) { if (!draw_everything_error) { rnd_message(RND_MSG_ERROR, "render_script: runtime error; falling back to hardwired C rendering\n"); Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 34334) +++ trunk/src/obj_common.h (revision 34335) @@ -111,6 +111,7 @@ unsigned show_solder_side:1; /* GUI */ unsigned invis_other_groups:1; /* GUI */ unsigned black_current_group:1; /* GUI */ + unsigned enable_silk_invis_clr:1; /* when 1, enable drawing other-side silk with the 'inivisible color' */ /* WARNING: After adding new fields, make sure to update pcb_xform_add() and pcb_xform_is_nop() below */ }; @@ -135,6 +136,7 @@ __dst__->show_solder_side |= __src__->show_solder_side; \ __dst__->invis_other_groups |= __src__->invis_other_groups; \ __dst__->black_current_group |= __src__->black_current_group; \ + __dst__->enable_silk_invis_clr |= __src__->enable_silk_invis_clr; \ } while(0) #define pcb_xform_is_nop(src) (\ ((src)->bloat == 0) && \ @@ -150,7 +152,8 @@ ((src)->add_gui_xform == 0) && \ ((src)->show_solder_side == 0) && \ ((src)->invis_other_groups == 0) && \ - ((src)->black_current_group == 0) \ + ((src)->black_current_group == 0) && \ + ((src)->enable_silk_invis_clr == 0) \ ) /* Returns true if overlay drawing should be omitted */