Corrected an error with the bloat-all CIF operator in which

bloat-all would fail to operate from the top layer of a contact
type due to the use of DBplane(type) instead of counting all
planes of the contact.
This commit is contained in:
Tim Edwards 2024-12-16 21:52:11 -05:00
parent 5ebbed4c12
commit 89b6f4f92b
4 changed files with 32 additions and 5 deletions

View File

@ -1 +1 @@
8.3.506
8.3.507

View File

@ -1326,10 +1326,18 @@ cifBloatAllFunc(tile, bls)
area.r_ytop /= locScale;
}
else
{
if (DBIsContact(type))
{
pmask = (bloats->bl_plane < 0) ? 0 :
CoincidentPlanes(connect, DBLayerPlanes(type));
}
else
{
int pNum = DBPlane(type);
pmask = (bloats->bl_plane < 0) ? 0 :
CoincidentPlanes(connect, PlaneNumToMaskBit(pNum));
}
if (pmask == 0) TiToRect(tile, &area);
if (bloats->bl_plane < 0)
{

View File

@ -895,6 +895,24 @@ DBIsContact(type)
return FALSE;
}
/*
* ----------------------------------------------------------------------------
*
* DBLayerPlanes --
*
* Like LayerPlaneMask(), except as a subroutine, not a macro. For export
* to other routines.
*
* ----------------------------------------------------------------------------
*/
PlaneMask
DBLayerPlanes(type)
TileType type;
{
return LayerPlaneMask(type);
}
/*
* ----------------------------------------------------------------------------
*

View File

@ -829,7 +829,6 @@ extern void DBTechInitContact();
extern void DBTechFinalContact();
extern void DBTechFinalConnect();
extern void DBTechInitConnect();
extern bool DBIsContact();
/* Cell symbol table */
extern void DBCellInit();
@ -899,6 +898,8 @@ extern Plane *DBCellGenerateSimpleSubstrate();
extern TileType DBPlaneToResidue();
extern TileType DBTechFindStacking();
extern bool DBIsContact();
extern PlaneMask DBLayerPlanes();
extern TileTypeBitMask *DBResidueMask();
extern void DBFullResidueMask();