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 / sun / java2d / loops / GeneralRenderer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.3 KB  |  375 lines

  1. package sun.java2d.loops;
  2.  
  3. import java.awt.image.WritableRaster;
  4.  
  5. public final class GeneralRenderer implements GraphicsPrimitives {
  6.    static int[] ST_ANY_UNARY = new int[]{-1};
  7.    static int OUTCODE_TOP = 1;
  8.    static int OUTCODE_BOTTOM = 2;
  9.    static int OUTCODE_LEFT = 4;
  10.    static int OUTCODE_RIGHT = 8;
  11.  
  12.    public final GraphicsPrimitive[] getPrimitives() {
  13.       GraphicsPrimitive[] var1 = new GraphicsPrimitive[]{new GraphicsPrimitiveProxy(this, "FillRectANY", ST_ANY_UNARY, FillRect.getMethodSignature()), new GraphicsPrimitiveProxy(this, "FillSpansANY", ST_ANY_UNARY, FillSpans.getMethodSignature()), new GraphicsPrimitiveProxy(this, "DrawLineANY", ST_ANY_UNARY, DrawLine.getMethodSignature()), new GraphicsPrimitiveProxy(this, "FillPolygonsANY", ST_ANY_UNARY, FillPolygons.getMethodSignature()), new GraphicsPrimitiveProxy(this, "DrawPolygonsANY", ST_ANY_UNARY, DrawPolygons.getMethodSignature()), new GraphicsPrimitiveProxy(this, "DrawRectANY", ST_ANY_UNARY, DrawRect.getMethodSignature())};
  14.       return var1;
  15.    }
  16.  
  17.    static void drawPoly(ImageData var0, Object var1, int[] var2, int[] var3, int var4, int var5, boolean var6) {
  18.       int var9;
  19.       int var7 = var9 = var2[var4];
  20.       int var10;
  21.       int var8 = var10 = var3[var4];
  22.  
  23.       while(true) {
  24.          --var5;
  25.          if (var5 <= 0) {
  26.             if (var6 && (var9 != var7 || var10 != var8)) {
  27.                doDrawLine(var0, var1, var9, var10, var7, var8);
  28.             }
  29.  
  30.             return;
  31.          }
  32.  
  33.          ++var4;
  34.          int var11 = var2[var4];
  35.          int var12 = var3[var4];
  36.          doDrawLine(var0, var1, var9, var10, var11, var12);
  37.          var9 = var11;
  38.          var10 = var12;
  39.       }
  40.    }
  41.  
  42.    static void doDrawLine(ImageData var0, Object var1, int var2, int var3, int var4, int var5) {
  43.       WritableRaster var10 = (WritableRaster)var0.getRaster();
  44.       if (null != var10) {
  45.          int[] var11 = new int[]{var2, var3, var4, var5};
  46.          if (adjustLine(var0, var11)) {
  47.             int var6 = var11[0];
  48.             int var7 = var11[1];
  49.             int var8 = var11[2];
  50.             int var9 = var11[3];
  51.             if (var6 == var8) {
  52.                if (var7 > var9) {
  53.                   do {
  54.                      var10.setDataElements(var6, var7, var1);
  55.                      --var7;
  56.                   } while(var7 >= var9);
  57.  
  58.                } else {
  59.                   do {
  60.                      var10.setDataElements(var6, var7, var1);
  61.                      ++var7;
  62.                   } while(var7 <= var9);
  63.  
  64.                }
  65.             } else {
  66.                if (var7 == var9) {
  67.                   if (var6 > var8) {
  68.                      do {
  69.                         var10.setDataElements(var6, var7, var1);
  70.                         --var6;
  71.                      } while(var6 >= var8);
  72.                   } else {
  73.                      do {
  74.                         var10.setDataElements(var6, var7, var1);
  75.                         ++var6;
  76.                      } while(var6 <= var8);
  77.                   }
  78.                } else {
  79.                   int var12 = var4 - var2;
  80.                   int var13 = var5 - var3;
  81.                   int var14 = var12 < 0 ? -var12 : var12;
  82.                   int var15 = var13 < 0 ? -var13 : var13;
  83.                   int var16;
  84.                   int var17;
  85.                   int var18;
  86.                   int var19;
  87.                   int var20;
  88.                   boolean var22;
  89.                   if (var14 >= var15) {
  90.                      var22 = true;
  91.                      var20 = var15 * 2;
  92.                      var19 = var14 * 2;
  93.                      var17 = var12 < 0 ? -1 : 1;
  94.                      var18 = var13 < 0 ? -1 : 1;
  95.                      int var21 = -(var19 / 2);
  96.                      var14 = -var14;
  97.                      var16 = var8 - var6;
  98.                   } else {
  99.                      var22 = false;
  100.                      var20 = var14 * 2;
  101.                      var19 = var15 * 2;
  102.                      var17 = var13 < 0 ? -1 : 1;
  103.                      var18 = var12 < 0 ? -1 : 1;
  104.                      var15 = -var15;
  105.                      var16 = var9 - var7;
  106.                   }
  107.  
  108.                   int var24 = -(var19 / 2);
  109.                   if (var7 != var3) {
  110.                      int var23 = var7 - var3;
  111.                      if (var23 < 0) {
  112.                         var23 = -var23;
  113.                      }
  114.  
  115.                      var24 += var23 * var14 * 2;
  116.                   }
  117.  
  118.                   if (var6 != var2) {
  119.                      int var25 = var6 - var2;
  120.                      if (var25 < 0) {
  121.                         var25 = -var25;
  122.                      }
  123.  
  124.                      var24 += var25 * var15 * 2;
  125.                   }
  126.  
  127.                   if (var16 < 0) {
  128.                      var16 = -var16;
  129.                   }
  130.  
  131.                   if (var22) {
  132.                      do {
  133.                         var10.setDataElements(var6, var7, var1);
  134.                         var6 += var17;
  135.                         var24 += var20;
  136.                         if (var24 >= 0) {
  137.                            var7 += var18;
  138.                            var24 -= var19;
  139.                         }
  140.  
  141.                         --var16;
  142.                      } while(var16 >= 0);
  143.                   } else {
  144.                      do {
  145.                         var10.setDataElements(var6, var7, var1);
  146.                         var7 += var17;
  147.                         var24 += var20;
  148.                         if (var24 >= 0) {
  149.                            var6 += var18;
  150.                            var24 -= var19;
  151.                         }
  152.  
  153.                         --var16;
  154.                      } while(var16 >= 0);
  155.                   }
  156.                }
  157.  
  158.             }
  159.          }
  160.       }
  161.    }
  162.  
  163.    static int outcode(int var0, int var1, int var2, int var3, int var4, int var5) {
  164.       int var6;
  165.       if (var1 < var3) {
  166.          var6 = OUTCODE_TOP;
  167.       } else if (var1 > var5) {
  168.          var6 = OUTCODE_BOTTOM;
  169.       } else {
  170.          var6 = 0;
  171.       }
  172.  
  173.       if (var0 < var2) {
  174.          var6 |= OUTCODE_LEFT;
  175.       } else if (var0 > var4) {
  176.          var6 |= OUTCODE_RIGHT;
  177.       }
  178.  
  179.       return var6;
  180.    }
  181.  
  182.    static boolean adjustLine(ImageData var0, int[] var1) {
  183.       int var2 = var1[0];
  184.       int var3 = var1[1];
  185.       int var4 = var1[2];
  186.       int var5 = var1[3];
  187.       int var6 = var0.getXOutputArea();
  188.       int var7 = var0.getYOutputArea();
  189.       int var8 = var6 + var0.getDXOutputArea() - 1;
  190.       int var9 = var7 + var0.getDYOutputArea() - 1;
  191.       if (var8 >= var6 && var9 >= var7) {
  192.          if (var2 == var4) {
  193.             if (var2 < var6 || var2 > var8) {
  194.                return false;
  195.             }
  196.  
  197.             if (var3 > var5) {
  198.                int var10 = var3;
  199.                var3 = var5;
  200.                var5 = var10;
  201.             }
  202.  
  203.             if (var3 < var7) {
  204.                var3 = var7;
  205.             }
  206.  
  207.             if (var5 > var9) {
  208.                var5 = var9;
  209.             }
  210.  
  211.             if (var3 > var5) {
  212.                return false;
  213.             }
  214.  
  215.             var1[1] = var3;
  216.             var1[3] = var5;
  217.          } else if (var3 == var5) {
  218.             if (var3 < var7 || var3 > var9) {
  219.                return false;
  220.             }
  221.  
  222.             if (var2 > var4) {
  223.                int var19 = var2;
  224.                var2 = var4;
  225.                var4 = var19;
  226.             }
  227.  
  228.             if (var2 < var6) {
  229.                var2 = var6;
  230.             }
  231.  
  232.             if (var4 > var8) {
  233.                var4 = var8;
  234.             }
  235.  
  236.             if (var2 > var4) {
  237.                return false;
  238.             }
  239.  
  240.             var1[0] = var2;
  241.             var1[2] = var4;
  242.          } else {
  243.             int var12 = var4 - var2;
  244.             int var13 = var5 - var3;
  245.             int var14 = var12 < 0 ? -var12 : var12;
  246.             int var15 = var13 < 0 ? -var13 : var13;
  247.             boolean var16 = var14 >= var15;
  248.             int var20 = outcode(var2, var3, var6, var7, var8, var9);
  249.             int var11 = outcode(var4, var5, var6, var7, var8, var9);
  250.  
  251.             while((var20 | var11) != 0) {
  252.                if ((var20 & var11) != 0) {
  253.                   return false;
  254.                }
  255.  
  256.                if (var20 != 0) {
  257.                   if (0 != (var20 & (OUTCODE_TOP | OUTCODE_BOTTOM))) {
  258.                      if (0 != (var20 & OUTCODE_TOP)) {
  259.                         var3 = var7;
  260.                      } else {
  261.                         var3 = var9;
  262.                      }
  263.  
  264.                      int var18 = var3 - var1[1];
  265.                      if (var18 < 0) {
  266.                         var18 = -var18;
  267.                      }
  268.  
  269.                      int var17 = 2 * var18 * var14 + var15;
  270.                      if (var16) {
  271.                         var17 += var15 - var14 - 1;
  272.                      }
  273.  
  274.                      var17 /= 2 * var15;
  275.                      if (var12 < 0) {
  276.                         var17 = -var17;
  277.                      }
  278.  
  279.                      var2 = var1[0] + var17;
  280.                   } else if (0 != (var20 & (OUTCODE_LEFT | OUTCODE_RIGHT))) {
  281.                      if (0 != (var20 & OUTCODE_LEFT)) {
  282.                         var2 = var6;
  283.                      } else {
  284.                         var2 = var8;
  285.                      }
  286.  
  287.                      int var22 = var2 - var1[0];
  288.                      if (var22 < 0) {
  289.                         var22 = -var22;
  290.                      }
  291.  
  292.                      int var27 = 2 * var22 * var15 + var14;
  293.                      if (!var16) {
  294.                         var27 += var14 - var15 - 1;
  295.                      }
  296.  
  297.                      var27 /= 2 * var14;
  298.                      if (var13 < 0) {
  299.                         var27 = -var27;
  300.                      }
  301.  
  302.                      var3 = var1[1] + var27;
  303.                   }
  304.  
  305.                   var20 = outcode(var2, var3, var6, var7, var8, var9);
  306.                } else {
  307.                   if (0 != (var11 & (OUTCODE_TOP | OUTCODE_BOTTOM))) {
  308.                      if (0 != (var11 & OUTCODE_TOP)) {
  309.                         var5 = var7;
  310.                      } else {
  311.                         var5 = var9;
  312.                      }
  313.  
  314.                      int var29 = var5 - var1[3];
  315.                      if (var29 < 0) {
  316.                         var29 = -var29;
  317.                      }
  318.  
  319.                      int var23 = 2 * var29 * var14 + var15;
  320.                      if (var16) {
  321.                         var23 += var15 - var14;
  322.                      } else {
  323.                         --var23;
  324.                      }
  325.  
  326.                      var23 /= 2 * var15;
  327.                      if (var12 > 0) {
  328.                         var23 = -var23;
  329.                      }
  330.  
  331.                      var4 = var1[2] + var23;
  332.                   } else if (0 != (var11 & (OUTCODE_LEFT | OUTCODE_RIGHT))) {
  333.                      if (0 != (var11 & OUTCODE_LEFT)) {
  334.                         var4 = var6;
  335.                      } else {
  336.                         var4 = var8;
  337.                      }
  338.  
  339.                      int var26 = var4 - var1[2];
  340.                      if (var26 < 0) {
  341.                         var26 = -var26;
  342.                      }
  343.  
  344.                      int var30 = 2 * var26 * var15 + var14;
  345.                      if (var16) {
  346.                         --var30;
  347.                      } else {
  348.                         var30 += var14 - var15;
  349.                      }
  350.  
  351.                      var30 /= 2 * var14;
  352.                      if (var13 > 0) {
  353.                         var30 = -var30;
  354.                      }
  355.  
  356.                      var5 = var1[3] + var30;
  357.                   }
  358.  
  359.                   var11 = outcode(var4, var5, var6, var7, var8, var9);
  360.                }
  361.             }
  362.  
  363.             var1[0] = var2;
  364.             var1[1] = var3;
  365.             var1[2] = var4;
  366.             var1[3] = var5;
  367.          }
  368.  
  369.          return true;
  370.       } else {
  371.          return false;
  372.       }
  373.    }
  374. }
  375.