// Copyright 2016 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.

library fuchsia.ui.viewsv1;

using fuchsia.math;

// Parameters and contextual information for a view provided by its container.
//
// When a container sets properties for its children, any properties which
// are set to null are inherited from the container's own ancestors.
struct ViewProperties {
  ViewLayout? view_layout;
  CustomFocusBehavior? custom_focus_behavior;
};

struct CustomFocusBehavior {
  bool allow_focus = true;
};

// Provides layout constraints for a view.
//
// TODO(jeffbrown): Decide how measurement should be performed.  Perhaps
// bring back |BoxConstraints| or introduce some other protocol just for
// measurement.
struct ViewLayout {
  // The size of the view in logical pixels.
  // Must be non-negative.
  fuchsia.math.SizeF size;

  // The inset of the view in logical pixels.
  // Must be non-negative.
  fuchsia.math.InsetF inset;
};