skia2/include/sksl/DSLLayout.h
Ethan Nicholas c9e9131f44 Switched SkSL positions from int to Position
This CL switches almost all instances of line tracking over to track
Positions instead. This does not yet add full range support - only the
start offsets will be correct currently. Followup CLs will extend the
ranges to fully cover their nodes.

Change-Id: Ie49aee02f35dcb30a3adb8a35f3e4914ba6939d2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/518137
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2022-03-14 17:06:17 +00:00

95 lines
3.0 KiB
C++

/*
* Copyright 2021 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_LAYOUT
#define SKSL_DSL_LAYOUT
#include "include/sksl/DSLLayout.h"
#include "include/private/SkSLLayout.h"
#include "include/sksl/SkSLPosition.h"
namespace SkSL {
namespace dsl {
class DSLLayout {
public:
DSLLayout() {}
DSLLayout& originUpperLeft(Position pos = Position::Capture()) {
return this->flag(SkSL::Layout::kOriginUpperLeft_Flag, "origin_upper_left", pos);
}
DSLLayout& pushConstant(Position pos = Position::Capture()) {
return this->flag(SkSL::Layout::kPushConstant_Flag, "push_constant", pos);
}
DSLLayout& blendSupportAllEquations(Position pos = Position::Capture()) {
return this->flag(SkSL::Layout::kBlendSupportAllEquations_Flag,
"blend_support_all_equations", pos);
}
DSLLayout& color(Position pos = Position::Capture()) {
return this->flag(SkSL::Layout::kColor_Flag, "color", pos);
}
DSLLayout& location(int location, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fLocation, location, SkSL::Layout::kLocation_Flag,
"location", pos);
}
DSLLayout& offset(int offset, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fOffset, offset, SkSL::Layout::kOffset_Flag, "offset",
pos);
}
DSLLayout& binding(int binding, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fBinding, binding, SkSL::Layout::kBinding_Flag,
"binding", pos);
}
DSLLayout& index(int index, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fIndex, index, SkSL::Layout::kIndex_Flag, "index", pos);
}
DSLLayout& set(int set, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fSet, set, SkSL::Layout::kSet_Flag, "set", pos);
}
DSLLayout& builtin(int builtin, Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fBuiltin, builtin, SkSL::Layout::kBuiltin_Flag,
"builtin", pos);
}
DSLLayout& inputAttachmentIndex(int inputAttachmentIndex,
Position pos = Position::Capture()) {
return this->intValue(&fSkSLLayout.fInputAttachmentIndex, inputAttachmentIndex,
SkSL::Layout::kInputAttachmentIndex_Flag, "input_attachment_index",
pos);
}
private:
explicit DSLLayout(SkSL::Layout skslLayout)
: fSkSLLayout(skslLayout) {}
DSLLayout& flag(SkSL::Layout::Flag mask, const char* name, Position pos);
DSLLayout& intValue(int* target, int value, SkSL::Layout::Flag flag, const char* name,
Position pos);
SkSL::Layout fSkSLLayout;
friend class DSLModifiers;
};
} // namespace dsl
} // namespace SkSL
#endif