Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 29452) +++ trunk/src/draw.c (revision 29453) @@ -321,7 +321,7 @@ pcb_hid_set_line_width(pcb_draw_out.fgGC, -conf_core.appearance.padstack.cross_thick); pcb_draw_pstk_labels(info); } - pcb_draw_pstk_names(info, conf_core.editor.show_solder_side ? solder : component, info->drawn_area); + pcb_draw_pstk_names(info, info->xform->show_solder_side ? solder : component, info->drawn_area); pcb_render->set_drawing_mode(pcb_render, PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); } @@ -349,8 +349,10 @@ pcb_layergrp_id_t drawn_groups[PCB_MAX_LAYERGRP]; pcb_bool paste_empty; legacy_vlayer_t lvly; + pcb_xform_t tmp; - backsilk_gid = ((!conf_core.editor.show_solder_side) ? pcb_layergrp_get_bottom_silk() : pcb_layergrp_get_top_silk()); + xform_setup(info, &tmp, NULL); + backsilk_gid = ((!info->xform->show_solder_side) ? pcb_layergrp_get_bottom_silk() : pcb_layergrp_get_top_silk()); backsilk_grp = pcb_get_layergrp(PCB, backsilk_gid); if (backsilk_grp != NULL) { pcb_cardinal_t n; @@ -405,7 +407,7 @@ solder = component = -1; pcb_layergrp_list(PCB, PCB_LYT_BOTTOM | PCB_LYT_COPPER, &solder, 1); pcb_layergrp_list(PCB, PCB_LYT_TOP | PCB_LYT_COPPER, &component, 1); - side_copper_grp = conf_core.editor.show_solder_side ? solder : component; + side_copper_grp = info->xform->show_solder_side ? solder : component; /* @@ -461,8 +463,12 @@ /* Draw padstacks below silk */ pcb_render->set_drawing_mode(pcb_render, PCB_HID_COMP_RESET, pcb_draw_out.direct, info->drawn_area); pcb_render->set_drawing_mode(pcb_render, PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); - if (pcb_render->gui) - pcb_draw_ppv(info, conf_core.editor.show_solder_side ? solder : component); + if (pcb_render->gui) { + pcb_xform_t tmp; + xform_setup(info, &tmp, NULL); + pcb_draw_ppv(info, info->xform->show_solder_side ? solder : component); + info->xform = NULL; info->layer = NULL; + } pcb_render->set_drawing_mode(pcb_render, PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); /* Draw the solder mask if turned on */ @@ -1102,6 +1108,7 @@ dst->thin_draw_poly = conf_core.editor.thin_draw_poly; dst->check_planes = conf_core.editor.check_planes; dst->hide_floaters = conf_core.editor.hide_names; + dst->show_solder_side = conf_core.editor.show_solder_side; dst->flag_color = 1; } Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 29452) +++ trunk/src/obj_common.h (revision 29453) @@ -104,6 +104,7 @@ unsigned check_planes:1; /* when 1, draw polygons only */ unsigned flag_color:1; /* when zero, ignore colors that would be derived from object flags (i.e. selection, warn, found) */ unsigned hide_floaters:1; /* when 1 omit drawing floaters (typically refdes text on silk) */ + unsigned show_solder_side:1; /* WARNING: After adding new fields, make sure to update pcb_xform_add() and pcb_xform_is_nop() below */ }; @@ -124,6 +125,7 @@ __dst__->check_planes |= __src__->check_planes; \ __dst__->flag_color |= __src__->flag_color; \ __dst__->hide_floaters |= __src__->hide_floaters; \ + __dst__->show_solder_side |= __src__->show_solder_side; \ } while(0) #define pcb_xform_is_nop(src) (\ ((src)->bloat == 0) && \ @@ -135,7 +137,8 @@ ((src)->thin_draw_poly == 0) && \ ((src)->check_planes == 0) && \ ((src)->flag_color == 0) && \ - ((src)->hide_floaters == 0) \ + ((src)->hide_floaters == 0) && \ + ((src)->show_solder_side == 0) \ ) /* Returns true if overlay drawing should be omitted */