1 /* 2 * Copyright 2020 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SKSL_DSL_MODIFIERS 9 #define SKSL_DSL_MODIFIERS 10 11 #include "include/private/SkSLModifiers.h" 12 #include "include/private/SkTArray.h" 13 #include "include/sksl/DSLLayout.h" 14 15 namespace SkSL { 16 17 namespace dsl { 18 19 class DSLField; 20 class DSLType; 21 22 enum Modifier { 23 kNo_Modifier = 0, 24 kConst_Modifier = 1 << 0, 25 kIn_Modifier = 1 << 1, 26 kOut_Modifier = 1 << 2, 27 kInOut_Modifier = kIn_Modifier | kOut_Modifier, 28 kUniform_Modifier = 1 << 3, 29 kFlat_Modifier = 1 << 4, 30 kNoPerspective_Modifier = 1 << 5, 31 }; 32 33 class DSLModifiers { 34 public: 35 DSLModifiers(int flags = 0) DSLModifiers(DSLLayout (),flags)36 : DSLModifiers(DSLLayout(), flags) {} 37 38 DSLModifiers(DSLLayout layout, int flags = 0) 39 : fModifiers(layout.fSkSLLayout, flags) {} 40 flags()41 int flags() const { 42 return fModifiers.fFlags; 43 } 44 45 private: 46 SkSL::Modifiers fModifiers; 47 48 friend DSLType Struct(const char* name, SkTArray<DSLField> fields); 49 friend class DSLFunction; 50 friend class DSLVar; 51 friend class DSLWriter; 52 }; 53 54 } // namespace dsl 55 56 } // namespace SkSL 57 58 #endif 59