33 const double minSize,
const double maxSize,
37 jassert (order >= 0 && order < std::numeric_limits<int>::max());
60 double currentSize = 0;
64 int nextHighestOrder = std::numeric_limits<int>::max();
66 for (
int i = 0;
i <
items.size(); ++
i)
69 currentSize += it.
size;
71 if (it.
order <= order)
80 nextHighestOrder =
jmin (nextHighestOrder, it.
order);
84 const double thisIterationTarget =
jlimit (minSize, maxSize, targetSize);
86 if (thisIterationTarget >= currentSize)
88 const double availableExtraSpace = maxSize - currentSize;
89 const double targetAmountOfExtraSpace = thisIterationTarget - currentSize;
90 const double scale = availableExtraSpace > 0 ? targetAmountOfExtraSpace / availableExtraSpace : 1.0;
92 for (
int i = 0;
i <
items.size(); ++
i)
96 if (it.
order <= order)
102 const double amountOfSlack = currentSize - minSize;
103 const double targetAmountOfSlack = thisIterationTarget - minSize;
104 const double scale = targetAmountOfSlack / amountOfSlack;
106 for (
int i = 0;
i <
items.size(); ++
i)
110 if (it.
order <= order)
115 if (nextHighestOrder < std::numeric_limits<int>::max())
116 order = nextHighestOrder;
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
void addItem(double currentSize, double minSize, double maxSize, int order=0)
Definition juce_StretchableObjectResizer.cpp:32
Array< Item > items
Definition juce_StretchableObjectResizer.h:97
double getItemSize(int index) const noexcept
Definition juce_StretchableObjectResizer.cpp:48
~StretchableObjectResizer()
Definition juce_StretchableObjectResizer.cpp:30
void resizeToFit(double targetSize)
Definition juce_StretchableObjectResizer.cpp:54
StretchableObjectResizer()
Definition juce_StretchableObjectResizer.cpp:29
register unsigned i
Definition inflate.c:1575
Definition carla_juce.cpp:31
Type jlimit(Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
Definition juce_MathsFunctions.h:262
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
Definition juce_StretchableObjectResizer.h:90
double size
Definition juce_StretchableObjectResizer.h:91
int order
Definition juce_StretchableObjectResizer.h:94
double minSize
Definition juce_StretchableObjectResizer.h:92
double maxSize
Definition juce_StretchableObjectResizer.h:93