142 |
public static SizeRequirements |
public static SizeRequirements |
143 |
getTiledSizeRequirements(SizeRequirements[] children) |
getTiledSizeRequirements(SizeRequirements[] children) |
144 |
{ |
{ |
145 |
SizeRequirements result = new SizeRequirements(); |
long minimum = 0; |
146 |
for (int i = 0; i < children.length; i++) |
long preferred = 0; |
147 |
{ |
long maximum = 0; |
148 |
result.minimum += children[i].minimum; |
for (int i = 0; i < children.length; i++) |
149 |
result.preferred += children[i].preferred; |
{ |
150 |
result.maximum += children[i].maximum; |
minimum += children[i].minimum; |
151 |
} |
preferred += children[i].preferred; |
152 |
|
maximum += children[i].maximum; |
153 |
|
} |
154 |
|
// Overflow check. |
155 |
|
if (minimum > Integer.MAX_VALUE) |
156 |
|
minimum = Integer.MAX_VALUE; |
157 |
|
if (preferred > Integer.MAX_VALUE) |
158 |
|
preferred = Integer.MAX_VALUE; |
159 |
|
if (maximum > Integer.MAX_VALUE) |
160 |
|
maximum = Integer.MAX_VALUE; |
161 |
|
SizeRequirements result = new SizeRequirements((int) minimum, |
162 |
|
(int) preferred, |
163 |
|
(int) maximum, |
164 |
|
0.5F); |
165 |
return result; |
return result; |
166 |
} |
} |
167 |
|
|
351 |
int[] spans, int span) |
int[] spans, int span) |
352 |
{ |
{ |
353 |
// Sum up (maxSize - prefSize) over all children |
// Sum up (maxSize - prefSize) over all children |
354 |
int sumDelta = 0; |
long sumDelta = 0; |
355 |
for (int i = 0; i < children.length; i++) |
for (int i = 0; i < children.length; i++) |
356 |
{ |
{ |
357 |
sumDelta += children[i].maximum - children[i].preferred; |
sumDelta += children[i].maximum - children[i].preferred; |
|
if (sumDelta < 0) |
|
|
sumDelta = Integer.MAX_VALUE; |
|
358 |
} |
} |
359 |
|
|
360 |
// If we have sumDelta == 0, then all components have prefSize == maxSize |
// If we have sumDelta == 0, then all components have prefSize == maxSize |
367 |
{ |
{ |
368 |
double factor = ((double) (children[i].maximum - children[i].preferred)) |
double factor = ((double) (children[i].maximum - children[i].preferred)) |
369 |
/ ((double) sumDelta); |
/ ((double) sumDelta); |
370 |
spans[i] -= factor * (span - allocated); |
spans[i] += factor * (allocated - span); |
371 |
} |
} |
372 |
} |
} |
373 |
|
|