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).
This commit is contained in:
Tim Edwards 2018-08-20 22:43:34 -04:00
parent 47e1713142
commit e073394430
2 changed files with 19 additions and 4 deletions

View File

@ -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;

View File

@ -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);
}