home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1998 September / dppcpro0998.iso / Rwc / Sybase / Install.exe / java.z / PainterForm.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-23  |  10.0 KB  |  691 lines

  1. package powersoft.painter;
  2.  
  3. import java.awt.Button;
  4. import java.awt.Checkbox;
  5. import java.awt.CheckboxMenuItem;
  6. import java.awt.Choice;
  7. import java.awt.Color;
  8. import java.awt.Component;
  9. import java.awt.Container;
  10. import java.awt.Font;
  11. import java.awt.FontMetrics;
  12. import java.awt.Frame;
  13. import java.awt.Graphics;
  14. import java.awt.Image;
  15. import java.awt.Insets;
  16. import java.awt.Label;
  17. import java.awt.LayoutManager;
  18. import java.awt.List;
  19. import java.awt.Menu;
  20. import java.awt.MenuBar;
  21. import java.awt.MenuItem;
  22. import java.awt.Rectangle;
  23. import java.awt.Scrollbar;
  24. import java.awt.SystemColor;
  25. import java.awt.TextArea;
  26. import java.awt.TextField;
  27. import java.awt.event.ActionEvent;
  28. import java.awt.event.ActionListener;
  29. import java.beans.PropertyChangeEvent;
  30. import java.beans.PropertyChangeListener;
  31. import java.lang.reflect.Constructor;
  32. import java.util.EventObject;
  33. import java.util.Vector;
  34.  
  35. public class PainterForm extends Frame implements ActionListener, PropertyChangeListener {
  36.    private double _gridHeight = (double)5.0F;
  37.    private double _gridWidth = (double)5.0F;
  38.    private boolean _gridVisible = true;
  39.    private Image _cacheImage = null;
  40.    private boolean _cacheImageNeedsRebuilding;
  41.    private static final String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  42.    private static final int ALPHABET_LENGTH = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".length();
  43.    private static final int CACHE_MAX = 16;
  44.    private static int _cacheSize;
  45.    private static Font[] _cacheFont = new Font[16];
  46.    private static double[] _cacheWidth = new double[16];
  47.    private static double[] _cacheHeight = new double[16];
  48.  
  49.    public PainterForm(String var1) {
  50.       ((Frame)this).setTitle(var1);
  51.       ((Component)this).setVisible(false);
  52.       ((Frame)this).addNotify();
  53.       this.setGridVisible(true);
  54.       this.setGridHeight(5);
  55.       this.setGridWidth(5);
  56.       ((Container)this).setLayout((LayoutManager)null);
  57.    }
  58.  
  59.    public void AddComponent(Component var1) {
  60.       ((Container)this).add(var1);
  61.    }
  62.  
  63.    public static long GetPixelsFromDU(Component var0, int var1, int var2, int var3, int var4) {
  64.       Container var11 = null;
  65.  
  66.       Container var10;
  67.       for(var10 = ((Component)var0).getParent(); var10 != null && ((Component)var10).getParent() != null; var10 = ((Component)var10).getParent()) {
  68.          if (var10.getClass().getName().equals("powersoft.powerj.ui.PageWindow")) {
  69.             var10 = var11;
  70.             break;
  71.          }
  72.  
  73.          var11 = var10;
  74.       }
  75.  
  76.       if (var10 != null) {
  77.          var0 = var10;
  78.       }
  79.  
  80.       int var5 = getOrAddFontCacheIndex(((Component)var0).getFont(), (Component)var0);
  81.       double var6 = _cacheWidth[var5];
  82.       double var8 = _cacheHeight[var5];
  83.       var1 = (int)Math.round((double)var1 * var6);
  84.       var2 = (int)Math.round((double)var2 * var8);
  85.       var3 = (int)Math.round((double)var3 * var6);
  86.       var4 = (int)Math.round((double)var4 * var8);
  87.       long var12 = 0L;
  88.       var12 |= (long)(var1 & '\uffff');
  89.       var12 <<= 16;
  90.       var12 |= (long)(var2 & '\uffff');
  91.       var12 <<= 16;
  92.       var12 |= (long)(var3 & '\uffff');
  93.       var12 <<= 16;
  94.       var12 |= (long)(var4 & '\uffff');
  95.       return var12;
  96.    }
  97.  
  98.    public static long GetDUFromPixels(Component var0, int var1, int var2, int var3, int var4) {
  99.       Container var11 = null;
  100.  
  101.       Container var10;
  102.       for(var10 = ((Component)var0).getParent(); var10 != null && ((Component)var10).getParent() != null; var10 = ((Component)var10).getParent()) {
  103.          if (var10.getClass().getName().equals("powersoft.powerj.ui.PageWindow")) {
  104.             var10 = var11;
  105.             break;
  106.          }
  107.  
  108.          var11 = var10;
  109.       }
  110.  
  111.       if (var10 != null) {
  112.          var0 = var10;
  113.       }
  114.  
  115.       int var5 = getOrAddFontCacheIndex(((Component)var0).getFont(), (Component)var0);
  116.       double var6 = _cacheWidth[var5];
  117.       double var8 = _cacheHeight[var5];
  118.       var1 = (int)Math.round((double)var1 / var6);
  119.       var2 = (int)Math.round((double)var2 / var8);
  120.       var3 = (int)Math.round((double)var3 / var6);
  121.       var4 = (int)Math.round((double)var4 / var8);
  122.       long var12 = 0L;
  123.       var12 |= (long)(var1 & '\uffff');
  124.       var12 <<= 16;
  125.       var12 |= (long)(var2 & '\uffff');
  126.       var12 <<= 16;
  127.       var12 |= (long)(var3 & '\uffff');
  128.       var12 <<= 16;
  129.       var12 |= (long)(var4 & '\uffff');
  130.       return var12;
  131.    }
  132.  
  133.    private Rectangle DTGetRectangleAsRect(Component var1, boolean var2) {
  134.       Rectangle var3 = new Rectangle(var1.bounds());
  135.       Container var4 = var1.getParent();
  136.       if (var2) {
  137.          if (var4 != null) {
  138.             Rectangle var5 = this.DTGetRectangleAsRect(var4, true);
  139.             var3.x += var5.x;
  140.             var3.y += var5.y;
  141.          }
  142.       } else {
  143.          Object var6 = null;
  144.          if (var4 != null) {
  145.             Insets var7 = var4.getInsets();
  146.             if (var7 != null) {
  147.                var3.x -= var7.left;
  148.                var3.y -= var7.top;
  149.             }
  150.          }
  151.       }
  152.  
  153.       return var3;
  154.    }
  155.  
  156.    public long DTGetRectangle(Component var1, boolean var2) {
  157.       Rectangle var4 = new Rectangle(var1.bounds());
  158.       Container var5 = var1.getParent();
  159.       if (var2) {
  160.          if (var5 != null) {
  161.             Rectangle var6 = this.DTGetRectangleAsRect(var5, true);
  162.             var4.x += var6.x;
  163.             var4.y += var6.y;
  164.          }
  165.       } else {
  166.          Object var12 = null;
  167.          if (var5 != null) {
  168.             Insets var13 = var5.getInsets();
  169.             if (var13 != null) {
  170.                var4.x -= var13.left;
  171.                var4.y -= var13.top;
  172.             }
  173.          }
  174.       }
  175.  
  176.       int var7 = var4.height;
  177.       int var14 = var4.width;
  178.       int var11 = var4.y;
  179.       int var10 = var4.x;
  180.       long var8 = 0L;
  181.       var8 |= (long)(var10 & '\uffff');
  182.       var8 <<= 16;
  183.       var8 |= (long)(var11 & '\uffff');
  184.       var8 <<= 16;
  185.       var8 |= (long)(var14 & '\uffff');
  186.       var8 <<= 16;
  187.       var8 |= (long)(var7 & '\uffff');
  188.       return var8;
  189.    }
  190.  
  191.    public static int DTGetBackColor(Component var0) {
  192.       Color var1 = var0.getBackground();
  193.       int var2 = 0;
  194.       int var10000;
  195.       if (var1 == null) {
  196.          var10000 = -1;
  197.       } else if (var1 instanceof SystemColor) {
  198.          var2 = 16777216 | var1.hashCode();
  199.          var10000 = var2;
  200.       } else {
  201.          var2 |= var1.getRed();
  202.          var2 <<= 8;
  203.          var2 |= var1.getGreen();
  204.          var2 <<= 8;
  205.          var2 |= var1.getBlue();
  206.          var10000 = var2;
  207.       }
  208.  
  209.       return var10000;
  210.    }
  211.  
  212.    public static int DTGetForeColor(Component var0) {
  213.       Color var1 = var0.getForeground();
  214.       int var2 = 0;
  215.       int var10000;
  216.       if (var1 == null) {
  217.          var10000 = -1;
  218.       } else if (var1 instanceof SystemColor) {
  219.          var2 = 16777216 | var1.hashCode();
  220.          var10000 = var2;
  221.       } else {
  222.          var2 |= var1.getRed();
  223.          var2 <<= 8;
  224.          var2 |= var1.getGreen();
  225.          var2 <<= 8;
  226.          var2 |= var1.getBlue();
  227.          var10000 = var2;
  228.       }
  229.  
  230.       return var10000;
  231.    }
  232.  
  233.    public void setForeground(Color var1) {
  234.       super.setForeground(var1);
  235.       this._cacheImageNeedsRebuilding = true;
  236.       Rectangle var2 = ((Component)this).getBounds();
  237.       this.repaint(0L, 0, 0, var2.width, var2.height);
  238.    }
  239.  
  240.    public void setBackground(Color var1) {
  241.       super.setBackground(var1);
  242.       this._cacheImageNeedsRebuilding = true;
  243.       Rectangle var2 = ((Component)this).getBounds();
  244.       this.repaint(0L, 0, 0, var2.width, var2.height);
  245.    }
  246.  
  247.    public void rebuildCacheImage() {
  248.       if (this._cacheImageNeedsRebuilding) {
  249.          double var1 = this.getGridHeight();
  250.          double var3 = this.getGridWidth();
  251.          Object var9 = null;
  252.          int var10 = (int)((double)20.0F * var3);
  253.          int var11 = (int)((double)20.0F * var1);
  254.          this._cacheImage = ((Component)this).createImage(var10, var11);
  255.          Graphics var12 = this._cacheImage.getGraphics();
  256.          var12.setColor(((Component)this).getBackground());
  257.          var12.fillRect(0, 0, var10, var11);
  258.          var12.setColor(((Component)this).getForeground());
  259.  
  260.          for(double var7 = (double)0.0F; var7 < (double)var10; var7 += var3) {
  261.             for(double var5 = (double)0.0F; var5 < (double)var11; var5 += var1) {
  262.                var12.drawLine((int)Math.round(var7), (int)Math.round(var5), (int)Math.round(var7), (int)Math.round(var5));
  263.             }
  264.          }
  265.  
  266.          this._cacheImageNeedsRebuilding = false;
  267.       }
  268.    }
  269.  
  270.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  271.       if (var5 != 0 && var6 != 0) {
  272.          if (var1 == 0L) {
  273.             Graphics var7 = ((Component)this).getGraphics();
  274.             if (var7 == null) {
  275.                super.repaint(var1, var3, var4, var5, var6);
  276.             } else {
  277.                var7.clipRect(var3, var4, var5, var6);
  278.                this.paint(var7);
  279.                var7.dispose();
  280.             }
  281.          } else {
  282.             super.repaint(var1, var3, var4, var5, var6);
  283.          }
  284.       }
  285.    }
  286.  
  287.    public static void repaint(Component var0) {
  288.       if (var0 != null) {
  289.          Rectangle var1 = var0.getBounds();
  290.          int var3 = var1.height;
  291.          int var2 = var1.width;
  292.          if (var0 != null) {
  293.             Graphics var4 = var0.getGraphics();
  294.             if (var4 == null) {
  295.                var0.repaint(0L, 0, 0, var2, var3);
  296.             } else {
  297.                if (var0 instanceof Container) {
  298.                   Insets var5 = ((Container)var0).getInsets();
  299.                   var2 += var5.left;
  300.                   var3 += var5.top;
  301.                }
  302.  
  303.                var4.clipRect(0, 0, var2, var3);
  304.                var0.update(var4);
  305.                var4.dispose();
  306.             }
  307.          }
  308.  
  309.       }
  310.    }
  311.  
  312.    public static void repaint(Component var0, int var1, int var2, int var3, int var4) {
  313.       if (var0 != null) {
  314.          Graphics var5 = var0.getGraphics();
  315.          if (var5 == null) {
  316.             var0.repaint(0L, var1, var2, var3, var4);
  317.          } else {
  318.             if (var0 instanceof Container) {
  319.                Insets var6 = ((Container)var0).getInsets();
  320.                var3 += var6.left;
  321.                var4 += var6.top;
  322.             }
  323.  
  324.             var5.clipRect(var1, var2, var3, var4);
  325.             var0.update(var5);
  326.             var5.dispose();
  327.          }
  328.       }
  329.    }
  330.  
  331.    public static void paintChildren(Container var0, Graphics var1) {
  332.       int var2 = var0.getComponentCount();
  333.       Object var3 = null;
  334.       Rectangle var4 = var1.getClipRect();
  335.  
  336.       for(int var5 = var2 - 1; var5 >= 0; --var5) {
  337.          Component var8 = var0.getComponent(var5);
  338.          if (var8 != null && var8.isVisible()) {
  339.             Rectangle var6 = var8.getBounds();
  340.             if (var4 == null || var6.intersects(var4)) {
  341.                Graphics var7 = var8.getGraphics();
  342.                if (var7 != null) {
  343.                   var7.clipRect(0, 0, var6.width, var6.height);
  344.                   var8.update(var7);
  345.                   var7.dispose();
  346.                }
  347.             }
  348.  
  349.             if (var8 instanceof Button || var8 instanceof Choice || var8 instanceof Scrollbar || var8 instanceof TextField || var8 instanceof TextArea || var8 instanceof List || var8 instanceof Checkbox || var8 instanceof Label) {
  350.                var8.setEnabled(false);
  351.                var8.setEnabled(true);
  352.             }
  353.  
  354.             if (var8 instanceof Container) {
  355.                paintChildren((Container)var8, var1);
  356.             }
  357.          }
  358.       }
  359.  
  360.    }
  361.  
  362.    public void paint(Graphics var1) {
  363.       if (this._cacheImageNeedsRebuilding) {
  364.          this.rebuildCacheImage();
  365.       }
  366.  
  367.       Rectangle var2 = ((Component)this).getBounds();
  368.       var1.setColor(((Component)this).getBackground());
  369.       var1.fillRect(0, 0, var2.width, var2.height);
  370.       var1.setColor(((Component)this).getForeground());
  371.       if (this.getGridVisible()) {
  372.          Insets var3 = ((Container)this).getInsets();
  373.          double var4 = this.getGridHeight();
  374.          double var6 = this.getGridWidth();
  375.          int var12 = (int)((double)20.0F * var6);
  376.          int var13 = (int)((double)20.0F * var4);
  377.          var2.x = var3.left;
  378.          var2.y = var3.top;
  379.          var2.width -= var3.left + var3.right;
  380.          var2.height -= var3.top + var3.bottom;
  381.  
  382.          for(double var10 = (double)var2.x; var10 < (double)(var2.x + var2.width); var10 += (double)var12) {
  383.             for(double var8 = (double)var2.y; var8 < (double)(var2.y + var2.height); var8 += (double)var13) {
  384.                var1.drawImage(this._cacheImage, (int)var10, (int)var8, var12, var13, this);
  385.             }
  386.          }
  387.       }
  388.  
  389.       PainterForm var14 = this;
  390.       int var15 = ((Container)this).getComponentCount();
  391.       Object var5 = null;
  392.       Rectangle var17 = var1.getClipRect();
  393.  
  394.       for(int var7 = var15 - 1; var7 >= 0; --var7) {
  395.          Component var16 = ((Container)var14).getComponent(var7);
  396.          if (var16 != null && var16.isVisible()) {
  397.             Rectangle var18 = var16.getBounds();
  398.             if (var17 == null || var18.intersects(var17)) {
  399.                Graphics var9 = var16.getGraphics();
  400.                if (var9 != null) {
  401.                   var9.clipRect(0, 0, var18.width, var18.height);
  402.                   var16.update(var9);
  403.                   var9.dispose();
  404.                }
  405.             }
  406.  
  407.             if (var16 instanceof Button || var16 instanceof Choice || var16 instanceof Scrollbar || var16 instanceof TextField || var16 instanceof TextArea || var16 instanceof List || var16 instanceof Checkbox || var16 instanceof Label) {
  408.                var16.setEnabled(false);
  409.                var16.setEnabled(true);
  410.             }
  411.  
  412.             if (var16 instanceof Container) {
  413.                paintChildren((Container)var16, var1);
  414.             }
  415.          }
  416.       }
  417.  
  418.    }
  419.  
  420.    public void setGridHeightInDU(int var1) {
  421.       this._gridHeight = (double)var1 / (double)1000.0F;
  422.       this._cacheImageNeedsRebuilding = true;
  423.       ((Container)this).invalidate();
  424.       ((Component)this).repaint();
  425.    }
  426.  
  427.    public void setGridHeight(int var1) {
  428.       int var2 = getOrAddFontCacheIndex(((Component)this).getFont(), this);
  429.       double var3 = _cacheHeight[var2];
  430.       this._gridHeight = var3 * (double)var1;
  431.       this._cacheImageNeedsRebuilding = true;
  432.       ((Container)this).invalidate();
  433.       ((Component)this).repaint();
  434.    }
  435.  
  436.    public double getGridHeight() {
  437.       return this._gridHeight;
  438.    }
  439.  
  440.    public void setGridWidthInDU(int var1) {
  441.       this._gridWidth = (double)var1 / (double)1000.0F;
  442.       this._cacheImageNeedsRebuilding = true;
  443.       ((Container)this).invalidate();
  444.       ((Component)this).repaint();
  445.    }
  446.  
  447.    public void setGridWidth(int var1) {
  448.       int var2 = getOrAddFontCacheIndex(((Component)this).getFont(), this);
  449.       double var3 = _cacheWidth[var2];
  450.       this._gridWidth = var3 * (double)var1;
  451.       this._cacheImageNeedsRebuilding = true;
  452.       ((Container)this).invalidate();
  453.       ((Component)this).repaint();
  454.    }
  455.  
  456.    public double getGridWidth() {
  457.       return this._gridWidth;
  458.    }
  459.  
  460.    public void setGridVisible(boolean var1) {
  461.       this._gridVisible = var1;
  462.       ((Container)this).invalidate();
  463.       ((Component)this).repaint();
  464.    }
  465.  
  466.    public boolean getGridVisible() {
  467.       return this._gridVisible;
  468.    }
  469.  
  470.    public static void insertMenu(Frame var0, MenuBar var1, Menu var2, int var3) {
  471.       if (var0 != null) {
  472.          var0.setMenuBar((MenuBar)null);
  473.       }
  474.  
  475.       if (var3 == -1) {
  476.          var1.add(var2);
  477.       } else {
  478.          int var5 = var1.getMenuCount();
  479.          Vector var4 = new Vector(var5);
  480.          var4.setSize(var5);
  481.  
  482.          for(int var6 = 0; var6 < var5; ++var6) {
  483.             var4.setElementAt(var1.getMenu(var6), var6);
  484.          }
  485.  
  486.          for(int var9 = var5 - 1; var9 >= 0; --var9) {
  487.             var1.remove(var9);
  488.          }
  489.  
  490.          var4.insertElementAt(var2, var3);
  491.          var5 = var4.size();
  492.  
  493.          for(int var10 = 0; var10 < var5; ++var10) {
  494.             Menu var7 = (Menu)var4.elementAt(var10);
  495.             var1.add(var7);
  496.             ((MenuItem)var7).setLabel(((MenuItem)var7).getLabel());
  497.             ((MenuItem)var7).setEnabled(((MenuItem)var7).isEnabled());
  498.          }
  499.       }
  500.  
  501.       if (var0 != null) {
  502.          var0.setMenuBar(var1);
  503.       }
  504.  
  505.    }
  506.  
  507.    public void addMenuItem(Menu var1, MenuItem var2, int var3) {
  508.       var2.addActionListener(this);
  509.       if (var3 == -1) {
  510.          var1.add(var2);
  511.       } else {
  512.          var1.insert(var2, var3);
  513.       }
  514.  
  515.       for(int var4 = 0; var4 < var1.countItems(); ++var4) {
  516.          MenuItem var5 = var1.getItem(var4);
  517.          var5.setLabel(var5.getLabel());
  518.          var5.setEnabled(var5.isEnabled());
  519.          if (var5 instanceof Menu) {
  520.             resetMenuItems((Menu)var5);
  521.          } else if (var5 instanceof CheckboxMenuItem) {
  522.             CheckboxMenuItem var6 = (CheckboxMenuItem)var5;
  523.             var6.setState(var6.getState());
  524.          }
  525.       }
  526.  
  527.    }
  528.  
  529.    public static void resetMenuItems(MenuBar var0) {
  530.       for(int var1 = 0; var1 < var0.countMenus(); ++var1) {
  531.          Menu var2 = var0.getMenu(var1);
  532.          ((MenuItem)var2).setLabel(((MenuItem)var2).getLabel());
  533.          ((MenuItem)var2).setEnabled(((MenuItem)var2).isEnabled());
  534.  
  535.          for(int var3 = 0; var3 < var2.countItems(); ++var3) {
  536.             MenuItem var4 = var2.getItem(var3);
  537.             var4.setLabel(var4.getLabel());
  538.             var4.setEnabled(var4.isEnabled());
  539.             if (var4 instanceof Menu) {
  540.                resetMenuItems((Menu)var4);
  541.             } else if (var4 instanceof CheckboxMenuItem) {
  542.                CheckboxMenuItem var5 = (CheckboxMenuItem)var4;
  543.                var5.setState(var5.getState());
  544.             }
  545.          }
  546.       }
  547.  
  548.    }
  549.  
  550.    public static void resetMenuItems(Menu var0) {
  551.       for(int var1 = 0; var1 < var0.countItems(); ++var1) {
  552.          MenuItem var2 = var0.getItem(var1);
  553.          var2.setLabel(var2.getLabel());
  554.          var2.setEnabled(var2.isEnabled());
  555.          if (var2 instanceof Menu) {
  556.             resetMenuItems((Menu)var2);
  557.          } else if (var2 instanceof CheckboxMenuItem) {
  558.             CheckboxMenuItem var3 = (CheckboxMenuItem)var2;
  559.             var3.setState(var3.getState());
  560.          }
  561.       }
  562.  
  563.    }
  564.  
  565.    public synchronized void setMenuBar(MenuBar var1) {
  566.       if (((Frame)this).getMenuBar() != var1) {
  567.          super.setMenuBar(var1);
  568.          if (var1 != null) {
  569.             for(int var2 = 0; var2 < var1.countMenus(); ++var2) {
  570.                Menu var3 = var1.getMenu(var2);
  571.                ((MenuItem)var3).setLabel(((MenuItem)var3).getLabel());
  572.                ((MenuItem)var3).setEnabled(((MenuItem)var3).isEnabled());
  573.  
  574.                for(int var4 = 0; var4 < var3.countItems(); ++var4) {
  575.                   MenuItem var5 = var3.getItem(var4);
  576.                   var5.setLabel(var5.getLabel());
  577.                   var5.setEnabled(var5.isEnabled());
  578.                   if (var5 instanceof Menu) {
  579.                      resetMenuItems((Menu)var5);
  580.                   } else if (var5 instanceof CheckboxMenuItem) {
  581.                      CheckboxMenuItem var6 = (CheckboxMenuItem)var5;
  582.                      var6.setState(var6.getState());
  583.                   }
  584.                }
  585.             }
  586.          }
  587.  
  588.          ((Container)this).validate();
  589.       }
  590.  
  591.    }
  592.  
  593.    public void actionPerformed(ActionEvent var1) {
  594.       this.notifyActionPerformed(var1.getActionCommand());
  595.    }
  596.  
  597.    public native void notifyActionPerformed(String var1);
  598.  
  599.    public void propertyChange(PropertyChangeEvent var1) {
  600.       this.NotifyPropertyChanged(((EventObject)var1).getSource(), var1.getPropertyName());
  601.    }
  602.  
  603.    public native void NotifyPropertyChanged(Object var1, String var2);
  604.  
  605.    private static int getOrAddFontCacheIndex(Font var0, Component var1) {
  606.       int var3 = _cacheSize;
  607.  
  608.       int var2;
  609.       for(var2 = 0; var2 < var3 && _cacheFont[var2] != var0; ++var2) {
  610.       }
  611.  
  612.       if (var2 >= var3) {
  613.          if (var3 < 16) {
  614.             ++_cacheSize;
  615.          } else {
  616.             var2 = _cacheSize - 1;
  617.          }
  618.  
  619.          FontMetrics var7 = var1.getFontMetrics(var0);
  620.          double var8 = (double)(var7 != null ? var7.stringWidth("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") / ALPHABET_LENGTH : 0);
  621.          double var10 = var7 != null ? (double)var7.getHeight() / (double)2.0F : (double)0.0F;
  622.          _cacheFont[var2] = var0;
  623.          _cacheWidth[var2] = var8 / (double)4.0F;
  624.          _cacheHeight[var2] = var10 / (double)4.0F;
  625.       } else if (var2 > 0) {
  626.          Font var4 = _cacheFont[var2 - 1];
  627.          _cacheFont[var2 - 1] = _cacheFont[var2];
  628.          _cacheFont[var2] = var4;
  629.          double var5 = _cacheWidth[var2 - 1];
  630.          _cacheWidth[var2 - 1] = _cacheWidth[var2];
  631.          _cacheWidth[var2] = var5;
  632.          var5 = _cacheHeight[var2 - 1];
  633.          _cacheHeight[var2 - 1] = _cacheHeight[var2];
  634.          _cacheHeight[var2] = var5;
  635.          --var2;
  636.       }
  637.  
  638.       return var2;
  639.    }
  640.  
  641.    private static void retrieveFontMetrics(int var0, Font var1, Component var2) {
  642.       FontMetrics var3 = var2.getFontMetrics(var1);
  643.       double var4 = (double)(var3 != null ? var3.stringWidth("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") / ALPHABET_LENGTH : 0);
  644.       double var6 = var3 != null ? (double)var3.getHeight() / (double)2.0F : (double)0.0F;
  645.       _cacheFont[var0] = var1;
  646.       _cacheWidth[var0] = var4 / (double)4.0F;
  647.       _cacheHeight[var0] = var6 / (double)4.0F;
  648.    }
  649.  
  650.    private static int intFromColor(Color var0) {
  651.       int var1 = 0;
  652.       if (var0 == null) {
  653.          return -1;
  654.       } else if (var0 instanceof SystemColor) {
  655.          var1 = 16777216 | var0.hashCode();
  656.          return var1;
  657.       } else {
  658.          var1 |= var0.getRed();
  659.          var1 <<= 8;
  660.          var1 |= var0.getGreen();
  661.          var1 <<= 8;
  662.          var1 |= var0.getBlue();
  663.          return var1;
  664.       }
  665.    }
  666.  
  667.    private static long longFromInts(int var0, int var1, int var2, int var3) {
  668.       long var4 = 0L;
  669.       var4 |= (long)(var0 & '\uffff');
  670.       var4 <<= 16;
  671.       var4 |= (long)(var1 & '\uffff');
  672.       var4 <<= 16;
  673.       var4 |= (long)(var2 & '\uffff');
  674.       var4 <<= 16;
  675.       var4 |= (long)(var3 & '\uffff');
  676.       return var4;
  677.    }
  678.  
  679.    public static void DTShowPropertyDialog(Object var0) {
  680.       try {
  681.          Class var1 = Class.forName("powersoft.painter.ShowPropertyDialogThread");
  682.          Class[] var2 = new Class[]{Class.forName("java.lang.Object")};
  683.          Object[] var3 = new Object[]{var0};
  684.          Constructor var4 = var1.getConstructor(var2);
  685.          Thread var5 = (Thread)var4.newInstance(var3);
  686.          var5.start();
  687.       } catch (Exception var6) {
  688.       }
  689.    }
  690. }
  691.