Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / java / awt / image / LookupOp.js
1 Clazz.declarePackage ("java.awt.image");
2 Clazz.load (["java.awt.image.BufferedImageOp", "$.RasterOp"], "java.awt.image.LookupOp", ["java.lang.IllegalArgumentException", "java.awt.geom.Point2D", "java.awt.image.BufferedImage", "$.ByteLookupTable", "$.ImagingOpException", "jssun.awt.image.ImagingLib"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.ltable = null;
5 this.swingJStype = 'L';
6 this.hints = null;
7 Clazz.instantialize (this, arguments);
8 }, java.awt.image, "LookupOp", null, [java.awt.image.BufferedImageOp, java.awt.image.RasterOp]);
9 Clazz.makeConstructor (c$, 
10 function (lookup, hints) {
11 this.ltable = lookup;
12 this.hints = hints;
13 }, "java.awt.image.LookupTable,java.awt.RenderingHints");
14 Clazz.defineMethod (c$, "getTable", 
15 function () {
16 return this.ltable;
17 });
18 Clazz.defineMethod (c$, "filter", 
19 function (src, dst) {
20 var srcCM = src.getColorModel ();
21 var numBands = srcCM.getNumColorComponents ();
22 var dstCM;
23 var numComponents = this.ltable.getNumComponents ();
24 if (numComponents != 1 && numComponents != srcCM.getNumComponents () && numComponents != srcCM.getNumColorComponents ()) {
25 throw  new IllegalArgumentException ("Number of arrays in the  lookup table (" + numComponents + " is not compatible with the " + " src image: " + src);
26 }var width = src.getWidth ();
27 var height = src.getHeight ();
28 if (dst == null) {
29 dst = this.createCompatibleDestImage (src, null);
30 dstCM = srcCM;
31 } else {
32 if (width != dst.getWidth ()) {
33 throw  new IllegalArgumentException ("Src width (" + width + ") not equal to dst width (" + dst.getWidth () + ")");
34 }if (height != dst.getHeight ()) {
35 throw  new IllegalArgumentException ("Src height (" + height + ") not equal to dst height (" + dst.getHeight () + ")");
36 }dstCM = dst.getColorModel ();
37 if (srcCM.getColorSpace ().getType () != dstCM.getColorSpace ().getType ()) {
38 throw  new java.awt.image.ImagingOpException ("SwingJS: Only RGB color space is supported");
39 }}var origDst = dst;
40 var srcRaster = src.getRaster ();
41 var dstRaster = dst.getRaster ();
42 if (srcCM.hasAlpha ()) {
43 if (numBands - 1 == numComponents || numComponents == 1) {
44 var minx = srcRaster.getMinX ();
45 var miny = srcRaster.getMinY ();
46 var bands =  Clazz.newIntArray (numBands - 1, 0);
47 for (var i = 0; i < numBands - 1; i++) {
48 bands[i] = i;
49 }
50 srcRaster = srcRaster.createWritableChild (minx, miny, srcRaster.getWidth (), srcRaster.getHeight (), minx, miny, bands);
51 }}if (dstCM.hasAlpha ()) {
52 var dstNumBands = dstRaster.getNumBands ();
53 if (dstNumBands - 1 == numComponents || numComponents == 1) {
54 var minx = dstRaster.getMinX ();
55 var miny = dstRaster.getMinY ();
56 var bands =  Clazz.newIntArray (numBands - 1, 0);
57 for (var i = 0; i < numBands - 1; i++) {
58 bands[i] = i;
59 }
60 dstRaster = dstRaster.createWritableChild (minx, miny, dstRaster.getWidth (), dstRaster.getHeight (), minx, miny, bands);
61 }}this.filter (srcRaster, dstRaster);
62 return origDst;
63 }, "java.awt.image.BufferedImage,java.awt.image.BufferedImage");
64 Clazz.defineMethod (c$, "filter", 
65 function (src, dst) {
66 var numBands = src.getNumBands ();
67 var dstLength = dst.getNumBands ();
68 var height = src.getHeight ();
69 var width = src.getWidth ();
70 var srcPix =  Clazz.newIntArray (numBands, 0);
71 if (height != dst.getHeight () || width != dst.getWidth ()) {
72 throw  new IllegalArgumentException ("Width or height of Rasters do not match");
73 }dstLength = dst.getNumBands ();
74 if (numBands != dstLength) {
75 throw  new IllegalArgumentException ("Number of channels in the src (" + numBands + ") does not match number of channels" + " in the destination (" + dstLength + ")");
76 }var numComponents = this.ltable.getNumComponents ();
77 if (numComponents != 1 && numComponents != src.getNumBands ()) {
78 throw  new IllegalArgumentException ("Number of arrays in the  lookup table (" + numComponents + " is not compatible with the " + " src Raster: " + src);
79 }if (jssun.awt.image.ImagingLib.filter (this, src, dst) != null) {
80 return dst;
81 }if (Clazz.instanceOf (this.ltable, java.awt.image.ByteLookupTable)) {
82 this.byteFilter (this.ltable, src, dst, width, height, numBands);
83 } else {
84 var sminX = src.getMinX ();
85 var sY = src.getMinY ();
86 var dminX = dst.getMinX ();
87 var dY = dst.getMinY ();
88 for (var y = 0; y < height; y++, sY++, dY++) {
89 var sX = sminX;
90 var dX = dminX;
91 for (var x = 0; x < width; x++, sX++, dX++) {
92 src.getPixel (sX, sY, srcPix);
93 this.ltable.lookupPixel (srcPix, srcPix);
94 dst.setPixel (dX, dY, srcPix);
95 }
96 }
97 }return dst;
98 }, "java.awt.image.Raster,java.awt.image.WritableRaster");
99 Clazz.defineMethod (c$, "getBounds2D", 
100 function (src) {
101 return this.getBounds2D (src.getRaster ());
102 }, "java.awt.image.BufferedImage");
103 Clazz.defineMethod (c$, "getBounds2D", 
104 function (src) {
105 return src.getBounds ();
106 }, "java.awt.image.Raster");
107 Clazz.overrideMethod (c$, "createCompatibleDestImage", 
108 function (src, destCM) {
109 var image;
110 var w = src.getWidth ();
111 var h = src.getHeight ();
112 if (destCM == null) {
113 var cm = src.getColorModel ();
114 image =  new java.awt.image.BufferedImage (cm, cm.createCompatibleWritableRaster (w, h), cm.isAlphaPremultiplied (), null);
115 } else {
116 image =  new java.awt.image.BufferedImage (destCM, destCM.createCompatibleWritableRaster (w, h), destCM.isAlphaPremultiplied (), null);
117 }return image;
118 }, "java.awt.image.BufferedImage,java.awt.image.ColorModel");
119 Clazz.overrideMethod (c$, "createCompatibleDestRaster", 
120 function (src) {
121 return src.createCompatibleWritableRaster ();
122 }, "java.awt.image.Raster");
123 Clazz.overrideMethod (c$, "getPoint2D", 
124 function (srcPt, dstPt) {
125 if (dstPt == null) {
126 dstPt =  new java.awt.geom.Point2D.Float ();
127 }dstPt.setLocation (srcPt.getX (), srcPt.getY ());
128 return dstPt;
129 }, "java.awt.geom.Point2D,java.awt.geom.Point2D");
130 Clazz.overrideMethod (c$, "getRenderingHints", 
131 function () {
132 return this.hints;
133 });
134 Clazz.defineMethod (c$, "byteFilter", 
135  function (lookup, src, dst, width, height, numBands) {
136 var srcPix = null;
137 var table = lookup.getTable ();
138 var offset = lookup.getOffset ();
139 var tidx;
140 var step = 1;
141 if (table.length == 1) {
142 step = 0;
143 }var x;
144 var y;
145 var band;
146 var len = table[0].length;
147 for (y = 0; y < height; y++) {
148 tidx = 0;
149 for (band = 0; band < numBands; band++, tidx += step) {
150 srcPix = src.getSamples (0, y, width, 1, band, srcPix);
151 for (x = 0; x < width; x++) {
152 var index = srcPix[x] - offset;
153 if (index < 0 || index > len) {
154 throw  new IllegalArgumentException ("index (" + index + "(out of range: " + " srcPix[" + x + "]=" + srcPix[x] + " offset=" + offset);
155 }srcPix[x] = table[tidx][index];
156 }
157 dst.setSamples (0, y, width, 1, band, srcPix);
158 }
159 }
160 }, "java.awt.image.ByteLookupTable,java.awt.image.Raster,java.awt.image.WritableRaster,~N,~N,~N");
161 });