bool Path::strokeContains(const FloatPoint& point, const StrokeData& strokeData) const { SkPaint paint; strokeData.setupPaint(&paint); SkPath strokePath; paint.getFillPath(m_path, &strokePath); return SkPathContainsPoint(strokePath, point, SkPath::kWinding_FillType); }
bool Path::contains(const FloatPoint& point, WindRule rule) const { /// M: fix w3c canvas fail case @{ /* Since android use skia as 2d graphics engine, use skia utils instead. * Fix case list: * 2d.path.isPointInPath.edge.html */ return SkPathContainsPoint(m_path, point, rule == RULE_NONZERO ? SkPath::kWinding_FillType : SkPath::kEvenOdd_FillType); /// @} }
bool Path::strokeContains(StrokeStyleApplier* applier, const FloatPoint& point) const { GraphicsContext* scratch = scratchContext(); scratch->save(); applier->strokeStyle(scratch); SkPaint paint; scratch->setupStrokePaint(&paint); SkPath strokePath; paint.getFillPath(*platformPath(), &strokePath); bool contains = SkPathContainsPoint(&strokePath, point, SkPath::kWinding_FillType); scratch->restore(); return contains; }
bool Path::strokeContains(StrokeStyleApplier* applier, const FloatPoint& point) const { // FIXME(crbug.com/229267): Rewrite this to not require a scratch context. GraphicsContext* scratch = scratchContext(); scratch->save(); ASSERT(applier); applier->strokeStyle(scratch); SkPaint paint; scratch->platformContext()->setupPaintForStroking(&paint, 0, 0); SkPath strokePath; paint.getFillPath(m_path, &strokePath); bool contains = SkPathContainsPoint(&strokePath, point, SkPath::kWinding_FillType); scratch->restore(); return contains; }
bool Path::strokeContains(StrokeStyleApplier* applier, const FloatPoint& point) const { if (isNull()) return false; ASSERT(applier); GraphicsContext* scratch = scratchContext(); scratch->save(); applier->strokeStyle(scratch); SkPaint paint; scratch->platformContext()->setupPaintForStroking(&paint, 0, 0); SkPath strokePath; paint.getFillPath(*platformPath(), &strokePath); bool contains = SkPathContainsPoint(&strokePath, point, SkPath::kWinding_FillType); scratch->restore(); return contains; }
bool Path::contains(const FloatPoint& point, WindRule rule) const { return SkPathContainsPoint(m_path, point, rule == RULE_NONZERO ? SkPath::kWinding_FillType : SkPath::kEvenOdd_FillType); }
bool Path::contains(const FloatPoint& point, WindRule rule) const { return SkPathContainsPoint(m_path, point, static_cast<SkPath::FillType>(rule)); }
bool Path::contains(const FloatPoint& point, WindRule rule) const { // After crbug.com/236559 is fixed, SkPathContainsPoint should take a const path so this will be unnecessary. SkPath* path = const_cast<SkPath*>(&m_path); return SkPathContainsPoint(path, point, rule == RULE_NONZERO ? SkPath::kWinding_FillType : SkPath::kEvenOdd_FillType); }