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 ULabel::contains (PointObj& po, Graphic* gs) { PointObj pt (&po); PSFont* f = gs->GetFont(); invTransform(pt._x, pt._y, gs); BoxObj b (0, 0, f->Width(_string), f->Height()); return b.Contains(pt); }
boolean UStencil::contains (PointObj& po, Graphic* gs) { Bitmap* bitmap = (_mask == nil) ? _image : _mask; PointObj pt (&po); invTransform(pt._x, pt._y, gs); BoxObj b (0, 0, bitmap->Width(), bitmap->Height()); return b.Contains(pt); }
boolean MultiLine::f_contains (PointObj& po, Graphic* gs) { BoxObj b; PointObj pt (&po); getBox(b, gs); if (b.Contains(pt)) { FillPolygonObj fp (x(), y(), count()); invTransform(pt._x, pt._y, gs); return fp.Contains(pt); } return false; }
boolean MultiLine::s_contains (PointObj& po, Graphic* gs) { MultiLineObj &ml = *_pts; PointObj pt (&po); BoxObj b; getBox(b, gs); if (b.Contains(po)) { invTransform(pt._x, pt._y, gs); return ml.Contains(pt); } return false; }
bool OpenBSpline::f_contains (PointObj& po, Graphic* gs) { PointObj pt (&po); BoxObj b; getBox(b, gs); if (b.Contains(pt)) { invTransform(pt._x, pt._y, gs); FillPolygonObj fp; fp.ClosedSplineToPolygon(_x, _y, _count); return fp.Contains(pt); } return false; }
bool OpenBSpline::s_contains (PointObj& po, Graphic* gs) { PointObj pt (&po); BoxObj b; getBox(b, gs); if (b.Contains(pt)) { invTransform(pt._x, pt._y, gs); MultiLineObj ml; ml.SplineToMultiLine(_x, _y, _count); return ml.Contains(pt); } return false; }
boolean MultiLineObj::Contains (PointObj& p) { register int i; BoxObj b; GetBox(b); if (b.Contains(p)) { for (i = 1; i < _count; ++i) { LineObj l (_x[i-1], _y[i-1], _x[i], _y[i]); if (l.Contains(p)) { return true; } } } 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; }
bool SFH_ClosedBSpline::intersects (BoxObj& userb, Graphic* gs) { PointObj po; const Coord *x, *y; int count = GetOriginal(x, y); Transformer* t = gs->GetTransformer(); for (int i = 0; i < count; i++) { po._x = x[i]; po._y = y[i]; if (t != nil) { t->Transform(po._x, po._y); } if (userb.Contains(po)) { return true; } } return SF_ClosedBSpline::intersects(userb, gs); }
boolean Graphic::contains (PointObj& po, Graphic* gs) { BoxObj b; getBox(b, gs); return b.Contains(po); }
bool RasterRect::contains (PointObj& po, Graphic* gs) { PointObj pt (&po); invTransform(pt._x, pt._y, gs); BoxObj b (0, 0, _raster->Width(), _raster->Height()); return b.Contains(pt); }
boolean Point::intersects (BoxObj& b, Graphic* gs) { PointObj pt (_x, _y); transform(pt._x, pt._y, gs); return b.Contains(pt); }