home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / WDESAMPL.BIN / RoundButtonFilter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-11-19  |  1.8 KB  |  125 lines

  1. class RoundButtonFilter extends ButtonFilter {
  2.    int Xcenter;
  3.    int Ycenter;
  4.    int Yradsq;
  5.    int innerW;
  6.    int innerH;
  7.    int Yrad2sq;
  8.  
  9.    public RoundButtonFilter(boolean var1, int var2, int var3, int var4, int var5) {
  10.       super(var1, var2, var3, var4, var5);
  11.       this.Xcenter = var4 / 2;
  12.       this.Ycenter = var5 / 2;
  13.       this.Yradsq = var5 * var5 / 4;
  14.       this.innerW = var4 - super.border * 2;
  15.       this.innerH = var5 - super.border * 2;
  16.       this.Yrad2sq = this.innerH * this.innerH / 4;
  17.    }
  18.  
  19.    public boolean inside(int var1, int var2) {
  20.       int var3 = Math.abs(this.Ycenter - var2);
  21.       int var4 = (int)(Math.sqrt((double)(this.Yradsq - var3 * var3)) * (double)super.width / (double)super.height);
  22.       return var1 >= this.Xcenter - var4 && var1 < this.Xcenter + var4;
  23.    }
  24.  
  25.    public void buttonRanges(int var1, int[] var2) {
  26.       int var3 = Math.abs(this.Ycenter - var1);
  27.       int var4 = (int)(Math.sqrt((double)(this.Yradsq - var3 * var3)) * (double)super.width / (double)super.height);
  28.       var2[0] = 0;
  29.       var2[1] = this.Xcenter - var4;
  30.       var2[6] = this.Xcenter + var4;
  31.       var2[7] = super.width;
  32.       var2[8] = var2[9] = var1;
  33.       if (var1 < super.border) {
  34.          var2[2] = var2[3] = var2[4] = this.Xcenter;
  35.          var2[5] = var2[6];
  36.       } else if (var1 + super.border >= super.height) {
  37.          var2[2] = var2[1];
  38.          var2[3] = var2[4] = var2[5] = this.Xcenter;
  39.       } else {
  40.          int var5 = (int)(Math.sqrt((double)(this.Yrad2sq - var3 * var3)) * (double)this.innerW / (double)this.innerH);
  41.          var2[3] = this.Xcenter - var5;
  42.          var2[4] = this.Xcenter + var5;
  43.          if (var1 < this.Ycenter) {
  44.             var2[2] = var2[3];
  45.             var2[5] = var2[6];
  46.          } else {
  47.             var2[2] = var2[1];
  48.             var2[5] = var2[4];
  49.          }
  50.       }
  51.    }
  52.  
  53.    public int filterRGB(int var1, int var2, int var3) {
  54.       int[] var9 = ((ButtonFilter)this).getRanges(var2);
  55.  
  56.       int var6;
  57.       for(var6 = 0; var6 < 7 && (var1 < var9[var6] || var1 >= var9[var6 + 1]); ++var6) {
  58.       }
  59.  
  60.       boolean var4;
  61.       int var5;
  62.       switch (var6) {
  63.          case 0:
  64.          case 6:
  65.          default:
  66.             return var3 & 16777215;
  67.          case 1:
  68.             var4 = !super.pressed;
  69.             var5 = super.defpercent;
  70.             break;
  71.          case 2:
  72.             int var11 = var2 - this.Ycenter;
  73.             int var10 = this.Xcenter - var1;
  74.             var5 = (int)((double)(var11 * super.defpercent * 2) / Math.sqrt((double)(var11 * var11 + var10 * var10))) - super.defpercent;
  75.             if (!super.pressed) {
  76.                var5 = -var5;
  77.             }
  78.  
  79.             if (var5 == 0) {
  80.                return var3;
  81.             }
  82.  
  83.             if (var5 < 0) {
  84.                var5 = -var5;
  85.                var4 = false;
  86.             } else {
  87.                var4 = true;
  88.             }
  89.             break;
  90.          case 3:
  91.             if (!super.pressed) {
  92.                return var3 & 16777215;
  93.             }
  94.  
  95.             var4 = false;
  96.             var5 = super.defpercent;
  97.             break;
  98.          case 4:
  99.             int var8 = this.Ycenter - var2;
  100.             int var7 = var1 - this.Xcenter;
  101.             var5 = (int)((double)(var8 * super.defpercent * 2) / Math.sqrt((double)(var8 * var8 + var7 * var7))) - super.defpercent;
  102.             if (super.pressed) {
  103.                var5 = -var5;
  104.             }
  105.  
  106.             if (var5 == 0) {
  107.                return var3;
  108.             }
  109.  
  110.             if (var5 < 0) {
  111.                var5 = -var5;
  112.                var4 = false;
  113.             } else {
  114.                var4 = true;
  115.             }
  116.             break;
  117.          case 5:
  118.             var4 = super.pressed;
  119.             var5 = super.defpercent;
  120.       }
  121.  
  122.       return ((ButtonFilter)this).filterRGB(var3, var4, var5);
  123.    }
  124. }
  125.