Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 36998) +++ trunk/src/layer.c (revision 36999) @@ -1512,7 +1512,7 @@ rnd_layergrp_id_t grp; rnd_layer_id_t lid = v->new_id; grp = pcb_layer_get_group(pcb, lid); - return rnd_render->set_layer_group(rnd_render, grp, v->purpose, v->purpi, lid, v->type, is_empty, xform); + return rnd_render->set_layer_group(rnd_render, &pcb->hidlib, grp, v->purpose, v->purpi, lid, v->type, is_empty, xform); } /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ @@ -1529,7 +1529,7 @@ *xform = NULL; if (rnd_render->set_layer_group != NULL) - return rnd_render->set_layer_group(rnd_render, -1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty, xform); + return rnd_render->set_layer_group(rnd_render, NULL, -1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty, xform); /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ return 1; Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 36998) +++ trunk/src/layer_grp.c (revision 36999) @@ -789,7 +789,7 @@ *xform = NULL; if (rnd_render->set_layer_group != NULL) - return rnd_render->set_layer_group(rnd_gui, gid, grp->purpose, grp->purpi, grp->lid[0], grp->ltype, is_empty, xform); + return rnd_render->set_layer_group(rnd_gui, &PCB->hidlib, gid, grp->purpose, grp->purpi, grp->lid[0], grp->ltype, is_empty, xform); /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ return 1; Index: trunk/src_plugins/export_c_draw/export_c_draw.c =================================================================== --- trunk/src_plugins/export_c_draw/export_c_draw.c (revision 36998) +++ trunk/src_plugins/export_c_draw/export_c_draw.c (revision 36999) @@ -177,7 +177,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int c_draw_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int c_draw_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (is_empty) return 0; Index: trunk/src_plugins/export_debug/export_debug.c =================================================================== --- trunk/src_plugins/export_debug/export_debug.c (revision 36998) +++ trunk/src_plugins/export_debug/export_debug.c (revision 36999) @@ -179,7 +179,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int debug_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int debug_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (is_empty) return 0; Index: trunk/src_plugins/export_dxf/dxf.c =================================================================== --- trunk/src_plugins/export_dxf/dxf.c (revision 36998) +++ trunk/src_plugins/export_dxf/dxf.c (revision 36999) @@ -348,7 +348,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int dxf_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int dxf_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_excellon/excellon.c =================================================================== --- trunk/src_plugins/export_excellon/excellon.c (revision 36998) +++ trunk/src_plugins/export_excellon/excellon.c (revision 36999) @@ -304,7 +304,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int excellon_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int excellon_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { int is_drill; Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 36998) +++ trunk/src_plugins/export_gerber/gerber.c (revision 36999) @@ -424,7 +424,7 @@ -static int gerber_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int gerber_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { int want_outline; char *cp; Index: trunk/src_plugins/export_hpgl/export_hpgl.c =================================================================== --- trunk/src_plugins/export_hpgl/export_hpgl.c (revision 36998) +++ trunk/src_plugins/export_hpgl/export_hpgl.c (revision 36999) @@ -174,7 +174,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int exp_hpgl_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int exp_hpgl_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (is_empty) return 0; Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 36998) +++ trunk/src_plugins/export_openems/export_openems.c (revision 36999) @@ -731,7 +731,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int openems_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int openems_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (flags & PCB_LYT_COPPER) { /* export copper layers only */ ems_ctx->clayer = ems_ctx->lg_pcb2ems[group]; Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 36998) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 36999) @@ -361,7 +361,7 @@ -static int openscad_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int openscad_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 36998) +++ trunk/src_plugins/export_png/png.c (revision 36999) @@ -521,7 +521,7 @@ static int is_mask; -static int png_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int png_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { if (flags & PCB_LYT_UI) return 0; @@ -553,7 +553,7 @@ is_mask = (flags & PCB_LYT_MASK); if (pctx->photo_mode) - return png_set_layer_group_photo(group, purpose, purpi, layer, flags, is_empty, xform); + return png_set_layer_group_photo(group, design, purpose, purpi, layer, flags, is_empty, xform); if (png_cam.active) /* CAM decided already */ return 1; Index: trunk/src_plugins/export_png/png_photo2.c =================================================================== --- trunk/src_plugins/export_png/png_photo2.c (revision 36998) +++ trunk/src_plugins/export_png/png_photo2.c (revision 36999) @@ -129,7 +129,7 @@ clip(dest, dest); } -static int png_set_layer_group_photo(rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int png_set_layer_group_photo(rnd_layergrp_id_t group, rnd_design_t *design, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { /* workaround: the outline layer vs. alpha breaks if set twice and the draw code may set it twice (if there's no mech layer), but always in a row */ Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 36998) +++ trunk/src_plugins/export_ps/eps.c (revision 36999) @@ -305,7 +305,7 @@ static int is_paste; static int is_drill; -static int eps_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int eps_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { gds_t tmp_ln; const char *name; Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 36998) +++ trunk/src_plugins/export_ps/ps.c (revision 36999) @@ -37,7 +37,7 @@ const char *ps_cookie = "ps HID"; -static int ps_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform); +static int ps_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform); static pcb_cam_t ps_cam; @@ -504,7 +504,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int ps_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int ps_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { gds_t tmp_ln; const char *name; Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 36998) +++ trunk/src_plugins/export_svg/svg.c (revision 36999) @@ -290,7 +290,7 @@ return rnd_hid_parse_command_line(argc, argv); } -static int svg_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int svg_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { int is_our_mask = 0, is_our_silk = 0; Index: trunk/src_plugins/lib_hid_pcbui/rendering.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/rendering.c (revision 36998) +++ trunk/src_plugins/lib_hid_pcbui/rendering.c (revision 36999) @@ -31,9 +31,9 @@ #include "funchash_core.h" #include "layer.h" -static int (*gui_set_layer_group)(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform); +static int (*gui_set_layer_group)(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform); -static int common_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int common_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { int idx = group; if (idx >= 0 && idx < pcb_max_group(PCB)) { @@ -77,17 +77,17 @@ return 0; } -static int pcbui_set_layer_group(rnd_hid_t *hid, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) +static int pcbui_set_layer_group(rnd_hid_t *hid, rnd_design_t *design, rnd_layergrp_id_t group, const char *purpose, int purpi, rnd_layer_id_t layer, unsigned int flags, int is_empty, rnd_xform_t **xform) { int res; - res = gui_set_layer_group(hid, group, purpose, purpi, layer, flags, is_empty, xform); + res = gui_set_layer_group(hid, design, group, purpose, purpi, layer, flags, is_empty, xform); /* if the HID doesn't want it, don't even bother running the above heuristics */ if (res == 0) return 0; - return common_set_layer_group(hid, group, purpose, purpi, layer, flags, is_empty, xform); + return common_set_layer_group(hid, design, group, purpose, purpi, layer, flags, is_empty, xform); } static void pcb_rendering_gui_init_ev(rnd_design_t *hidlib, void *user_data, int argc, rnd_event_arg_t argv[])