Loading...
Searching...
No Matches
StencilMode.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#pragma once
26
28// Headers
31
32
33namespace sf
34{
35
43{
44 Never,
45 Less,
46 LessEqual,
47 Greater,
49 Equal,
50 NotEqual,
51 Always
52};
53
61{
62 Keep,
63 Zero,
64 Replace,
65 Increment,
66 Decrement,
67 Invert,
68};
69
75{
82 StencilValue(int theValue);
83
90 StencilValue(unsigned int theValue);
91
96 template <typename T>
97 StencilValue(T) = delete;
98
99 unsigned int value{};
100};
101
107{
108 StencilComparison stencilComparison{StencilComparison::Always};
109 StencilUpdateOperation stencilUpdateOperation{
110 StencilUpdateOperation::Keep};
111 StencilValue stencilReference{0};
112 StencilValue stencilMask{~0u};
113 bool stencilOnly{};
114};
115
126[[nodiscard]] SFML_GRAPHICS_API bool operator==(const StencilMode& left, const StencilMode& right);
127
138[[nodiscard]] SFML_GRAPHICS_API bool operator!=(const StencilMode& left, const StencilMode& right);
139
140} // namespace sf
141
142
#define SFML_GRAPHICS_API
StencilComparison
Enumeration of the stencil test comparisons that can be performed.
@ NotEqual
The stencil test passes if the new value is strictly unequal to the value in the stencil buffer.
@ Less
The stencil test passes if the new value is less than the value in the stencil buffer.
@ Always
The stencil test always passes.
@ Never
The stencil test never passes.
@ GreaterEqual
The stencil test passes if the new value is greater than or equal to the value in the stencil buffer.
@ Greater
The stencil test passes if the new value is greater than the value in the stencil buffer.
@ LessEqual
The stencil test passes if the new value is less than or equal to the value in the stencil buffer.
@ Equal
The stencil test passes if the new value is strictly equal to the value in the stencil buffer.
StencilUpdateOperation
Enumeration of the stencil buffer update operations.
@ Keep
If the stencil test passes, the value in the stencil buffer is not modified.
@ Replace
If the stencil test passes, the value in the stencil buffer is set to the new value.
@ Decrement
If the stencil test passes, the value in the stencil buffer is decremented and if required clamped.
@ Increment
If the stencil test passes, the value in the stencil buffer is incremented and if required clamped.
@ Invert
If the stencil test passes, the value in the stencil buffer is bitwise inverted.
@ Zero
If the stencil test passes, the value in the stencil buffer is set to zero.
Stencil modes for drawing.
bool operator==(const StencilMode &left, const StencilMode &right)
Overload of the operator==
bool operator!=(const StencilMode &left, const StencilMode &right)
Overload of the operator!=
Stencil value type (also used as a mask)
StencilValue(int theValue)
Construct a stencil value from a signed integer.
StencilValue(T)=delete
Disable construction from any other type.
StencilValue(unsigned int theValue)
Construct a stencil value from an unsigned integer.