Index: trunk/doc/TODO =================================================================== --- trunk/doc/TODO (revision 8604) +++ trunk/doc/TODO (revision 8605) @@ -16,6 +16,9 @@ - layer rewrite: - gtk layersel bugs: - double click should be ignored and handled as two single clicks [reprot: miloh] + - png export: check mask/paste drawing, make new options? mask on in photo more? + - svg export: check mask/paste drawing, make new options? mask on in photo more? + - lesstif: layer selector should show all layers, probably in the order of the stackup - gtk: "can't remove silk layer" when logical silk is being removed with right-click in layer selector [report: miloh] - check why thin draw crashes Index: trunk/doc/conf/tree/editor.html =================================================================== --- trunk/doc/conf/tree/editor.html (revision 8604) +++ trunk/doc/conf/tree/editor.html (revision 8605) @@ -37,7 +37,6 @@ thin_draw_poly boolean 0 if set, polygons on the screen are drawn as outlines. local_ref boolean 0 use local reference for moves, by setting the mark at the beginning of each move. check_planes boolean 0 when set, only polygons and their clearances are drawn, to see if polygons have isolated regions. - show_mask boolean 0 show the solder mask layer show_paste boolean 0 show the solder paste layer hide_names boolean 0 when set, element names are not drawn. description boolean 0 display element description as element name, instead of value Index: trunk/src/change.c =================================================================== --- trunk/src/change.c (revision 8604) +++ trunk/src/change.c (revision 8605) @@ -424,7 +424,7 @@ ctx.chgsize.absolute = (fixIt) ? Difference : 0; ctx.chgsize.delta = Difference; - if (conf_core.editor.show_mask) + if (pcb_mask_on(PCB)) change = pcb_selected_operation(PCB, &ChangeMaskSizeFunctions, &ctx, pcb_false, types); else change = pcb_selected_operation(PCB, &ChangeClearSizeFunctions, &ctx, pcb_false, types); @@ -879,7 +879,7 @@ ctx.chgsize.absolute = (fixIt) ? Difference : 0; ctx.chgsize.delta = Difference; - if (conf_core.editor.show_mask) + if (pcb_mask_on(PCB)) change = (pcb_object_operation(&ChangeMaskSizeFunctions, &ctx, Type, Ptr1, Ptr2, Ptr3) != NULL); else change = (pcb_object_operation(&ChangeClearSizeFunctions, &ctx, Type, Ptr1, Ptr2, Ptr3) != NULL); Index: trunk/src/conf_core.h =================================================================== --- trunk/src/conf_core.h (revision 8604) +++ trunk/src/conf_core.h (revision 8605) @@ -50,7 +50,6 @@ CFT_BOOLEAN thin_draw_poly; /* if set, polygons on the screen are drawn as outlines. */ CFT_BOOLEAN local_ref; /* use local reference for moves, by setting the mark at the beginning of each move. */ CFT_BOOLEAN check_planes; /* when set, only polygons and their clearances are drawn, to see if polygons have isolated regions. */ - CFT_BOOLEAN show_mask; /* show the solder mask layer */ CFT_BOOLEAN show_paste; /* show the solder paste layer */ CFT_BOOLEAN hide_names; /* when set, element names are not drawn. */ CFT_BOOLEAN description; /* display element description as element name, instead of value */ Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 8604) +++ trunk/src/gui_act.c (revision 8605) @@ -408,11 +408,6 @@ pcb_redraw(); break; - case F_ToggleMask: - conf_toggle_editor(show_mask); - pcb_redraw(); - break; - case F_TogglePaste: conf_toggle_editor(show_paste); pcb_redraw(); Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 8604) +++ trunk/src/layer_grp.c (revision 8605) @@ -650,7 +650,7 @@ return pcb_layergrp_get_cached(PCB, &cache, PCB_LYT_TOP, PCB_LYT_SILK); } -/* Note: this function is in this file mainly to access the static inlines */ +/* Note: these function is in this file mainly to access the static inlines */ int pcb_silk_on(pcb_board_t *pcb) { static pcb_layer_id_t ts = -1, bs = -1; @@ -663,3 +663,15 @@ return 0; } +int pcb_mask_on(pcb_board_t *pcb) +{ + static pcb_layer_id_t tm = -1, bm = -1; + pcb_layergrp_get_cached(pcb, &tm, PCB_LYT_TOP, PCB_LYT_MASK); + if ((tm >= 0) && (pcb->LayerGroups.grp[tm].vis)) + return 1; + pcb_layergrp_get_cached(pcb, &bm, PCB_LYT_BOTTOM, PCB_LYT_MASK); + if ((bm >= 0) && (pcb->LayerGroups.grp[bm].vis)) + return 1; + return 0; +} + Index: trunk/src/layer_grp.h =================================================================== --- trunk/src/layer_grp.h (revision 8604) +++ trunk/src/layer_grp.h (revision 8605) @@ -155,7 +155,7 @@ pcb_layergrp_id_t pcb_layergrp_get_bottom_silk(); pcb_layergrp_id_t pcb_layergrp_get_top_silk(); -/* return whether any silk layer group is visible */ +/* return whether any silk or mask layer group is visible */ int pcb_silk_on(pcb_board_t *pcb); - +int pcb_mask_on(pcb_board_t *pcb); #endif Index: trunk/src/layer_vis.c =================================================================== --- trunk/src/layer_vis.c (revision 8604) +++ trunk/src/layer_vis.c (revision 8605) @@ -100,8 +100,6 @@ /* special case: some layer groups are controlled by a config setting */ flg = pcb_layer_flags(PCB, Layer); - if (flg & PCB_LYT_MASK) - conf_set_editor(show_mask, On); if (flg & PCB_LYT_PASTE) conf_set_editor(show_paste, On); @@ -242,15 +240,8 @@ in = 0; } -void layer_vis_sync(void) -{ - conf_native_t *n_mask = conf_get_field("editor/show_mask"); - layer_vis_chg_mask(n_mask); -} - static void layer_vis_sync_ev(void *user_data, int argc, pcb_event_arg_t argv[]) { - layer_vis_sync(); } static void layer_vis_grp_defaults(void *user_data, int argc, pcb_event_arg_t argv[]) @@ -291,9 +282,7 @@ conf_hid_set_cb(n_mask, layer_vis_conf_id, &cbs_mask); } - pcb_event_bind(PCB_EVENT_BOARD_CHANGED, layer_vis_sync_ev, NULL, layer_vis_cookie); pcb_event_bind(PCB_EVENT_BOARD_CHANGED, layer_vis_grp_defaults, NULL, layer_vis_cookie); - pcb_event_bind(PCB_EVENT_LAYERS_CHANGED, layer_vis_sync_ev, NULL, layer_vis_cookie); } void layer_vis_uninit(void) Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 8604) +++ trunk/src_plugins/export_png/png.c (revision 8605) @@ -458,7 +458,6 @@ conf_force_set_bool(conf_core.editor.thin_draw_poly, 0); /* conf_force_set_bool(conf_core.editor.check_planes, 0);*/ conf_force_set_bool(conf_core.editor.show_solder_side, 0); - conf_force_set_bool(conf_core.editor.show_mask, 0); qsort(pcb_layer_stack, pcb_max_layer, sizeof(pcb_layer_stack[0]), layer_sort); @@ -471,7 +470,6 @@ assert(solder_layer >= 0); assert(comp_layer >= 0); - conf_force_set_bool(conf_core.editor.show_mask, 1); photo_has_inners = 0; if (comp_layer < solder_layer) for (i = comp_layer; i <= solder_layer; i++) { @@ -1041,7 +1039,7 @@ } if ((flags & PCB_LYT_ANYTHING) == PCB_LYT_MASK) - return conf_core.editor.show_mask && PCB_LAYERFLG_ON_VISIBLE_SIDE(flags); + return PCB_LAYERFLG_ON_VISIBLE_SIDE(flags); } else { if (is_mask) Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 8604) +++ trunk/src_plugins/export_svg/svg.c (revision 8605) @@ -211,11 +211,9 @@ conf_force_set_bool(conf_core.editor.thin_draw_poly, 0); /* conf_force_set_bool(conf_core.editor.check_planes, 0);*/ conf_force_set_bool(conf_core.editor.show_solder_side, 0); - conf_force_set_bool(conf_core.editor.show_mask, 0); if (options[HA_photo_mode].int_value) { photo_mode = 1; - conf_force_set_bool(conf_core.editor.show_mask, 1); } else photo_mode = 0; Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 8604) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 8605) @@ -107,7 +107,7 @@ switch (flags & PCB_LYT_ANYTHING) { case PCB_LYT_MASK: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags) /*&& !pinout */ ) - return conf_core.editor.show_mask; + return pcb_mask_on(PCB); return 0; case PCB_LYT_PASTE: /* Never draw the paste layer */ if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags)) Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 8604) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 8605) @@ -161,7 +161,7 @@ switch (flags & PCB_LYT_ANYTHING) { case PCB_LYT_MASK: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags)) - return conf_core.editor.show_mask; + return pcb_mask_on(PCB); return 0; case PCB_LYT_SILK: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags)) Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 8604) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 8605) @@ -145,7 +145,7 @@ switch (flags & PCB_LYT_ANYTHING) { case PCB_LYT_MASK: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags) /*&& !pinout */ ) - return conf_core.editor.show_mask; + return pcb_mask_on(PCB); return 0; case PCB_LYT_PASTE: /* Never draw the paste layer */ return 0; Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 8604) +++ trunk/src_plugins/hid_lesstif/main.c (revision 8605) @@ -2758,7 +2758,7 @@ switch (flags & PCB_LYT_ANYTHING) { case PCB_LYT_MASK: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags) && !pinout) - return conf_core.editor.show_mask; + return pcb_mask_on(PCB); return 0; case PCB_LYT_PASTE: if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags) && !pinout) Index: trunk/src_plugins/hid_lesstif/menu.c =================================================================== --- trunk/src_plugins/hid_lesstif/menu.c (revision 8604) +++ trunk/src_plugins/hid_lesstif/menu.c (revision 8605) @@ -140,7 +140,7 @@ set = PCB->InvisibleObjectsOn; break; case LB_MASK: - set = conf_core.editor.show_mask; + set = pcb_mask_on(PCB); break; case LB_PASTE: set = conf_core.editor.show_paste; @@ -247,8 +247,9 @@ set = PCB->InvisibleObjectsOn = !PCB->InvisibleObjectsOn; break; case LB_MASK: - conf_toggle_editor(show_mask); - set = conf_core.editor.show_mask; +#warning layersel TODO +/* conf_toggle_editor(show_mask);*/ + set = pcb_mask_on(PCB); break; case LB_PASTE: conf_toggle_editor(show_paste); @@ -436,8 +437,10 @@ XtAddCallback(btn, XmNvalueChangedCallback, (XtCallbackProc) layer_button_callback, (XtPointer) (size_t) i); lb->w[i] = btn; - if (i == LB_MASK) - note_widget_flag(btn, XmNset, "editor/show_mask"); + if (i == LB_MASK) { +#warning layersel TODO +/* note_widget_flag(btn, XmNset, "editor/show_mask");*/ + } else if (i == LB_PASTE) note_widget_flag(btn, XmNset, "editor/show_paste"); } Index: trunk/src_plugins/io_pcb/file.c =================================================================== --- trunk/src_plugins/io_pcb/file.c (revision 8604) +++ trunk/src_plugins/io_pcb/file.c (revision 8605) @@ -275,7 +275,6 @@ conf_update_pcb_flag(&pcb_flags, "editor/check_planes",PCB_CHECKPLANESFLAG); conf_update_pcb_flag(&pcb_flags, "editor/description", PCB_DESCRIPTIONFLAG); conf_update_pcb_flag(&pcb_flags, "editor/name_on_pcb", PCB_NAMEONPCBFLAG); - conf_update_pcb_flag(&pcb_flags, "editor/show_mask", PCB_SHOWMASKFLAG); fprintf(FP, "\n# To read pcb files, the pcb version (or the git source date) must be >= the file version\n"); fprintf(FP, "FileVersion[%i]\n", PCBFileVersionNeeded()); Index: trunk/src_plugins/io_pcb/parse_l.c =================================================================== --- trunk/src_plugins/io_pcb/parse_l.c (revision 8604) +++ trunk/src_plugins/io_pcb/parse_l.c (revision 8605) @@ -2546,7 +2546,6 @@ CONF_SET(settings_dest, "editor/check_planes", -1, CONF_BOOL_FLAG(PCB_CHECKPLANESFLAG, yy_pcb_flags), POL_OVERWRITE); CONF_SET(settings_dest, "editor/description", -1, CONF_BOOL_FLAG(PCB_DESCRIPTIONFLAG, yy_pcb_flags), POL_OVERWRITE); CONF_SET(settings_dest, "editor/name_on_pcb", -1, CONF_BOOL_FLAG(PCB_NAMEONPCBFLAG, yy_pcb_flags), POL_OVERWRITE); - CONF_SET(settings_dest, "editor/show_mask", -1, CONF_BOOL_FLAG(PCB_SHOWMASKFLAG, yy_pcb_flags), POL_OVERWRITE); /* don't save this because it is saved manually as PCB::grid::unit */ CONF_NO_ATTRIB("editor/grid_unit"); Index: trunk/src_plugins/io_pcb/parse_l.l =================================================================== --- trunk/src_plugins/io_pcb/parse_l.l (revision 8604) +++ trunk/src_plugins/io_pcb/parse_l.l (revision 8605) @@ -405,7 +405,6 @@ CONF_SET(settings_dest, "editor/check_planes", -1, CONF_BOOL_FLAG(PCB_CHECKPLANESFLAG, yy_pcb_flags), POL_OVERWRITE); CONF_SET(settings_dest, "editor/description", -1, CONF_BOOL_FLAG(PCB_DESCRIPTIONFLAG, yy_pcb_flags), POL_OVERWRITE); CONF_SET(settings_dest, "editor/name_on_pcb", -1, CONF_BOOL_FLAG(PCB_NAMEONPCBFLAG, yy_pcb_flags), POL_OVERWRITE); - CONF_SET(settings_dest, "editor/show_mask", -1, CONF_BOOL_FLAG(PCB_SHOWMASKFLAG, yy_pcb_flags), POL_OVERWRITE); /* don't save this because it is saved manually as PCB::grid::unit */ CONF_NO_ATTRIB("editor/grid_unit");