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