12103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth/* 22103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * Copyright 2017 Google Inc. 32103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * 42103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * Use of this source code is governed by a BSD-style license that can be 52103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * found in the LICENSE file. 62103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth */ 72103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth 82103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth#ifndef SkSpotShadowMaskFilter_DEFINED 92103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth#define SkSpotShadowMaskFilter_DEFINED 102103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth 112103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth#include "SkMaskFilter.h" 122103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth#include "SkShadowFlags.h" 132103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth 142103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth/* 152103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * This filter implements a shadow for an occluding object 162103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * representing a displaced shadow from a point light. 172103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth */ 182103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verthclass SK_API SkSpotShadowMaskFilter { 192103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verthpublic: 202103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth /** Create a shadow maskfilter. 212103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @param occluderHeight Height of occluding object off of ground plane. 222103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @param lightPos Position of the light applied to this object. 232103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @param lightRadius Radius of the light (light is assumed to be spherical). 242103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @param spotAlpha Base opacity of the displaced spot shadow. 252103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @param flags Flags to use - defaults to none 262103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth * @return The new shadow maskfilter 272103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth */ 282103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth static sk_sp<SkMaskFilter> Make(SkScalar occluderHeight, const SkPoint3& lightPos, 292103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth SkScalar lightRadius, SkScalar spotAlpha, 302103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth uint32_t flags = SkShadowFlags::kNone_ShadowFlag); 312103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth 322103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() 332103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth 342103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verthprivate: 352103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth SkSpotShadowMaskFilter(); // can't be instantiated 362103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth}; 372103cf0ff09763aeaa35508734f765aec9b75665Jim Van Verth#endif 38