Index: src_plugins/io_pads/delay_create.c =================================================================== --- src_plugins/io_pads/delay_create.c (revision 34600) +++ src_plugins/io_pads/delay_create.c (revision 34601) @@ -658,7 +658,7 @@ static void proto_layer_lookup(pcb_dlcr_t *dlcr, pcb_pstk_shape_t *shp) { - int level = shp->layer_mask, std_lookup = 1; + int level = shp->dlcr_psh_layer_id, std_lookup = 1; if (dlcr->proto_layer_lookup != NULL) std_lookup = dlcr->proto_layer_lookup(dlcr, shp); Index: src_plugins/io_pads/delay_create.h =================================================================== --- src_plugins/io_pads/delay_create.h (revision 34600) +++ src_plugins/io_pads/delay_create.h (revision 34601) @@ -9,6 +9,11 @@ #include "obj_common.h" #include "obj_subc.h" +/* When creating padstacks save integer layer ID in padstack shp->dlcr_psh_layer_id */ +#define dlcr_psh_layer_id layer_mask + +#define PCB_DLCR_INVALID_LAYER_ID -32768 + typedef struct { char *name; long id; @@ -29,7 +34,6 @@ } pcb_dlcr_layer_t; -#define PCB_DLCR_INVALID_LAYER_ID -32768 typedef enum { DLCR_OBJ, @@ -95,7 +99,7 @@ struct pcb_dlcr_s { /* caller provided config/callbacks */ - int (*proto_layer_lookup)(pcb_dlcr_t *dlcr, pcb_pstk_shape_t *shp); /* optional: set shp's layer on special cases and return 0; return 1 for executing the standard layer lookup; required only if there are layer ID special cases, e.g. for -1 */ + int (*proto_layer_lookup)(pcb_dlcr_t *dlcr, pcb_pstk_shape_t *shp); /* optional: set shp's layer on special cases and return 0; return 1 for executing the standard layer lookup; required only if there are layer ID special cases, e.g. for -1; layer id is in shp->dlcr_psh_layer_id */ /* layers */ htsp_t name2layer; Index: src_plugins/io_pads/read.c =================================================================== --- src_plugins/io_pads/read.c (revision 34600) +++ src_plugins/io_pads/read.c (revision 34601) @@ -301,7 +301,7 @@ static int pads_proto_layer_lookup(pcb_dlcr_t *dlcr, pcb_pstk_shape_t *shp) { - int level = shp->layer_mask; + int level = shp->dlcr_psh_layer_id; switch(level) { /* set layer type on PADS-specific cases */ case -2: shp->layer_mask = PCB_LYT_TOP | PCB_LYT_COPPER; break; case -1: shp->layer_mask = PCB_LYT_INTERN | PCB_LYT_COPPER; break; Index: src_plugins/io_pads/read_high.c =================================================================== --- src_plugins/io_pads/read_high.c (revision 34600) +++ src_plugins/io_pads/read_high.c (revision 34601) @@ -666,8 +666,7 @@ PADS_ERROR((RND_MSG_ERROR, "failed to understand padstack shape '%s'; created dummy small circle\n", shape)); } -TODO("pads-specific code in delay draw!!; see also: TODO#71"); - shp->layer_mask = level; /* ugly hack: save the layer id for now */ + shp->dlcr_psh_layer_id = level; /* ugly hack: save the layer id for now */ } pcb_pstk_proto_update(proto);