1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "modules/sksg/include/SkSGPath.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 11cb93a386Sopenharmony_ci#include "include/core/SkPaint.h" 12cb93a386Sopenharmony_ci#include "src/core/SkRectPriv.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_cinamespace sksg { 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ciPath::Path(const SkPath& path) : fPath(path) {} 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_civoid Path::onClip(SkCanvas* canvas, bool antiAlias) const { 19cb93a386Sopenharmony_ci canvas->clipPath(fPath, SkClipOp::kIntersect, antiAlias); 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_civoid Path::onDraw(SkCanvas* canvas, const SkPaint& paint) const { 23cb93a386Sopenharmony_ci canvas->drawPath(fPath, paint); 24cb93a386Sopenharmony_ci} 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_cibool Path::onContains(const SkPoint& p) const { 27cb93a386Sopenharmony_ci return fPath.contains(p.x(), p.y()); 28cb93a386Sopenharmony_ci} 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ciSkRect Path::onRevalidate(InvalidationController*, const SkMatrix&) { 31cb93a386Sopenharmony_ci SkASSERT(this->hasInval()); 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci const auto ft = fPath.getFillType(); 34cb93a386Sopenharmony_ci return (ft == SkPathFillType::kWinding || ft == SkPathFillType::kEvenOdd) 35cb93a386Sopenharmony_ci // "Containing" fills have finite bounds. 36cb93a386Sopenharmony_ci ? fPath.computeTightBounds() 37cb93a386Sopenharmony_ci // Inverse fills are "infinite". 38cb93a386Sopenharmony_ci : SkRectPriv::MakeLargeS32(); 39cb93a386Sopenharmony_ci} 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ciSkPath Path::onAsPath() const { 42cb93a386Sopenharmony_ci return fPath; 43cb93a386Sopenharmony_ci} 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci} // namespace sksg 46