bool Picture::contains (PointObj& po, Graphic* gs) { if (!IsEmpty()) { Iterator i; FullGraphic gstemp; Transformer ttemp; BoxObj b; getBox(b, gs); if (b.Contains(po)) { gstemp.SetTransformer(&ttemp); for (First(i); !Done(i); Next(i)) { Graphic* gr = GetGraphic(i); concatGraphic(gr, gr, gs, &gstemp); if (containsGraphic(gr, po, &gstemp)) { gstemp.SetTransformer(nil); return true; } } gstemp.SetTransformer(nil); /* to avoid deleting ttemp explicitly*/ } } return false; }
boolean BSplineSelection::contains (PointObj& po, Graphic* gs) { BoxObj b; getBox(b, gs); if (b.Contains(po)) { if (containsGraphic(ifillbspline, po, gs)) { return true; } else if (containsGraphic(bspline, po, gs)) { return true; } else if (LeftAcont(lx0, ly0, lx1, ly1, po, gs)) { return true; } else if (RightAcont(rx0, ry0, rx1, ry1, po, gs)) { return true; } } return false; }