#ifndef SkDrawShadowInfo_DEFINED
#define SkDrawShadowInfo_DEFINED
#include "include/core/SkColor.h"
#include "include/core/SkPoint.h"
#include "include/core/SkPoint3.h"
#include "include/core/SkScalar.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkFloatingPoint.h"
#include "include/private/base/SkTPin.h"
#include <algorithm>
#include <cstdint>
class SkMatrix;
class SkPath;
struct SkRect;
struct SkDrawShadowRec { … };
namespace SkDrawShadowMetrics {
static constexpr auto kAmbientHeightFactor = …;
static constexpr auto kAmbientGeomFactor = …;
static constexpr auto kMaxAmbientRadius = …;
static inline float divide_and_pin(float numer, float denom, float min, float max) { … }
inline SkScalar AmbientBlurRadius(SkScalar height) { … }
inline SkScalar AmbientRecipAlpha(SkScalar height) { … }
inline SkScalar SpotBlurRadius(SkScalar occluderZ, SkScalar lightZ, SkScalar lightRadius) { … }
inline void GetSpotParams(SkScalar occluderZ, SkScalar lightX, SkScalar lightY, SkScalar lightZ,
SkScalar lightRadius,
SkScalar* blurRadius, SkScalar* scale, SkVector* translate) { … }
inline void GetDirectionalParams(SkScalar occluderZ, SkScalar lightX, SkScalar lightY,
SkScalar lightZ, SkScalar lightRadius,
SkScalar* blurRadius, SkScalar* scale, SkVector* translate) { … }
bool GetSpotShadowTransform(const SkPoint3& lightPos, SkScalar lightRadius,
const SkMatrix& ctm, const SkPoint3& zPlaneParams,
const SkRect& pathBounds, bool directional,
SkMatrix* shadowTransform, SkScalar* radius);
void GetLocalBounds(const SkPath&, const SkDrawShadowRec&, const SkMatrix& ctm, SkRect* bounds);
}
#endif