home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / SizeRequirements.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  2.7 KB  |  128 lines

  1. package com.sun.java.swing;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class SizeRequirements implements Serializable {
  6.    public int minimum;
  7.    public int preferred;
  8.    public int maximum;
  9.    public float alignment;
  10.  
  11.    public SizeRequirements() {
  12.       this.minimum = 0;
  13.       this.preferred = 0;
  14.       this.maximum = 0;
  15.       this.alignment = 0.5F;
  16.    }
  17.  
  18.    public SizeRequirements(int var1, int var2, int var3, float var4) {
  19.       this.minimum = var1;
  20.       this.preferred = var2;
  21.       this.maximum = var3;
  22.       this.alignment = var4 > 1.0F ? 1.0F : (var4 < 0.0F ? 0.0F : var4);
  23.    }
  24.  
  25.    public String toString() {
  26.       return "[" + this.minimum + "," + this.preferred + "," + this.maximum + "]@" + this.alignment;
  27.    }
  28.  
  29.    public static SizeRequirements getTiledSizeRequirements(SizeRequirements[] var0) {
  30.       SizeRequirements var1 = new SizeRequirements();
  31.  
  32.       for(int var2 = 0; var2 < var0.length; ++var2) {
  33.          SizeRequirements var3 = var0[var2];
  34.          var1.minimum = (int)Math.min((long)var1.minimum + (long)var3.minimum, 2147483647L);
  35.          var1.preferred = (int)Math.min((long)var1.preferred + (long)var3.preferred, 2147483647L);
  36.          var1.maximum = (int)Math.min((long)var1.maximum + (long)var3.maximum, 2147483647L);
  37.       }
  38.  
  39.       return var1;
  40.    }
  41.  
  42.    public static SizeRequirements getAlignedSizeRequirements(SizeRequirements[] var0) {
  43.       SizeRequirements var1 = new SizeRequirements();
  44.       SizeRequirements var2 = new SizeRequirements();
  45.  
  46.       for(int var3 = 0; var3 < var0.length; ++var3) {
  47.          SizeRequirements var4 = var0[var3];
  48.          int var5 = (int)(var4.alignment * (float)var4.minimum);
  49.          int var6 = var4.minimum - var5;
  50.          var1.minimum = Math.max(var5, var1.minimum);
  51.          var2.minimum = Math.max(var6, var2.minimum);
  52.          var5 = (int)(var4.alignment * (float)var4.preferred);
  53.          var6 = var4.preferred - var5;
  54.          var1.preferred = Math.max(var5, var1.preferred);
  55.          var2.preferred = Math.max(var6, var2.preferred);
  56.          var5 = (int)(var4.alignment * (float)var4.maximum);
  57.          var6 = var4.maximum - var5;
  58.          var1.maximum = Math.max(var5, var1.maximum);
  59.          var2.maximum = Math.max(var6, var2.maximum);
  60.       }
  61.  
  62.       int var8 = (int)Math.min((long)var1.minimum + (long)var2.minimum, 2147483647L);
  63.       int var11 = (int)Math.min((long)var1.preferred + (long)var2.preferred, 2147483647L);
  64.       int var14 = (int)Math.min((long)var1.maximum + (long)var2.maximum, 2147483647L);
  65.       float var7 = 0.0F;
  66.       if (var8 > 0) {
  67.          var7 = (float)var1.minimum / (float)var8;
  68.          var7 = var7 > 1.0F ? 1.0F : (var7 < 0.0F ? 0.0F : var7);
  69.       }
  70.  
  71.       return new SizeRequirements(var8, var11, var14, var7);
  72.    }
  73.  
  74.    public static void calculateTiledPositions(int var0, SizeRequirements var1, SizeRequirements[] var2, int[] var3, int[] var4) {
  75.       if (var0 > var1.preferred) {
  76.          expandedTile(var0, var1, var2, var3, var4);
  77.       } else {
  78.          compressedTile(var0, var1, var2, var3, var4);
  79.       }
  80.    }
  81.  
  82.    public static void calculateAlignedPositions(int var0, SizeRequirements var1, SizeRequirements[] var2, int[] var3, int[] var4) {
  83.       int var5 = (int)((float)var0 * var1.alignment);
  84.       int var6 = var0 - var5;
  85.  
  86.       for(int var7 = 0; var7 < var2.length; ++var7) {
  87.          SizeRequirements var8 = var2[var7];
  88.          int var9 = (int)((float)var8.maximum * var8.alignment);
  89.          int var10 = var8.maximum - var9;
  90.          int var11 = Math.min(var5, var9);
  91.          int var12 = Math.min(var6, var10);
  92.          var3[var7] = var5 - var11;
  93.          var4[var7] = (int)Math.min((long)var11 + (long)var12, 2147483647L);
  94.       }
  95.  
  96.    }
  97.  
  98.    private static void compressedTile(int var0, SizeRequirements var1, SizeRequirements[] var2, int[] var3, int[] var4) {
  99.       int var5 = Math.min(var1.preferred - var0, var1.preferred - var1.minimum);
  100.       float var6 = var1.preferred - var1.minimum == 0 ? 0.0F : (float)var5 / (float)(var1.preferred - var1.minimum);
  101.       int var7 = 0;
  102.  
  103.       for(int var8 = 0; var8 < var4.length; ++var8) {
  104.          var3[var8] = var7;
  105.          SizeRequirements var9 = var2[var8];
  106.          int var10 = (int)(var6 * (float)(var9.preferred - var9.minimum));
  107.          var4[var8] = var9.preferred - var10;
  108.          var7 = (int)Math.min((long)var7 + (long)var4[var8], 2147483647L);
  109.       }
  110.  
  111.    }
  112.  
  113.    private static void expandedTile(int var0, SizeRequirements var1, SizeRequirements[] var2, int[] var3, int[] var4) {
  114.       int var5 = Math.min(var0 - var1.preferred, var1.maximum - var1.preferred);
  115.       float var6 = var1.maximum - var1.preferred == 0 ? 0.0F : (float)var5 / (float)(var1.maximum - var1.preferred);
  116.       int var7 = 0;
  117.  
  118.       for(int var8 = 0; var8 < var4.length; ++var8) {
  119.          var3[var8] = var7;
  120.          SizeRequirements var9 = var2[var8];
  121.          int var10 = (int)(var6 * (float)(var9.maximum - var9.preferred));
  122.          var4[var8] = (int)Math.min((long)var9.preferred + (long)var10, 2147483647L);
  123.          var7 = (int)Math.min((long)var7 + (long)var4[var8], 2147483647L);
  124.       }
  125.  
  126.    }
  127. }
  128.