Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 25200) +++ trunk/src/hid.h (revision 25201) @@ -270,7 +270,7 @@ functions. In addition to the copper layer groups, you may select virtual layers. The is_empty argument is a hint - if set, the layer is empty, if zero it may be non-empty. */ - int (*set_layer_group)(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); + int (*set_layer_group)(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); /* Tell the GUI the layer last selected has been finished with. */ void (*end_layer)(void); Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 25200) +++ trunk/src/hid_nogui.c (revision 25201) @@ -81,7 +81,7 @@ CRASH("invalidate_all"); } -static int nogui_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int nogui_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { CRASH("set_layer_group"); return 0; Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 25200) +++ trunk/src/layer.c (revision 25201) @@ -1081,7 +1081,7 @@ pcb_layergrp_id_t grp; pcb_layer_id_t lid = v->new_id; grp = pcb_layer_get_group(pcb, lid); - return pcb_gui->set_layer_group(grp, v->purpose, v->purpi, lid, v->type, is_empty, xform); + return pcb_gui->set_layer_group(&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 */ @@ -1098,7 +1098,7 @@ *xform = NULL; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(-1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty, xform); + return pcb_gui->set_layer_group(&PCB->hidlib, -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 25200) +++ trunk/src/layer_grp.c (revision 25201) @@ -687,7 +687,7 @@ *xform = NULL; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(gid, grp->purpose, grp->purpi, grp->lid[0], grp->ltype, is_empty, xform); + return pcb_gui->set_layer_group(&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_dxf/dxf.c =================================================================== --- trunk/src_plugins/export_dxf/dxf.c (revision 25200) +++ trunk/src_plugins/export_dxf/dxf.c (revision 25201) @@ -347,7 +347,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int dxf_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int dxf_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_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 25200) +++ trunk/src_plugins/export_excellon/excellon.c (revision 25201) @@ -289,7 +289,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int excellon_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int excellon_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { int is_drill; Index: trunk/src_plugins/export_gcode/gcode.c =================================================================== --- trunk/src_plugins/export_gcode/gcode.c (revision 25200) +++ trunk/src_plugins/export_gcode/gcode.c (revision 25201) @@ -554,7 +554,7 @@ /* *** PNG export (slightly modified code from PNG export HID) ************* */ -static int gcode_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int gcode_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 25200) +++ trunk/src_plugins/export_gerber/gerber.c (revision 25201) @@ -670,7 +670,7 @@ -static int gerber_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int gerber_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { int want_outline; char *cp; Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 25200) +++ trunk/src_plugins/export_openems/export_openems.c (revision 25201) @@ -688,7 +688,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int openems_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int openems_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_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 25200) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 25201) @@ -357,7 +357,7 @@ -static int openscad_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int openscad_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_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 25200) +++ trunk/src_plugins/export_png/png.c (revision 25201) @@ -1301,7 +1301,7 @@ return 1; } -static int png_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int png_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { doing_outline = 0; Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 25200) +++ trunk/src_plugins/export_ps/eps.c (revision 25201) @@ -34,7 +34,7 @@ static pcb_hid_attribute_t *eps_get_export_options(int *n); static void eps_do_export(pcb_hid_attr_val_t * options); static int eps_parse_arguments(int *argc, char ***argv); -static int eps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); +static int eps_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); static pcb_hid_gc_t eps_make_gc(void); static void eps_destroy_gc(pcb_hid_gc_t gc); static void eps_set_color(pcb_hid_gc_t gc, const pcb_color_t *name); @@ -383,7 +383,7 @@ static int is_paste; static int is_drill; -static int eps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int eps_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_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 25200) +++ trunk/src_plugins/export_ps/ps.c (revision 25201) @@ -34,7 +34,7 @@ const char *ps_cookie = "ps HID"; -static int ps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); +static int ps_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); static void use_gc(pcb_hid_gc_t gc); typedef struct hid_gc_s { @@ -575,7 +575,7 @@ global.linewidth = -1; /* reset static vars */ - ps_set_layer_group(-1, NULL, -1, -1, 0, -1, NULL); + ps_set_layer_group(&PCB->hidlib, -1, NULL, -1, -1, 0, -1, NULL); use_gc(NULL); global.exps.view.X1 = 0; @@ -598,7 +598,7 @@ global.pagecount = 1; /* Reset 'pagecount' if single file */ global.doing_toc = 0; - ps_set_layer_group(-1, NULL, -1, -1, 0, -1, NULL); /* reset static vars */ + ps_set_layer_group(&PCB->hidlib, -1, NULL, -1, -1, 0, -1, NULL); /* reset static vars */ pcb_hid_expose_all(&ps_hid, &global.exps, NULL); if (the_file) @@ -691,7 +691,7 @@ fprintf(fh, "stroke grestore\n"); } -static int ps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int ps_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { gds_t tmp_ln; static int lastgroup = -1; Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 25200) +++ trunk/src_plugins/export_svg/svg.c (revision 25201) @@ -366,7 +366,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int svg_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int svg_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { int opa, is_our_mask = 0, is_our_silk = 0; Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 25200) +++ trunk/src_plugins/hid_batch/batch.c (revision 25201) @@ -205,7 +205,7 @@ { } -static int batch_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int batch_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { return 0; } Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25200) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25201) @@ -97,7 +97,7 @@ } -static int ghid_gdk_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int ghid_gdk_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { /* draw anything */ return 1; Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25200) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25201) @@ -138,7 +138,7 @@ } #endif -int ghid_gl_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +int ghid_gl_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { render_priv_t *priv = gport->render_priv; @@ -147,7 +147,7 @@ glTranslatef(0.0f, 0.0f, -Z_NEAR); glScalef((pcbhl_conf.editor.view.flip_x ? -1. : 1.) / gport->view.coord_per_px, (pcbhl_conf.editor.view.flip_y ? -1. : 1.) / gport->view.coord_per_px, ((pcbhl_conf.editor.view.flip_x == pcbhl_conf.editor.view.flip_y) ? 1. : -1.) / gport->view.coord_per_px); - glTranslatef(pcbhl_conf.editor.view.flip_x ? gport->view.x0 - PCB->hidlib.size_x : -gport->view.x0, pcbhl_conf.editor.view.flip_y ? gport->view.y0 - PCB->hidlib.size_y : -gport->view.y0, 0); + glTranslatef(pcbhl_conf.editor.view.flip_x ? gport->view.x0 - hidlib->size_x : -gport->view.x0, pcbhl_conf.editor.view.flip_y ? gport->view.y0 - hidlib->size_y : -gport->view.y0, 0); /* Put the renderer into a good state so that any drawing is done in standard mode */ Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 25200) +++ trunk/src_plugins/hid_lesstif/main.c (revision 25201) @@ -2483,7 +2483,7 @@ invalidate_depth++; } -static int lesstif_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int lesstif_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { /* accept anything and draw */ return 1; Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 25200) +++ trunk/src_plugins/hid_remote/remote.c (revision 25201) @@ -134,7 +134,7 @@ proto_send_invalidate_all(hidlib); } -static int remote_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int remote_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { if (flags & PCB_LYT_UI) /* do not draw UI layers yet, we didn't create them */ return 0; Index: trunk/src_plugins/lib_hid_pcbui/rendering.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/rendering.c (revision 25200) +++ trunk/src_plugins/lib_hid_pcbui/rendering.c (revision 25201) @@ -31,9 +31,9 @@ #include "funchash_core.h" #include "layer.h" -static int (*gui_set_layer_group)(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); +static int (*gui_set_layer_group)(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform); -static int common_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int common_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_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(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int pcbui_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { int res; - res = gui_set_layer_group(group, purpose, purpi, layer, flags, is_empty, xform); + res = gui_set_layer_group(hidlib, 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(group, purpose, purpi, layer, flags, is_empty, xform); + return common_set_layer_group(hidlib, group, purpose, purpi, layer, flags, is_empty, xform); } static void pcb_rendering_gui_init_ev(pcb_hidlib_t *hidlib, void *user_data, int argc, pcb_event_arg_t argv[]) Index: trunk/src_plugins/loghid/hid-logger.c =================================================================== --- trunk/src_plugins/loghid/hid-logger.c (revision 25200) +++ trunk/src_plugins/loghid/hid-logger.c (revision 25201) @@ -60,10 +60,10 @@ delegatee_->notify_mark_change(hidlib, changes_complete); } -static int log_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) +static int log_set_layer_group(pcb_hidlib_t *hidlib, pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) { pcb_fprintf(out_, "set_layer(group=%ld, layer=%ld, flags=%lx, empty=%s, xform=%p)\n", group, layer, flags, is_empty ? "true" : "false", xform); - return delegatee_->set_layer_group(group, purpose, purpi, layer, flags, is_empty, xform); + return delegatee_->set_layer_group(hidlib, group, purpose, purpi, layer, flags, is_empty, xform); } static void log_end_layer()