13eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org/* 23eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org * Copyright 2014 Google Inc. 33eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org * 43eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 53eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org * found in the LICENSE file. 63eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org */ 73eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org 83eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org#include "GrOvalEffect.h" 9eb2a6761654307e8aeeeaabdd63c6bf9ab0411e9joshualitt 1083d118550f7237d25e7e096cc968dbb9a06678a3Ethan Nicholas#include "GrCircleEffect.h" 11420f1565e9783b25d6ceb7ada21ca7c7c57d9e4cEthan Nicholas#include "GrEllipseEffect.h" 12eb2a6761654307e8aeeeaabdd63c6bf9ab0411e9joshualitt#include "SkRect.h" 133eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org 141447177005fcbac83acd501766a46c751a49ae73Brian Salomonstd::unique_ptr<GrFragmentProcessor> GrOvalEffect::Make(GrClipEdgeType edgeType, const SkRect& oval, 151447177005fcbac83acd501766a46c751a49ae73Brian Salomon const GrShaderCaps& caps) { 161706f842086c089ebc496dfc7f45c959e5eda01eEthan Nicholas if (GrClipEdgeType::kHairlineAA == edgeType) { 1796fcdcc219d2a0d3579719b84b28bede76efba64halcanary return nullptr; 183eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org } 193eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org SkScalar w = oval.width(); 203eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org SkScalar h = oval.height(); 213eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org if (SkScalarNearlyEqual(w, h)) { 223eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org w /= 2; 23aae47c878b83ab6d9742d92a6fa47e762f6b9204Ethan Nicholas return GrCircleEffect::Make(edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + w), 241706f842086c089ebc496dfc7f45c959e5eda01eEthan Nicholas w); 25d0a502968c3fc7f03afbe07211e36d3eeaa83694commit-bot@chromium.org } else { 26d0a502968c3fc7f03afbe07211e36d3eeaa83694commit-bot@chromium.org w /= 2; 27d0a502968c3fc7f03afbe07211e36d3eeaa83694commit-bot@chromium.org h /= 2; 28aae47c878b83ab6d9742d92a6fa47e762f6b9204Ethan Nicholas return GrEllipseEffect::Make(edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + h), 291447177005fcbac83acd501766a46c751a49ae73Brian Salomon SkPoint::Make(w, h), caps); 303eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org } 313eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org 3296fcdcc219d2a0d3579719b84b28bede76efba64halcanary return nullptr; 333eedb801e35001df4b7e154edf4fd8da942296a0commit-bot@chromium.org} 34