aboutsummaryrefslogtreecommitdiff
path: root/src/deps/skia/include/sksl/DSLModifiers.h
blob: 10c6aaafacad85247922893f8b344ac33431748f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * 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 SKSL_DSL_MODIFIERS
#define SKSL_DSL_MODIFIERS

#include "include/core/SkSpan.h"
#include "include/private/SkSLModifiers.h"
#include "include/sksl/DSLLayout.h"

namespace SkSL {

namespace dsl {

class DSLField;
class DSLType;

enum Modifier {
    kNo_Modifier            = SkSL::Modifiers::kNo_Flag,
    kConst_Modifier         = SkSL::Modifiers::kConst_Flag,
    kIn_Modifier            = SkSL::Modifiers::kIn_Flag,
    kOut_Modifier           = SkSL::Modifiers::kOut_Flag,
    kInOut_Modifier         = SkSL::Modifiers::kIn_Flag | SkSL::Modifiers::kOut_Flag,
    kUniform_Modifier       = SkSL::Modifiers::kUniform_Flag,
    kFlat_Modifier          = SkSL::Modifiers::kFlat_Flag,
    kNoPerspective_Modifier = SkSL::Modifiers::kNoPerspective_Flag,
};

class DSLModifiers {
public:
    DSLModifiers(int flags = 0)
        : DSLModifiers(DSLLayout(), flags) {}

    DSLModifiers(DSLLayout layout, int flags = 0)
        : fModifiers(layout.fSkSLLayout, flags) {}

    int flags() const {
        return fModifiers.fFlags;
    }

    DSLLayout layout() const {
        return DSLLayout(fModifiers.fLayout);
    }

private:
    SkSL::Modifiers fModifiers;

    friend DSLType Struct(skstd::string_view name, SkSpan<DSLField> fields, PositionInfo pos);
    friend class DSLCore;
    friend class DSLFunction;
    friend class DSLType;
    friend class DSLVarBase;
    friend class DSLWriter;
};

} // namespace dsl

} // namespace SkSL

#endif