12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Copyright 2015 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef GrSamplerState_DEFINED
- #define GrSamplerState_DEFINED
- #include "include/gpu/GrTypes.h"
- /**
- * Represents the filtering and tile modes used to access a texture.
- */
- class GrSamplerState {
- public:
- enum class Filter : uint8_t { kNearest, kBilerp, kMipMap };
- enum class WrapMode : uint8_t { kClamp, kRepeat, kMirrorRepeat, kClampToBorder };
- static constexpr GrSamplerState ClampNearest() { return GrSamplerState(); }
- static constexpr GrSamplerState ClampBilerp() {
- return GrSamplerState(WrapMode::kClamp, Filter::kBilerp);
- }
- constexpr GrSamplerState() : GrSamplerState(WrapMode::kClamp, Filter::kNearest) {}
- constexpr GrSamplerState(WrapMode wrapXAndY, Filter filter)
- : fWrapModes{wrapXAndY, wrapXAndY}, fFilter(filter) {}
- constexpr GrSamplerState(const WrapMode wrapModes[2], Filter filter)
- : fWrapModes{wrapModes[0], wrapModes[1]}, fFilter(filter) {}
- constexpr GrSamplerState(const GrSamplerState&) = default;
- GrSamplerState& operator=(const GrSamplerState& that) {
- fWrapModes[0] = that.fWrapModes[0];
- fWrapModes[1] = that.fWrapModes[1];
- fFilter = that.fFilter;
- return *this;
- }
- Filter filter() const { return fFilter; }
- void setFilterMode(Filter filterMode) { fFilter = filterMode; }
- void setWrapModeX(const WrapMode wrap) { fWrapModes[0] = wrap; }
- void setWrapModeY(const WrapMode wrap) { fWrapModes[1] = wrap; }
- WrapMode wrapModeX() const { return fWrapModes[0]; }
- WrapMode wrapModeY() const { return fWrapModes[1]; }
- bool isRepeated() const {
- return (WrapMode::kClamp != fWrapModes[0] && WrapMode::kClampToBorder != fWrapModes[0]) ||
- (WrapMode::kClamp != fWrapModes[1] && WrapMode::kClampToBorder != fWrapModes[1]);
- }
- bool operator==(const GrSamplerState& that) const {
- return fWrapModes[0] == that.fWrapModes[0] && fWrapModes[1] == that.fWrapModes[1] &&
- fFilter == that.fFilter;
- }
- bool operator!=(const GrSamplerState& that) const { return !(*this == that); }
- private:
- WrapMode fWrapModes[2];
- Filter fFilter;
- };
- #endif
|