/[classpath]/classpath/javax/swing/SizeRequirements.java
ViewVC logotype

Diff of /classpath/javax/swing/SizeRequirements.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3.2.6 by gnu_andrew, Wed Nov 2 00:43:48 2005 UTC revision 1.3.2.7 by gnu_andrew, Sun Nov 27 21:00:38 2005 UTC
# Line 142  public class SizeRequirements implements Line 142  public class SizeRequirements implements
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    
# Line 338  public class SizeRequirements implements Line 351  public class SizeRequirements implements
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
# Line 356  public class SizeRequirements implements Line 367  public class SizeRequirements implements
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    

Legend:
Removed from v.1.3.2.6  
changed lines
  Added in v.1.3.2.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26