home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / kepler / kepler.jar / WillFun.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-11-20  |  15.5 KB  |  913 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Cursor;
  5. import java.awt.Font;
  6. import java.awt.Frame;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.MediaTracker;
  10. import java.awt.RenderingHints;
  11. import java.awt.Toolkit;
  12. import java.awt.image.ColorModel;
  13. import java.awt.image.ImageObserver;
  14. import java.awt.image.MemoryImageSource;
  15. import java.io.BufferedReader;
  16. import java.io.BufferedWriter;
  17. import java.io.File;
  18. import java.io.FileReader;
  19. import java.io.FileWriter;
  20. import java.io.IOException;
  21. import java.net.MalformedURLException;
  22. import java.net.URL;
  23.  
  24. public class WillFun extends Component {
  25.    static final float OPAQUE = 1.0F;
  26.    static final RenderingHints aaOn;
  27.    static final RenderingHints aaOff;
  28.    public static final Color[] tranBlack;
  29.    public static final int itl = 2;
  30.    public static final int bld = 1;
  31.    public static final int pln = 0;
  32.    public static final Cursor cHair;
  33.    public static final Cursor cHand;
  34.    public static final Cursor cMove;
  35.    public static final Cursor cDefault;
  36.    static boolean isStandalone;
  37.    // $FF: renamed from: ap java.applet.Applet
  38.    static Applet field_0;
  39.    // $FF: renamed from: t java.awt.MediaTracker
  40.    static MediaTracker field_1;
  41.    static int imageNo;
  42.    static final ColorModel rgbCM;
  43.    // $FF: renamed from: f java.awt.Frame
  44.    public static Frame field_2;
  45.    // $FF: renamed from: fG java.awt.Graphics
  46.    public static Graphics field_3;
  47.    public static final String newL = " \b ";
  48.    public static final String ital = " \u0000 ";
  49.    public static final String unItal = " \u0001 ";
  50.    public static final String sup = " \u0002 ";
  51.    public static final String unSup = " \u0003 ";
  52.    public static final String sub = " \u0004 ";
  53.    public static final String unSub = " \u0005 ";
  54.    public static final String tRom = " \u0006 ";
  55.    public static final String helv = " \u0007 ";
  56.    public static final String greek = " \t ";
  57.    public static final String back = " \u000b ";
  58.    public static final String bold = " \f ";
  59.    public static final String unBold = " \r ";
  60.    public static final String from = " \u000e ";
  61.    // $FF: renamed from: to java.lang.String
  62.    public static final String field_4 = " \u000f ";
  63.    public static final String endTo = " \u0010 ";
  64.    public static final String larger = " \u0011 ";
  65.    public static final String smaller = " \u0012 ";
  66.    // $FF: renamed from: up java.lang.String
  67.    public static final String field_5 = " \u0013 ";
  68.    public static final String down = " \u0014 ";
  69.    public static final String drawImage = " \u0015 ";
  70.    public static final String tab = " \u0016 ";
  71.    public static final String infinity = "Γê₧";
  72.    public static final String integral = "Γê½";
  73.    public static final String minus = "ΓêÆ";
  74.    public static Image textIm;
  75.    // $FF: renamed from: x int
  76.    public static int field_6;
  77.    public static int xOffset;
  78.    public static double lineSpacing;
  79.    public static int tabWidth;
  80.  
  81.    public static void imageWait() {
  82.       try {
  83.          field_1.waitForAll();
  84.       } catch (InterruptedException var1) {
  85.       }
  86.    }
  87.  
  88.    public static Image setImage(int var0, int var1) {
  89.       Image var2 = field_0.createImage(var0, var1);
  90.       field_1.addImage(var2, imageNo++);
  91.       return var2;
  92.    }
  93.  
  94.    public static Image loadImage(String var0) {
  95.       Image var1 = null;
  96.       if (isStandalone) {
  97.          var1 = Toolkit.getDefaultToolkit().getImage(var0);
  98.       } else {
  99.          URL var2 = field_0.getDocumentBase();
  100.  
  101.          try {
  102.             var1 = field_0.getImage(new URL(var2, var0));
  103.          } catch (MalformedURLException var4) {
  104.          }
  105.       }
  106.  
  107.       field_1.addImage(var1, imageNo++);
  108.       return var1;
  109.    }
  110.  
  111.    public static Image scaleImage(Image var0, double var1) {
  112.       return var0.getScaledInstance((int)((double)var0.getWidth((ImageObserver)null) * var1), (int)((double)var0.getHeight((ImageObserver)null) * var1), 4);
  113.    }
  114.  
  115.    public static void delay(int var0) {
  116.       long var1 = System.currentTimeMillis();
  117.  
  118.       long var3;
  119.       do {
  120.          var3 = System.currentTimeMillis();
  121.       } while(var3 - var1 <= (long)var0);
  122.  
  123.    }
  124.  
  125.    public static int[] rotatePointIn3D(int var0, int var1, int var2, int var3, int var4, int var5, double var6, double var8, double var10, double var12, double var14) {
  126.       double var18 = (double)(var0 - var3);
  127.       double var20 = (double)(var1 - var4);
  128.       double var24 = (double)var2;
  129.       double var16 = var18 * var6 - var20 * var8;
  130.       double var22 = var18 * var8 + var20 * var6;
  131.       var20 = var22 * var10 - var24 * var12;
  132.       var24 = var22 * var12 + var24 * var10;
  133.       double var26 = (double)500.0F / (var24 + var14);
  134.       int var28 = (int)(var16 * var26) + var3;
  135.       int var29 = (int)(var20 * var26) + var5;
  136.       int[] var30 = new int[]{var28, var29, (int)var24};
  137.       return var30;
  138.    }
  139.  
  140.    public static void rotate2DLineIn3D(int[] var0, int var1, int var2, int[] var3, int[] var4, int var5, int var6, int var7, int var8, int var9, double var10, double var12, double var14, double var16, double var18, int var20) {
  141.       for(int var37 = 0; var37 < var9; ++var37) {
  142.          double var23 = (double)(var3[var37] - var6);
  143.          double var25 = (double)(var4[var37] - var7);
  144.          double var29 = (double)var5;
  145.          double var21 = var23 * var10 - var25 * var12;
  146.          double var27 = var23 * var12 + var25 * var10;
  147.          var25 = var27 * var14 - var29 * var16;
  148.          var29 = var27 * var16 + var29 * var14;
  149.          double var31 = (double)500.0F / (var29 + var18);
  150.          int var34 = (int)(var21 * var31) + var6;
  151.          int var35 = (int)(var25 * var31) + var8;
  152.          if (var34 >= 0 && var34 < var1 && var35 >= 0 && var35 < var2) {
  153.             int var33 = var34 + var35 * var1;
  154.             if (var0[var33] < 220) {
  155.                if (var0[var33] < var20) {
  156.                   var0[var33] = var20;
  157.                } else {
  158.                   var0[var33] += 30;
  159.                }
  160.             } else {
  161.                var0[var33] = 250;
  162.             }
  163.          }
  164.       }
  165.  
  166.    }
  167.  
  168.    public void drawPixels(Graphics var1, int[] var2, int var3, int var4, double var5) {
  169.       if (var5 == (double)1.0F) {
  170.          var1.drawImage(((Component)this).createImage(new MemoryImageSource(var3, var4, rgbCM, var2, 0, var3)), 0, 0, (ImageObserver)null);
  171.       } else {
  172.          var1.drawImage(scaleImage(((Component)this).createImage(new MemoryImageSource(var3, var4, rgbCM, var2, 0, var3)), var5), 0, 0, (ImageObserver)null);
  173.       }
  174.  
  175.    }
  176.  
  177.    public static int[] rainbow(int var0) {
  178.       int[] var1 = new int[256];
  179.  
  180.       for(int var2 = 0; var2 < 256; ++var2) {
  181.          var1[var2] = -16777216 | Color.HSBtoRGB((float)((var0 == -1 ? (double)var2 : (double)(256 - var2)) * 0.64 / (double)256.0F), 1.0F, 1.0F);
  182.       }
  183.  
  184.       return var1;
  185.    }
  186.  
  187.    public static void drawArrow(Graphics var0, int var1, int var2, int var3, int var4, boolean var5) {
  188.       if (var3 <= -5 || var3 >= 5 || var4 <= -5 || var4 >= 5) {
  189.          var1 -= var3 >> 1;
  190.          var2 += var4 >> 1;
  191.          int var6 = var1 + var3;
  192.          int var7 = var2 - var4;
  193.          var0.drawLine(var1, var2, var6, var7);
  194.          double var10;
  195.          double var14;
  196.          if (var5) {
  197.             var0.drawLine(var1, var2 + 1, var6, var7 + 1);
  198.             var0.drawLine(var1 + 1, var2, var6 + 1, var7);
  199.             var0.drawLine(var1, var2 - 1, var6, var7 - 1);
  200.             var0.drawLine(var1 - 1, var2, var6 - 1, var7);
  201.             double var8 = Math.sqrt((double)(var3 * var3 + var4 * var4));
  202.             var14 = (var8 - (double)6.0F) / var8;
  203.             var10 = ((double)1.0F - var14) * (double)0.75F;
  204.          } else {
  205.             var14 = 0.8;
  206.             var10 = 0.15;
  207.          }
  208.  
  209.          var0.drawLine(var6, var7, var1 + (int)(var14 * ((double)var3 - (double)var4 * var10)), var2 - (int)(var14 * ((double)var4 + (double)var3 * var10)));
  210.          var0.drawLine(var6, var7, var1 + (int)(var14 * ((double)var3 + (double)var4 * var10)), var2 - (int)(var14 * ((double)var4 - (double)var3 * var10)));
  211.       }
  212.    }
  213.  
  214.    public static void drawThinArrow(Graphics var0, int var1, int var2, int var3, int var4) {
  215.       var3 -= var1;
  216.       var4 = var2 - var4;
  217.       if (var3 <= -5 || var3 >= 5 || var4 <= -5 || var4 >= 5) {
  218.          int var5 = var1 + var3;
  219.          int var6 = var2 - var4;
  220.          var0.drawLine(var1, var2, var5, var6);
  221.          double var7 = Math.sqrt((double)(var3 * var3 + var4 * var4));
  222.          var7 = (var7 - (double)6.0F) / var7;
  223.          double var9 = ((double)1.0F - var7) * (double)0.75F;
  224.          var0.drawLine(var5, var6, var1 + (int)(var7 * ((double)var3 - (double)var4 * var9)), var2 - (int)(var7 * ((double)var4 + (double)var3 * var9)));
  225.          var0.drawLine(var5, var6, var1 + (int)(var7 * ((double)var3 + (double)var4 * var9)), var2 - (int)(var7 * ((double)var4 - (double)var3 * var9)));
  226.       }
  227.    }
  228.  
  229.    public static void drawDoubleArrow(Graphics var0, int var1, int var2, int var3, int var4) {
  230.       var3 -= var1;
  231.       var4 = var2 - var4;
  232.       if (var3 <= -5 || var3 >= 5 || var4 <= -5 || var4 >= 5) {
  233.          int var5 = var1 + var3;
  234.          int var6 = var2 - var4;
  235.          var0.drawLine(var1, var2, var5, var6);
  236.          double var7 = Math.sqrt((double)(var3 * var3 + var4 * var4));
  237.          var7 = (var7 - (double)6.0F) / var7;
  238.          double var9 = ((double)1.0F - var7) * (double)0.75F;
  239.          double var11 = var9 * (double)var3;
  240.          double var13 = var9 * (double)var4;
  241.          var0.drawLine(var5, var6, var1 + (int)(var7 * (double)var3 - var13), var2 - (int)(var7 * (double)var4 + var11));
  242.          var0.drawLine(var5, var6, var1 + (int)(var7 * (double)var3 + var13), var2 - (int)(var7 * (double)var4 - var11));
  243.          var7 = (double)1.0F - var7;
  244.          var0.drawLine(var1, var2, var1 + (int)(var7 * (double)var3 - var13), var2 - (int)(var7 * (double)var4 + var11));
  245.          var0.drawLine(var1, var2, var1 + (int)(var7 * (double)var3 + var13), var2 - (int)(var7 * (double)var4 - var11));
  246.       }
  247.    }
  248.  
  249.    public static void drawPanel(Graphics var0, int var1, int var2) {
  250.       Color var3 = var0.getColor();
  251.       var0.setColor(var3.brighter().brighter());
  252.       var0.fillRect(0, 0, var1, var2);
  253.  
  254.       for(int var4 = 0; var4 < 2; ++var4) {
  255.          --var2;
  256.          --var1;
  257.          var0.setColor(var3.darker());
  258.          var0.drawLine(var4, 0, var4, var2);
  259.          var0.drawLine(0, var4, var1, var4);
  260.          var0.setColor(var3.brighter());
  261.          var0.drawLine(var4 + 1, var2, var1, var2);
  262.          var0.drawLine(var1, var4 + 1, var1, var2);
  263.       }
  264.  
  265.    }
  266.  
  267.    public static void drawPanel(Graphics var0, int var1, int var2, int var3, int var4) {
  268.       Color var5 = var0.getColor();
  269.       var0.setColor(var5.brighter().brighter());
  270.       var0.fillRect(var1, var2, var3, var4);
  271.       int var6 = var1 + var3;
  272.       int var7 = var2 + var4;
  273.  
  274.       for(int var8 = 0; var8 < 2; ++var8) {
  275.          --var4;
  276.          --var3;
  277.          int var9 = var1 + var8;
  278.          int var10 = var2 + var8;
  279.          var0.setColor(var5.darker());
  280.          var0.drawLine(var9, var2, var9, var7);
  281.          var0.drawLine(var1, var10, var6, var10);
  282.          var0.setColor(var5.brighter());
  283.          var0.drawLine(var9 + 1, var7, var6, var7);
  284.          var0.drawLine(var6, var10 + 1, var6, var7);
  285.       }
  286.  
  287.    }
  288.  
  289.    public static void drawShadow(Graphics var0, int var1, int var2, int var3, int var4) {
  290.       --var4;
  291.       --var3;
  292.       int var5 = 1;
  293.  
  294.       for(int var6 = 0; var6 < 3; ++var6) {
  295.          if (var6 == 2) {
  296.             var5 = 3;
  297.          } else {
  298.             var5 = var6;
  299.          }
  300.  
  301.          ++var1;
  302.          ++var2;
  303.          var0.setColor(tranBlack[var6]);
  304.          var0.drawLine(var1 + 1, var2 + var4, var1 + var3 - var5, var2 + var4);
  305.          var0.drawLine(var1 + var3, var2 + var4 - var5, var1 + var3, var2 + 1);
  306.       }
  307.  
  308.    }
  309.  
  310.    public static void drawBorder(Graphics var0, int var1, int var2) {
  311.       --var2;
  312.       --var1;
  313.       var0.setColor(Color.white);
  314.       var0.drawLine(0, var2, 0, 0);
  315.       var0.drawLine(0, 0, var1, 0);
  316.       var0.setColor(Color.darkGray);
  317.       var0.drawLine(var1, 0, var1, var2);
  318.       var0.drawLine(var1, var2, 0, var2);
  319.    }
  320.  
  321.    public static void showMessage(String var0, String var1, String var2) {
  322.       field_2.setVisible(true);
  323.       field_2.setState(0);
  324.       drawPanel(field_3, field_2.getSize().width - 20, field_2.getSize().height - 40);
  325.       method_0(field_3, 0);
  326.       field_3.setColor(Color.black);
  327.       field_3.drawString(var0, 10, 20);
  328.       field_3.drawString(var1, 10, 35);
  329.       field_3.drawString(var2, 10, 50);
  330.    }
  331.  
  332.    // $FF: renamed from: TF (java.awt.Graphics, int) void
  333.    public static void method_0(Graphics var0, int var1) {
  334.       var0.setFont(new Font("TimesRoman", var1, 12));
  335.    }
  336.  
  337.    // $FF: renamed from: HF (java.awt.Graphics, int) void
  338.    public static void method_1(Graphics var0, int var1) {
  339.       var0.setFont(new Font("SansSerif", var1, 12));
  340.    }
  341.  
  342.    // $FF: renamed from: TF (java.awt.Graphics, int, int) void
  343.    public static void method_2(Graphics var0, int var1, int var2) {
  344.       var0.setFont(new Font("TimesRoman", var1, var2));
  345.    }
  346.  
  347.    // $FF: renamed from: HF (java.awt.Graphics, int, int) void
  348.    public static void method_3(Graphics var0, int var1, int var2) {
  349.       var0.setFont(new Font("Helvetica", var1, var2));
  350.    }
  351.  
  352.    public static int sWidth(Graphics var0, String var1) {
  353.       return var0.getFontMetrics().stringWidth(var1);
  354.    }
  355.  
  356.    public static int dString(Graphics var0, String var1, int var2, int var3) {
  357.       var0.drawString(var1, var2, var3);
  358.       return var2 + sWidth(var0, var1);
  359.    }
  360.  
  361.    public static int dString(Graphics var0, String var1, int var2, int var3, int var4) {
  362.       Font var5 = var0.getFont();
  363.       var0.setFont(new Font(var5.getName(), var4, var5.getSize()));
  364.       var0.drawString(var1, var2, var3);
  365.       var0.setFont(new Font(var5.getName(), var5.getStyle(), var5.getSize()));
  366.       return var2 + sWidth(var0, var1);
  367.    }
  368.  
  369.    public static int subS(Graphics var0, String var1, int var2, int var3) {
  370.       var3 += 4;
  371.       Font var4 = var0.getFont();
  372.       var0.setFont(new Font(var4.getName(), var4.getStyle(), var4.getSize() - 2));
  373.       var2 = dString(var0, var1, var2, var3);
  374.       var0.setFont(new Font(var4.getName(), var4.getStyle(), var4.getSize()));
  375.       var3 -= 4;
  376.       return var2;
  377.    }
  378.  
  379.    public static int supS(Graphics var0, String var1, int var2, int var3) {
  380.       var3 -= 4;
  381.       Font var4 = var0.getFont();
  382.       var0.setFont(new Font(var4.getName(), var4.getStyle(), var4.getSize() - 2));
  383.       var2 = dString(var0, var1, var2, var3);
  384.       var0.setFont(new Font(var4.getName(), var4.getStyle(), var4.getSize()));
  385.       var3 += 4;
  386.       return var2;
  387.    }
  388.  
  389.    public static int symb(Graphics var0, String var1, String var2, int var3, int var4) {
  390.       method_0(var0, 2);
  391.       var3 = dString(var0, var1, var3, var4);
  392.       var3 = subS(var0, var2, var3, var4);
  393.       method_1(var0, 0);
  394.       return var3;
  395.    }
  396.  
  397.    public static String decimalPlaces(double var0, int var2) {
  398.       int var3 = 1;
  399.       double var4 = Math.abs(var0);
  400.  
  401.       for(int var6 = 0; var6 < var2; ++var6) {
  402.          var3 *= 10;
  403.       }
  404.  
  405.       return var0 > (double)0.0F ? Double.toString((double)((int)(var0 * (double)var3 + (double)0.5F)) / (double)var3) : Double.toString((double)((int)(var0 * (double)var3)) / (double)var3);
  406.    }
  407.  
  408.    public static double[] getGridLimits(double[] var0) {
  409.       return getGridLimits(var0[0], var0[1], var0[2], var0[3]);
  410.    }
  411.  
  412.    public static double[] getGridLimits(double var0, double var2, double var4, double var6) {
  413.       MAxisScaling var8 = MAxisScaling.getAxisScaling(var4, var6, false);
  414.       var4 = var8.axisMin;
  415.       var6 = var8.axisMax;
  416.       var8 = MAxisScaling.getAxisScaling(var0, var2, false);
  417.       var0 = var8.axisMin;
  418.       var2 = var8.axisMax;
  419.       double[] var9 = new double[]{var0, var2, var4, var6};
  420.       return var9;
  421.    }
  422.  
  423.    public static double[] drawGrid(Graphics var0, double[] var1, boolean var2, int var3, int var4, int var5, int var6, int var7) {
  424.       return drawGrid(var0, var1[0], var1[1], var1[2], var1[3], var2, var3, var4, var5, var6, var7);
  425.    }
  426.  
  427.    public static double[] drawGrid(Graphics var0, double var1, double var3, double var5, double var7, boolean var9, int var10, int var11, int var12, int var13, int var14) {
  428.       MAxisScaling var15 = MAxisScaling.getAxisScaling(var5, var7, false);
  429.       var5 = var15.axisMin;
  430.       var7 = var15.axisMax;
  431.       Color var18 = var0.getColor();
  432.  
  433.       for(int var19 = 0; var19 < (int)((var7 - var5) / var15.ticInterval); ++var19) {
  434.          double var16 = var5 + (double)(var19 + 1) * var15.ticInterval;
  435.          int var20 = var12 + var14 - (int)((var16 - var5) * (double)var14 / (var7 - var5));
  436.          var0.drawLine(var11, var20, var11 + var13, var20);
  437.          if (var9) {
  438.             var0.setColor(Color.black);
  439.             dSigFigs(var0, var16, var10, var11 - 48, var20 + 5);
  440.             var0.setColor(var18);
  441.          }
  442.       }
  443.  
  444.       var15 = MAxisScaling.getAxisScaling(var1, var3, false);
  445.       var1 = var15.axisMin;
  446.       var3 = var15.axisMax;
  447.       if ((int)((var3 - var1) / var15.ticInterval) > 5) {
  448.          var15.ticInterval *= (double)2.0F;
  449.       }
  450.  
  451.       double var30 = var1;
  452.       int var22 = 3;
  453.  
  454.       for(int var23 = 0; var23 < (int)((var3 - var1) / var15.ticInterval); ++var23) {
  455.          var30 += var15.ticInterval;
  456.          int var24 = var11 + (int)((var30 - var1) * (double)var13 / (var3 - var1));
  457.          var0.drawLine(var24, var12, var24, var12 + var14);
  458.          if (var9) {
  459.             var22 = 3 - var22;
  460.             var0.setColor(Color.black);
  461.             dSigFigs(var0, var30, var10, var24 - 20, var12 + var14 + 15 + var22);
  462.             var0.setColor(var18);
  463.          }
  464.       }
  465.  
  466.       var0.drawLine(var11 + var13, var12, var11 + var13, var12 + var14);
  467.       var0.setColor(Color.black);
  468.       var0.drawLine(var11, var12 + var14, var11 + var13, var12 + var14);
  469.       var0.drawLine(var11, var12, var11, var12 + var14);
  470.       var0.setColor(var18);
  471.       double[] var31 = new double[]{var1, var3, var5, var7};
  472.       return var31;
  473.    }
  474.  
  475.    public static double[] sigFigs(double var0, int var2) {
  476.       if (var0 > (double)0.0F) {
  477.          --var2;
  478.       }
  479.  
  480.       boolean var3 = false;
  481.       int var4 = (int)Math.pow((double)10.0F, (double)var2);
  482.       double var5 = Math.abs(var0);
  483.       int var7 = (int)(Math.log(var5) * 0.434294481903252);
  484.       double var8 = Math.pow((double)10.0F, (double)var7);
  485.       var0 /= var8;
  486.       if (var7 == -1) {
  487.          var0 /= (double)10.0F;
  488.          var7 = 0;
  489.       } else if (var7 == 2) {
  490.          var0 *= (double)100.0F;
  491.          var7 = 0;
  492.       } else if (var7 == 1 || var7 < 0) {
  493.          var0 *= (double)10.0F;
  494.          --var7;
  495.       }
  496.  
  497.       if (var0 > (double)0.0F) {
  498.          var0 = (double)((int)(var0 * (double)var4 + (double)0.5F)) / (double)var4;
  499.       } else {
  500.          var0 = (double)((int)(var0 * (double)var4)) / (double)var4;
  501.       }
  502.  
  503.       if (Math.abs(var0) == (double)10.0F && var7 != 0) {
  504.          var0 /= (double)10.0F;
  505.          ++var7;
  506.       }
  507.  
  508.       double[] var10 = new double[]{var0, (double)var7};
  509.       return var10;
  510.    }
  511.  
  512.    public static int dSigFigs(Graphics var0, double var1, int var3, int var4, int var5) {
  513.       if (var1 == (double)0.0F) {
  514.          return dString(var0, "0.0", var4 + 26, var5);
  515.       } else {
  516.          double[] var6 = new double[2];
  517.          Font var7 = var0.getFont();
  518.          var6 = sigFigs(var1, var3);
  519.          var1 = var6[0];
  520.          int var8 = (int)var6[1];
  521.          if (var8 == 0) {
  522.             var4 += 15;
  523.          }
  524.  
  525.          if (var1 < (double)0.0F) {
  526.             var4 -= 4;
  527.          }
  528.  
  529.          var4 = dString(var0, Double.toString(var1), var4, var5);
  530.          if (var8 != 0) {
  531.             method_1(var0, 0);
  532.             ++var4;
  533.             var4 = dString(var0, "x", var4, var5);
  534.             ++var4;
  535.             var0.setFont(var7);
  536.             var4 = dString(var0, "10", var4, var5);
  537.             var4 = supS(var0, Integer.toString(var8), var4, var5);
  538.          }
  539.  
  540.          return var4;
  541.       }
  542.    }
  543.  
  544.    public static String getWord(String var0, int var1) {
  545.       if (var1 < 1) {
  546.          return "";
  547.       } else {
  548.          var0 = var0 + " ";
  549.          int var2 = 0;
  550.  
  551.          int var4;
  552.          for(int var5 = 0; var2 >= 0; var2 = var4) {
  553.             int var3 = var2;
  554.             var4 = var0.indexOf(32, var2 + 1);
  555.             if (var4 > 0) {
  556.                if (var0.charAt(var2) == ' ') {
  557.                   var3 = var2 + 1;
  558.                }
  559.  
  560.                String var6 = var0.substring(var3, var4);
  561.                ++var5;
  562.                if (var5 == var1) {
  563.                   return var6;
  564.                }
  565.             }
  566.          }
  567.  
  568.          return "";
  569.       }
  570.    }
  571.  
  572.    public static int getWordCount(String var0) {
  573.       var0 = var0 + " ";
  574.       int var1 = 1;
  575.  
  576.       int var2;
  577.       for(var2 = 0; var1 >= 0; var1 = var0.indexOf(32, var1 + 1)) {
  578.          if (var0.charAt(var1 - 1) != ' ') {
  579.             ++var2;
  580.          }
  581.       }
  582.  
  583.       return var2 - 1;
  584.    }
  585.  
  586.    public static int drawPara(Graphics var0, String var1, int var2, int var3, int var4) {
  587.       var1 = var1 + " ";
  588.       Font var5 = var0.getFont();
  589.       String var6 = var5.getName();
  590.       int var7 = var5.getStyle();
  591.       int var8 = var5.getSize();
  592.       field_6 = var2 + xOffset;
  593.       xOffset = 0;
  594.       int var9 = 0;
  595.       int var10 = var2 + var4;
  596.       int var11 = (int)((double)var0.getFontMetrics().getHeight() * lineSpacing);
  597.       boolean var12 = true;
  598.       boolean var13 = false;
  599.       boolean var14 = false;
  600.  
  601.       int var18;
  602.       for(int var16 = 0; var16 >= 0; var16 = var18) {
  603.          var18 = var1.indexOf(32, var16 + 1);
  604.          if (var18 > 0) {
  605.             String var15 = var1.substring(var16, var18);
  606.             var12 = true;
  607.             int var19 = var18 > 1 ? 1 : 0;
  608.             if (var18 - var16 > 1) {
  609.                var12 = false;
  610.                switch (var15.charAt(var19)) {
  611.                   case '\u0000':
  612.                      var7 |= 2;
  613.                      break;
  614.                   case '\u0001':
  615.                      var7 &= -3;
  616.                      break;
  617.                   case '\u0002':
  618.                      var8 -= 2;
  619.                      var3 -= 4;
  620.                      field_6 -= 2;
  621.                      break;
  622.                   case '\u0003':
  623.                      var8 += 2;
  624.                      var3 += 4;
  625.                      field_6 -= 2;
  626.                      break;
  627.                   case '\u0004':
  628.                      var8 -= 2;
  629.                      var3 += 4;
  630.                      field_6 -= 2;
  631.                      break;
  632.                   case '\u0005':
  633.                      var8 += 2;
  634.                      var3 -= 4;
  635.                      field_6 -= 2;
  636.                      break;
  637.                   case '\u0006':
  638.                      var6 = "TimesRoman";
  639.                      var13 = false;
  640.                      break;
  641.                   case '\u0007':
  642.                      var6 = "SansSerif";
  643.                      var13 = false;
  644.                      break;
  645.                   case '\b':
  646.                      field_6 = var2 - var0.getFontMetrics().stringWidth(" ");
  647.                      var3 += var11;
  648.                      break;
  649.                   case '\t':
  650.                      var6 = "TimesRoman";
  651.                      var13 = true;
  652.                      break;
  653.                   case '\n':
  654.                   default:
  655.                      var12 = true;
  656.                      break;
  657.                   case '\u000b':
  658.                      field_6 -= 6;
  659.                      break;
  660.                   case '\f':
  661.                      var7 |= 1;
  662.                      break;
  663.                   case '\r':
  664.                      var7 &= -2;
  665.                      break;
  666.                   case '\u000e':
  667.                      var8 -= 4;
  668.                      var3 += (int)((double)var8 * 0.7);
  669.                      field_6 -= var8 / 3;
  670.                      var9 = field_6;
  671.                      break;
  672.                   case '\u000f':
  673.                      var3 -= (int)((double)var8 * 0.7) + var8;
  674.                      field_6 = var9;
  675.                      break;
  676.                   case '\u0010':
  677.                      var3 += var8 * 1;
  678.                      var8 += 2;
  679.                      break;
  680.                   case '\u0011':
  681.                      var8 += 2;
  682.                      break;
  683.                   case '\u0012':
  684.                      var8 -= 2;
  685.                      break;
  686.                   case '\u0013':
  687.                      var3 -= var11 / 2;
  688.                      break;
  689.                   case '\u0014':
  690.                      var3 += var11 / 2;
  691.                      break;
  692.                   case '\u0015':
  693.                      var14 = true;
  694.                      break;
  695.                   case '\u0016':
  696.                      field_6 = (field_6 + tabWidth) / tabWidth * tabWidth;
  697.                }
  698.             }
  699.  
  700.             if (var12) {
  701.                if ((var7 & 2) != 0) {
  702.                   var15 = var15 + " ";
  703.                }
  704.  
  705.                int var20 = var0.getFontMetrics().stringWidth(var15);
  706.                if (field_6 + var20 > var10) {
  707.                   var3 += var11;
  708.                   field_6 = var2 - var0.getFontMetrics().stringWidth(" ");
  709.                }
  710.  
  711.                if (var13) {
  712.                   for(int var21 = 1; var21 < var15.length(); ++var21) {
  713.                      String var22 = "" + (char)(var15.charAt(var21) + 848);
  714.                      var0.drawString(var22, field_6, var3);
  715.                      field_6 += var0.getFontMetrics().stringWidth(var22);
  716.                   }
  717.                } else {
  718.                   var0.drawString(var15, field_6, var3);
  719.                   field_6 += var20;
  720.                }
  721.             } else {
  722.                if (var14 && textIm != null) {
  723.                   var0.drawImage(textIm, field_6, var3 - var11 * 3 / 4, (ImageObserver)null);
  724.                   field_6 += textIm.getWidth((ImageObserver)null);
  725.                   var14 = false;
  726.                }
  727.  
  728.                var0.setFont(new Font(var6, var7, var8));
  729.             }
  730.          }
  731.       }
  732.  
  733.       var0.setFont(var5);
  734.       return var3;
  735.    }
  736.  
  737.    public static String stripVowelsSpaces(String var0) {
  738.       String var1 = "";
  739.  
  740.       for(int var2 = 0; var2 < var0.length(); ++var2) {
  741.          char var3 = var0.charAt(var2);
  742.          if (var3 != 'a' && var3 != 'e' && var3 != 'i' && var3 != 'o' && var3 != 'u' && var3 != ' ' && var3 != 'A' && var3 != 'E' && var3 != 'I' && var3 != 'O' && var3 != 'U') {
  743.             var1 = var1 + var3;
  744.          }
  745.       }
  746.  
  747.       return var1;
  748.    }
  749.  
  750.    public static boolean checkAnswer(String var0, String var1) {
  751.       if (var0.length() < 1) {
  752.          return false;
  753.       } else {
  754.          String var2 = stripVowelsSpaces(var0);
  755.          String var3 = stripVowelsSpaces(var1);
  756.          int var4 = var3.length();
  757.          int var5 = var2.length();
  758.          if (var3.charAt(var4 - 1) == '*') {
  759.             --var4;
  760.             if (var5 < var4) {
  761.                return false;
  762.             }
  763.  
  764.             var5 = var4;
  765.          } else if (var5 != var4) {
  766.             return false;
  767.          }
  768.  
  769.          return var2.substring(0, var5).equalsIgnoreCase(var3.substring(0, var4));
  770.       }
  771.    }
  772.  
  773.    public static double max(double[] var0) {
  774.       double var1 = -1.0E99;
  775.  
  776.       for(int var3 = 0; var3 < var0.length; ++var3) {
  777.          if (var0[var3] > var1) {
  778.             var1 = var0[var3];
  779.          }
  780.       }
  781.  
  782.       return var1;
  783.    }
  784.  
  785.    public static double min(double[] var0) {
  786.       double var1 = 1.0E99;
  787.  
  788.       for(int var3 = 0; var3 < var0.length; ++var3) {
  789.          if (var0[var3] < var1) {
  790.             var1 = var0[var3];
  791.          }
  792.       }
  793.  
  794.       return var1;
  795.    }
  796.  
  797.    public static double log10(double var0, double var2) {
  798.       if (var0 == (double)0.0F) {
  799.          return var2;
  800.       } else {
  801.          double var4 = Math.log(var0) * 0.434294481903252;
  802.          return var4 < var2 ? var2 : var4;
  803.       }
  804.    }
  805.  
  806.    public static double log10(double var0) {
  807.       return Math.log(var0) * 0.434294481903252;
  808.    }
  809.  
  810.    public double perp(double[] var1, double[] var2) {
  811.       double var3 = Math.sqrt(var1[0] * var1[0] + var1[1] * var1[1]);
  812.       double var5 = Math.sqrt(var2[0] * var2[0] + var2[1] * var2[1]);
  813.       return var3 != (double)0.0F && var5 != (double)0.0F ? (var1[0] * var2[1] - var1[1] * var2[0]) / var3 / var5 : (double)0.0F;
  814.    }
  815.  
  816.    public double[] vector(double var1, double var3) {
  817.       double[] var5 = new double[]{var1, var3};
  818.       return var5;
  819.    }
  820.  
  821.    public double[][] linInterp(double[] var1, double[] var2, double[] var3, int var4, int var5) {
  822.       double var6 = (var3[var4] - var3[0]) / (double)(var5 - 1);
  823.       double[] var14 = new double[2];
  824.       double[][] var15 = new double[2][var5];
  825.       double var16 = var3[0];
  826.       int var18 = 0;
  827.       int var19 = var5 - 1;
  828.  
  829.       for(int var20 = 0; var18 < var19; ++var20) {
  830.          for(double[] var21 = this.vector(var1[var20 + 1] - var1[var20], var2[var20 + 1] - var2[var20]); var16 < var3[var20 + 1] && var16 >= var3[var20]; var16 += var6) {
  831.             double var10 = (var16 - var3[var20]) / (var3[var20 + 1] - var3[var20]);
  832.             var15[0][var18] = var1[var20] + var10 * var21[0];
  833.             var15[1][var18++] = var2[var20] + var10 * var21[1];
  834.          }
  835.       }
  836.  
  837.       var15[0][var19] = var1[var4];
  838.       var15[1][var19] = var2[var4];
  839.       return var15;
  840.    }
  841.  
  842.    public double[] linInterp(double[] var1, double[] var2, int var3, int var4) {
  843.       double var5 = (var2[var3] - var2[0]) / (double)(var4 - 1);
  844.       double[] var15 = new double[var4];
  845.       double var16 = var2[0];
  846.       int var18 = 0;
  847.       int var19 = var4 - 1;
  848.  
  849.       for(int var20 = 0; var18 < var19; ++var20) {
  850.          for(double var13 = var1[var20 + 1] - var1[var20]; var16 < var2[var20 + 1] && var16 >= var2[var20]; var16 += var5) {
  851.             double var9 = (var16 - var2[var20]) / (var2[var20 + 1] - var2[var20]);
  852.             var15[var18++] = var1[var20] + var9 * var13;
  853.          }
  854.       }
  855.  
  856.       var15[var19] = var1[var3];
  857.       return var15;
  858.    }
  859.  
  860.    public String readIniFile(String var1, String var2) {
  861.       int var3 = var2.length();
  862.  
  863.       try {
  864.          BufferedReader var4 = new BufferedReader(new FileReader(var1));
  865.  
  866.          for(String var5 = var4.readLine(); var5 != null; var5 = var4.readLine()) {
  867.             if (var5.length() >= var3 && var5.substring(0, var3).equalsIgnoreCase(var2)) {
  868.                return var5.substring(var5.indexOf(61) + 1, var5.length());
  869.             }
  870.          }
  871.  
  872.          return null;
  873.       } catch (IOException var6) {
  874.          return null;
  875.       }
  876.    }
  877.  
  878.    public void writeFile(String var1, String[] var2) {
  879.       try {
  880.          File var3 = new File(var1);
  881.          if (var3.exists()) {
  882.             var3.delete();
  883.          }
  884.  
  885.          BufferedWriter var4 = new BufferedWriter(new FileWriter(var1));
  886.  
  887.          for(int var5 = 0; var5 < var2.length; ++var5) {
  888.             var4.write(var2[var5], 0, var2[var5].length());
  889.             var4.newLine();
  890.          }
  891.  
  892.          var4.close();
  893.       } catch (IOException var6) {
  894.          System.out.println("couldn't write to " + var1);
  895.       }
  896.  
  897.    }
  898.  
  899.    static {
  900.       aaOn = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  901.       aaOff = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
  902.       tranBlack = new Color[]{new Color(0, 0, 0, 240), new Color(0, 0, 0, 160), new Color(0, 0, 0, 80)};
  903.       cHair = new Cursor(1);
  904.       cHand = new Cursor(12);
  905.       cMove = new Cursor(13);
  906.       cDefault = new Cursor(0);
  907.       rgbCM = ColorModel.getRGBdefault();
  908.       xOffset = 0;
  909.       lineSpacing = (double)1.0F;
  910.       tabWidth = 30;
  911.    }
  912. }
  913.