Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 18030) +++ trunk/src/layer.c (revision 18031) @@ -444,6 +444,21 @@ return pcb_layer_rename_(&data->Layer[layer], pcb_strdup(lname)); } +int pcb_layer_recolor_(pcb_layer_t *Layer, char *color) +{ + if (Layer->is_bound) + return -1; + free(Layer->meta.real.color); + Layer->meta.real.color = color; + pcb_event(PCB_EVENT_LAYERS_CHANGED, NULL); + return 0; +} + +int pcb_layer_recolor(pcb_data_t *data, pcb_layer_id_t layer, const char *color) +{ + return pcb_layer_rename_(&data->Layer[layer], pcb_strdup(color)); +} + #undef APPEND static int is_last_top_copper_layer(pcb_board_t *pcb, int layer) Index: trunk/src/layer.h =================================================================== --- trunk/src/layer.h (revision 18030) +++ trunk/src/layer.h (revision 18031) @@ -252,11 +252,13 @@ /* Return the default color for a new layer from the config */ const char *pcb_layer_default_color(int idx, pcb_layer_type_t lyt); -/* Rename an existing layer by idx */ +/* Rename/recolor an existing layer by idx */ int pcb_layer_rename(pcb_data_t *data, pcb_layer_id_t layer, const char *lname); +int pcb_layer_recolor(pcb_data_t *data, pcb_layer_id_t layer, const char *lcolor); -/* changes the name of a layer; memory has to be already allocated */ +/* changes the name/color of a layer; string has to be allocated by the caller (pcb_strdup) */ int pcb_layer_rename_(pcb_layer_t *Layer, char *Name); +int pcb_layer_recolor_(pcb_layer_t *Layer, char *color); /* index is 0..PCB_MAX_LAYER-1. If old_index is -1, a new layer is