Skip to content

Commit

Permalink
Merge pull request #18 from FlurinBruehwiler/temp-branch
Browse files Browse the repository at this point in the history
update from release branch
  • Loading branch information
FlurinBruehwiler committed May 4, 2024
2 parents 7651851 + 3e738af commit 6a89295
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 109 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/nuget_publish.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
name: Build And Push Plugin Api
name: Publish Nuget Package

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
release:
types: [published]

jobs:
build:
Expand Down
3 changes: 1 addition & 2 deletions Flamui.Components/Flamui.Components.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<!-- Nuget Package -->
<PackageId>Flamui.Components</PackageId>
<Version>0.1.0-alpha.2</Version>
<Version>0.1.0-alpha.3</Version>
<Authors>Flurin Brühwiler</Authors>
<PackageLicenseUrl>MIT</PackageLicenseUrl>
<RepositoryUrl>https://github.com/FlurinBruehwiler/flamui</RepositoryUrl>
Expand All @@ -23,7 +23,6 @@
</ItemGroup>

<ItemGroup>
<None Include="../Flamui.SourceGenerators/bin/Release/netstandard2.0/Flamui.SourceGenerators.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false"/>
<None Include="../README.md" Pack="true" PackagePath="\"/>
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion Flamui/Flamui.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<!-- Nuget Package -->
<PackageId>Flamui</PackageId>
<Version>0.1.0-alpha.2</Version>
<Version>0.1.0-alpha.3</Version>
<Authors>Flurin Brühwiler</Authors>
<PackageLicenseUrl>MIT</PackageLicenseUrl>
<RepositoryUrl>https://github.com/FlurinBruehwiler/flamui</RepositoryUrl>
Expand Down
239 changes: 140 additions & 99 deletions Flamui/Layouting/FlexContainer.cs
Original file line number Diff line number Diff line change
@@ -1,99 +1,140 @@
using System.Collections;

namespace Flamui.Layouting;

