diff --git a/VERSION b/VERSION index 2fc65132..0fe10d04 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.84 +8.3.85 diff --git a/cif/CIFhier.c b/cif/CIFhier.c index 4759862c..28dbd72e 100644 --- a/cif/CIFhier.c +++ b/cif/CIFhier.c @@ -421,6 +421,44 @@ cifHierCheckFunc(tile, plane) return 0; } +/* + * ---------------------------------------------------------------------------- + * + * cifHierTempCheckFunc -- + * + * This function is like cifHierCheckFunc() (see above), but is used + * for "templayers", where any parent/child disagreement should be + * considered a non-issue as far as output is concerned. Only the + * actual mask layer will report any problems. + * + * Results: + * Always returns 0 to keep the search alive. + * + * Side effects: + * Error messages may be output. + * + * ---------------------------------------------------------------------------- + */ + +int +cifHierTempCheckFunc(tile, plane) + Tile *tile; /* Tile containing CIF. */ + Plane *plane; /* Plane to check against and modify. */ +{ + Rect area; + + TiToRect(tile, &area); + + if (IsSplit(tile)) + DBNMPaintPlane(plane, TiGetTypeExact(tile), &area, CIFEraseTable, + (PaintUndoInfo *) NULL); + else + DBPaintPlane(plane, &area, CIFEraseTable, (PaintUndoInfo *) NULL); + + CIFTileOps++; + return 0; +} + /* * ---------------------------------------------------------------------------- * @@ -490,9 +528,14 @@ cifCheckAndErase(style) { CIFErrorLayer = i; if (CIFComponentPlanes[i] == NULL) continue; - (void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i], - &TiPlaneRect, &CIFSolidBits, cifHierCheckFunc, - (ClientData) CIFTotalPlanes[i]); + if (CIFCurStyle->cs_layers[i]->cl_flags & CIF_TEMP) + (void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i], + &TiPlaneRect, &CIFSolidBits, cifHierTempCheckFunc, + (ClientData) CIFTotalPlanes[i]); + else + (void) DBSrPaintArea((Tile *) NULL, CIFComponentPlanes[i], + &TiPlaneRect, &CIFSolidBits, cifHierCheckFunc, + (ClientData) CIFTotalPlanes[i]); } }