blob: 06ef8ae38dcdf0fec2484d6a1a1903e62257e823 [file] [log] [blame]
/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "modules/svg/include/SkSVGClipPath.h"
#include "modules/svg/include/SkSVGRenderContext.h"
SkSVGClipPath::SkSVGClipPath() : INHERITED(SkSVGTag::kClipPath) {}
bool SkSVGClipPath::parseAndSetAttribute(const char* n, const char* v) {
return INHERITED::parseAndSetAttribute(n, v) ||
this->setClipPathUnits(
SkSVGAttributeParser::parse<SkSVGObjectBoundingBoxUnits>("clipPathUnits", n, v));
}
SkPath SkSVGClipPath::resolveClip(const SkSVGRenderContext& ctx) const {
auto clip = this->asPath(ctx);
const auto obbt = ctx.transformForCurrentOBB(fClipPathUnits);
const auto m = SkMatrix::Translate(obbt.offset.x, obbt.offset.y)
* SkMatrix::Scale(obbt.scale.x, obbt.scale.y);
clip.transform(m);
return clip;
}