public class FlexContainer : ILayoutable
{
public List<ILayoutable> Children = new();

public ParentData ParentData { get; set; }

public FlexibleChildConfig? FlexibleChildConfig => null;

public Dir Direction;

public BoxSize Layout(BoxConstraint constraint)
{
float totalFixedSize = 0;

//Loop through inflexible children
foreach (var child in Children)
{
if (child.IsFlexible(out _))
continue;

var size = child.Layout(BoxConstraint.FromDirection(Direction, 0, float.PositiveInfinity, 0,
constraint.GetCrossAxis(Direction).Max));

totalFixedSize += size.GetMainAxis(Direction);
}

float totalPercentage = 0;

//Loop through flexible children
foreach (var child in Children)
{
if (!child.IsFlexible(out var config))
continue;

totalPercentage += config.Percentage;
}

//Assert that there are no flexible children if the Main Axis has Infinity as the max size!!!!!
//Need to think about that...

var sizePerPercentage = GetSizePerPercentage(totalPercentage, constraint.GetMainAxis(Direction).Max);

Span<bool> childrenThatNeedAnotherPass = stackalloc bool[Children.Count];

for (var i = 0; i < Children.Count; i++)
{
var child = Children[i];
if (!child.IsFlexible(out var config))
continue;

var mainSize = config.Percentage * sizePerPercentage;

if (mainSize > config.Max && mainSize < config.Min)
{
var constraintMainSize = Math.Clamp(mainSize, config.Min, config.Max);
totalFixedSize += mainSize;
child.Layout(BoxConstraint.FromDirection(Direction, constraintMainSize, constraintMainSize, 0,
constraint.GetCrossAxis(Direction).Max));
continue;
}

childrenThatNeedAnotherPass[i] = true;
}

// sizePerPercentage = GetSizePerPercentage(totalPercentage, constraint.GetCrossAxis(Dir.Horizontal).Max)

for (var i = 0; i < Children.Count; i++)
{
if (!childrenThatNeedAnotherPass[i])
continue;

var child = Children[i];


}

return new BoxSize();
}

private float GetSizePerPercentage(float totalPercentage, float availableSize)
{
float sizePerPercent;

if (totalPercentage > 100)
{
sizePerPercent = availableSize / totalPercentage;
}
else
{
sizePerPercent = availableSize / 100;
}

return sizePerPercent;
}
}
// using System.Collections;
//
// namespace Flamui.Layouting;
//
// public class FlexContainer : ILayoutable
// {
// public List<ILayoutable> Children = new();
//
// public ParentData ParentData { get; set; }
//
// public FlexibleChildConfig? FlexibleChildConfig => null;
//
// public Dir Direction;
// public SizeDefinition;
//
// private float GetTotalAvailableSize()
// {
//
// }
//
// public BoxSize Layout(BoxConstraint constraint)
// {
// float totalAvailableSize = GetTotalAvailableSize();
//
// float totalFixedSize = 0;
// float totalPercentage = 0;
//
// //Loop through inflexible children
// foreach (var child in Children)
// {
// if (child.IsFlexible(out var config))
// {
// totalPercentage += config.Percentage;
// continue;
// }
//
// var size = child.Layout(BoxConstraint.FromDirection(Direction, 0, float.PositiveInfinity, 0,
// constraint.GetCrossAxis(Direction).Max));
//
// totalFixedSize += size.GetMainAxis(Direction);
// }
//
// var sizePerPercentage = GetSizePerPercentage(totalPercentage, 0);
//
// float totalSizeOfFlexibleChildren = 0;
//
// //loop through all flexible children and add up size
// for (var i = 0; i < Children.Count; i++)
// {
// var child = Children[i];
// if (!child.IsFlexible(out var config))
// continue;
//
// totalSizeOfFlexibleChildren += config.Percentage * sizePerPercentage;
//
// /*
// if (mainSize > config.Max && mainSize < config.Min)
// {
// var constraintMainSize = Math.Clamp(mainSize, config.Min, config.Max);
// totalFixedSize += mainSize;
// child.Layout(BoxConstraint.FromDirection(Direction, constraintMainSize, constraintMainSize, 0,
// constraint.GetCrossAxis(Direction).Max));
// continue;
// }
// */
//
// // childrenThatNeedAnotherPass[i] = true;
// }
//
// float remainingSize = constraint.GetMainAxis(Direction).Max - totalFixedSize;
//
// //if fits, apply constraints
// if (totalSizeOfFlexibleChildren < remainingSize)
// {
// Span<bool> childrenThatNeedAnotherPass = stackalloc bool[Children.Count];
// float totalPercentage = 0;
//
// for (var i = 0; i < Children.Count; i++)
// {
// var child = Children[i];
// if (!child.IsFlexible(out var config))
// continue;
//
// var mainSize = config.Percentage * sizePerPercentage;
//
// //if doesn't fit, apply constraint
// if (mainSize > config.Max || mainSize < config.Min)
// {
// var constraintMainSize = Math.Clamp(mainSize, config.Min, config.Max);
// totalFixedSize += mainSize;
// child.Layout(BoxConstraint.FromDirection(Direction, constraintMainSize, constraintMainSize, 0,
// constraint.GetCrossAxis(Direction).Max));
// continue;
// }
//
// totalPercentage += config.Percentage;
// childrenThatNeedAnotherPass[i] = true;
// }
//
// sizePerPercentage =
// GetSizePerPercentage(totalPercentage, constraint.GetMainAxis(Direction).Max - totalFixedSize);
//
// for (var i = 0; i < Children.Count; i++)
// {
// if (!childrenThatNeedAnotherPass[i])
// continue;
//
// var child = Children[i];
//
//
// }
// }
//
// // sizePerPercentage = GetSizePerPercentage(totalPercentage, constraint.GetCrossAxis(Dir.Horizontal).Max)
//
//
// var child = Children[i];
//
//
// }
//
// return new BoxSize();
// }
//
// private float GetSizePerPercentage(float totalPercentage, float availableSize)
// {
// float sizePerPercent;
//
// if (totalPercentage > 100)
// {
// sizePerPercent = availableSize / totalPercentage;
// }
// else
// {
// sizePerPercent = availableSize / 100;
// }
//
// return sizePerPercent;
// }
// }
2 changes: 0 additions & 2 deletions Flamui/Layouting/Layouting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ public bool IsFlexible(out FlexibleChildConfig config)
public struct FlexibleChildConfig
{
public float Percentage;
public float Min;
public float Max;
}

public struct Point
Expand Down

0 comments on commit 6a89295

Please sign in to comment.