Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 19194) +++ trunk/src/draw.c (revision 19195) @@ -709,12 +709,13 @@ pcb_layer_t *Layer; pcb_cardinal_t n_entries = PCB->LayerGroups.grp[group].len; pcb_layer_id_t *layers = PCB->LayerGroups.grp[group].lid; - unsigned int gflg = pcb_layergrp_flags(PCB, group); + pcb_layergrp_t *grp = pcb_get_layergrp(PCB, group); + unsigned int gflg = grp->ltype; pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, pcb_draw_out.direct, drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, drawn_area); - if (gflg & PCB_LYT_OUTLINE) + if (PCB_LAYER_IS_OUTLINE(gflg, grp->purpi)) rv = 0; for (i = n_entries - 1; i >= 0; i--) { Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 19194) +++ trunk/src/layer.c (revision 19195) @@ -882,9 +882,9 @@ } else { pcb_layer_type_t lyt = src->meta.bound.type; - if ((lyt & PCB_LYT_OUTLINE) && (lyt & PCB_LYT_ANYWHERE)) { - lyt = PCB_LYT_OUTLINE; - pcb_message(PCB_MSG_WARNING, "Ignoring invalid layer flag combination for %s: outline layer must be global\n", src->name); + if ((lyt & PCB_LYT_BOUNDARY) && (lyt & PCB_LYT_ANYWHERE)) { + lyt = PCB_LYT_BOUNDARY; + pcb_message(PCB_MSG_WARNING, "Ignoring invalid layer flag combination for %s: boundary layer must be global\n(fixed up by removing location specifier bits)\n", src->name); } if (pcb_layergrp_list(pcb, lyt, &gid, 1) != 1) return NULL; Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 19194) +++ trunk/src/layer_grp.c (revision 19195) @@ -496,7 +496,7 @@ void pcb_layergrp_fix_old_outline(pcb_board_t *pcb) { pcb_layer_stack_t *LayerGroup = &pcb->LayerGroups; - pcb_layergrp_t *g = pcb_get_grp(LayerGroup, PCB_LYT_ANYWHERE, PCB_LYT_OUTLINE); + pcb_layergrp_t *g = pcb_get_grp(LayerGroup, PCB_LYT_ANYWHERE, PCB_LYT_BOUNDARY); if ((g != NULL) && (g[1].ltype & PCB_LYT_SUBSTRATE)) { pcb_layergrp_id_t gid = g - LayerGroup->grp + 1; pcb_layergrp_del(pcb, gid, 0); @@ -505,10 +505,11 @@ void pcb_layergrp_fix_turn_to_outline(pcb_layergrp_t *g) { - g->ltype |= PCB_LYT_OUTLINE; + g->ltype |= PCB_LYT_BOUNDARY; g->ltype &= ~PCB_LYT_COPPER; free(g->name); g->name = pcb_strdup("global_outline"); + pcb_layergrp_set_purpose__(g, pcb_strdup("uroute")); } @@ -699,7 +700,7 @@ NEWG(g, PCB_LYT_BOTTOM | PCB_LYT_SILK, "bottom_silk", pcb); NEWG(g, PCB_LYT_BOTTOM | PCB_LYT_PASTE, "bottom_paste", pcb); -/* NEWG(g, PCB_LYT_INTERN | PCB_LYT_OUTLINE, "outline");*/ +/* NEWG(g, PCB_LYT_INTERN | PCB_LYT_BOUNDARY, "outline");*/ } void pcb_layer_group_setup_silks(pcb_board_t *pcb) @@ -819,7 +820,7 @@ pcb_layergrp_id_t g; for(g = 0; g < pcb->LayerGroups.len-2; g++) { pcb_layergrp_t *g0 = &pcb->LayerGroups.grp[g], *g1 = &pcb->LayerGroups.grp[g+1]; - if ((g < pcb->LayerGroups.len-3) && (g1->ltype & PCB_LYT_OUTLINE)) g1++; + if ((g < pcb->LayerGroups.len-3) && (g1->ltype & PCB_LYT_BOUNDARY)) g1++; if ((g0->ltype & PCB_LYT_COPPER) && (g1->ltype & PCB_LYT_COPPER)) { pcb_layergrp_t *ng = pcb_layergrp_insert_after(pcb, g); ng->ltype = PCB_LYT_INTERN | PCB_LYT_SUBSTRATE; @@ -859,10 +860,12 @@ continue; } - if (ly->meta.bound.type & PCB_LYT_OUTLINE) { + if (ly->meta.bound.type & PCB_LYT_BOUNDARY) { pcb_layergrp_t *grp = pcb_get_grp_new_misc(pcb); - grp->ltype = PCB_LYT_OUTLINE | PCB_LYT_INTERN; + grp->ltype = PCB_LYT_BOUNDARY; grp->name = pcb_strdup("outline"); + if (ly->meta.bound.purpose != NULL) + pcb_layergrp_set_purpose__(grp, pcb_strdup(ly->meta.bound.purpose)); pcb_layer_create(pcb, pcb_layergrp_id(pcb, grp), ly->name); continue; }