From e0733944307bd0d8777305d076c1f1c35a6b3334 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Mon, 20 Aug 2018 22:43:34 -0400 Subject: [PATCH] Applied another patch by Iain McNally that restores the obscure function that was available in versions 7.1 and earlier that allows the use of the command "erase errors" to remove DRC error paint (only when the DRC checker is off, of course). --- commands/CmdE.c | 17 ++++++++++++++--- database/DBpaint2.c | 6 +++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/commands/CmdE.c b/commands/CmdE.c index 3e7422db..7be73fe8 100644 --- a/commands/CmdE.c +++ b/commands/CmdE.c @@ -607,7 +607,7 @@ CmdErase(w, cmd) TxCommand *cmd; { Rect editRect, areaReturn; - TileTypeBitMask mask; + TileTypeBitMask mask, errorLayersForErasure, activeLayersForErasure; extern int cmdEraseCellsFunc(); windCheckOnlyWindow(&w, DBWclientID); @@ -643,10 +643,21 @@ CmdErase(w, cmd) if (TTMaskIsZero(&mask)) return; - TTMaskAndMask(&mask, &DBActiveLayerBits); + /* Split the mask into active and error layers. This restores */ + /* functionality lost since magic version 7.1. Modified by BIM */ + /* (Iain McNally) 8/18/2018 */ + + TTMaskAndMask3(&activeLayersForErasure, &mask, &DBActiveLayerBits); + TTMaskClearMask3(&errorLayersForErasure, &mask, &DBAllButSpaceAndDRCBits); /* Erase paint. */ - DBEraseValid(EditCellUse->cu_def, &editRect, &mask, 0); + DBEraseValid(EditCellUse->cu_def, &editRect, &activeLayersForErasure, 0); + + /* Erase error layers if selected. */ + if (!TTMaskIsZero(&errorLayersForErasure)) + { + DBEraseMask(EditCellUse->cu_def, &editRect, &errorLayersForErasure); + } /* Erase labels. */ areaReturn = editRect; diff --git a/database/DBpaint2.c b/database/DBpaint2.c index f4cae492..1254c022 100644 --- a/database/DBpaint2.c +++ b/database/DBpaint2.c @@ -335,7 +335,11 @@ DBEraseMask(cellDef, rect, mask) { TileType t; - for (t = DBNumTypes - 1; t >= TT_SELECTBASE; t--) + /* Corrected to restore erasing of error layers, which is */ + /* functionality lost since magic version 7.1. Modified by */ + /* BIM 8/18/2018 */ + + for (t = DBNumTypes - 1; t >= TT_PAINTBASE; t--) if (TTMaskHasType(mask, t)) DBErase(cellDef, rect, t); }