| /* |
| * 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 |