/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrPathStencilSettings_DEFINED #define GrPathStencilSettings_DEFINED #include "src/gpu/GrUserStencilSettings.h" //////////////////////////////////////////////////////////////////////////////// // Stencil rules for paths ////// Even/Odd static constexpr GrUserStencilSettings gEOStencilPass( GrUserStencilSettings::StaticInit< 0xffff, GrUserStencilTest::kAlwaysIfInClip, 0xffff, GrUserStencilOp::kInvert, GrUserStencilOp::kKeep, 0xffff>() ); // ok not to check clip b/c stencil pass only wrote inside clip static constexpr GrUserStencilSettings gEOColorPass( GrUserStencilSettings::StaticInit< 0x0000, GrUserStencilTest::kNotEqual, 0xffff, GrUserStencilOp::kZero, GrUserStencilOp::kZero, 0xffff>() ); // have to check clip b/c outside clip will always be zero. static constexpr GrUserStencilSettings gInvEOColorPass( GrUserStencilSettings::StaticInit< 0x0000, GrUserStencilTest::kEqualIfInClip, 0xffff, GrUserStencilOp::kZero, GrUserStencilOp::kZero, 0xffff>() ); ////// Winding static constexpr GrUserStencilSettings gWindStencilPass ( GrUserStencilSettings::StaticInitSeparate< 0xffff, 0xffff, GrUserStencilTest::kAlwaysIfInClip, GrUserStencilTest::kAlwaysIfInClip, 0xffff, 0xffff, GrUserStencilOp::kIncWrap, GrUserStencilOp::kDecWrap, GrUserStencilOp::kKeep, GrUserStencilOp::kKeep, 0xffff, 0xffff>() ); static constexpr GrUserStencilSettings gWindColorPass( GrUserStencilSettings::StaticInit< 0x0000, GrUserStencilTest::kLessIfInClip, // "0 < stencil" is equivalent to "0 != stencil". 0xffff, GrUserStencilOp::kZero, GrUserStencilOp::kZero, 0xffff>() ); static constexpr GrUserStencilSettings gInvWindColorPass( GrUserStencilSettings::StaticInit< 0x0000, GrUserStencilTest::kEqualIfInClip, 0xffff, GrUserStencilOp::kZero, GrUserStencilOp::kZero, 0xffff>() ); ////// Normal render to stencil // Sometimes the default path renderer can draw a path directly to the stencil // buffer without having to first resolve the interior / exterior. static constexpr GrUserStencilSettings gDirectToStencil( GrUserStencilSettings::StaticInit< 0x0000, GrUserStencilTest::kAlwaysIfInClip, 0xffff, GrUserStencilOp::kZero, GrUserStencilOp::kIncMaybeClamp, 0xffff>() ); #endif