Initial release

This commit is contained in:
civ
2026-08-16 18:24:52 +07:00
commit 876886a39a
13244 changed files with 2353959 additions and 0 deletions
@@ -0,0 +1,70 @@
// This file is part of VSTGUI. It is subject to the license terms
// in the LICENSE file found in the top-level directory of this
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
#pragma once
#include "vstguifwd.h"
#include "cviewcontainer.h"
#include <optional>
#include <any>
//------------------------------------------------------------------------
namespace VSTGUI {
//------------------------------------------------------------------------
/** view layout
*
* the view layout holds the information about the position and size of the child views in a view
* container as calculated by the view layouter.
*
* @ingroup new_in_4_15
*/
struct ViewLayout
{
/** the size of the layout */
CRect size;
/** opaque layout data */
std::any data;
};
//-----------------------------------------------------------------------------
/** view layouter interface
*
* a view layouter is used to calculate and set the size and position of the child views in a view
* container.
*
* @ingroup new_in_4_15
*/
class IViewLayouter : virtual public IReference
{
public:
using Children = CViewContainer::ViewList;
/** calculate the layout of the view.
*
* Note that the returned layout may have a different size than the newSize parameter when
* the layout is not possible with the given size.
*
* @param view the view to calculate the layout for
* @param children the children of the view
* @param newSize the new size of the view
* @return the calculated layout or std::nullopt if the layout could not be calculated
*
*/
virtual std::optional<ViewLayout> calculateLayout (const CViewContainer& view,
const Children& children,
const CRect& newSize) = 0;
/** apply the previously calculated layout
*
* @param view the view to apply the layout to
* @param children the children of the view
* @param layout the layout to apply
* @return true if the layout was applied successfully, false otherwise
*/
virtual bool applyLayout (CViewContainer& view, const Children& children,
const ViewLayout& layout) = 0;
};
//-----------------------------------------------------------------------------
} // VSTGUI