Added a new CIF operator "not-interact" which is complementary to
"interact", because it was trivially easy to implement and saves processing vs. doing the same thing with two templayers and an "and-not" operator.
This commit is contained in:
parent
21b810b375
commit
a5653c8fca
|
|
@ -4752,6 +4752,13 @@ cifInteractingRegions(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* op->co_client is an invert bit indicating the rule is "not-interact",
|
||||||
|
* so invert the sense of "interacts". Then the non-interacting regions
|
||||||
|
* will be kept and the interacting regions will be discarded.
|
||||||
|
*/
|
||||||
|
if (op->co_client == (ClientData)1)
|
||||||
|
interacts = (interacts) ? FALSE : TRUE;
|
||||||
|
|
||||||
/* Clear the tiles that were processed in this set, first copying them */
|
/* Clear the tiles that were processed in this set, first copying them */
|
||||||
/* to the destination if this region was found to be interacting with */
|
/* to the destination if this region was found to be interacting with */
|
||||||
/* op->co_paintMask (op->co_cifMask) */
|
/* op->co_paintMask (op->co_cifMask) */
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ cifTechFreeStyle(void)
|
||||||
case CIFOP_BBOX:
|
case CIFOP_BBOX:
|
||||||
case CIFOP_MAXRECT:
|
case CIFOP_MAXRECT:
|
||||||
case CIFOP_BOUNDARY:
|
case CIFOP_BOUNDARY:
|
||||||
|
case CIFOP_INTERACT:
|
||||||
/* These options use co_client to hold a single */
|
/* These options use co_client to hold a single */
|
||||||
/* integer value, so it is not allocated. */
|
/* integer value, so it is not allocated. */
|
||||||
break;
|
break;
|
||||||
|
|
@ -1096,6 +1097,11 @@ CIFTechLine(
|
||||||
newOp->co_opcode = CIFOP_BRIDGELIM;
|
newOp->co_opcode = CIFOP_BRIDGELIM;
|
||||||
else if (strcmp(argv[0], "interact") == 0)
|
else if (strcmp(argv[0], "interact") == 0)
|
||||||
newOp->co_opcode = CIFOP_INTERACT;
|
newOp->co_opcode = CIFOP_INTERACT;
|
||||||
|
else if (strcmp(argv[0], "not-interact") == 0)
|
||||||
|
{
|
||||||
|
newOp->co_opcode = CIFOP_INTERACT;
|
||||||
|
newOp->co_client = (ClientData)1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue