Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 21194) +++ trunk/src/draw.c (revision 21195) @@ -591,14 +591,24 @@ } } -void pcb_draw_layer(pcb_draw_info_t *info, const pcb_layer_t *Layer) +void pcb_draw_layer(pcb_draw_info_t *info, const pcb_layer_t *Layer_) { unsigned int lflg = 0; int may_have_delayed = 0; pcb_xform_t xform; + char *orig_color, new_color[8]; + pcb_layer_t *Layer = (pcb_layer_t *)Layer_; /* ugly hack until layer color is moved into info */ xform_setup(info, &xform, Layer); +printf("draw layer: %s %p %d\n", Layer->name, info->xform, info->xform != NULL ? info->xform->layer_faded : 0); + if (((info->xform_caller != NULL) && (info->xform_caller->layer_faded)) || ((info->xform != NULL) && (info->xform->layer_faded))) { + orig_color = Layer->meta.real.color; + pcb_lighten_color(orig_color, new_color, 0.5); + printf(" LY COLOR %s -> %s\n", Layer->meta.real.color, new_color); + Layer->meta.real.color = new_color; + } + lflg = pcb_layer_flags_(Layer); if (PCB_LAYERFLG_ON_VISIBLE_SIDE(lflg)) pcb_draw_out.active_padGC = pcb_draw_out.padGC; @@ -644,6 +654,9 @@ info->layer = NULL; info->xform = NULL; + + if (((info->xform_caller != NULL) && (info->xform_caller->layer_faded)) || ((info->xform != NULL) && (info->xform->layer_faded))) + Layer->meta.real.color = orig_color; } void pcb_draw_layer_noxform(pcb_board_t *pcb, const pcb_layer_t *Layer, const pcb_box_t *screen) Index: trunk/src/obj_common.h =================================================================== --- trunk/src/obj_common.h (revision 21194) +++ trunk/src/obj_common.h (revision 21195) @@ -96,7 +96,9 @@ #define PCB_XFORM_MX_IDENT {1,0,0, 0,1,0, 0,0,1} typedef struct pcb_xform_s { /* generic object transformation */ - pcb_coord_t bloat; /* if non-zero, bloat (positive) or shrink (negative) by this value */ + pcb_coord_t bloat; /* if non-zero, bloat (positive) or shrink (negative) by this value */ + + unsigned layer_faded:1; /* draw layer colors faded */ } pcb_xform_t; #define pcb_xform_clear(dst) memset(dst, 0, sizeof(pcb_xform_t))