home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / geom / AffineTransform.class (.txt) next >
Encoding:
Java Class File  |  1979-12-31  |  16.2 KB  |  1,960 lines

  1. package java.awt.geom;
  2.  
  3. import java.awt.Shape;
  4. import java.io.IOException;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.io.Serializable;
  8.  
  9. public class AffineTransform implements Cloneable, Serializable {
  10.    public static final int TYPE_IDENTITY = 0;
  11.    public static final int TYPE_TRANSLATION = 1;
  12.    public static final int TYPE_UNIFORM_SCALE = 2;
  13.    public static final int TYPE_GENERAL_SCALE = 4;
  14.    public static final int TYPE_MASK_SCALE = 6;
  15.    public static final int TYPE_FLIP = 64;
  16.    public static final int TYPE_QUADRANT_ROTATION = 8;
  17.    public static final int TYPE_GENERAL_ROTATION = 16;
  18.    public static final int TYPE_MASK_ROTATION = 24;
  19.    public static final int TYPE_GENERAL_TRANSFORM = 32;
  20.    static final int APPLY_IDENTITY = 0;
  21.    static final int APPLY_TRANSLATE = 1;
  22.    static final int APPLY_SCALE = 2;
  23.    static final int APPLY_SHEAR = 4;
  24.    private static final int HI_SHIFT = 3;
  25.    private static final int HI_IDENTITY = 0;
  26.    private static final int HI_TRANSLATE = 8;
  27.    private static final int HI_SCALE = 16;
  28.    private static final int HI_SHEAR = 32;
  29.    double m00;
  30.    double m10;
  31.    double m01;
  32.    double m11;
  33.    double m02;
  34.    double m12;
  35.    transient int state;
  36.    private static int[] rot90conversion = new int[]{4, 5, 4, 5, 2, 3, 6, 7};
  37.  
  38.    private AffineTransform(double var1, double var3, double var5, double var7, double var9, double var11, int var13) {
  39.       this.m00 = var1;
  40.       this.m10 = var3;
  41.       this.m01 = var5;
  42.       this.m11 = var7;
  43.       this.m02 = var9;
  44.       this.m12 = var11;
  45.       this.state = var13;
  46.    }
  47.  
  48.    public AffineTransform() {
  49.       this.m00 = this.m11 = (double)1.0F;
  50.    }
  51.  
  52.    public AffineTransform(AffineTransform var1) {
  53.       this.m00 = var1.m00;
  54.       this.m10 = var1.m10;
  55.       this.m01 = var1.m01;
  56.       this.m11 = var1.m11;
  57.       this.m02 = var1.m02;
  58.       this.m12 = var1.m12;
  59.       this.state = var1.state;
  60.    }
  61.  
  62.    public AffineTransform(float var1, float var2, float var3, float var4, float var5, float var6) {
  63.       this.m00 = (double)var1;
  64.       this.m10 = (double)var2;
  65.       this.m01 = (double)var3;
  66.       this.m11 = (double)var4;
  67.       this.m02 = (double)var5;
  68.       this.m12 = (double)var6;
  69.       this.updateState();
  70.    }
  71.  
  72.    public AffineTransform(float[] var1) {
  73.       this.m00 = (double)var1[0];
  74.       this.m10 = (double)var1[1];
  75.       this.m01 = (double)var1[2];
  76.       this.m11 = (double)var1[3];
  77.       if (var1.length > 5) {
  78.          this.m02 = (double)var1[4];
  79.          this.m12 = (double)var1[5];
  80.       }
  81.  
  82.       this.updateState();
  83.    }
  84.  
  85.    public AffineTransform(double var1, double var3, double var5, double var7, double var9, double var11) {
  86.       this.m00 = var1;
  87.       this.m10 = var3;
  88.       this.m01 = var5;
  89.       this.m11 = var7;
  90.       this.m02 = var9;
  91.       this.m12 = var11;
  92.       this.updateState();
  93.    }
  94.  
  95.    public AffineTransform(double[] var1) {
  96.       this.m00 = var1[0];
  97.       this.m10 = var1[1];
  98.       this.m01 = var1[2];
  99.       this.m11 = var1[3];
  100.       if (var1.length > 5) {
  101.          this.m02 = var1[4];
  102.          this.m12 = var1[5];
  103.       }
  104.  
  105.       this.updateState();
  106.    }
  107.  
  108.    public static AffineTransform getTranslateInstance(double var0, double var2) {
  109.       AffineTransform var4 = new AffineTransform();
  110.       var4.setToTranslation(var0, var2);
  111.       return var4;
  112.    }
  113.  
  114.    public static AffineTransform getRotateInstance(double var0) {
  115.       AffineTransform var2 = new AffineTransform();
  116.       var2.setToRotation(var0);
  117.       return var2;
  118.    }
  119.  
  120.    public static AffineTransform getRotateInstance(double var0, double var2, double var4) {
  121.       AffineTransform var6 = new AffineTransform();
  122.       var6.setToRotation(var0, var2, var4);
  123.       return var6;
  124.    }
  125.  
  126.    public static AffineTransform getScaleInstance(double var0, double var2) {
  127.       AffineTransform var4 = new AffineTransform();
  128.       var4.setToScale(var0, var2);
  129.       return var4;
  130.    }
  131.  
  132.    public static AffineTransform getShearInstance(double var0, double var2) {
  133.       AffineTransform var4 = new AffineTransform();
  134.       var4.setToShear(var0, var2);
  135.       return var4;
  136.    }
  137.  
  138.    public int getType() {
  139.       int var1 = 0;
  140.       switch (this.state) {
  141.          case 0:
  142.             break;
  143.          case 1:
  144.             var1 = 1;
  145.             break;
  146.          case 3:
  147.             var1 = 1;
  148.          case 2:
  149.             double var16;
  150.             boolean var12 = (var16 = this.m00) >= (double)0.0F;
  151.             double var18;
  152.             boolean var14 = (var18 = this.m11) >= (double)0.0F;
  153.             if (var12 == var14) {
  154.                if (var12) {
  155.                   if (var16 == var18) {
  156.                      var1 |= 2;
  157.                   } else {
  158.                      var1 |= 4;
  159.                   }
  160.                } else if (var16 == var18) {
  161.                   var1 |= 10;
  162.                } else {
  163.                   var1 |= 12;
  164.                }
  165.             } else if (var16 == -var18) {
  166.                if (var16 != (double)1.0F && var16 != (double)-1.0F) {
  167.                   var1 |= 66;
  168.                } else {
  169.                   var1 |= 64;
  170.                }
  171.             } else {
  172.                var1 |= 68;
  173.             }
  174.             break;
  175.          case 5:
  176.             var1 = 1;
  177.          case 4:
  178.             double var4;
  179.             boolean var2 = (var4 = this.m01) >= (double)0.0F;
  180.             double var6;
  181.             boolean var3 = (var6 = this.m10) >= (double)0.0F;
  182.             if (var2 != var3) {
  183.                if (var4 == -var6) {
  184.                   var1 |= 10;
  185.                } else {
  186.                   var1 |= 12;
  187.                }
  188.             } else if (var4 == var6) {
  189.                var1 |= 74;
  190.             } else {
  191.                var1 |= 76;
  192.             }
  193.             break;
  194.          default:
  195.             this.stateError();
  196.          case 7:
  197.             var1 = 1;
  198.          case 6:
  199.             double var8;
  200.             double var10;
  201.             double var17;
  202.             double var19;
  203.             if ((var17 = this.m00) * (var8 = this.m01) + (var10 = this.m10) * (var19 = this.m11) != (double)0.0F) {
  204.                return 32;
  205.             }
  206.  
  207.             boolean var13 = var17 >= (double)0.0F;
  208.             boolean var15 = var19 >= (double)0.0F;
  209.             if (var13 == var15) {
  210.                if (var17 == var19 && var8 == -var10) {
  211.                   if (var17 * var19 - var8 * var10 != (double)1.0F) {
  212.                      var1 |= 18;
  213.                   } else {
  214.                      var1 |= 16;
  215.                   }
  216.                } else {
  217.                   var1 |= 20;
  218.                }
  219.             } else if (var17 == -var19 && var8 == var10) {
  220.                if (var17 * var19 - var8 * var10 != (double)1.0F) {
  221.                   var1 |= 82;
  222.                } else {
  223.                   var1 |= 80;
  224.                }
  225.             } else {
  226.                var1 |= 84;
  227.             }
  228.       }
  229.  
  230.       return var1;
  231.    }
  232.  
  233.    public double getDeterminant() {
  234.       switch (this.state) {
  235.          case 0:
  236.          case 1:
  237.             return (double)1.0F;
  238.          case 2:
  239.          case 3:
  240.             return this.m00 * this.m11;
  241.          case 4:
  242.          case 5:
  243.             return -(this.m01 * this.m10);
  244.          default:
  245.             this.stateError();
  246.          case 6:
  247.          case 7:
  248.             return this.m00 * this.m11 - this.m01 * this.m10;
  249.       }
  250.    }
  251.  
  252.    void updateState() {
  253.       if (this.m01 == (double)0.0F && this.m10 == (double)0.0F) {
  254.          if (this.m00 == (double)1.0F && this.m11 == (double)1.0F) {
  255.             if (this.m02 == (double)0.0F && this.m12 == (double)0.0F) {
  256.                this.state = 0;
  257.             } else {
  258.                this.state = 1;
  259.             }
  260.          } else if (this.m02 == (double)0.0F && this.m12 == (double)0.0F) {
  261.             this.state = 2;
  262.          } else {
  263.             this.state = 3;
  264.          }
  265.       } else if (this.m00 == (double)0.0F && this.m11 == (double)0.0F) {
  266.          if (this.m02 == (double)0.0F && this.m12 == (double)0.0F) {
  267.             this.state = 4;
  268.          } else {
  269.             this.state = 5;
  270.          }
  271.       } else if (this.m02 == (double)0.0F && this.m12 == (double)0.0F) {
  272.          this.state = 6;
  273.       } else {
  274.          this.state = 7;
  275.       }
  276.  
  277.    }
  278.  
  279.    private void stateError() {
  280.       throw new InternalError("missing case in transform state switch");
  281.    }
  282.  
  283.    public void getMatrix(double[] var1) {
  284.       var1[0] = this.m00;
  285.       var1[1] = this.m10;
  286.       var1[2] = this.m01;
  287.       var1[3] = this.m11;
  288.       if (var1.length > 5) {
  289.          var1[4] = this.m02;
  290.          var1[5] = this.m12;
  291.       }
  292.  
  293.    }
  294.  
  295.    public double getScaleX() {
  296.       return this.m00;
  297.    }
  298.  
  299.    public double getScaleY() {
  300.       return this.m11;
  301.    }
  302.  
  303.    public double getShearX() {
  304.       return this.m01;
  305.    }
  306.  
  307.    public double getShearY() {
  308.       return this.m10;
  309.    }
  310.  
  311.    public double getTranslateX() {
  312.       return this.m02;
  313.    }
  314.  
  315.    public double getTranslateY() {
  316.       return this.m12;
  317.    }
  318.  
  319.    public void translate(double var1, double var3) {
  320.       switch (this.state) {
  321.          case 0:
  322.             this.m02 = var1;
  323.             this.m12 = var3;
  324.             this.state = 1;
  325.             return;
  326.          case 1:
  327.             this.m02 += var1;
  328.             this.m12 += var3;
  329.             return;
  330.          case 2:
  331.             this.m02 = var1 * this.m00;
  332.             this.m12 = var3 * this.m11;
  333.             this.state = 3;
  334.             return;
  335.          case 3:
  336.             this.m02 += var1 * this.m00;
  337.             this.m12 += var3 * this.m11;
  338.             return;
  339.          case 4:
  340.             this.m02 = var3 * this.m01;
  341.             this.m12 = var1 * this.m10;
  342.             this.state = 5;
  343.             return;
  344.          case 5:
  345.             this.m02 += var3 * this.m01;
  346.             this.m12 += var1 * this.m10;
  347.             return;
  348.          case 6:
  349.             this.m02 = var1 * this.m00 + var3 * this.m01;
  350.             this.m12 = var1 * this.m10 + var3 * this.m11;
  351.             this.state = 7;
  352.             return;
  353.          default:
  354.             this.stateError();
  355.          case 7:
  356.             this.m02 += var1 * this.m00 + var3 * this.m01;
  357.             this.m12 += var1 * this.m10 + var3 * this.m11;
  358.       }
  359.    }
  360.  
  361.    public void rotate(double var1) {
  362.       double var3 = Math.sin(var1);
  363.       double var5 = Math.cos(var1);
  364.       if (!(Math.abs(var3) < 1.0E-15)) {
  365.          if (Math.abs(var5) < 1.0E-15) {
  366.             if (var3 < (double)0.0F) {
  367.                double var13 = this.m00;
  368.                this.m00 = -this.m01;
  369.                this.m01 = var13;
  370.                var13 = this.m10;
  371.                this.m10 = -this.m11;
  372.                this.m11 = var13;
  373.             } else {
  374.                double var15 = this.m00;
  375.                this.m00 = this.m01;
  376.                this.m01 = -var15;
  377.                var15 = this.m10;
  378.                this.m10 = this.m11;
  379.                this.m11 = -var15;
  380.             }
  381.  
  382.             this.state = rot90conversion[this.state];
  383.          } else {
  384.             double var11 = this.m00;
  385.             double var9 = this.m01;
  386.             this.m00 = var5 * var11 + var3 * var9;
  387.             this.m01 = -var3 * var11 + var5 * var9;
  388.             var11 = this.m10;
  389.             var9 = this.m11;
  390.             this.m10 = var5 * var11 + var3 * var9;
  391.             this.m11 = -var3 * var11 + var5 * var9;
  392.             this.updateState();
  393.          }
  394.       } else {
  395.          if (var5 < (double)0.0F) {
  396.             this.m00 = -this.m00;
  397.             this.m11 = -this.m11;
  398.             int var7 = this.state;
  399.             if ((var7 & 4) != 0) {
  400.                this.m01 = -this.m01;
  401.                this.m10 = -this.m10;
  402.             } else if (this.m00 == (double)1.0F && this.m11 == (double)1.0F) {
  403.                this.state = var7 & -3;
  404.             } else {
  405.                this.state = var7 | 2;
  406.             }
  407.          }
  408.  
  409.       }
  410.    }
  411.  
  412.    public void rotate(double var1, double var3, double var5) {
  413.       this.translate(var3, var5);
  414.       this.rotate(var1);
  415.       this.translate(-var3, -var5);
  416.    }
  417.  
  418.    public void scale(double var1, double var3) {
  419.       int var5 = this.state;
  420.       switch (var5) {
  421.          case 0:
  422.          case 1:
  423.             this.m00 = var1;
  424.             this.m11 = var3;
  425.             this.state = var5 | 2;
  426.             return;
  427.          case 2:
  428.          case 3:
  429.             this.m00 *= var1;
  430.             this.m11 *= var3;
  431.             return;
  432.          default:
  433.             this.stateError();
  434.          case 6:
  435.          case 7:
  436.             this.m00 *= var1;
  437.             this.m11 *= var3;
  438.          case 4:
  439.          case 5:
  440.             this.m01 *= var3;
  441.             this.m10 *= var1;
  442.       }
  443.    }
  444.  
  445.    public void shear(double var1, double var3) {
  446.       int var5 = this.state;
  447.       switch (var5) {
  448.          case 0:
  449.          case 1:
  450.             this.m01 = var1;
  451.             this.m10 = var3;
  452.             this.state = var5 | 2 | 4;
  453.             return;
  454.          case 2:
  455.          case 3:
  456.             this.m01 = this.m00 * var1;
  457.             this.m10 = this.m11 * var3;
  458.             this.state = var5 | 4;
  459.             return;
  460.          case 4:
  461.          case 5:
  462.             this.m00 = this.m01 * var3;
  463.             this.m11 = this.m10 * var1;
  464.             this.state = var5 | 2;
  465.             return;
  466.          default:
  467.             this.stateError();
  468.          case 6:
  469.          case 7:
  470.             double var6 = this.m00;
  471.             double var8 = this.m01;
  472.             this.m00 = var6 + var8 * var3;
  473.             this.m01 = var6 * var1 + var8;
  474.             var6 = this.m10;
  475.             var8 = this.m11;
  476.             this.m10 = var6 + var8 * var3;
  477.             this.m11 = var6 * var1 + var8;
  478.       }
  479.    }
  480.  
  481.    public void setToIdentity() {
  482.       this.m00 = this.m11 = (double)1.0F;
  483.       this.m10 = this.m01 = this.m02 = this.m12 = (double)0.0F;
  484.       this.state = 0;
  485.    }
  486.  
  487.    public void setToTranslation(double var1, double var3) {
  488.       this.m00 = (double)1.0F;
  489.       this.m10 = (double)0.0F;
  490.       this.m01 = (double)0.0F;
  491.       this.m11 = (double)1.0F;
  492.       this.m02 = var1;
  493.       this.m12 = var3;
  494.       this.state = 1;
  495.    }
  496.  
  497.    public void setToRotation(double var1) {
  498.       this.m02 = (double)0.0F;
  499.       this.m12 = (double)0.0F;
  500.       double var3 = Math.sin(var1);
  501.       double var5 = Math.cos(var1);
  502.       if (Math.abs(var3) < 1.0E-15) {
  503.          this.m01 = this.m10 = (double)0.0F;
  504.          if (var5 < (double)0.0F) {
  505.             this.m00 = this.m11 = (double)-1.0F;
  506.             this.state = 2;
  507.          } else {
  508.             this.m00 = this.m11 = (double)1.0F;
  509.             this.state = 0;
  510.          }
  511.  
  512.       } else if (Math.abs(var5) < 1.0E-15) {
  513.          this.m00 = this.m11 = (double)0.0F;
  514.          if (var3 < (double)0.0F) {
  515.             this.m01 = (double)1.0F;
  516.             this.m10 = (double)-1.0F;
  517.          } else {
  518.             this.m01 = (double)-1.0F;
  519.             this.m10 = (double)1.0F;
  520.          }
  521.  
  522.          this.state = 4;
  523.       } else {
  524.          this.m00 = var5;
  525.          this.m01 = -var3;
  526.          this.m10 = var3;
  527.          this.m11 = var5;
  528.          this.state = 6;
  529.       }
  530.    }
  531.  
  532.    public void setToRotation(double var1, double var3, double var5) {
  533.       this.setToRotation(var1);
  534.       double var7 = this.m10;
  535.       double var9 = (double)1.0F - this.m00;
  536.       this.m02 = var3 * var9 + var5 * var7;
  537.       this.m12 = var5 * var9 - var3 * var7;
  538.       this.state |= 1;
  539.    }
  540.  
  541.    public void setToScale(double var1, double var3) {
  542.       this.m00 = var1;
  543.       this.m10 = (double)0.0F;
  544.       this.m01 = (double)0.0F;
  545.       this.m11 = var3;
  546.       this.m02 = (double)0.0F;
  547.       this.m12 = (double)0.0F;
  548.       this.state = 2;
  549.    }
  550.  
  551.    public void setToShear(double var1, double var3) {
  552.       this.m00 = (double)1.0F;
  553.       this.m01 = var1;
  554.       this.m10 = var3;
  555.       this.m11 = (double)1.0F;
  556.       this.m02 = (double)0.0F;
  557.       this.m12 = (double)0.0F;
  558.       this.state = 6;
  559.    }
  560.  
  561.    public void setTransform(AffineTransform var1) {
  562.       this.m00 = var1.m00;
  563.       this.m10 = var1.m10;
  564.       this.m01 = var1.m01;
  565.       this.m11 = var1.m11;
  566.       this.m02 = var1.m02;
  567.       this.m12 = var1.m12;
  568.       this.state = var1.state;
  569.    }
  570.  
  571.    public void setTransform(double var1, double var3, double var5, double var7, double var9, double var11) {
  572.       this.m00 = var1;
  573.       this.m10 = var3;
  574.       this.m01 = var5;
  575.       this.m11 = var7;
  576.       this.m02 = var9;
  577.       this.m12 = var11;
  578.       this.updateState();
  579.    }
  580.  
  581.    public void concatenate(AffineTransform var1) {
  582.       int var18 = this.state;
  583.       int var19 = var1.state;
  584.       switch (var19 << 3 | var18) {
  585.          case 0:
  586.          case 1:
  587.          case 2:
  588.          case 3:
  589.          case 4:
  590.          case 5:
  591.          case 6:
  592.          case 7:
  593.             return;
  594.          case 9:
  595.             this.m02 += var1.m02;
  596.             this.m12 += var1.m12;
  597.             return;
  598.          case 10:
  599.             this.m02 = var1.m02 * this.m00;
  600.             this.m12 = var1.m12 * this.m11;
  601.             this.state = 3;
  602.             return;
  603.          case 11:
  604.             this.m02 += var1.m02 * this.m00;
  605.             this.m12 += var1.m12 * this.m11;
  606.             return;
  607.          case 12:
  608.             this.m02 = var1.m12 * this.m01;
  609.             this.m12 = var1.m02 * this.m10;
  610.             this.state = 5;
  611.             return;
  612.          case 13:
  613.             this.m02 += var1.m12 * this.m01;
  614.             this.m12 += var1.m02 * this.m10;
  615.             return;
  616.          case 14:
  617.             double var32 = var1.m02;
  618.             double var34 = var1.m12;
  619.             this.m02 = var32 * this.m00 + var34 * this.m01;
  620.             this.m12 = var32 * this.m10 + var34 * this.m11;
  621.             this.state = 7;
  622.             return;
  623.          case 15:
  624.             double var14 = var1.m02;
  625.             double var16 = var1.m12;
  626.             this.m02 += var14 * this.m00 + var16 * this.m01;
  627.             this.m12 += var14 * this.m10 + var16 * this.m11;
  628.             return;
  629.          case 17:
  630.             this.m00 = var1.m00;
  631.             this.m11 = var1.m11;
  632.             this.state = 3;
  633.             return;
  634.          case 18:
  635.          case 19:
  636.             this.m00 *= var1.m00;
  637.             this.m11 *= var1.m11;
  638.             return;
  639.          case 20:
  640.          case 21:
  641.             this.m01 *= var1.m11;
  642.             this.m10 *= var1.m00;
  643.             return;
  644.          case 22:
  645.          case 23:
  646.             double var6 = var1.m00;
  647.             double var12 = var1.m11;
  648.             this.m00 *= var6;
  649.             this.m11 *= var12;
  650.             this.m01 *= var12;
  651.             this.m10 *= var6;
  652.             return;
  653.          case 25:
  654.          case 26:
  655.          case 27:
  656.          case 28:
  657.          case 29:
  658.          case 30:
  659.          case 31:
  660.          case 41:
  661.          case 42:
  662.          case 43:
  663.          case 44:
  664.          case 45:
  665.          case 46:
  666.          case 47:
  667.          case 49:
  668.          case 50:
  669.          case 51:
  670.          case 52:
  671.          case 53:
  672.          case 54:
  673.          case 55:
  674.          default:
  675.             double var28 = var1.m00;
  676.             double var29 = var1.m01;
  677.             double var33 = var1.m02;
  678.             double var30 = var1.m10;
  679.             double var31 = var1.m11;
  680.             double var35 = var1.m12;
  681.             switch (var18) {
  682.                case 1:
  683.                   this.m00 = var28;
  684.                   this.m01 = var29;
  685.                   this.m02 += var33;
  686.                   this.m10 = var30;
  687.                   this.m11 = var31;
  688.                   this.m12 += var35;
  689.                   this.state = var19 | 1;
  690.                   return;
  691.                case 2:
  692.                case 3:
  693.                   double var23 = this.m00;
  694.                   this.m00 = var28 * var23;
  695.                   this.m01 = var29 * var23;
  696.                   this.m02 += var33 * var23;
  697.                   var23 = this.m11;
  698.                   this.m10 = var30 * var23;
  699.                   this.m11 = var31 * var23;
  700.                   this.m12 += var35 * var23;
  701.                   break;
  702.                case 4:
  703.                case 5:
  704.                   double var21 = this.m01;
  705.                   this.m00 = var30 * var21;
  706.                   this.m01 = var31 * var21;
  707.                   this.m02 += var35 * var21;
  708.                   var21 = this.m10;
  709.                   this.m10 = var28 * var21;
  710.                   this.m11 = var29 * var21;
  711.                   this.m12 += var33 * var21;
  712.                   break;
  713.                default:
  714.                   this.stateError();
  715.                case 6:
  716.                   this.state = var18 | var19;
  717.                case 7:
  718.                   double var25 = this.m00;
  719.                   double var4 = this.m01;
  720.                   this.m00 = var28 * var25 + var30 * var4;
  721.                   this.m01 = var29 * var25 + var31 * var4;
  722.                   this.m02 += var33 * var25 + var35 * var4;
  723.                   var25 = this.m10;
  724.                   var4 = this.m11;
  725.                   this.m10 = var28 * var25 + var30 * var4;
  726.                   this.m11 = var29 * var25 + var31 * var4;
  727.                   this.m12 += var33 * var25 + var35 * var4;
  728.                   return;
  729.             }
  730.  
  731.             this.updateState();
  732.             return;
  733.          case 33:
  734.             this.m00 = (double)0.0F;
  735.             this.m01 = var1.m01;
  736.             this.m10 = var1.m10;
  737.             this.m11 = (double)0.0F;
  738.             this.state = 5;
  739.             return;
  740.          case 34:
  741.          case 35:
  742.             this.m01 = this.m00 * var1.m01;
  743.             this.m00 = (double)0.0F;
  744.             this.m10 = this.m11 * var1.m10;
  745.             this.m11 = (double)0.0F;
  746.             this.state = var18 ^ 6;
  747.             return;
  748.          case 36:
  749.          case 37:
  750.             this.m00 = this.m01 * var1.m10;
  751.             this.m01 = (double)0.0F;
  752.             this.m11 = this.m10 * var1.m01;
  753.             this.m10 = (double)0.0F;
  754.             this.state = var18 ^ 6;
  755.             return;
  756.          case 38:
  757.          case 39:
  758.             double var8 = var1.m01;
  759.             double var10 = var1.m10;
  760.             double var2 = this.m00;
  761.             this.m00 = this.m01 * var10;
  762.             this.m01 = var2 * var8;
  763.             var2 = this.m10;
  764.             this.m10 = this.m11 * var10;
  765.             this.m11 = var2 * var8;
  766.             return;
  767.          case 40:
  768.             this.m02 = var1.m02;
  769.             this.m12 = var1.m12;
  770.          case 32:
  771.             this.m01 = var1.m01;
  772.             this.m10 = var1.m10;
  773.             this.m00 = this.m11 = (double)0.0F;
  774.             this.state = var19;
  775.             return;
  776.          case 48:
  777.             this.m01 = var1.m01;
  778.             this.m10 = var1.m10;
  779.          case 16:
  780.             this.m00 = var1.m00;
  781.             this.m11 = var1.m11;
  782.             this.state = var19;
  783.             return;
  784.          case 56:
  785.             this.m01 = var1.m01;
  786.             this.m10 = var1.m10;
  787.          case 24:
  788.             this.m00 = var1.m00;
  789.             this.m11 = var1.m11;
  790.          case 8:
  791.             this.m02 = var1.m02;
  792.             this.m12 = var1.m12;
  793.             this.state = var19;
  794.       }
  795.    }
  796.  
  797.    public void preConcatenate(AffineTransform var1) {
  798.       int var18 = this.state;
  799.       int var19 = var1.state;
  800.       switch (var19 << 3 | var18) {
  801.          case 0:
  802.          case 1:
  803.          case 2:
  804.          case 3:
  805.          case 4:
  806.          case 5:
  807.          case 6:
  808.          case 7:
  809.             return;
  810.          case 8:
  811.          case 10:
  812.          case 12:
  813.          case 14:
  814.             this.m02 = var1.m02;
  815.             this.m12 = var1.m12;
  816.             this.state = var18 | 1;
  817.             return;
  818.          case 9:
  819.          case 11:
  820.          case 13:
  821.          case 15:
  822.             this.m02 += var1.m02;
  823.             this.m12 += var1.m12;
  824.             return;
  825.          case 16:
  826.          case 17:
  827.             this.state = var18 | 2;
  828.          case 18:
  829.          case 19:
  830.          case 20:
  831.          case 21:
  832.          case 22:
  833.          case 23:
  834.             double var6 = var1.m00;
  835.             double var12 = var1.m11;
  836.             if ((var18 & 4) != 0) {
  837.                this.m01 *= var6;
  838.                this.m10 *= var12;
  839.                if ((var18 & 2) != 0) {
  840.                   this.m00 *= var6;
  841.                   this.m11 *= var12;
  842.                }
  843.             } else {
  844.                this.m00 *= var6;
  845.                this.m11 *= var12;
  846.             }
  847.  
  848.             if ((var18 & 1) != 0) {
  849.                this.m02 *= var6;
  850.                this.m12 *= var12;
  851.             }
  852.  
  853.             return;
  854.          case 24:
  855.          case 25:
  856.          case 26:
  857.          case 27:
  858.          case 28:
  859.          case 29:
  860.          case 30:
  861.          case 31:
  862.          default:
  863.             double var37 = var1.m00;
  864.             double var38 = var1.m01;
  865.             double var14 = var1.m02;
  866.             double var39 = var1.m10;
  867.             double var40 = var1.m11;
  868.             double var16 = var1.m12;
  869.             switch (var18) {
  870.                case 1:
  871.                   double var28 = this.m02;
  872.                   double var33 = this.m12;
  873.                   var14 += var28 * var37 + var33 * var38;
  874.                   var16 += var28 * var39 + var33 * var40;
  875.                case 0:
  876.                   this.m02 = var14;
  877.                   this.m12 = var16;
  878.                   this.m00 = var37;
  879.                   this.m10 = var39;
  880.                   this.m01 = var38;
  881.                   this.m11 = var40;
  882.                   this.state = var18 | var19;
  883.                   return;
  884.                case 3:
  885.                   double var25 = this.m02;
  886.                   double var32 = this.m12;
  887.                   var14 += var25 * var37 + var32 * var38;
  888.                   var16 += var25 * var39 + var32 * var40;
  889.                case 2:
  890.                   this.m02 = var14;
  891.                   this.m12 = var16;
  892.                   double var26 = this.m00;
  893.                   this.m00 = var26 * var37;
  894.                   this.m10 = var26 * var39;
  895.                   var26 = this.m11;
  896.                   this.m01 = var26 * var38;
  897.                   this.m11 = var26 * var40;
  898.                   break;
  899.                case 5:
  900.                   double var22 = this.m02;
  901.                   double var4 = this.m12;
  902.                   var14 += var22 * var37 + var4 * var38;
  903.                   var16 += var22 * var39 + var4 * var40;
  904.                case 4:
  905.                   this.m02 = var14;
  906.                   this.m12 = var16;
  907.                   double var23 = this.m10;
  908.                   this.m00 = var23 * var38;
  909.                   this.m10 = var23 * var40;
  910.                   var23 = this.m01;
  911.                   this.m01 = var23 * var37;
  912.                   this.m11 = var23 * var39;
  913.                   break;
  914.                default:
  915.                   this.stateError();
  916.                case 7:
  917.                   double var29 = this.m02;
  918.                   double var34 = this.m12;
  919.                   var14 += var29 * var37 + var34 * var38;
  920.                   var16 += var29 * var39 + var34 * var40;
  921.                case 6:
  922.                   this.m02 = var14;
  923.                   this.m12 = var16;
  924.                   double var30 = this.m00;
  925.                   double var35 = this.m10;
  926.                   this.m00 = var30 * var37 + var35 * var38;
  927.                   this.m10 = var30 * var39 + var35 * var40;
  928.                   var30 = this.m01;
  929.                   var35 = this.m11;
  930.                   this.m01 = var30 * var37 + var35 * var38;
  931.                   this.m11 = var30 * var39 + var35 * var40;
  932.             }
  933.  
  934.             this.updateState();
  935.             return;
  936.          case 36:
  937.          case 37:
  938.             var18 |= 2;
  939.          case 32:
  940.          case 33:
  941.          case 34:
  942.          case 35:
  943.             this.state = var18 ^ 4;
  944.          case 38:
  945.          case 39:
  946.             double var8 = var1.m01;
  947.             double var10 = var1.m10;
  948.             double var2 = this.m00;
  949.             this.m00 = this.m10 * var8;
  950.             this.m10 = var2 * var10;
  951.             var2 = this.m01;
  952.             this.m01 = this.m11 * var8;
  953.             this.m11 = var2 * var10;
  954.             var2 = this.m02;
  955.             this.m02 = this.m12 * var8;
  956.             this.m12 = var2 * var10;
  957.       }
  958.    }
  959.  
  960.    public AffineTransform createInverse() throws NoninvertibleTransformException {
  961.       switch (this.state) {
  962.          case 0:
  963.             return new AffineTransform();
  964.          case 1:
  965.             return new AffineTransform((double)1.0F, (double)0.0F, (double)0.0F, (double)1.0F, -this.m02, -this.m12, 1);
  966.          case 2:
  967.             if (this.m00 != (double)0.0F && this.m11 != (double)0.0F) {
  968.                return new AffineTransform((double)1.0F / this.m00, (double)0.0F, (double)0.0F, (double)1.0F / this.m11, (double)0.0F, (double)0.0F, 2);
  969.             }
  970.  
  971.             throw new NoninvertibleTransformException("Determinant is 0");
  972.          case 3:
  973.             if (this.m00 != (double)0.0F && this.m11 != (double)0.0F) {
  974.                return new AffineTransform((double)1.0F / this.m00, (double)0.0F, (double)0.0F, (double)1.0F / this.m11, -this.m02 / this.m00, -this.m12 / this.m11, 3);
  975.             }
  976.  
  977.             throw new NoninvertibleTransformException("Determinant is 0");
  978.          case 4:
  979.             if (this.m01 != (double)0.0F && this.m10 != (double)0.0F) {
  980.                return new AffineTransform((double)0.0F, (double)1.0F / this.m01, (double)1.0F / this.m10, (double)0.0F, (double)0.0F, (double)0.0F, 4);
  981.             }
  982.  
  983.             throw new NoninvertibleTransformException("Determinant is 0");
  984.          case 5:
  985.             if (this.m01 != (double)0.0F && this.m10 != (double)0.0F) {
  986.                return new AffineTransform((double)0.0F, (double)1.0F / this.m01, (double)1.0F / this.m10, (double)0.0F, -this.m12 / this.m10, -this.m02 / this.m01, 5);
  987.             }
  988.  
  989.             throw new NoninvertibleTransformException("Determinant is 0");
  990.          case 6:
  991.             double var1 = this.m00 * this.m11 - this.m01 * this.m10;
  992.             if (Math.abs(var1) <= Double.MIN_VALUE) {
  993.                throw new NoninvertibleTransformException("Determinant is " + var1);
  994.             }
  995.  
  996.             return new AffineTransform(this.m11 / var1, -this.m10 / var1, -this.m01 / var1, this.m00 / var1, (double)0.0F, (double)0.0F, 6);
  997.          default:
  998.             this.stateError();
  999.          case 7:
  1000.             double var3 = this.m00 * this.m11 - this.m01 * this.m10;
  1001.             if (Math.abs(var3) <= Double.MIN_VALUE) {
  1002.                throw new NoninvertibleTransformException("Determinant is " + var3);
  1003.             } else {
  1004.                return new AffineTransform(this.m11 / var3, -this.m10 / var3, -this.m01 / var3, this.m00 / var3, (this.m01 * this.m12 - this.m11 * this.m02) / var3, (this.m10 * this.m02 - this.m00 * this.m12) / var3, 7);
  1005.             }
  1006.       }
  1007.    }
  1008.  
  1009.    public Point2D transform(Point2D var1, Point2D var2) {
  1010.       if (var2 == null) {
  1011.          if (var1 instanceof Point2D.Double) {
  1012.             var2 = new Point2D.Double();
  1013.          } else {
  1014.             var2 = new Point2D.Float();
  1015.          }
  1016.       }
  1017.  
  1018.       double var3 = var1.getX();
  1019.       double var5 = var1.getY();
  1020.       switch (this.state) {
  1021.          case 0:
  1022.             ((Point2D)var2).setLocation(var3, var5);
  1023.             return (Point2D)var2;
  1024.          case 1:
  1025.             ((Point2D)var2).setLocation(var3 + this.m02, var5 + this.m12);
  1026.             return (Point2D)var2;
  1027.          case 2:
  1028.             ((Point2D)var2).setLocation(var3 * this.m00, var5 * this.m11);
  1029.             return (Point2D)var2;
  1030.          case 3:
  1031.             ((Point2D)var2).setLocation(var3 * this.m00 + this.m02, var5 * this.m11 + this.m12);
  1032.             return (Point2D)var2;
  1033.          case 4:
  1034.             ((Point2D)var2).setLocation(var5 * this.m01, var3 * this.m10);
  1035.             return (Point2D)var2;
  1036.          case 5:
  1037.             ((Point2D)var2).setLocation(var5 * this.m01 + this.m02, var3 * this.m10 + this.m12);
  1038.             return (Point2D)var2;
  1039.          case 6:
  1040.             ((Point2D)var2).setLocation(var3 * this.m00 + var5 * this.m01, var3 * this.m10 + var5 * this.m11);
  1041.             return (Point2D)var2;
  1042.          default:
  1043.             this.stateError();
  1044.          case 7:
  1045.             ((Point2D)var2).setLocation(var3 * this.m00 + var5 * this.m01 + this.m02, var3 * this.m10 + var5 * this.m11 + this.m12);
  1046.             return (Point2D)var2;
  1047.       }
  1048.    }
  1049.  
  1050.    public void transform(Point2D[] var1, int var2, Point2D[] var3, int var4, int var5) {
  1051.       int var6 = this.state;
  1052.  
  1053.       while(true) {
  1054.          --var5;
  1055.          if (var5 < 0) {
  1056.             return;
  1057.          }
  1058.  
  1059.          Point2D var7 = var1[var2++];
  1060.          double var8 = var7.getX();
  1061.          double var10 = var7.getY();
  1062.          Object var12 = var3[var4++];
  1063.          if (var12 == null) {
  1064.             if (var7 instanceof Point2D.Double) {
  1065.                var12 = new Point2D.Double();
  1066.             } else {
  1067.                var12 = new Point2D.Float();
  1068.             }
  1069.  
  1070.             var3[var4 - 1] = (Point2D)var12;
  1071.          }
  1072.  
  1073.          switch (var6) {
  1074.             case 0:
  1075.                ((Point2D)var12).setLocation(var8, var10);
  1076.                break;
  1077.             case 1:
  1078.                ((Point2D)var12).setLocation(var8 + this.m02, var10 + this.m12);
  1079.                break;
  1080.             case 2:
  1081.                ((Point2D)var12).setLocation(var8 * this.m00, var10 * this.m11);
  1082.                break;
  1083.             case 3:
  1084.                ((Point2D)var12).setLocation(var8 * this.m00 + this.m02, var10 * this.m11 + this.m12);
  1085.                break;
  1086.             case 4:
  1087.                ((Point2D)var12).setLocation(var10 * this.m01, var8 * this.m10);
  1088.                break;
  1089.             case 5:
  1090.                ((Point2D)var12).setLocation(var10 * this.m01 + this.m02, var8 * this.m10 + this.m12);
  1091.                break;
  1092.             case 6:
  1093.                ((Point2D)var12).setLocation(var8 * this.m00 + var10 * this.m01, var8 * this.m10 + var10 * this.m11);
  1094.                break;
  1095.             default:
  1096.                this.stateError();
  1097.             case 7:
  1098.                ((Point2D)var12).setLocation(var8 * this.m00 + var10 * this.m01 + this.m02, var8 * this.m10 + var10 * this.m11 + this.m12);
  1099.          }
  1100.       }
  1101.    }
  1102.  
  1103.    public void transform(float[] var1, int var2, float[] var3, int var4, int var5) {
  1104.       if (var3 == var1 && var4 > var2 && var4 < var2 + var5 * 2) {
  1105.          System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1106.          var2 = var4;
  1107.       }
  1108.  
  1109.       switch (this.state) {
  1110.          case 0:
  1111.             if (var1 != var3 || var2 != var4) {
  1112.                System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1113.             }
  1114.  
  1115.             return;
  1116.          case 1:
  1117.             double var43 = this.m02;
  1118.             double var52 = this.m12;
  1119.  
  1120.             while(true) {
  1121.                --var5;
  1122.                if (var5 < 0) {
  1123.                   return;
  1124.                }
  1125.  
  1126.                var3[var4++] = (float)((double)var1[var2++] + var43);
  1127.                var3[var4++] = (float)((double)var1[var2++] + var52);
  1128.             }
  1129.          case 2:
  1130.             double var37 = this.m00;
  1131.             double var49 = this.m11;
  1132.  
  1133.             while(true) {
  1134.                --var5;
  1135.                if (var5 < 0) {
  1136.                   return;
  1137.                }
  1138.  
  1139.                var3[var4++] = (float)(var37 * (double)var1[var2++]);
  1140.                var3[var4++] = (float)(var49 * (double)var1[var2++]);
  1141.             }
  1142.          case 3:
  1143.             double var36 = this.m00;
  1144.             double var42 = this.m02;
  1145.             double var48 = this.m11;
  1146.             double var51 = this.m12;
  1147.  
  1148.             while(true) {
  1149.                --var5;
  1150.                if (var5 < 0) {
  1151.                   return;
  1152.                }
  1153.  
  1154.                var3[var4++] = (float)(var36 * (double)var1[var2++] + var42);
  1155.                var3[var4++] = (float)(var48 * (double)var1[var2++] + var51);
  1156.             }
  1157.          case 4:
  1158.             double var40 = this.m01;
  1159.             double var46 = this.m10;
  1160.  
  1161.             while(true) {
  1162.                --var5;
  1163.                if (var5 < 0) {
  1164.                   return;
  1165.                }
  1166.  
  1167.                double var55 = (double)var1[var2++];
  1168.                var3[var4++] = (float)(var40 * (double)var1[var2++]);
  1169.                var3[var4++] = (float)(var46 * var55);
  1170.             }
  1171.          case 5:
  1172.             double var39 = this.m01;
  1173.             double var10 = this.m02;
  1174.             double var45 = this.m10;
  1175.             double var16 = this.m12;
  1176.  
  1177.             while(true) {
  1178.                --var5;
  1179.                if (var5 < 0) {
  1180.                   return;
  1181.                }
  1182.  
  1183.                double var54 = (double)var1[var2++];
  1184.                var3[var4++] = (float)(var39 * (double)var1[var2++] + var10);
  1185.                var3[var4++] = (float)(var45 * var54 + var16);
  1186.             }
  1187.          case 6:
  1188.             double var6 = this.m00;
  1189.             double var8 = this.m01;
  1190.             double var12 = this.m10;
  1191.             double var14 = this.m11;
  1192.  
  1193.             while(true) {
  1194.                --var5;
  1195.                if (var5 < 0) {
  1196.                   return;
  1197.                }
  1198.  
  1199.                double var18 = (double)var1[var2++];
  1200.                double var20 = (double)var1[var2++];
  1201.                var3[var4++] = (float)(var6 * var18 + var8 * var20);
  1202.                var3[var4++] = (float)(var12 * var18 + var14 * var20);
  1203.             }
  1204.          default:
  1205.             this.stateError();
  1206.          case 7:
  1207.             double var38 = this.m00;
  1208.             double var41 = this.m01;
  1209.             double var44 = this.m02;
  1210.             double var47 = this.m10;
  1211.             double var50 = this.m11;
  1212.             double var53 = this.m12;
  1213.  
  1214.             while(true) {
  1215.                --var5;
  1216.                if (var5 < 0) {
  1217.                   return;
  1218.                }
  1219.  
  1220.                double var56 = (double)var1[var2++];
  1221.                double var57 = (double)var1[var2++];
  1222.                var3[var4++] = (float)(var38 * var56 + var41 * var57 + var44);
  1223.                var3[var4++] = (float)(var47 * var56 + var50 * var57 + var53);
  1224.             }
  1225.       }
  1226.    }
  1227.  
  1228.    public void transform(double[] var1, int var2, double[] var3, int var4, int var5) {
  1229.       if (var3 == var1 && var4 > var2 && var4 < var2 + var5 * 2) {
  1230.          System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1231.          var2 = var4;
  1232.       }
  1233.  
  1234.       switch (this.state) {
  1235.          case 0:
  1236.             if (var1 != var3 || var2 != var4) {
  1237.                System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1238.             }
  1239.  
  1240.             return;
  1241.          case 1:
  1242.             double var43 = this.m02;
  1243.             double var52 = this.m12;
  1244.  
  1245.             while(true) {
  1246.                --var5;
  1247.                if (var5 < 0) {
  1248.                   return;
  1249.                }
  1250.  
  1251.                var3[var4++] = var1[var2++] + var43;
  1252.                var3[var4++] = var1[var2++] + var52;
  1253.             }
  1254.          case 2:
  1255.             double var37 = this.m00;
  1256.             double var49 = this.m11;
  1257.  
  1258.             while(true) {
  1259.                --var5;
  1260.                if (var5 < 0) {
  1261.                   return;
  1262.                }
  1263.  
  1264.                var3[var4++] = var37 * var1[var2++];
  1265.                var3[var4++] = var49 * var1[var2++];
  1266.             }
  1267.          case 3:
  1268.             double var36 = this.m00;
  1269.             double var42 = this.m02;
  1270.             double var48 = this.m11;
  1271.             double var51 = this.m12;
  1272.  
  1273.             while(true) {
  1274.                --var5;
  1275.                if (var5 < 0) {
  1276.                   return;
  1277.                }
  1278.  
  1279.                var3[var4++] = var36 * var1[var2++] + var42;
  1280.                var3[var4++] = var48 * var1[var2++] + var51;
  1281.             }
  1282.          case 4:
  1283.             double var40 = this.m01;
  1284.             double var46 = this.m10;
  1285.  
  1286.             while(true) {
  1287.                --var5;
  1288.                if (var5 < 0) {
  1289.                   return;
  1290.                }
  1291.  
  1292.                double var55 = var1[var2++];
  1293.                var3[var4++] = var40 * var1[var2++];
  1294.                var3[var4++] = var46 * var55;
  1295.             }
  1296.          case 5:
  1297.             double var39 = this.m01;
  1298.             double var10 = this.m02;
  1299.             double var45 = this.m10;
  1300.             double var16 = this.m12;
  1301.  
  1302.             while(true) {
  1303.                --var5;
  1304.                if (var5 < 0) {
  1305.                   return;
  1306.                }
  1307.  
  1308.                double var54 = var1[var2++];
  1309.                var3[var4++] = var39 * var1[var2++] + var10;
  1310.                var3[var4++] = var45 * var54 + var16;
  1311.             }
  1312.          case 6:
  1313.             double var6 = this.m00;
  1314.             double var8 = this.m01;
  1315.             double var12 = this.m10;
  1316.             double var14 = this.m11;
  1317.  
  1318.             while(true) {
  1319.                --var5;
  1320.                if (var5 < 0) {
  1321.                   return;
  1322.                }
  1323.  
  1324.                double var18 = var1[var2++];
  1325.                double var20 = var1[var2++];
  1326.                var3[var4++] = var6 * var18 + var8 * var20;
  1327.                var3[var4++] = var12 * var18 + var14 * var20;
  1328.             }
  1329.          default:
  1330.             this.stateError();
  1331.          case 7:
  1332.             double var38 = this.m00;
  1333.             double var41 = this.m01;
  1334.             double var44 = this.m02;
  1335.             double var47 = this.m10;
  1336.             double var50 = this.m11;
  1337.             double var53 = this.m12;
  1338.  
  1339.             while(true) {
  1340.                --var5;
  1341.                if (var5 < 0) {
  1342.                   return;
  1343.                }
  1344.  
  1345.                double var56 = var1[var2++];
  1346.                double var57 = var1[var2++];
  1347.                var3[var4++] = var38 * var56 + var41 * var57 + var44;
  1348.                var3[var4++] = var47 * var56 + var50 * var57 + var53;
  1349.             }
  1350.       }
  1351.    }
  1352.  
  1353.    public void transform(float[] var1, int var2, double[] var3, int var4, int var5) {
  1354.       switch (this.state) {
  1355.          case 0:
  1356.             while(true) {
  1357.                --var5;
  1358.                if (var5 < 0) {
  1359.                   return;
  1360.                }
  1361.  
  1362.                var3[var4++] = (double)var1[var2++];
  1363.                var3[var4++] = (double)var1[var2++];
  1364.             }
  1365.          case 1:
  1366.             double var45 = this.m02;
  1367.             double var54 = this.m12;
  1368.  
  1369.             while(true) {
  1370.                --var5;
  1371.                if (var5 < 0) {
  1372.                   return;
  1373.                }
  1374.  
  1375.                var3[var4++] = (double)var1[var2++] + var45;
  1376.                var3[var4++] = (double)var1[var2++] + var54;
  1377.             }
  1378.          case 2:
  1379.             double var39 = this.m00;
  1380.             double var51 = this.m11;
  1381.  
  1382.             while(true) {
  1383.                --var5;
  1384.                if (var5 < 0) {
  1385.                   return;
  1386.                }
  1387.  
  1388.                var3[var4++] = var39 * (double)var1[var2++];
  1389.                var3[var4++] = var51 * (double)var1[var2++];
  1390.             }
  1391.          case 3:
  1392.             double var38 = this.m00;
  1393.             double var44 = this.m02;
  1394.             double var50 = this.m11;
  1395.             double var53 = this.m12;
  1396.  
  1397.             while(true) {
  1398.                --var5;
  1399.                if (var5 < 0) {
  1400.                   return;
  1401.                }
  1402.  
  1403.                var3[var4++] = var38 * (double)var1[var2++] + var44;
  1404.                var3[var4++] = var50 * (double)var1[var2++] + var53;
  1405.             }
  1406.          case 4:
  1407.             double var42 = this.m01;
  1408.             double var48 = this.m10;
  1409.  
  1410.             while(true) {
  1411.                --var5;
  1412.                if (var5 < 0) {
  1413.                   return;
  1414.                }
  1415.  
  1416.                double var57 = (double)var1[var2++];
  1417.                var3[var4++] = var42 * (double)var1[var2++];
  1418.                var3[var4++] = var48 * var57;
  1419.             }
  1420.          case 5:
  1421.             double var41 = this.m01;
  1422.             double var10 = this.m02;
  1423.             double var47 = this.m10;
  1424.             double var16 = this.m12;
  1425.  
  1426.             while(true) {
  1427.                --var5;
  1428.                if (var5 < 0) {
  1429.                   return;
  1430.                }
  1431.  
  1432.                double var56 = (double)var1[var2++];
  1433.                var3[var4++] = var41 * (double)var1[var2++] + var10;
  1434.                var3[var4++] = var47 * var56 + var16;
  1435.             }
  1436.          case 6:
  1437.             double var6 = this.m00;
  1438.             double var8 = this.m01;
  1439.             double var12 = this.m10;
  1440.             double var14 = this.m11;
  1441.  
  1442.             while(true) {
  1443.                --var5;
  1444.                if (var5 < 0) {
  1445.                   return;
  1446.                }
  1447.  
  1448.                double var18 = (double)var1[var2++];
  1449.                double var20 = (double)var1[var2++];
  1450.                var3[var4++] = var6 * var18 + var8 * var20;
  1451.                var3[var4++] = var12 * var18 + var14 * var20;
  1452.             }
  1453.          default:
  1454.             this.stateError();
  1455.          case 7:
  1456.             double var40 = this.m00;
  1457.             double var43 = this.m01;
  1458.             double var46 = this.m02;
  1459.             double var49 = this.m10;
  1460.             double var52 = this.m11;
  1461.             double var55 = this.m12;
  1462.  
  1463.             while(true) {
  1464.                --var5;
  1465.                if (var5 < 0) {
  1466.                   return;
  1467.                }
  1468.  
  1469.                double var58 = (double)var1[var2++];
  1470.                double var59 = (double)var1[var2++];
  1471.                var3[var4++] = var40 * var58 + var43 * var59 + var46;
  1472.                var3[var4++] = var49 * var58 + var52 * var59 + var55;
  1473.             }
  1474.       }
  1475.    }
  1476.  
  1477.    public void transform(double[] var1, int var2, float[] var3, int var4, int var5) {
  1478.       switch (this.state) {
  1479.          case 0:
  1480.             while(true) {
  1481.                --var5;
  1482.                if (var5 < 0) {
  1483.                   return;
  1484.                }
  1485.  
  1486.                var3[var4++] = (float)var1[var2++];
  1487.                var3[var4++] = (float)var1[var2++];
  1488.             }
  1489.          case 1:
  1490.             double var45 = this.m02;
  1491.             double var54 = this.m12;
  1492.  
  1493.             while(true) {
  1494.                --var5;
  1495.                if (var5 < 0) {
  1496.                   return;
  1497.                }
  1498.  
  1499.                var3[var4++] = (float)(var1[var2++] + var45);
  1500.                var3[var4++] = (float)(var1[var2++] + var54);
  1501.             }
  1502.          case 2:
  1503.             double var39 = this.m00;
  1504.             double var51 = this.m11;
  1505.  
  1506.             while(true) {
  1507.                --var5;
  1508.                if (var5 < 0) {
  1509.                   return;
  1510.                }
  1511.  
  1512.                var3[var4++] = (float)(var39 * var1[var2++]);
  1513.                var3[var4++] = (float)(var51 * var1[var2++]);
  1514.             }
  1515.          case 3:
  1516.             double var38 = this.m00;
  1517.             double var44 = this.m02;
  1518.             double var50 = this.m11;
  1519.             double var53 = this.m12;
  1520.  
  1521.             while(true) {
  1522.                --var5;
  1523.                if (var5 < 0) {
  1524.                   return;
  1525.                }
  1526.  
  1527.                var3[var4++] = (float)(var38 * var1[var2++] + var44);
  1528.                var3[var4++] = (float)(var50 * var1[var2++] + var53);
  1529.             }
  1530.          case 4:
  1531.             double var42 = this.m01;
  1532.             double var48 = this.m10;
  1533.  
  1534.             while(true) {
  1535.                --var5;
  1536.                if (var5 < 0) {
  1537.                   return;
  1538.                }
  1539.  
  1540.                double var57 = var1[var2++];
  1541.                var3[var4++] = (float)(var42 * var1[var2++]);
  1542.                var3[var4++] = (float)(var48 * var57);
  1543.             }
  1544.          case 5:
  1545.             double var41 = this.m01;
  1546.             double var10 = this.m02;
  1547.             double var47 = this.m10;
  1548.             double var16 = this.m12;
  1549.  
  1550.             while(true) {
  1551.                --var5;
  1552.                if (var5 < 0) {
  1553.                   return;
  1554.                }
  1555.  
  1556.                double var56 = var1[var2++];
  1557.                var3[var4++] = (float)(var41 * var1[var2++] + var10);
  1558.                var3[var4++] = (float)(var47 * var56 + var16);
  1559.             }
  1560.          case 6:
  1561.             double var6 = this.m00;
  1562.             double var8 = this.m01;
  1563.             double var12 = this.m10;
  1564.             double var14 = this.m11;
  1565.  
  1566.             while(true) {
  1567.                --var5;
  1568.                if (var5 < 0) {
  1569.                   return;
  1570.                }
  1571.  
  1572.                double var18 = var1[var2++];
  1573.                double var20 = var1[var2++];
  1574.                var3[var4++] = (float)(var6 * var18 + var8 * var20);
  1575.                var3[var4++] = (float)(var12 * var18 + var14 * var20);
  1576.             }
  1577.          default:
  1578.             this.stateError();
  1579.          case 7:
  1580.             double var40 = this.m00;
  1581.             double var43 = this.m01;
  1582.             double var46 = this.m02;
  1583.             double var49 = this.m10;
  1584.             double var52 = this.m11;
  1585.             double var55 = this.m12;
  1586.  
  1587.             while(true) {
  1588.                --var5;
  1589.                if (var5 < 0) {
  1590.                   return;
  1591.                }
  1592.  
  1593.                double var58 = var1[var2++];
  1594.                double var59 = var1[var2++];
  1595.                var3[var4++] = (float)(var40 * var58 + var43 * var59 + var46);
  1596.                var3[var4++] = (float)(var49 * var58 + var52 * var59 + var55);
  1597.             }
  1598.       }
  1599.    }
  1600.  
  1601.    public Point2D inverseTransform(Point2D var1, Point2D var2) throws NoninvertibleTransformException {
  1602.       if (var2 == null) {
  1603.          if (var1 instanceof Point2D.Double) {
  1604.             var2 = new Point2D.Double();
  1605.          } else {
  1606.             var2 = new Point2D.Float();
  1607.          }
  1608.       }
  1609.  
  1610.       double var3 = var1.getX();
  1611.       double var5 = var1.getY();
  1612.       switch (this.state) {
  1613.          case 0:
  1614.             ((Point2D)var2).setLocation(var3, var5);
  1615.             return (Point2D)var2;
  1616.          case 1:
  1617.             ((Point2D)var2).setLocation(var3 - this.m02, var5 - this.m12);
  1618.             return (Point2D)var2;
  1619.          case 3:
  1620.             var3 -= this.m02;
  1621.             var5 -= this.m12;
  1622.          case 2:
  1623.             if (this.m00 != (double)0.0F && this.m11 != (double)0.0F) {
  1624.                ((Point2D)var2).setLocation(var3 / this.m00, var5 / this.m11);
  1625.                return (Point2D)var2;
  1626.             }
  1627.  
  1628.             throw new NoninvertibleTransformException("Determinant is 0");
  1629.          case 5:
  1630.             var3 -= this.m02;
  1631.             var5 -= this.m12;
  1632.          case 4:
  1633.             if (this.m01 != (double)0.0F && this.m10 != (double)0.0F) {
  1634.                ((Point2D)var2).setLocation(var5 / this.m10, var3 / this.m01);
  1635.                return (Point2D)var2;
  1636.             }
  1637.  
  1638.             throw new NoninvertibleTransformException("Determinant is 0");
  1639.          default:
  1640.             this.stateError();
  1641.          case 7:
  1642.             var3 -= this.m02;
  1643.             var5 -= this.m12;
  1644.          case 6:
  1645.             double var7 = this.m00 * this.m11 - this.m01 * this.m10;
  1646.             if (Math.abs(var7) <= Double.MIN_VALUE) {
  1647.                throw new NoninvertibleTransformException("Determinant is " + var7);
  1648.             } else {
  1649.                ((Point2D)var2).setLocation((var3 * this.m11 - var5 * this.m01) / var7, (var5 * this.m00 - var3 * this.m10) / var7);
  1650.                return (Point2D)var2;
  1651.             }
  1652.       }
  1653.    }
  1654.  
  1655.    public void inverseTransform(double[] var1, int var2, double[] var3, int var4, int var5) throws NoninvertibleTransformException {
  1656.       if (var3 == var1 && var4 > var2 && var4 < var2 + var5 * 2) {
  1657.          System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1658.          var2 = var4;
  1659.       }
  1660.  
  1661.       switch (this.state) {
  1662.          case 0:
  1663.             if (var1 != var3 || var2 != var4) {
  1664.                System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1665.             }
  1666.  
  1667.             return;
  1668.          case 1:
  1669.             double var45 = this.m02;
  1670.             double var54 = this.m12;
  1671.  
  1672.             while(true) {
  1673.                --var5;
  1674.                if (var5 < 0) {
  1675.                   return;
  1676.                }
  1677.  
  1678.                var3[var4++] = var1[var2++] - var45;
  1679.                var3[var4++] = var1[var2++] - var54;
  1680.             }
  1681.          case 2:
  1682.             double var39 = this.m00;
  1683.             double var51 = this.m11;
  1684.             if (var39 != (double)0.0F && var51 != (double)0.0F) {
  1685.                while(true) {
  1686.                   --var5;
  1687.                   if (var5 < 0) {
  1688.                      return;
  1689.                   }
  1690.  
  1691.                   var3[var4++] = var1[var2++] / var39;
  1692.                   var3[var4++] = var1[var2++] / var51;
  1693.                }
  1694.             }
  1695.  
  1696.             throw new NoninvertibleTransformException("Determinant is 0");
  1697.          case 3:
  1698.             double var38 = this.m00;
  1699.             double var44 = this.m02;
  1700.             double var50 = this.m11;
  1701.             double var53 = this.m12;
  1702.             if (var38 != (double)0.0F && var50 != (double)0.0F) {
  1703.                while(true) {
  1704.                   --var5;
  1705.                   if (var5 < 0) {
  1706.                      return;
  1707.                   }
  1708.  
  1709.                   var3[var4++] = (var1[var2++] - var44) / var38;
  1710.                   var3[var4++] = (var1[var2++] - var53) / var50;
  1711.                }
  1712.             }
  1713.  
  1714.             throw new NoninvertibleTransformException("Determinant is 0");
  1715.          case 4:
  1716.             double var42 = this.m01;
  1717.             double var48 = this.m10;
  1718.             if (var42 != (double)0.0F && var48 != (double)0.0F) {
  1719.                while(true) {
  1720.                   --var5;
  1721.                   if (var5 < 0) {
  1722.                      return;
  1723.                   }
  1724.  
  1725.                   double var58 = var1[var2++];
  1726.                   var3[var4++] = var1[var2++] / var42;
  1727.                   var3[var4++] = var58 / var48;
  1728.                }
  1729.             }
  1730.  
  1731.             throw new NoninvertibleTransformException("Determinant is 0");
  1732.          case 5:
  1733.             double var41 = this.m01;
  1734.             double var10 = this.m02;
  1735.             double var47 = this.m10;
  1736.             double var16 = this.m12;
  1737.             if (var41 != (double)0.0F && var47 != (double)0.0F) {
  1738.                while(true) {
  1739.                   --var5;
  1740.                   if (var5 < 0) {
  1741.                      return;
  1742.                   }
  1743.  
  1744.                   double var57 = var1[var2++] - var10;
  1745.                   var3[var4++] = (var1[var2++] - var16) / var41;
  1746.                   var3[var4++] = var57 / var47;
  1747.                }
  1748.             }
  1749.  
  1750.             throw new NoninvertibleTransformException("Determinant is 0");
  1751.          case 6:
  1752.             double var6 = this.m00;
  1753.             double var8 = this.m01;
  1754.             double var12 = this.m10;
  1755.             double var14 = this.m11;
  1756.             double var18 = var6 * var14 - var8 * var12;
  1757.             if (Math.abs(var18) <= Double.MIN_VALUE) {
  1758.                throw new NoninvertibleTransformException("Determinant is " + var18);
  1759.             } else {
  1760.                while(true) {
  1761.                   --var5;
  1762.                   if (var5 < 0) {
  1763.                      return;
  1764.                   }
  1765.  
  1766.                   double var20 = var1[var2++];
  1767.                   double var22 = var1[var2++];
  1768.                   var3[var4++] = (var20 * var14 - var22 * var8) / var18;
  1769.                   var3[var4++] = (var22 * var6 - var20 * var12) / var18;
  1770.                }
  1771.             }
  1772.          default:
  1773.             this.stateError();
  1774.          case 7:
  1775.             double var40 = this.m00;
  1776.             double var43 = this.m01;
  1777.             double var46 = this.m02;
  1778.             double var49 = this.m10;
  1779.             double var52 = this.m11;
  1780.             double var55 = this.m12;
  1781.             double var56 = var40 * var52 - var43 * var49;
  1782.             if (Math.abs(var56) <= Double.MIN_VALUE) {
  1783.                throw new NoninvertibleTransformException("Determinant is " + var56);
  1784.             } else {
  1785.                while(true) {
  1786.                   --var5;
  1787.                   if (var5 < 0) {
  1788.                      return;
  1789.                   }
  1790.  
  1791.                   double var59 = var1[var2++] - var46;
  1792.                   double var60 = var1[var2++] - var55;
  1793.                   var3[var4++] = (var59 * var52 - var60 * var43) / var56;
  1794.                   var3[var4++] = (var60 * var40 - var59 * var49) / var56;
  1795.                }
  1796.             }
  1797.       }
  1798.    }
  1799.  
  1800.    public Point2D deltaTransform(Point2D var1, Point2D var2) {
  1801.       if (var2 == null) {
  1802.          if (var1 instanceof Point2D.Double) {
  1803.             var2 = new Point2D.Double();
  1804.          } else {
  1805.             var2 = new Point2D.Float();
  1806.          }
  1807.       }
  1808.  
  1809.       double var3 = var1.getX();
  1810.       double var5 = var1.getY();
  1811.       switch (this.state) {
  1812.          case 0:
  1813.          case 1:
  1814.             ((Point2D)var2).setLocation(var3, var5);
  1815.             return (Point2D)var2;
  1816.          case 2:
  1817.          case 3:
  1818.             ((Point2D)var2).setLocation(var3 * this.m00, var5 * this.m11);
  1819.             return (Point2D)var2;
  1820.          case 4:
  1821.          case 5:
  1822.             ((Point2D)var2).setLocation(var5 * this.m01, var3 * this.m10);
  1823.             return (Point2D)var2;
  1824.          default:
  1825.             this.stateError();
  1826.          case 6:
  1827.          case 7:
  1828.             ((Point2D)var2).setLocation(var3 * this.m00 + var5 * this.m01, var3 * this.m10 + var5 * this.m11);
  1829.             return (Point2D)var2;
  1830.       }
  1831.    }
  1832.  
  1833.    public void deltaTransform(double[] var1, int var2, double[] var3, int var4, int var5) {
  1834.       if (var3 == var1 && var4 > var2 && var4 < var2 + var5 * 2) {
  1835.          System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1836.          var2 = var4;
  1837.       }
  1838.  
  1839.       switch (this.state) {
  1840.          case 0:
  1841.          case 1:
  1842.             if (var1 != var3 || var2 != var4) {
  1843.                System.arraycopy(var1, var2, var3, var4, var5 * 2);
  1844.             }
  1845.  
  1846.             return;
  1847.          case 2:
  1848.          case 3:
  1849.             double var6 = this.m00;
  1850.             double var12 = this.m11;
  1851.  
  1852.             while(true) {
  1853.                --var5;
  1854.                if (var5 < 0) {
  1855.                   return;
  1856.                }
  1857.  
  1858.                var3[var4++] = var1[var2++] * var6;
  1859.                var3[var4++] = var1[var2++] * var12;
  1860.             }
  1861.          case 4:
  1862.          case 5:
  1863.             double var8 = this.m01;
  1864.             double var10 = this.m10;
  1865.  
  1866.             while(true) {
  1867.                --var5;
  1868.                if (var5 < 0) {
  1869.                   return;
  1870.                }
  1871.  
  1872.                double var14 = var1[var2++];
  1873.                var3[var4++] = var1[var2++] * var8;
  1874.                var3[var4++] = var14 * var10;
  1875.             }
  1876.          default:
  1877.             this.stateError();
  1878.          case 6:
  1879.          case 7:
  1880.             double var24 = this.m00;
  1881.             double var25 = this.m01;
  1882.             double var26 = this.m10;
  1883.             double var27 = this.m11;
  1884.  
  1885.             while(true) {
  1886.                --var5;
  1887.                if (var5 < 0) {
  1888.                   return;
  1889.                }
  1890.  
  1891.                double var28 = var1[var2++];
  1892.                double var16 = var1[var2++];
  1893.                var3[var4++] = var28 * var24 + var16 * var25;
  1894.                var3[var4++] = var28 * var26 + var16 * var27;
  1895.             }
  1896.       }
  1897.    }
  1898.  
  1899.    public Shape createTransformedShape(Shape var1) {
  1900.       if (var1 == null) {
  1901.          return null;
  1902.       } else if (var1 instanceof GeneralPath) {
  1903.          return ((GeneralPath)var1).createTransformedShape(this);
  1904.       } else {
  1905.          PathIterator var2 = var1.getPathIterator(this);
  1906.          GeneralPath var3 = new GeneralPath(var2.getWindingRule());
  1907.          var3.append(var2, false);
  1908.          return var3;
  1909.       }
  1910.    }
  1911.  
  1912.    private static double _matround(double var0) {
  1913.       return Math.rint(var0 * 1.0E15) / 1.0E15;
  1914.    }
  1915.  
  1916.    public String toString() {
  1917.       return "AffineTransform[[" + _matround(this.m00) + ", " + _matround(this.m01) + ", " + _matround(this.m02) + "], [" + _matround(this.m10) + ", " + _matround(this.m11) + ", " + _matround(this.m12) + "]]";
  1918.    }
  1919.  
  1920.    public boolean isIdentity() {
  1921.       return this.state == 0;
  1922.    }
  1923.  
  1924.    public Object clone() {
  1925.       try {
  1926.          return super.clone();
  1927.       } catch (CloneNotSupportedException var2) {
  1928.          throw new InternalError();
  1929.       }
  1930.    }
  1931.  
  1932.    public int hashCode() {
  1933.       long var1 = Double.doubleToLongBits(this.m00);
  1934.       var1 = var1 * 31L + Double.doubleToLongBits(this.m01);
  1935.       var1 = var1 * 31L + Double.doubleToLongBits(this.m02);
  1936.       var1 = var1 * 31L + Double.doubleToLongBits(this.m10);
  1937.       var1 = var1 * 31L + Double.doubleToLongBits(this.m11);
  1938.       var1 = var1 * 31L + Double.doubleToLongBits(this.m12);
  1939.       return (int)var1 ^ (int)(var1 >> 32);
  1940.    }
  1941.  
  1942.    public boolean equals(Object var1) {
  1943.       if (!(var1 instanceof AffineTransform)) {
  1944.          return false;
  1945.       } else {
  1946.          AffineTransform var2 = (AffineTransform)var1;
  1947.          return this.m00 == var2.m00 && this.m01 == var2.m01 && this.m02 == var2.m02 && this.m10 == var2.m10 && this.m11 == var2.m11 && this.m12 == var2.m12;
  1948.       }
  1949.    }
  1950.  
  1951.    private void writeObject(ObjectOutputStream var1) throws ClassNotFoundException, IOException {
  1952.       var1.defaultWriteObject();
  1953.    }
  1954.  
  1955.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  1956.       var1.defaultReadObject();
  1957.       this.updateState();
  1958.    }
  1959. }
  1960.