diff options
Diffstat (limited to 'src/pathops/SkPathOpsBounds.cpp')
-rw-r--r-- | src/pathops/SkPathOpsBounds.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/pathops/SkPathOpsBounds.cpp b/src/pathops/SkPathOpsBounds.cpp new file mode 100644 index 0000000000..106cd30076 --- /dev/null +++ b/src/pathops/SkPathOpsBounds.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "SkPathOpsBounds.h" +#include "SkPathOpsCubic.h" +#include "SkPathOpsLine.h" +#include "SkPathOpsQuad.h" + +void SkPathOpsBounds::setCubicBounds(const SkPoint a[4]) { + SkDCubic cubic; + cubic.set(a); + SkDRect dRect; + dRect.setBounds(cubic); + set(SkDoubleToScalar(dRect.fLeft), SkDoubleToScalar(dRect.fTop), + SkDoubleToScalar(dRect.fRight), SkDoubleToScalar(dRect.fBottom)); +} + +void SkPathOpsBounds::setLineBounds(const SkPoint a[2]) { + setPointBounds(a[0]); + add(a[1]); +} + +void SkPathOpsBounds::setQuadBounds(const SkPoint a[3]) { + SkDQuad quad; + quad.set(a); + SkDRect dRect; + dRect.setBounds(quad); + set(SkDoubleToScalar(dRect.fLeft), SkDoubleToScalar(dRect.fTop), + SkDoubleToScalar(dRect.fRight), SkDoubleToScalar(dRect.fBottom)); +} + +void (SkPathOpsBounds::*SetCurveBounds[])(const SkPoint[]) = { + NULL, + &SkPathOpsBounds::setLineBounds, + &SkPathOpsBounds::setQuadBounds, + &SkPathOpsBounds::setCubicBounds +}; |