blob: f00ea111dfa12fb91058cd3d14901fe77f235ae5 [file] [log] [blame]
// Copyright 2015 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/examples/ui/shapes/shapes_view.h"
#include "lib/fxl/logging.h"
namespace examples {
namespace {
constexpr float kBackgroundElevation = 0.f;
constexpr float kCardElevation = 2.f;
constexpr float kCardCornerRadius = 8.f;
constexpr float kCircleElevation = 8.f;
constexpr float kCircleRadius = 40.f;
} // namespace
ShapesView::ShapesView(
::fuchsia::ui::viewsv1::ViewManagerPtr view_manager,
fidl::InterfaceRequest<::fuchsia::ui::viewsv1token::ViewOwner>
view_owner_request)
: BaseView(std::move(view_manager), std::move(view_owner_request),
"Shapes"),
background_node_(session()),
card_node_(session()),
circle_node_(session()) {
scenic::Material background_material(session());
background_material.SetColor(0x21, 0x21, 0x21, 0xff); // Grey 900
background_node_.SetMaterial(background_material);
parent_node().AddChild(background_node_);
scenic::Material card_material(session());
card_material.SetColor(0x67, 0x3a, 0xb7, 0xff); // Deep Purple 500
card_node_.SetMaterial(card_material);
parent_node().AddChild(card_node_);
scenic::Material circle_material(session());
circle_material.SetColor(0xf5, 0x00, 0x57, 0xff); // Pink A400
circle_node_.SetMaterial(circle_material);
parent_node().AddChild(circle_node_);
}
ShapesView::~ShapesView() {}
void ShapesView::OnSceneInvalidated(
fuchsia::images::PresentationInfo presentation_info) {
if (!has_logical_size())
return;
const float center_x = logical_size().width * .5f;
const float center_y = logical_size().height * .5f;
scenic::Rectangle background_shape(session(), logical_size().width,
logical_size().height);
background_node_.SetShape(background_shape);
background_node_.SetTranslation(center_x, center_y, kBackgroundElevation);
scenic::RoundedRectangle card_shape(session(), logical_size().width * .9f,
logical_size().height * .9f,
kCardCornerRadius, kCardCornerRadius,
kCardCornerRadius, kCardCornerRadius);
card_node_.SetShape(card_shape);
card_node_.SetTranslation((float[]){center_x, center_y, kCardElevation});
scenic::Circle circle_shape(session(), kCircleRadius);
circle_node_.SetShape(circle_shape);
circle_node_.SetTranslation(logical_size().width * .85f,
logical_size().height * .85f, kCircleElevation);
}
} // namespace examples