17839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger/*
27839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Copyright 2012 Google Inc.
37839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger *
47839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be
57839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * found in the LICENSE file.
67839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger */
77839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkPathOpsBounds.h"
87839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkPathOpsCubic.h"
97839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkPathOpsLine.h"
107839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkPathOpsQuad.h"
117839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
127839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergervoid SkPathOpsBounds::setCubicBounds(const SkPoint a[4]) {
137839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SkDCubic cubic;
147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    cubic.set(a);
157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SkDRect dRect;
167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    dRect.setBounds(cubic);
177839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    set(SkDoubleToScalar(dRect.fLeft), SkDoubleToScalar(dRect.fTop),
187839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            SkDoubleToScalar(dRect.fRight), SkDoubleToScalar(dRect.fBottom));
197839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger}
207839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
217839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergervoid SkPathOpsBounds::setLineBounds(const SkPoint a[2]) {
227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    setPointBounds(a[0]);
237839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    add(a[1]);
247839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger}
257839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
267839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergervoid SkPathOpsBounds::setQuadBounds(const SkPoint a[3]) {
277839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SkDQuad quad;
287839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    quad.set(a);
297839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SkDRect dRect;
307839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    dRect.setBounds(quad);
317839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    set(SkDoubleToScalar(dRect.fLeft), SkDoubleToScalar(dRect.fTop),
327839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            SkDoubleToScalar(dRect.fRight), SkDoubleToScalar(dRect.fBottom));
337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger}
347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergervoid (SkPathOpsBounds::*SetCurveBounds[])(const SkPoint[]) = {
367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    NULL,
377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    &SkPathOpsBounds::setLineBounds,
387839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    &SkPathOpsBounds::setQuadBounds,
397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    &SkPathOpsBounds::setCubicBounds
407839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger};
41