/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKSL_CPP #define SKSL_CPP // functions used by CPP programs created by skslc #include <cmath> #include "SkPoint.h" using std::abs; struct Float4 { Float4(float x, float y, float z, float w) : fX(x) , fY(y) , fZ(z) , fW(w) {} operator SkRect() const { return SkRect::MakeLTRB(fX, fY, fZ, fW); } operator GrColor4f() const { return GrColor4f(fX, fY, fZ, fW); } private: float fX; float fY; float fZ; float fW; }; // macros to make sk_Caps.<cap name> work from C++ code #define sk_Caps (*args.fShaderCaps) #define floatIs32Bits floatIs32Bits() // functions to make GLSL constructors work from C++ code inline SkPoint float2(float xy) { return SkPoint::Make(xy, xy); } inline SkPoint float2(float x, float y) { return SkPoint::Make(x, y); } inline Float4 float4(float xyzw) { return Float4(xyzw, xyzw, xyzw, xyzw); } inline Float4 float4(float x, float y, float z, float w) { return Float4(x, y, z, w); } #define half2 float2 #define half3 float3 #define half4 float4 #endif