chromium/ui/views/layout/proposed_layout.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_VIEWS_LAYOUT_PROPOSED_LAYOUT_H_
#define UI_VIEWS_LAYOUT_PROPOSED_LAYOUT_H_

#include <string>
#include <vector>

#include "base/memory/raw_ptr.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/views/layout/layout_types.h"
#include "ui/views/views_export.h"

namespace views {

class View;

// Represents layout information for a child view within a host being laid
// out.
struct VIEWS_EXPORT ChildLayout {};

// Contains a full layout specification for the children of the host view.
struct VIEWS_EXPORT ProposedLayout {};

// Returns a layout that's linearly interpolated between |start| and |target|
// by |value|, which should be between 0 and 1. See
// gfx::Tween::LinearIntValueBetween() for the exact math involved.
VIEWS_EXPORT ProposedLayout ProposedLayoutBetween(double value,
                                                  const ProposedLayout& start,
                                                  const ProposedLayout& target);

}  // namespace views

#endif  // UI_VIEWS_LAYOUT_PROPOSED_LAYOUT_H_