mirror of
https://github.com/RTimothyEdwards/magic.git
synced 2026-10-06 09:53:00 +02:00
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:
@@ -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 */
|
||||
/* to the destination if this region was found to be interacting with */
|
||||
/* op->co_paintMask (op->co_cifMask) */
|
||||
|
||||
@@ -110,6 +110,7 @@ cifTechFreeStyle(void)
|
||||
case CIFOP_BBOX:
|
||||
case CIFOP_MAXRECT:
|
||||
case CIFOP_BOUNDARY:
|
||||
case CIFOP_INTERACT:
|
||||
/* These options use co_client to hold a single */
|
||||
/* integer value, so it is not allocated. */
|
||||
break;
|
||||
@@ -1096,6 +1097,11 @@ CIFTechLine(
|
||||
newOp->co_opcode = CIFOP_BRIDGELIM;
|
||||
else if (strcmp(argv[0], "interact") == 0)
|
||||
newOp->co_opcode = CIFOP_INTERACT;
|
||||
else if (strcmp(argv[0], "not-interact") == 0)
|
||||
{
|
||||
newOp->co_opcode = CIFOP_INTERACT;
|
||||
newOp->co_client = (ClientData)1;
|
||||
}
|
||||
else
|
||||
{
|
||||
TechError("Unknown statement \"%s\".\n", argv[0]);
|
||||
|
||||
Reference in New Issue
Block a user