Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/skia/skia/include/private/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  SkSLSampleUsage.h   Sprache: C

 
/*
 * Copyright 2020 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */


#ifndef SkSLSampleUsage_DEFINED
#define SkSLSampleUsage_DEFINED

#include "include/core/SkTypes.h"

namespace SkSL {

/**
 * Represents all of the ways that a fragment processor is sampled by its parent.
 */

class SampleUsage {
public:
    enum class Kind {
        // Child is never sampled
        kNone,
        // Child is only sampled at the same coordinates as the parent
        kPassThrough,
        // Child is sampled with a matrix whose value is uniform
        kUniformMatrix,
        // Child is sampled with sk_FragCoord.xy
        kFragCoord,
        // Child is sampled using explicit coordinates
        kExplicit,
    };

    // Make a SampleUsage that corresponds to no sampling of the child at all
    SampleUsage() = default;

    SampleUsage(Kind kind, bool hasPerspective) : fKind(kind), fHasPerspective(hasPerspective) {
        if (kind != Kind::kUniformMatrix) {
            SkASSERT(!fHasPerspective);
        }
    }

    // Child is sampled with a matrix whose value is uniform. The name is fixed.
    static SampleUsage UniformMatrix(bool hasPerspective) {
        return SampleUsage(Kind::kUniformMatrix, hasPerspective);
    }

    static SampleUsage Explicit() {
        return SampleUsage(Kind::kExplicit, false);
    }

    static SampleUsage PassThrough() {
        return SampleUsage(Kind::kPassThrough, false);
    }

    static SampleUsage FragCoord() { return SampleUsage(Kind::kFragCoord, false); }

    bool operator==(const SampleUsage& that) const {
        return fKind == that.fKind && fHasPerspective == that.fHasPerspective;
    }

    bool operator!=(const SampleUsage& that) const { return !(*this == that); }

    // Arbitrary name used by all uniform sampling matrices
    static const char* MatrixUniformName() { return "matrix"; }

    SampleUsage merge(const SampleUsage& other);

    Kind kind() const { return fKind; }

    bool hasPerspective() const { return fHasPerspective; }

    bool isSampled()       const { return fKind != Kind::kNone; }
    bool isPassThrough()   const { return fKind == Kind::kPassThrough; }
    bool isExplicit()      const { return fKind == Kind::kExplicit; }
    bool isUniformMatrix() const { return fKind == Kind::kUniformMatrix; }
    bool isFragCoord()     const { return fKind == Kind::kFragCoord; }

private:
    Kind fKind = Kind::kNone;
    bool fHasPerspective = false;  // Only valid if fKind is kUniformMatrix
};

}  // namespace SkSL

#endif

Messung V0.5
C=91 H=93 G=91

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.