blob: 849b83be0194b38a906356e7061c32ae7213c567 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "garnet/bin/ui/root_presenter/renderer_params.h"
namespace root_presenter {
RendererParams RendererParams::FromCommandLine(
const fxl::CommandLine& command_line) {
RendererParams params;
std::pair<std::string, fuchsia::ui::gfx::ShadowTechnique> shadow_args[] = {
{"unshadowed", fuchsia::ui::gfx::ShadowTechnique::UNSHADOWED},
{"screen_space_shadows", fuchsia::ui::gfx::ShadowTechnique::SCREEN_SPACE},
{"shadow_map", fuchsia::ui::gfx::ShadowTechnique::SHADOW_MAP},
{"moment_shadow_map",
fuchsia::ui::gfx::ShadowTechnique::MOMENT_SHADOW_MAP}};
for (auto& arg : shadow_args) {
if (command_line.HasOption(arg.first)) {
FXL_CHECK(!params.shadow_technique.has_value())
<< "Cannot specify multiple shadow args.";
params.shadow_technique = arg.second;
}
}
if (command_line.HasOption("clipping_enabled")) {
params.clipping_enabled = true;
} else if (command_line.HasOption("clipping_disabled")) {
FXL_CHECK(!params.clipping_enabled.has_value())
<< "Cannot use both -clipping_enabled and -clipping_disabled.";
params.clipping_enabled = false;
}
if (command_line.HasOption("render_continuously")) {
params.render_frequency = fuchsia::ui::gfx::RenderFrequency::CONTINUOUSLY;
} else if (command_line.HasOption("render_when_requested")) {
FXL_CHECK(!params.render_frequency.has_value())
<< "Cannot use both -render_continuously and -render_when_requested.";
params.render_frequency = fuchsia::ui::gfx::RenderFrequency::WHEN_REQUESTED;
}
return params;
}
} // namespace root_presenter