/[libvob]/libvob/org/nongnu/libvob/util/TexManip.java
ViewVC logotype

Diff of /libvob/org/nongnu/libvob/util/TexManip.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by tjl, Wed Apr 9 10:59:30 2003 UTC revision 1.2 by tjl, Thu Apr 17 05:21:40 2003 UTC
# Line 10  public class TexManip { Line 10  public class TexManip {
10       */       */
11      static private void wipe(float[] d, int[] mx, int[] my, int x, int y, int dx, int dy, int n, int w) {      static private void wipe(float[] d, int[] mx, int[] my, int x, int y, int dx, int dy, int n, int w) {
12          int cmx = -10000, cmy = -10000;          int cmx = -10000, cmy = -10000;
13            int clx = -10000, cly = -10000;
14          for(int i = 0; i<n; i++) {          for(int i = 0; i<n; i++) {
15              int cx = x + i*dx;              int cx = x + i*dx;
16              int cy = y + i*dy;              int cy = y + i*dy;
17              int ind = cx + w * cy;              int ind = cx + w * cy;
18    
19              float dix = cx - cmx;              if(d[ind] < 0) {
20              float diy = cy - cmy;                  float dix = cx - clx;
21              float dcur = (float)Math.sqrt(dix*dix + diy*diy);                  float diy = cy - cly;
22                    float dcur = - (float)Math.sqrt(dix*dix + diy*diy);
23              if(d[ind] < dcur) {  
24                  cmx = mx[ind];                  if(d[ind] > dcur) {
25                  cmy = my[ind];                      clx = mx[ind];
26                        cly = my[ind];
27                    } else {
28                        d[ind] = dcur;
29                        mx[ind] = clx;
30                        my[ind] = cly;
31                    }
32                    cmx = cx;
33                    cmy = cy;
34    
35              } else {              } else {
36                  d[ind] = dcur;                  float dix = cx - cmx;
37                  mx[ind] = cmx;                  float diy = cy - cmy;
38                  my[ind] = cmy;                  float dcur = (float)Math.sqrt(dix*dix + diy*diy);
39    
40                    if(d[ind] < dcur) {
41                        cmx = mx[ind];
42                        cmy = my[ind];
43                    } else {
44                        d[ind] = dcur;
45                        mx[ind] = cmx;
46                        my[ind] = cmy;
47                    }
48                    clx = cx;
49                    cly = cy;
50              }              }
51          }          }
52      }      }
# Line 36  public class TexManip { Line 57  public class TexManip {
57          int[] my = new int[w*h];          int[] my = new int[w*h];
58    
59          for(int ind = 0; ind < w*h; ind++) {          for(int ind = 0; ind < w*h; ind++) {
60              d[ind] = (from[ind] != 0 ? 0 : 1000000);              d[ind] = (from[ind] != 0 ? -1000000 : 1000000);
61              mx[ind] = ind % w;              mx[ind] = ind % w;
62              my[ind] = ind / w;              my[ind] = ind / w;
63          }          }
64    
65          // Reasonable approximation          // Reasonable approximation
66          for(int i=0; i<5; i++) {          for(int i=0; i<4; i++) {
67              for(int x = 0; x < w; x++)              for(int x = 0; x < w; x++)
68                  wipe(d, mx, my,         x, 0,           0, 1,   w, w);                  wipe(d, mx, my,         x, 0,           0, 1,   w, w);
69              for(int y = 0; y < h; y++)              for(int y = 0; y < h; y++)
# Line 63  public class TexManip { Line 84  public class TexManip {
84    
85      }      }
86    
87      static public void b2s(short[] from, byte[] to) {      static public void b2s(short[] from, byte[] to, int spacing) {
88          for(int i=0; i<from.length; i++) {          for(int i=0; i<from.length; i++) {
89              to[i*2] = (byte)(from[i] % 256);              to[i*spacing] = (byte)(from[i] % 256);
90              to[i*2+1] = (byte)(from[i] / 256);              to[i*spacing+1] = (byte)(from[i] / 256);
91                if(to[i*spacing+1] == 0 && from[i] < 0)
92                    to[i*spacing+1] = (byte)255;
93          }          }
94      }      }
95  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26