// Copyright 2018 The Amber Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "src/command_data.h" namespace amber { Topology NameToTopology(const std::string& name) { static const struct { const char* name; Topology val; } topologies[] = { {"PATCH_LIST", Topology::kPatchList}, {"POINT_LIST", Topology::kPointList}, {"GL_LINE_STRIP_ADJACENCY", Topology::kLineStripWithAdjacency}, {"GL_LINE_STRIP", Topology::kLineStrip}, {"GL_LINES", Topology::kLineList}, {"GL_LINES_ADJACENCY", Topology::kLineListWithAdjacency}, {"GL_PATCHES", Topology::kPatchList}, {"GL_POINTS", Topology::kPointList}, {"GL_TRIANGLE_STRIP", Topology::kTriangleStrip}, {"GL_TRIANGLE_FAN", Topology::kTriangleFan}, {"GL_TRIANGLES", Topology::kTriangleList}, {"GL_TRIANGLES_ADJACENCY", Topology::kTriangleListWithAdjacency}, {"GL_TRIANGLE_STRIP_ADJACENCY", Topology::kTriangleStripWithAdjacency}, {"LINE_LIST", Topology::kLineList}, {"LINE_LIST_WITH_ADJACENCY", Topology::kLineListWithAdjacency}, {"LINE_STRIP", Topology::kLineStrip}, {"LINE_STRIP_WITH_ADJACENCY", Topology::kLineStripWithAdjacency}, {"TRIANGLE_FAN", Topology::kTriangleFan}, {"TRIANGLE_LIST", Topology::kTriangleList}, {"TRIANGLE_LIST_WITH_ADJACENCY", Topology::kTriangleListWithAdjacency}, {"TRIANGLE_STRIP", Topology::kTriangleStrip}, {"TRIANGLE_STRIP_WITH_ADJACENCY", Topology::kTriangleStripWithAdjacency}, }; // TODO(dsinclair): Make smarter if needed for (auto& topo : topologies) { if (topo.name == name) return topo.val; } return Topology::kUnknown; } } // namespace amber