home *** CD-ROM | disk | FTP | other *** search
- package java.awt.font;
-
- class TextJustifier {
- private GlyphJustificationInfo[] info;
- private int start;
- private int limit;
- static boolean DEBUG = false;
- public static final int MAX_PRIORITY = 3;
-
- TextJustifier(GlyphJustificationInfo[] var1, int var2, int var3) {
- this.info = var1;
- this.start = var2;
- this.limit = var3;
- if (DEBUG) {
- System.out.println("start: " + var2 + ", limit: " + var3);
-
- for(int var4 = var2; var4 < var3; ++var4) {
- GlyphJustificationInfo var5 = var1[var4];
- System.out.println("w: " + var5.weight + ", gp: " + var5.growPriority + ", gll: " + var5.growLeftLimit + ", grl: " + var5.growRightLimit);
- }
- }
-
- }
-
- public float[] justify(float var1) {
- float[] var2 = new float[this.info.length * 2];
- boolean var3 = var1 > 0.0F;
- if (DEBUG) {
- System.out.println("delta: " + var1);
- }
-
- int var4 = -1;
-
- for(int var5 = 0; var1 != 0.0F; ++var5) {
- boolean var6 = var5 > 3;
- if (var6) {
- var5 = var4;
- }
-
- float var7 = 0.0F;
- float var8 = 0.0F;
- float var9 = 0.0F;
-
- for(int var10 = this.start; var10 < this.limit; ++var10) {
- GlyphJustificationInfo var11 = this.info[var10];
- if ((var3 ? var11.growPriority : var11.shrinkPriority) == var5) {
- if (var4 == -1) {
- var4 = var5;
- }
-
- if (var10 != this.start) {
- var7 += var11.weight;
- if (var3) {
- var8 += var11.growLeftLimit;
- if (var11.growAbsorb) {
- var9 += var11.weight;
- }
- } else {
- var8 += var11.shrinkLeftLimit;
- if (var11.shrinkAbsorb) {
- var9 += var11.weight;
- }
- }
- }
-
- if (var10 + 1 != this.limit) {
- var7 += var11.weight;
- if (var3) {
- var8 += var11.growRightLimit;
- if (var11.growAbsorb) {
- var9 += var11.weight;
- }
- } else {
- var8 += var11.shrinkRightLimit;
- if (var11.shrinkAbsorb) {
- var9 += var11.weight;
- }
- }
- }
- }
- }
-
- if (!var3) {
- var8 = -var8;
- }
-
- boolean var21 = var7 == 0.0F || !var6 && var1 < 0.0F == var1 < var8;
- boolean var12 = var21 && var9 > 0.0F;
- float var13 = var1 / var7;
- float var14 = 0.0F;
- if (var21 && var9 > 0.0F) {
- var14 = (var1 - var8) / var9;
- }
-
- if (DEBUG) {
- System.out.println("pass: " + var5 + ", d: " + var1 + ", l: " + var8 + ", w: " + var7 + ", aw: " + var9 + ", wd: " + var13 + ", wa: " + var14 + ", hit: " + (var21 ? "y" : "n"));
- }
-
- int var15 = this.start * 2;
-
- for(int var16 = this.start; var16 < this.limit; ++var16) {
- GlyphJustificationInfo var17 = this.info[var16];
- if ((var3 ? var17.growPriority : var17.shrinkPriority) == var5) {
- if (var16 != this.start) {
- float var18;
- if (var21) {
- var18 = var3 ? var17.growLeftLimit : -var17.shrinkLeftLimit;
- if (var12) {
- var18 += var17.weight * var14;
- }
- } else {
- var18 = var17.weight * var13;
- }
-
- var2[var15] += var18;
- }
-
- ++var15;
- if (var16 + 1 != this.limit) {
- float var23;
- if (var21) {
- var23 = var3 ? var17.growRightLimit : -var17.shrinkRightLimit;
- if (var12) {
- var23 += var17.weight * var14;
- }
- } else {
- var23 = var17.weight * var13;
- }
-
- var2[var15] += var23;
- }
-
- ++var15;
- } else {
- var15 += 2;
- }
- }
-
- if (!var6 && var21 && !var12) {
- var1 -= var8;
- } else {
- var1 = 0.0F;
- }
- }
-
- if (DEBUG) {
- float var19 = 0.0F;
-
- for(int var20 = 0; var20 < var2.length; ++var20) {
- var19 += var2[var20];
- System.out.print(var2[var20] + ", ");
- if (var20 % 20 == 9) {
- System.out.println();
- }
- }
-
- System.out.println("\ntotal: " + var19);
- System.out.println();
- }
-
- return var2;
- }
- }
-